PageSourceSearch

https://sifted.eu/

html sifted.eu collected 2026-09-24 15:16:31 UTC 3,190,596 bytes, 80,936 lines download raw bytes

1<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><title>Sifted: European Tech News, Startups &amp; Venture Capital</title><meta name="robots" content="index,follow"/><meta name="description" content="Sifted covers European tech, startups and venture capital with independent news, analysis, data and insights for founders, investors and operators."/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:site" content="@siftedeu"/><meta name="twitter:creator" content="@siftedeu"/><meta property="og:title" content="Sifted: European Tech News, Startups &amp; Venture Capital"/><meta property="og:description" content="Sifted covers European tech, startups and venture capital with independent news, analysis, data and insights for founders, investors and operators."/><meta property="og:url" content="https://sifted.eu/"/><meta property="og:image" content="https://www.datocms-assets.com/60124/1687337580-sifted-on-pink.png"/><link rel="canonical" href="https://sifted.eu/"/><link rel="icon" href="/favicon.ico"/><link rel="preload" as="image" imageSrcSet="https://images.sifted.eu/cdn-cgi/image/width=256,quality=75,fit=cover,format=auto,gravity=auto/wp-content/uploads/2026/09/14213130/revolut-hack-scaled.png 256w, https://images.sifted.eu/cdn-cgi/image/width=384,quality=75,fit=cover,format=auto,gravity=auto/wp-content/uploads/2026/09/14213130/revolut-hack-scaled.png 384w, https://images.sifted.eu/cdn-cgi/image/width=640,quality=75,fit=cover,format=auto,gravity=auto/wp-content/uploads/2026/09/14213130/revolut-hack-scaled.png 640w, https://images.sifted.eu/cdn-cgi/image/width=750,quality=75,fit=cover,format=auto,gravity=auto/wp-content/uploads/2026/09/14213130/revolut-hack-scaled.png 750w, https://images.sifted.eu/cdn-cgi/image/width=828,quality=75,fit=cover,format=auto,gravity=auto/wp-content/uploads/2026/09/14213130/revolut-hack-scaled.png 828w, https://images.sifted.eu/cdn-cgi/image/width=1080,quality=75,fit=cover,format=auto,gravity=auto/wp-content/uploads/2026/09/14213130/revolut-hack-scaled.png 1080w, https://images.sifted.eu/cdn-cgi/image/width=1200,quality=75,fit=cover,format=auto,gravity=auto/wp-content/uploads/2026/09/14213130/revolut-hack-scaled.png 1200w, https://images.sifted.eu/cdn-cgi/image/width=1920,quality=75,fit=cover,format=auto,gravity=auto/wp-content/uploads/2026/09/14213130/revolut-hack-scaled.png 1920w, https://images.sifted.eu/cdn-cgi/image/width=2048,quality=75,fit=cover,format=auto,gravity=auto/wp-content/uploads/2026/09/14213130/revolut-hack-scaled.png 2048w, https://images.sifted.eu/cdn-cgi/image/width=3840,quality=75,fit=cover,format=auto,gravity=auto/wp-content/uploads/2026/09/14213130/revolut-hack-scaled.png 3840w" imageSizes="(max-width: 768px) 100vw, (max-width: 1200px) 50vw, 33vw" fetchpriority="high"/><meta name="next-head-count" content="15"/>
1<script id="google-consent" data-cookieconsent="ignore">
2      window.dataLayer = window.dataLayer || [];
3      function gtag() {
4        dataLayer.push(arguments)
5      }
6      gtag("consent", "default", {
7        ad_personalization: "denied",
8        ad_storage: "denied",
9        ad_user_data: "denied",
10        analytics_storage: "denied",
11        functionality_storage: "denied",
12        personalization_storage: "denied",
13        security_storage: "granted",
14        wait_for_update: 500
15      });
16      gtag("set", "ads_data_redaction", true);
17      gtag("set", "url_passthrough", true);
18      </script>
18<link rel="preload" href="https://consent.cookiebot.com/uc.js" as="script" fetchPriority="high"/>
18<script id="Cookiebot" src="https://consent.cookiebot.com/uc.js" data-cbid="33e59a16-c6e6-406b-8161-7e6b9693bc2e" data-framework="TCFv2.2" data-consentmode-defaults="disabled" fetchpriority="high" async=""></script>
18<script type="text/javascript" id="hs-script-loader" async="" defer="" src="//js.hs-scripts.com/20037605.js"></script>
18<link rel="preload" href="/_next/static/media/e23c0a2a1ea52f27-s.p.woff2" as="font" type="font/woff2" crossorigin="anonymous" data-next-font="size-adjust"/><link rel="preload" href="/_next/static/media/1177edff8242c2a8-s.p.woff2" as="font" type="font/woff2" crossorigin="anonymous" data-next-font="size-adjust"/><link rel="preload" href="/_next/static/media/1b8cf5c33f2f3d79-s.p.woff2" as="font" type="font/woff2" crossorigin="anonymous" data-next-font="size-adjust"/><link rel="preload" href="/_next/static/media/de52ca2187621921-s.p.woff2" as="font" type="font/woff2" crossorigin="anonymous" data-next-font="size-adjust"/><link rel="preload" href="/_next/static/media/71b0a9d814b551eb-s.p.woff2" as="font" type="font/woff2" crossorigin="anonymous" data-next-font="size-adjust"/><link rel="preload" href="/_next/static/media/a4a78f32e6d6bdeb-s.p.woff2" as="font" type="font/woff2" crossorigin="anonymous" data-next-font="size-adjust"/><link rel="preload" href="/_next/static/media/9cf9c6e84ed13b5e-s.p.woff2" as="font" type="font/woff2" crossorigin="anonymous" data-next-font="size-adjust"/><link rel="preload" href="/_next/static/css/88d93b0799557a17.css" as="style"/><link rel="stylesheet" href="/_next/static/css/88d93b0799557a17.css" data-n-g=""/><link rel="preload" href="/_next/static/css/4378827cc0bb70dc.css" as="style"/><link rel="stylesheet" href="/_next/static/css/4378827cc0bb70dc.css" data-n-p=""/><noscript data-n-css=""></noscript>
18<script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script>
18<script src="/_next/static/chunks/webpack-69a0d07e6bd4283f.js" defer=""></script>
18<script src="/_next/static/chunks/framework-1d2f8200c11ea928.js" defer=""></script>
18<script src="/_next/static/chunks/main-806798a6b982af5b.js" defer=""></script>
18<script src="/_next/static/chunks/pages/_app-bb197394937c5541.js" defer=""></script>
18<script src="/_next/static/chunks/1664-bc2a9050ca5fc6b8.js" defer=""></script>
18<script src="/_next/static/chunks/601-24a914c67fedea86.js" defer=""></script>
18<script src="/_next/static/chunks/6160-dec6ac7e5ea560ed.js" defer=""></script>
18<script src="/_next/static/chunks/8826-d01234a15c07328d.js" defer=""></script>
18<script src="/_next/static/chunks/6898-91ad5e9e3f4dab51.js" defer=""></script>
18<script src="/_next/static/chunks/1779-19a61f0f046dec48.js" defer=""></script>
18<script src="/_next/static/chunks/8388-51b0fe67d37a7313.js" defer=""></script>
18<script src="/_next/static/chunks/5314-0cdfa6b4e7019e5a.js" defer=""></script>
18<script src="/_next/static/chunks/1766-c4ee50b3179d17aa.js" defer=""></script>
18<script src="/_next/static/chunks/2885-97da8b455cf6c360.js" defer=""></script>
18<script src="/_next/static/chunks/9132-a16d2b68533850bd.js" defer=""></script>
18<script src="/_next/static/chunks/pages/index-d345cfa57b38d1bc.js" defer=""></script>
18<script src="/_next/static/CxS59Unx8FuYsEbjZKcoC/_buildManifest.js" defer=""></script>
18<script src="/_next/static/CxS59Unx8FuYsEbjZKcoC/_ssgManifest.js" defer=""></script>
18<style id="__jsx-3546074860">:root{--font-recklessNeueBold:'__recklessNeueFontFamily_dda9bf', '__recklessNeueFontFamily_Fallback_dda9bf';--font-aktivGrotesk:'__aktivGroteskFontFamily_1f826b', '__aktivGroteskFontFamily_Fallback_1f826b';--font-sourceSans:'__Source_Sans_3_86b611', '__Source_Sans_3_Fallback_86b611'}</style></head><body><style></style>
18<script type="text/javascript">
19  window.Sifted = window.Sifted || {}
20  window.Sifted.user = {
21    first_name: "",
22    last_name: "",
23    is_logged_in: false,
24    
25    is_pro: false,
26    details: {}
27  }
28</script>
28
29<div id="__next">
29<script>self.__wrap_b=(t,n,e)=>{e=e||document.querySelector(`[data-br="${t}"]`);let a=e.parentElement,r=R=>e.style.maxWidth=R+"px";e.style.maxWidth="";let o=a.clientWidth,c=a.clientHeight,i=o/2-.25,l=o+.5,u;if(o){for(;i+1<l;)u=Math.round((i+l)/2),r(u),a.clientHeight===c?l=u:i=u;r(l*n+o*(1-n))}e.__wrap_o||(typeof ResizeObserver!="undefined"?(e.__wrap_o=new ResizeObserver(()=>{self.__wrap_b(0,+e.dataset.brr,e)})).observe(a):process.env.NODE_ENV==="development"&&console.warn("The browser you are using does not support the ResizeObserver API. Please consider add polyfill for this API to avoid potential layout shifts or upgrade your browser. Read more: https://github.com/shuding/react-wrap-balancer#browser-support-information"))};</script>
29<div class="font-serif"><div><div class="zephr-feature onboarding-show-onboarding-modal"></div></div><div class="hidden"><div class="fixed inset-0 z-50 bg-[#000000a2]" data-testid="complete-profile-overlay"></div><div class="pointer-events-none fixed inset-0 z-[51] flex items-center justify-center"><div id="complete-profile-dialog" data-zephr-dialog="true" class="pointer-events-auto relative max-h-[85vh] w-[94vw] max-w-[400px] overflow-y-auto rounded-2xl bg-white px-6 pb-8 pt-10 shadow-[0_10px_38px_-10px_rgba(14,18,22,0.35)] md:px-8"><button aria-label="Close" data-testid="complete-profile-close" class="absolute right-3 top-3 p-2 focus:outline-none focus-visible:ring-2 focus-visible:ring-black-rock"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" height="1.2em" width="1.2em" xmlns="http://www.w3.org/2000/svg"><path fill="none" stroke="#000" stroke-width="2" d="M3,3 L21,21 M3,21 L21,3"></path></svg></button><div>
29<script type="text/javascript">
30        if (!window.Zephr) window.Zephr = {};
31        if (!window.Zephr.outcomes) window.Zephr.outcomes = {};
32        window.Zephr.outcomes["complete-profile-prompt"] = {
33            featureLabel: "Complete profile prompt",
34            outcomeId: "transformation/2#1",
35            outcomeLabel: "Remove"
36        };
37    </script>
37</div></div></div></div><div class="hidden" data-testid="login-modal-root"><div class="fixed inset-0 z-[60] bg-[#000000a2]" data-testid="login-modal-overlay"></div><div class="pointer-events-none fixed inset-0 z-[61] flex items-center justify-center"><div id="login-dialog" data-zephr-dialog="true" class="pointer-events-auto relative max-h-[92vh] w-[94vw] max-w-[400px] overflow-y-auto rounded-2xl bg-white px-4 pb-6 pt-8 shadow-[0_10px_38px_-10px_rgba(14,18,22,0.35)] md:px-6"><button aria-label="Close" data-testid="login-modal-close" class="absolute right-3 top-3 z-10 p-2 focus:outline-none focus-visible:ring-2 focus-visible:ring-black-rock"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" height="1.2em" width="1.2em" xmlns="http://www.w3.org/2000/svg"><path fill="none" stroke="#000" stroke-width="2" d="M3,3 L21,21 M3,21 L21,3"></path></svg></button><div data-login-form="regular" class=""><div class="LoginRegistrationForm_loginRegistrationForm__eKVrT" style="--fintech:url(https://www.datocms-assets.com/60124/1757341374-sifted_fintech.png?auto=format&amp;fit=max&amp;h=50&amp;q=80);--futureproof:url(https://www.datocms-assets.com/60124/1757341374-sifted_upround.png?auto=format&amp;fit=max&amp;h=50&amp;q=80);--startup-life:url(https://www.datocms-assets.com/60124/1757341374-sifted_startuplife.png?auto=format&amp;fit=max&amp;h=50&amp;q=80);--deeptech:url(https://www.datocms-assets.com/60124/1757341374-sifted_ai-and-deeptech.png?auto=format&amp;fit=max&amp;h=50&amp;q=80)"><div class="w-full bg-white" role="form"><div>                                <style>.zephr-form-progress-bar.svelte-19rlx92{width:100%;border:0;border-radius:20px;margin-top:10px}.zephr-form-progress-bar.svelte-19rlx92::-webkit-progress-bar{background-color:var(--zephr-color-background-tinted);border:0;border-radius:20px}.zephr-form-progress-bar.svelte-19rlx92::-webkit-progress-value{background-color:var(--zephr-color-text-tinted);border:0;border-radius:20px}.zephr-progress-bar-step.svelte-19rlx92{margin:auto;color:var(--zephr-color-text-tinted);font-size:var(--zf-subtext-fontSize);font-family:var(--zf-root-fontFamily);cursor:pointer}.zephr-progress-bar-step.svelte-19rlx92:first-child{margin-left:0}.zephr-progress-bar-step.svelte-19rlx92:last-child{margin-right:0}.zephr-progress-bar-step.disabled.svelte-19rlx92{cursor:default}
38.zephr-form-button-top-margin.svelte-gd8hr6{margin-top:20px}.zephr-form-button.svelte-gd8hr6{padding:0 20px;text-decoration:none;text-transform:capitalize;border-radius:calc(var(--zephr-button-borderRadius) * 1px);font-size:var(--zf-button-fontSize);font-weight:normal;cursor:pointer;border-style:solid;border-width:calc(var(--zephr-button-borderWidth) * 1px);border-color:var(--zephr-color-action-tinted);transition:backdrop-filter 0.2s, background-color 0.2s;display:flex;justify-content:center;align-items:center;width:100%;background-color:var(--zephr-color-action-main);color:var(--zf-button-color);position:relative;overflow:hidden;font-family:var(--zf-root-fontFamily)}.zephr-form-button.svelte-gd8hr6:hover{background-color:var(--zephr-color-action-tinted);border-color:var(--zephr-color-action-tinted)}.zephr-form-button.svelte-gd8hr6:disabled{background-color:var(--zephr-color-background-tinted);border-color:var(--zephr-color-background-tinted)}.zephr-form-button.svelte-gd8hr6:disabled:hover{background-color:var(--zephr-color-background-tinted);border-color:var(--zephr-color-background-tinted)}.zephr-form-button.inputHeight.svelte-gd8hr6{height:calc(var(--zephr-input-height) * 1px)}
38.zephr-form-button.svelte-gd8hr6:not(inputHeight){height:calc(var(--zephr-button-height) * 1px)}.zephr-form-button.aside.svelte-gd8hr6{width:auto;margin-left:10px}
39.payment-option-wrapper.svelte-hcxnnv>input[type="radio"].svelte-hcxnnv{display:none}.payment-option-wrapper.svelte-hcxnnv.svelte-hcxnnv{display:flex;flex:1 0 28%;width:100%}.payment-option-wrapper.svelte-hcxnnv.svelte-hcxnnv:only-child{max-width:325px}.box-container.svelte-hcxnnv.svelte-hcxnnv{display:flex;flex-direction:column;flex:1 1 0;width:0;text-align:center}.inner-box.svelte-hcxnnv.svelte-hcxnnv{border:var(--zf-payment-options-border);border-radius:var(--zf-payment-options-borderRadius);background-color:var(--zf-payment-options-bgColor);height:100%;display:flex;flex-direction:column}.box-container.highlighted.svelte-hcxnnv .inner-box.svelte-hcxnnv{border-top-left-radius:0;border-top-right-radius:0}.box-container.svelte-hcxnnv .box-content.svelte-hcxnnv{flex-grow:1;padding:30px 20px;margin:0 10px;overflow:hidden}.box-container.svelte-hcxnnv .styled-box-content.svelte-hcxnnv{color:var(--zephr-color-text-main);font-family:var(--zf-root-fontFamily)}
40  .box-container .styled-box-content h1,
41  .box-container .styled-box-content h2,
42  .box-container .styled-box-content h3,
43  .box-container .styled-box-content p,
44  .box-container .styled-box-content span
45   {color:var(--zephr-color-text-main);font-family:var(--zf-root-fontFamily)}.payment-options-container .box-container .styled-box-content button{color:#fff;background-color:var(--zephr-color-action-main);border-width:calc(var(--zephr-button-borderWidth) * 1px);border-color:var(--zephr-color-action-tinted);border-radius:calc(var(--zephr-button-borderRadius) * 1px);font-size:var(--zf-button-fontSize)}.payment-options-container .box-container .styled-box-content button:hover{background-color:var(--zephr-color-action-tinted);border-color:var(--zephr-color-action-tinted)}.payment-options-container .box-container .box-content img{max-width:210px;height:auto}.box-top.svelte-hcxnnv.svelte-hcxnnv{height:40px}.box-container.highlighted.svelte-hcxnnv .box-top.svelte-hcxnnv{color:var(--zf-payment-options-highlighted-color);background-color:var(--zf-payment-options-highlighted-bgColor);position:relative;border:var(--zf-payment-options-border);border-bottom-width:0;border-radius:var(--zf-payment-options-borderRadius);border-bottom-left-radius:0;border-bottom-right-radius:0;display:flex;justify-content:center;align-items:center}.box-container.highlighted.svelte-hcxnnv .box-top .box-top-text.svelte-hcxnnv{font-weight:bold}.box-container.svelte-hcxnnv .box-bottom.svelte-hcxnnv{min-height:60px;display:flex;flex-direction:column;align-items:center;padding:20px 0 30px;margin:0 30px}.button-sub-text.svelte-hcxnnv.svelte-hcxnnv{margin-top:10px}
46.payment-options-container.svelte-tqlhky{flex-wrap:wrap;font-size:var(--zf-payment-options-fontSize);width:100%;color:var(--zf-payment-options-color);line-height:18px;padding:31px 0 20px;display:grid;justify-content:space-evenly;justify-items:center;grid-template-columns:repeat(auto-fit, minmax(300px, 1fr));gap:13px}@media(max-width: 340px){.payment-options-container.svelte-tqlhky{grid-template-columns:repeat(auto-fit, minmax(280px, 1fr))}}
47.zephr-form-error-message-min-height.svelte-1ko2lqj{min-height:1.1em}.zephr-form-error-message.svelte-1ko2lqj{color:var(--zephr-color-warning-main);font-size:var(--zf-subtext-fontSize);margin-top:0.5em;position:relative;margin-left:1.2em;margin-right:1.2em}
48.zephr-form-input-inner-container.svelte-88cmol{position:relative}.zephr-form-input-full-width.svelte-88cmol{width:100%}.zephr-form-input.svelte-88cmol{width:100%;display:block;height:calc(var(--zephr-input-height) * 1px);padding-left:8px;font-size:var(--zf-input-fontSize);border:calc(var(--zephr-input-borderWidth) * 1px) solid
49      var(--zephr-input-borderColor);border-radius:calc(var(--zephr-input-borderRadius) * 1px);transition:border-color 0.25s ease, box-shadow 0.25s ease;outline:0;color:var(--zephr-color-text-main);background-color:var(--zf-input-bgColor);font-family:var(--zf-root-fontFamily)}.zephr-form-input.svelte-88cmol::placeholder{color:var(--zephr-color-background-tinted);font-family:var(--zf-root-fontFamily)}.zephr-form-input-checkbox.svelte-88cmol{width:auto;height:auto;margin:8px 5px 0 0;float:left}.zephr-form-input-radio.svelte-88cmol{position:absolute;opacity:0;cursor:pointer;height:0;width:0}.zephr-form-input-color[type="color"].svelte-88cmol{width:50px;padding:0;border-radius:50%}.zephr-form-input-color[type="color"].svelte-88cmol::-webkit-color-swatch{border:none;border-radius:50%;padding:0}.zephr-form-input-color[type="color"].svelte-88cmol::-webkit-color-swatch-wrapper{border:none;border-radius:50%;padding:0}.zephr-form-input.disabled.svelte-88cmol,.zephr-form-input.disabled.svelte-88cmol:hover{border:calc(var(--zephr-input-borderWidth) * 1px) solid
50      var(--zephr-input-borderColor);background-color:var(--zephr-color-background-tinted)}.zephr-form-input.error.svelte-88cmol{border:1px solid var(--zephr-color-warning-main)}
51.zephr-form-input-label.svelte-yaw4yg.svelte-yaw4yg{margin-top:10px;display:block;line-height:30px;font-size:var(--zf-subtext-fontSize);color:var(--zephr-color-text-tinted);font-family:var(--zf-root-fontFamily)}.zephr-form-input-label.svelte-yaw4yg.svelte-yaw4yg:first-child{margin-top:0}.zephr-form-input-label.svelte-yaw4yg span.svelte-yaw4yg{display:block}
52.svelte-fa-base{height:1em;overflow:visible;transform-origin:center;vertical-align:-0.125em}.svelte-fa-fw{text-align:center;width:1.25em}.svelte-fa-pull-left.svelte-f5ydbn{float:left}.svelte-fa-pull-right.svelte-f5ydbn{float:right}.svelte-fa-size-lg.svelte-f5ydbn{font-size:1.33333em;line-height:0.75em;vertical-align:-0.225em}.svelte-fa-size-sm.svelte-f5ydbn{font-size:0.875em}.svelte-fa-size-xs.svelte-f5ydbn{font-size:0.75em}.spin.svelte-f5ydbn{animation:svelte-f5ydbn-spin 2s 0s infinite linear}.pulse.svelte-f5ydbn{animation:svelte-f5ydbn-spin 1s infinite steps(8)}@keyframes svelte-f5ydbn-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}
53.svelte-fa-layers.svelte-ff6okk{display:inline-block;position:relative}.svelte-fa-layers.svelte-ff6okk .svelte-fa{position:absolute;bottom:0;left:0;right:0;top:0;margin:auto;text-align:center}.svelte-fa-layers.svelte-ff6okk .svelte-fa-layers-text{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}.svelte-fa-layers.svelte-ff6okk .svelte-fa-layers-text span{display:inline-block}.svelte-fa-pull-left.svelte-ff6okk{float:left}.svelte-fa-pull-right.svelte-ff6okk{float:right}.svelte-fa-size-lg.svelte-ff6okk{font-size:1.33333em;line-height:0.75em;vertical-align:-0.225em}.svelte-fa-size-sm.svelte-ff6okk{font-size:0.875em}.svelte-fa-size-xs.svelte-ff6okk{font-size:0.75em}
54.container.svelte-1j4jgwv{display:inline-block;height:auto}.svelte-fa-size-lg.svelte-1j4jgwv{font-size:1.33333em;line-height:0.75em;vertical-align:-0.225em}.svelte-fa-size-sm.svelte-1j4jgwv{font-size:0.875em}.svelte-fa-size-xs.svelte-1j4jgwv{font-size:0.75em}
55.zephr-form-password-match.svelte-tsrdk3.svelte-tsrdk3{margin:20px 0;justify-content:center}.zephr-form-password-match.svelte-tsrdk3 ul.svelte-tsrdk3{padding-left:0;margin:0}.zephr-form-password-requirement.svelte-tsrdk3.svelte-tsrdk3{display:flex;align-items:center;color:var(--zephr-color-text-tinted);font-size:var(--zf-subtext-fontSize);min-height:20px;font-family:var(--zf-root-fontFamily)}.zephr-form-password-requirement-icon.svelte-tsrdk3.svelte-tsrdk3{margin-right:10px;font-size:15px}
56.zephr-form-password-progress.svelte-1bpbne4.svelte-1bpbne4{display:flex;margin-top:10px}.zephr-form-password-bar.svelte-1bpbne4.svelte-1bpbne4{width:100%;height:4px;border-radius:2px}.zephr-form-password-bar.svelte-1bpbne4.svelte-1bpbne4:not(:first-child){margin-left:8px}.zephr-form-password-requirements.svelte-1bpbne4.svelte-1bpbne4{margin:20px 0;justify-content:center}.zephr-form-password-requirements.svelte-1bpbne4 ul.svelte-1bpbne4{padding-left:0;margin:0}.zephr-form-password-requirement.svelte-1bpbne4.svelte-1bpbne4{display:flex;align-items:center;color:var(--zephr-color-text-tinted);font-size:var(--zf-subtext-fontSize);min-height:20px;font-family:var(--zf-root-fontFamily)}.zephr-form-password-requirement-icon.svelte-1bpbne4.svelte-1bpbne4{margin-right:10px;font-size:15px}
57.apple-pay-button{display:inline-block;-webkit-appearance:-apple-pay-button;-apple-pay-button-type:pay;width:440px;max-width:100%;height:45px;margin-top:20px}.apple-pay-button-black{-apple-pay-button-style:black}#google-pay-button.svelte-1drqjgk{width:440px;max-width:100%;height:45px;margin-top:20px}
58#braintree-dropin-container.svelte-w52z2j{margin-top:1em;margin-bottom:1em}
59.stripe-element.svelte-1bi6tmz{margin-top:2em;margin-bottom:1em;border:calc(var(--zephr-input-borderWidth) * 1px) solid
60      var(--zephr-input-borderColor);border-radius:calc(var(--zephr-input-borderRadius) * 1px);padding:1em}.stripe-element.svelte-1bi6tmz iframe:focus{outline:none !important}
61#stripe-mobile-pay-button.svelte-12ehv8b{width:440px;max-width:100%;height:45px;margin-top:20px}
62.spinner-container.svelte-1c5ov4v{text-align:center;padding:2em}
63#zuora_payment.svelte-1vnsk3p{margin-top:1em;margin-bottom:1em}.zuora-disabled-iframe-container.svelte-1vnsk3p .z_hppm_iframe{pointer-events:none;opacity:0.3}.zuora-dynamic-form-disabled.svelte-1vnsk3p{pointer-events:none;opacity:0.3}.spinner-overlay.svelte-1vnsk3p{width:100%;height:100%;position:absolute;top:0;left:0;display:flex;align-items:center;justify-content:center}.form-wrapper.svelte-1vnsk3p{position:relative}
64#payment-element.svelte-1ejcgdg{margin-top:1em;margin-bottom:1em;border:calc(var(--zephr-input-borderWidth) * 1px) solid
65            var(--zephr-input-borderColor);border-radius:calc(var(--zephr-input-borderRadius) * 1px);padding:1em}
66.zephr-form-checkbox.svelte-ud4i0a.svelte-ud4i0a.svelte-ud4i0a{position:absolute;opacity:0;cursor:pointer;height:0;width:0}.zephr-form-checkbox-label.svelte-ud4i0a.svelte-ud4i0a.svelte-ud4i0a{display:flex;align-items:center;font-family:var(--zf-root-fontFamily)}.zephr-form-checkmark.svelte-ud4i0a.svelte-ud4i0a.svelte-ud4i0a{position:relative;box-sizing:border-box;height:23px;width:23px;background-color:#fff;border:calc(var(--zephr-input-borderWidth) * 1px) solid
67      var(--zephr-input-borderColor);border-radius:6px;margin-right:12px;cursor:pointer}.zephr-form-checkmark.checked.svelte-ud4i0a.svelte-ud4i0a.svelte-ud4i0a{border-color:var(--zephr-color-action-main)}.zephr-form-checkmark.checked.svelte-ud4i0a.svelte-ud4i0a.svelte-ud4i0a:after{content:"";position:absolute;width:6px;height:13px;border:solid var(--zephr-color-action-main);border-width:0 2px 2px 0;transform:rotate(45deg);top:3px;left:8px;box-sizing:border-box}.zephr-form-checkmark.disabled.svelte-ud4i0a.svelte-ud4i0a.svelte-ud4i0a{border:calc(var(--zephr-input-borderWidth) * 1px) solid
68      var(--zephr-color-background-tinted)}.zephr-form-checkmark.disabled.checked.svelte-ud4i0a.svelte-ud4i0a.svelte-ud4i0a:after{border:solid var(--zephr-color-background-tinted);border-width:0 2px 2px 0}.zephr-form-checkmark.error.svelte-ud4i0a.svelte-ud4i0a.svelte-ud4i0a{border:calc(var(--zephr-input-borderWidth) * 1px) solid
69      var(--zephr-color-warning-main)}.zephr-form-checkbox.svelte-ud4i0a:focus-visible+.zephr-form-checkbox-label.svelte-ud4i0a>.zephr-form-checkmark.svelte-ud4i0a{outline:2px solid var(--zephr-color-action-main);outline-color:-webkit-focus-ring-color}
70.zephr-form-payment-auto-renew-toggle.svelte-1yfwddr{margin:10px 0;font-size:var(--zf-font-size-base);font-family:var(--zf-root-fontFamily)}
71.check-image.svelte-w5z6iw{height:1.2em;vertical-align:middle;margin-right:0.5em}.zephr-form-success-message.svelte-w5z6iw{color:var(--zephr-color-text-main);display:inline-block}
72.zephr-form-verification-resend-link-container.svelte-1yj9ceh{margin-bottom:2em}.zephr-form-verification-resend-link.svelte-1yj9ceh,.zephr-form-verification-resend-text.svelte-1yj9ceh{float:right;position:absolute;padding-right:2px;padding-top:0.5em;padding-left:0.5em;font-size:var(--zf-subtext-fontSize);right:0}.zephr-form-verification-resend-link.svelte-1yj9ceh{cursor:pointer;color:var(--zf-link-color)}
73.zephr-form-custom-text.svelte-3sd7s2{margin-top:1em;margin-bottom:1em;color:var(--zephr-color-text-main)}
74.zephr-form-input-radio.svelte-1cbmaif.svelte-1cbmaif.svelte-1cbmaif{position:absolute;opacity:0;cursor:pointer;height:0;width:0}.zephr-form-radio-label.svelte-1cbmaif.svelte-1cbmaif.svelte-1cbmaif{display:flex;align-items:center;font-family:var(--zf-root-fontFamily)}.zephr-form-radio-dot.svelte-1cbmaif.svelte-1cbmaif.svelte-1cbmaif{display:block;position:relative;box-sizing:border-box;height:23px;width:23px;background-color:#fff;border:1px solid #ebebeb;border-radius:50%;margin-right:12px;cursor:pointer}.checked.svelte-1cbmaif.svelte-1cbmaif.svelte-1cbmaif{border-color:var(--zephr-color-action-main)}.checked.svelte-1cbmaif.svelte-1cbmaif.svelte-1cbmaif:after{content:"";position:absolute;width:17px;height:17px;background:var(--zephr-color-action-main);border-radius:50%;top:2px;left:2px}.disabled.checked.svelte-1cbmaif.svelte-1cbmaif.svelte-1cbmaif:after{background:var(--zephr-color-background-tinted)}.error.svelte-1cbmaif.svelte-1cbmaif.svelte-1cbmaif{border:1px solid var(--zephr-color-warning-main)}.zephr-form-input-radio.svelte-1cbmaif:focus-visible+.zephr-form-radio-label.svelte-1cbmaif>.zephr-form-radio-dot.svelte-1cbmaif{outline:2px solid var(--zephr-color-action-main);outline-color:-webkit-focus-ring-color}
75.zephr-form-input-error-text.svelte-wlae04{color:var(--zephr-color-warning-main);font-family:var(--zf-root-fontFamily)}.zephr-form-input-select.svelte-wlae04{display:block;appearance:auto;width:100%;height:calc(var(--zephr-input-height) * 1px);font-size:var(--zf-input-fontSize);font-family:var(--zf-root-fontFamily);border:calc(var(--zephr-input-borderWidth) * 1px) solid
76      var(--zephr-input-borderColor);border-radius:calc(var(--zephr-input-borderRadius) * 1px);transition:border-color 0.25s ease, box-shadow 0.25s ease;outline:0;color:var(--zephr-color-text-main);background-color:var(--zf-input-bgColor);padding:10px}.zephr-form-input-select.unselected.svelte-wlae04{color:var(--zephr-color-background-tinted)}.zephr-form-input-select.error.svelte-wlae04{border-color:var(--zephr-color-warning-main)}.zephr-form-input-textarea.svelte-wlae04{display:block;min-height:calc(var(--zephr-input-height) * 1px);min-width:100%;max-width:100%;background-color:var(--zf-input-bgColor);border:calc(var(--zephr-input-borderWidth) * 1px) solid var(--zephr-input-borderColor);border-radius:calc(var(--zephr-input-borderRadius) * 1px);transition:border-color 0.25s ease, box-shadow 0.25s ease;color:var(--zephr-color-text-main);font-size:var(--zf-input-fontSize);font-weight:300;padding:16px 8px;font-family:var(--zf-root-fontFamily);outline:0}.zephr-form-input-textarea.svelte-wlae04::placeholder{color:var(--zephr-color-background-tinted);font-family:var(--zf-root-fontFamily)}.zephr-form-input-slider-output.svelte-wlae04{margin:13px 0 0 10px}
77.zephr-form-link.svelte-14vxk2u{margin:10px 0;color:var(--zf-link-color);text-decoration:underline;cursor:pointer;font-family:var(--zf-root-fontFamily)}.zephr-form-link-disabled.svelte-14vxk2u{color:var(--zephr-color-text-main);cursor:not-allowed;text-decoration:none}.zephr-form-link-no-underline.svelte-14vxk2u{text-decoration:none}
78.zephr-form-reset-link-container.svelte-49aomy{min-height:2.5em}.zephr-form-link-message.svelte-49aomy{margin:10px 0 10px 20px;font-family:var(--zf-root-fontFamily)}
79.zephr-form-reset-link-container.svelte-49aomy{min-height:2.5em}.zephr-form-link-message.svelte-49aomy{margin:10px 0 10px 20px;font-family:var(--zf-root-fontFamily)}
80.zephr-form-google-icon.svelte-aktnoc{width:20px}
81.zephr-form-social-sign-in.svelte-1e2xtn4{align-items:center}.zephr-form-social-sign-in-button.svelte-1e2xtn4{width:100%;min-height:55px;padding:15px;color:#000;background-color:#fff;box-shadow:0 0 5px rgba(0, 0, 0, 0.3);border-radius:10px;font-size:17px;
81display:flex;align-items:center;cursor:pointer;margin-top:20px;font-family:var(--zf-root-fontFamily)}.zephr-form-social-sign-in-button.svelte-1e2xtn4:hover{background-color:#fafafa}.zephr-form-social-sign-in-icon.svelte-1e2xtn4{display:flex;justify-content:center;margin-right:30px;width:25px}
82.zephr-form-promo-input-container.svelte-xf8v79{flex:0.6}.zephr-form-promo-activate-line.svelte-xf8v79{display:flex;cursor:pointer;min-height:calc(var(--zephr-input-height) * 1px);margin:1em 1.2em;font-size:var(--zf-payment-summary-fontSize);line-height:calc(var(--zephr-input-height) * 1px);color:var(--zf-link-color)}.zephr-form-promo-line.svelte-xf8v79{display:flex;min-height:calc(var(--zephr-input-height) * 1px);margin:1em 1.2em}.zephr-form-addon-line.svelte-xf8v79{display:flex;padding-top:1em;padding-bottom:1em;margin-left:1.2em}.zephr-form-summary-prorate-disclaimer.svelte-xf8v79{padding-top:0.25em;padding-left:1em;color:var(--zephr-color-text-tinted)}.zephr-form-summary-charge-description.svelte-xf8v79{color:var(--zephr-color-text-tinted)}.zephr-form-charge-line.svelte-xf8v79{display:flex;padding-top:1em;margin-left:1.2em;padding-left:1em}.zephr-form-summary-line-right.svelte-xf8v79{margin-left:auto;margin-right:1.5em;text-align:right}.zephr-form-summary-line-left.svelte-xf8v79{margin-left:10px}.zephr-form-summary-promo-middle.svelte-xf8v79{position:relative;top:calc(var(--zephr-input-height) * 0.5px)}.zephr-form-summary.svelte-xf8v79{border:var(--zf-payment-summary-border);border-radius:var(--zf-payment-summary-borderRadius);padding-top:1em;padding-bottom:1em;font-size:var(--zf-payment-summary-fontSize);margin-top:1.5em;margin-bottom:1.5em;color:var(--zf-payment-summary-color);background-color:var(--zf-payment-summary-bgColor)}.zephr-form-summary.svelte-xf8v79:first-child{margin-top:0}.zephr-form-summary-title.svelte-xf8v79{margin-bottom:1em;margin-left:1.2em}.zephr-form-summary-price-line.svelte-xf8v79{font-weight:bold;padding-left:1em;padding-top:1em}.zephr-form-summary-line.svelte-xf8v79{display:flex}.zephr-form-summary-price-line-upper.svelte-xf8v79{border-top:var(--zf-payment-summary-border);margin-top:1em}.zephr-form-summary-line-title.svelte-xf8v79{flex:0 0 65%;margin-left:1.2em}.zephr-form-summary-line-price.svelte-xf8v79{flex:1;text-align:right;margin-right:1.5em}.zephr-form-discount-line.svelte-xf8v79{display:flex;justify-content:space-between;margin:0.5em 0;margin-left:1.2em}
83.zephr-form-divider-container.svelte-1jhhsfx{display:flex;align-items:center;justify-content:center;margin:1.5em 0}.zephr-form-divider-line.svelte-1jhhsfx{height:1px;width:50%;margin:0 5px;background-color:var(--zephr-color-text-tinted)}.zephr-form-divider-line-complete.svelte-1jhhsfx{height:1px;width:100%;margin:0 5px;background-color:var(--zephr-color-text-tinted)}.zephr-form-divider-text.svelte-1jhhsfx{margin:0 12px;color:var(--zephr-color-text-main);font-size:var(--zf-info-fontSize);font-family:var(--zf-root-fontFamily);white-space:nowrap}
84.zephr-form-login-link.svelte-1jmemom.svelte-1jmemom{margin-top:1em;margin-bottom:1em;text-align:center}.zephr-form-login-link.svelte-1jmemom>a.svelte-1jmemom{color:var(--zf-link-color);margin-left:0.25em}
85.zephr-form-account-code-container.svelte-1hhep92{margin-top:1.5em}
86.zephr-form-invitation-container.svelte-1qkv7d3{border:1px solid;margin:1.5em 0;padding:20px;color:var(--zephr-color-text-main)}.zephr-form-invitation-title.svelte-1qkv7d3{margin-bottom:20px;font-weight:bold;font-family:var(--zf-root-fontFamily)}.zephr-form-invitation-email.svelte-1qkv7d3{display:flex;align-items:center}.zephr-form-invitation-input-container.svelte-1qkv7d3{flex-grow:1}.zephr-form-invitation-success-message.svelte-1qkv7d3{margin-top:0.5em}
87.subscription-option-product-label{margin-bottom:5px;margin-top:0}.subscription-option-wrapper.svelte-1gr56ov{display:flex;flex:1 0 28%;width:100%;max-width:400px}.subscription-option-wrapper.svelte-1gr56ov:only-child{max-width:325px}.subscription-option-box{display:flex;flex-direction:column;flex:1 1 0;width:0}.info-row.svelte-1gr56ov{margin-top:7px;margin-bottom:7px}.info-label.svelte-1gr56ov{display:inline;margin-right:10px}.info.svelte-1gr56ov{display:inline}hr.svelte-1gr56ov{border-width:1px 0px 0px;margin:5px 5px;border-color:var(--zephr-color-background-tinted)}.inner-box.svelte-1gr56ov{border:var(--zf-payment-options-border);border-radius:var(--zf-payment-options-borderRadius);background-color:var(--zf-payment-options-bgColor);height:100%;display:flex;flex-direction:column;flex-grow:1;padding:20px 20px;margin:0 10px;overflow:hidden}.change-disabled-label.svelte-1gr56ov{margin-top:15px}
88.subscription-options-container.svelte-bnxnvq{flex-wrap:wrap;font-size:var(--zf-payment-options-fontSize);width:100%;color:var(--zf-payment-options-color);line-height:18px;padding:31px 0 20px;display:grid;justify-content:space-evenly;justify-items:center;grid-template-columns:repeat(auto-fit, minmax(300px, 1fr));gap:13px}@media(max-width: 340px){.subscription-options-container.svelte-bnxnvq{grid-template-columns:repeat(auto-fit, minmax(280px, 1fr))}}
89.subscription-list-item.svelte-1qhs7yc{font-family:var(--zephr-typography-body-font), var(--zephr-typography-body-fallbackFont);color:var(--zephr-color-text-main)}hr.svelte-1qhs7yc{border-width:1px 0px 0px;margin:20px 0px;border-color:var(--zephr-color-background-tinted)}.inactive.svelte-1qhs7yc{text-decoration:line-through}h3.svelte-1qhs7yc{margin:0 0 20px}.inner-box.svelte-1qhs7yc{display:flex;flex-direction:column;flex-grow:1;padding:30px 20px;margin:0 10px;overflow:hidden;min-width:300px}.gift-pill.svelte-1qhs7yc{display:inline-block;background-color:var(--zephr-color-background-tinted);color:var(--zephr-color-text-main);font-size:0.75rem;font-weight:600;padding:3px 8px;border-radius:12px;margin-left:8px;vertical-align:middle}
90.zephr-form-tablink.svelte-py0ruk{display:flex;align-items:center;cursor:pointer;justify-content:space-between;text-decoration:none;color:var(--zephr-color-text-main);font-weight:590;padding:var(--zf-list-subscriptions-section-padding);border-bottom:1px solid var(--zephr-color-background-tinted)}.zephr-form-tablink.svelte-py0ruk:hover{text-decoration:underline}.zephr-form-tablink.svelte-py0ruk:last-child{border-bottom:none
91  }
92.zephr-subscription-list-box-item.svelte-xxnasy.svelte-xxnasy{font-family:var(--zephr-typography-body-font),
93      var(--zephr-typography-body-fallbackFont);color:var(--zephr-color-text-main);max-width:var(--zf-list-subscriptions-container-maxWidth);border-radius:var(--zf-list-subscriptions-container-borderRadius);border:var(--zf-list-subscriptions-container-border);padding:var(--zf-list-subscriptions-container-padding)}.zephr-inner-box.svelte-xxnasy.svelte-xxnasy{display:flex;flex-direction:column;flex-grow:1}.zephr-box-item-information.svelte-xxnasy.svelte-xxnasy{font-size:var(--zf-list-subscriptions-info-fontSize);color:var(--zephr-color-text-tinted);margin-top:8px}.zephr-section.svelte-xxnasy.svelte-xxnasy{padding:var(--zf-list-subscriptions-section-padding);border-bottom:1px solid var(--zephr-color-background-tinted);gap:8px}.zephr-section.svelte-xxnasy.svelte-xxnasy:first-child{padding-top:0;border-bottom:none}.zephr-section.svelte-xxnasy.svelte-xxnasy:last-child{border-bottom:none}.zephr-section.svelte-xxnasy span.svelte-xxnasy{font-weight:590}.zephr-section.svelte-xxnasy h2.svelte-xxnasy{margin:0}.gift-pill.svelte-xxnasy.svelte-xxnasy{display:inline-block;background-color:var(--zephr-color-background-tinted);color:var(--zephr-color-text-main);font-size:0.75rem;font-weight:600;padding:3px 8px;border-radius:12px;margin-left:8px;vertical-align:middle}.auto-renew-toggle-container.svelte-xxnasy.svelte-xxnasy{display:flex;align-items:center;gap:8px}.updating-indicator.svelte-xxnasy.svelte-xxnasy{font-size:0.85rem;color:var(--zephr-color-text-tinted);font-style:italic}.status-message.svelte-xxnasy.svelte-xxnasy{margin-top:8px;font-size:0.85rem}.status-message.success.svelte-xxnasy.svelte-xxnasy{color:#28a745}.status-message.error.svelte-xxnasy.svelte-xxnasy{color:#dc3545}
94.subscriptions-list-container.svelte-ldb1rq{margin-top:40px;
94display:flex;flex-direction:column;gap:40px}
95.subscription-custom-fields-update.svelte-t6s0pv{max-width:600px;margin:0 auto;padding:1rem}.title.svelte-t6s0pv{font-size:1.5rem;font-weight:600;margin-bottom:0.5rem;color:var(--text-color, #333)}.description.svelte-t6s0pv{color:var(--text-secondary, #666);margin-bottom:1rem;line-height:1.5}.subscription-info.svelte-t6s0pv{background:var(--background-light, #f8f9fa);padding:0.75rem;border-radius:4px;margin-bottom:1rem;border:1px solid var(--border-color, #e0e0e0)}.custom-fields-form.svelte-t6s0pv{display:flex;flex-direction:column;gap:1.5rem}.field-group.svelte-t6s0pv{display:flex;flex-direction:column;gap:0.25rem;padding:1rem;background:var(--background-light, #f8f9fa);border-radius:4px;border:1px solid var(--border-color, #e0e0e0)}.textarea-input.svelte-t6s0pv{min-height:80px;padding:0.75rem;border:1px solid var(--border-color, #ccc);border-radius:4px;font-family:inherit;font-size:1rem;resize:vertical;transition:border-color 0.2s}.textarea-input.svelte-t6s0pv:focus{outline:none;border-color:var(--primary-color, #007bff);box-shadow:0 0 0 2px var(--primary-color-alpha, rgba(0, 123, 255, 0.25))}.textarea-input.error.svelte-t6s0pv{border-color:var(--error-color, #dc3545)}.textarea-input.svelte-t6s0pv:disabled{background-color:var(--background-disabled, #f5f5f5);
95cursor:not-allowed}.error-message.svelte-t6s0pv{margin-top:0.5rem}.success-message.svelte-t6s0pv{padding:0.75rem;background:var(--success-background, #d4edda);border:1px solid var(--success-border, #c3e6cb);border-radius:4px;margin-top:0.5rem}.success-text.svelte-t6s0pv{color:var(--success-color, #155724);margin:0}.button-group.svelte-t6s0pv{display:flex;gap:0.75rem;margin-top:1rem}.submit-button.svelte-t6s0pv,.cancel-button.svelte-t6s0pv{padding:0.75rem 1.5rem;border:none;border-radius:4px;font-size:1rem;font-weight:500;cursor:pointer;transition:all 0.2s;display:flex;align-items:center;gap:0.5rem}.submit-button.svelte-t6s0pv{background:var(--primary-color, #007bff);color:white}.submit-button.svelte-t6s0pv:hover:not(:disabled){background:var(--primary-color-hover, #0056b3)}.submit-button.svelte-t6s0pv:disabled{background:var(--background-disabled, #6c757d);cursor:not-allowed}.cancel-button.svelte-t6s0pv{background:var(--secondary-color, #6c757d);color:white}.cancel-button.svelte-t6s0pv:hover:not(:disabled){background:var(--secondary-color-hover, #545b62)}.cancel-button.svelte-t6s0pv:disabled{opacity:0.6;cursor:not-allowed}
96.past-subscriptions-link-wrapper.svelte-zpa2t{margin:10px 0}
97.event-link-wrapper{margin-top:10px}.float-right.svelte-3cxpfz{float:right;margin-top:calc(var(--zephr-input-height) * -1px + 5px)}
98.bold-label.svelte-nx4w5y label{font-weight:bold}.read-only-input.svelte-nx4w5y{border:none;background:none;color:#333;cursor:default;outline:none;flex-grow:1;margin-right:10px;margin-top:15px}.zephr-form-relative-container.svelte-nx4w5y{display:flex;align-items:center;justify-content:space-between;width:100%}.update-link{white-space:nowrap;text-decoration:none;font-size:0.75em}
99.bold-label.svelte-nx4w5y label{font-weight:bold}.read-only-input.svelte-nx4w5y{border:none;background:none;color:#333;cursor:default;outline:none;flex-grow:1;margin-right:10px;margin-top:15px}.zephr-form-relative-container.svelte-nx4w5y{display:flex;align-items:center;justify-content:space-between;width:100%}.update-link{white-space:nowrap;text-decoration:none;font-size:0.75em}
100.zephr-form-ro-attribute{display:flex;align-items:center;height:50px;justify-content:flex-start}.zephr-form-ro-attribute-label{margin-right:10px;&:after {
101      content: ": ";
102    }}
103hr.svelte-jmotet{border-width:1px 0px 0px;margin:20px 0px;border-color:var(--zephr-color-background-tinted)}.session-container.svelte-jmotet{padding:15px;display:flex;flex-direction:column}.device-title.svelte-jmotet{font-weight:bold;font-size:1.2em;margin-bottom:10px}.current-device.svelte-jmotet{color:#777;font-size:0.9em;margin-left:10px}.login-time.svelte-jmotet,.browser.svelte-jmotet,.country.svelte-jmotet{margin-bottom:10px;font-size:0.9em}
104.sign-out-all.svelte-1ogdv39{color:#0073e6;cursor:pointer;font-size:1em;margin:20px 0;text-align:center}.sign-out-all.svelte-1ogdv39:hover{text-decoration:underline}
105.table.svelte-7sscau.svelte-7sscau{display:grid;grid-template-columns:0.7fr 1.4fr 1fr 0.6fr}.table-head.svelte-7sscau.svelte-7sscau{display:contents}.table-row.svelte-7sscau.svelte-7sscau{display:contents}.table-head.svelte-7sscau>div.svelte-7sscau{font-size:13px;padding:13px 10px 10px;border-bottom:1px solid var(--zephr-color-background-tinted)}.table-row.svelte-7sscau>div.svelte-7sscau{font-size:var(--zf-info-fontSize);height:60px;padding:0 10px;border-bottom:1px solid var(--zephr-color-background-tinted);display:flex;align-items:center}.table-head.svelte-7sscau>div.svelte-7sscau:first-child,.table-row.svelte-7sscau>div.svelte-7sscau:first-child{padding-left:0}.table-head.svelte-7sscau>div.svelte-7sscau:last-child,.table-row.svelte-7sscau>div.svelte-7sscau:last-child{padding-right:0}.taxes.svelte-7sscau.svelte-7sscau{color:var(--zephr-color-background-tinted);white-space:pre;font-size:small}
106.zephr-form-button-group.svelte-5uv9ua{display:flex;flex-direction:row;gap:12px;margin-top:20px}.zephr-form-back-button.svelte-5uv9ua{padding:0 20px;border-radius:calc(var(--zephr-button-borderRadius) * 1px);border-style:solid;border-width:calc(var(--zephr-button-borderWidth) * 1px);border-color:var(--zephr-color-action-main);display:flex;justify-content:center;align-items:center;width:100%;background-color:var(--zephr-color-action-main);color:var(--zf-button-color);cursor:pointer}.zephr-form-continue-button.svelte-5uv9ua{padding:0 20px;border-radius:calc(var(--zephr-button-borderRadius) * 1px);border-style:solid;border-width:calc(var(--zephr-button-borderWidth) * 1px);border-color:var(--zephr-color-action-main);display:flex;justify-content:center;align-items:center;width:100%;background-color:var(--zf-button-color);color:var(--zephr-color-action-main);
106cursor:pointer}.zephr-form-back-button.svelte-5uv9ua:hover{background-color:var(--zephr-color-action-tinted);border-color:var(--zephr-color-action-tinted)}.zephr-form-continue-button.svelte-5uv9ua:hover{background-color:var(--zephr-color-action-tinted);border-color:var(--zephr-color-action-tinted);color:var(--zf-button-color)}.zephr-form-back-button.svelte-5uv9ua:not(inputHeight){height:calc(var(--zephr-button-height) * 1px)}.zephr-form-continue-button.svelte-5uv9ua:not(inputHeight){height:calc(var(--zephr-button-height) * 1px)}
107.zephr-form-button.svelte-1uaz0r{padding:0 20px;text-decoration:none;text-transform:capitalize;border-radius:calc(var(--zephr-button-borderRadius) * 1px);font-size:var(--zf-button-fontSize);font-weight:normal;cursor:pointer;border-style:solid;border-width:calc(var(--zephr-button-borderWidth) * 1px);border-color:var(--zephr-color-action-tinted);transition:backdrop-filter 0.2s, background-color 0.2s;display:flex;justify-content:center;align-items:center;width:100%;background-color:var(--zephr-color-action-main);color:var(--zf-button-color);position:relative;overflow:hidden;font-family:var(--zf-root-fontFamily);height:calc(var(--zephr-button-height) * 1px)}.zephr-form-button.svelte-1uaz0r:hover{background-color:var(--zephr-color-action-tinted);border-color:var(--zephr-color-action-tinted);color:var(--zf-button-color)}.zephr-form-button-top-margin.svelte-1uaz0r{margin-top:20px}
108.recipient-name-section.svelte-hvl7z2{margin-top:1rem;margin-bottom:1rem}.field.svelte-hvl7z2{margin-bottom:0.5rem}label.svelte-hvl7z2{display:block;margin-bottom:0.5rem;color:var(--zephr-color-text-tinted);font-family:var(--zf-root-fontFamily)}input.svelte-hvl7z2{width:100%;padding:0.5rem;border:calc(var(--zephr-input-borderWidth) * 1px) solid var(--zephr-input-borderColor);border-radius:calc(var(--zephr-input-borderRadius) * 1px);background-color:var(--zf-input-bgColor);color:var(--zephr-color-text-main);font-family:var(--zf-root-fontFamily)}input.svelte-hvl7z2::placeholder{color:var(--zephr-color-background-tinted);font-family:var(--zf-root-fontFamily)}input.svelte-hvl7z2:focus{outline:none;border-color:var(--zephr-color-action-main)}.error.svelte-hvl7z2{border-color:var(--zephr-color-warning-main) !important}.error-text.svelte-hvl7z2{color:var(--zephr-color-warning-main);font-size:0.875em;margin-top:0.25rem;font-family:var(--zf-root-fontFamily)}
109.recipient-email-section.svelte-1odylgp{margin-bottom:1rem}.field.svelte-1odylgp{margin-bottom:0.5rem}label.svelte-1odylgp{display:block;margin-bottom:0.5rem;color:var(--zephr-color-text-tinted);font-family:var(--zf-root-fontFamily)}input.svelte-1odylgp{width:100%;padding:0.5rem;border:calc(var(--zephr-input-borderWidth) * 1px) solid var(--zephr-input-borderColor);border-radius:calc(var(--zephr-input-borderRadius) * 1px);background-color:var(--zf-input-bgColor);color:var(--zephr-color-text-main);font-family:var(--zf-root-fontFamily)}input.svelte-1odylgp::placeholder{color:var(--zephr-color-background-tinted);font-family:var(--zf-root-fontFamily)}input.svelte-1odylgp:focus{outline:none;border-color:var(--zephr-color-action-main)}.error.svelte-1odylgp{border-color:var(--zephr-color-warning-main) !important}.error-text.svelte-1odylgp{color:var(--zephr-color-warning-main);font-size:0.875em;margin-top:0.25rem;font-family:var(--zf-root-fontFamily)}
110.zephr-form-input-error-text.svelte-dxm1g8{color:var(--zephr-color-warning-main);font-family:var(--zf-root-fontFamily);font-size:12px;margin-top:4px}.zephr-form-input-select.svelte-dxm1g8{display:block;appearance:auto;width:100%;height:calc(var(--zephr-input-height) * 1px);font-size:var(--zf-input-fontSize);font-family:var(--zf-root-fontFamily);border:calc(var(--zephr-input-borderWidth) * 1px) solid
111      var(--zephr-input-borderColor);border-radius:calc(var(--zephr-input-borderRadius) * 1px);transition:border-color 0.25s ease, box-shadow 0.25s ease;outline:0;color:var(--zephr-color-text-main);background-color:var(--zf-input-bgColor);padding:10px}.zephr-form-input-select.unselected.svelte-dxm1g8{color:var(--zephr-color-background-tinted)}.zephr-form-input-select.error.svelte-dxm1g8{border-color:var(--zephr-color-warning-main)}.zephr-form-input-select.svelte-dxm1g8:disabled{background-color:var(--zephr-color-background-tinted);cursor:not-allowed}
112.zephr-form-input-error-text.svelte-dxm1g8{color:var(--zephr-color-warning-main);font-family:var(--zf-root-fontFamily);font-size:12px;margin-top:4px}.zephr-form-input-select.svelte-dxm1g8{display:block;appearance:auto;width:100%;height:calc(var(--zephr-input-height) * 1px);font-size:var(--zf-input-fontSize);font-family:var(--zf-root-fontFamily);border:calc(var(--zephr-input-borderWidth) * 1px) solid
113      var(--zephr-input-borderColor);border-radius:calc(var(--zephr-input-borderRadius) * 1px);transition:border-color 0.25s ease, box-shadow 0.25s ease;outline:0;color:var(--zephr-color-text-main);background-color:var(--zf-input-bgColor);padding:10px}.zephr-form-input-select.unselected.svelte-dxm1g8{color:var(--zephr-color-background-tinted)}.zephr-form-input-select.error.svelte-dxm1g8{border-color:var(--zephr-color-warning-main)}.zephr-form-input-select.svelte-dxm1g8:disabled{background-color:var(--zephr-color-background-tinted);cursor:not-allowed}
114.recipient-address-section.svelte-1lcs5wj{margin-bottom:1rem}.address-main-label.svelte-1lcs5wj{display:block;margin-bottom:0.75rem;color:var(--zephr-color-text-tinted);font-family:var(--zf-root-fontFamily);font-weight:600}.address-fields.svelte-1lcs5wj{display:flex;flex-direction:column;gap:1rem}.field.svelte-1lcs5wj{width:100%}label.svelte-1lcs5wj{display:block;margin-bottom:0.5rem;color:var(--zephr-color-text-tinted);font-family:var(--zf-root-fontFamily)}input.svelte-1lcs5wj{width:100%;padding:0.5rem;border:calc(var(--zephr-input-borderWidth) * 1px) solid var(--zephr-input-borderColor);border-radius:calc(var(--zephr-input-borderRadius) * 1px);background-color:var(--zf-input-bgColor);color:var(--zephr-color-text-main);font-family:var(--zf-root-fontFamily)}input.svelte-1lcs5wj::placeholder{color:var(--zephr-color-background-tinted);font-family:var(--zf-root-fontFamily)}input.svelte-1lcs5wj:focus{outline:none;border-color:var(--zephr-color-action-main)}.error-text.svelte-1lcs5wj{color:var(--zephr-color-warning-main);font-size:0.875em;margin-top:0.25rem;font-family:var(--zf-root-fontFamily)}
115.recipient-message-section.svelte-h6tpk7{margin-top:1rem;margin-bottom:1rem}.field.svelte-h6tpk7{margin-bottom:0.5rem}label.svelte-h6tpk7{display:block;margin-bottom:0.5rem;color:var(--zephr-color-text-tinted);font-family:var(--zf-root-fontFamily)}textarea.svelte-h6tpk7{width:100%;min-height:100px;resize:vertical;padding:0.5rem;border:calc(var(--zephr-input-borderWidth) * 1px) solid var(--zephr-input-borderColor);border-radius:calc(var(--zephr-input-borderRadius) * 1px);background-color:var(--zf-input-bgColor);color:var(--zephr-color-text-main);font-family:var(--zf-root-fontFamily)}textarea.svelte-h6tpk7::placeholder{color:var(--zephr-color-background-tinted);font-family:var(--zf-root-fontFamily)}textarea.svelte-h6tpk7:focus{outline:none;border-color:var(--zephr-color-action-main)}
116.zephr-form-input-wrapper.svelte-764k6k{display:flex;flex-direction:column;margin-bottom:16px;width:100%}label.svelte-764k6k{margin-bottom:8px;font-weight:500}input.svelte-764k6k{padding:12px;border-radius:var(--input-border-radius, 4px);border:var(--input-border-width, 1px) solid var(--input-border-color, #ccc);font-size:16px;height:var(--input-height, 50px);box-sizing:border-box}input.svelte-764k6k:focus{outline:none;border-color:var(--color-action-main, #006EDB)}input.error.svelte-764k6k{border-color:var(--color-warning-main, #D90B00)}.error-message.svelte-764k6k{color:var(--color-warning-main, #D90B00);font-size:14px;margin-top:4px}.required.svelte-764k6k{color:var(--color-warning-main, #D90B00)}
117.zephr-gift-list-box-item.svelte-srvimy.svelte-srvimy{margin-bottom:1.5rem;font-family:var(--zephr-typography-body-font), var(--zephr-typography-body-fallbackFont);color:var(--zephr-color-text-main);max-width:var(--zf-list-subscriptions-container-maxWidth);border-radius:var(--zf-list-subscriptions-container-borderRadius);border:var(--zf-list-subscriptions-container-border);padding:var(--zf-list-subscriptions-container-padding);position:relative;overflow:hidden;background-color:white}.zephr-inner-box.svelte-srvimy.svelte-srvimy{display:flex;flex-direction:column;flex-grow:1;padding-top:20px}.zephr-banner-top.svelte-srvimy.svelte-srvimy{background-color:black;color:white;padding:5px 1.5rem;width:100%;font-size:0.875rem;text-align:center;position:absolute;top:0;left:0;right:0}.zephr-header-section.svelte-srvimy.svelte-srvimy{position:relative}.zephr-status-pill.svelte-srvimy.svelte-srvimy{position:absolute;top:0;right:0;display:inline-block;padding:4px 12px;border-radius:16px;font-size:0.75rem;font-weight:500;color:white;background-color:black}.zephr-section.svelte-srvimy.svelte-srvimy{padding:var(--zf-list-subscriptions-section-padding);gap:8px}.zephr-section.svelte-srvimy.svelte-srvimy:first-child{padding-top:0}.zephr-section.svelte-srvimy span.svelte-srvimy{font-weight:590;display:block;margin-bottom:0.25rem}.zephr-box-item-information.svelte-srvimy.svelte-srvimy{font-size:var(--zf-list-subscriptions-info-fontSize);color:var(--zephr-color-text-tinted);margin-top:8px}
118.subscriptions-list-container.svelte-ldb1rq{margin-top:40px;
118display:flex;flex-direction:column;gap:40px}
119.zephr-form-gift-toggle.svelte-93167f{margin:10px 0;font-size:var(--zf-font-size-base);font-family:var(--zf-root-fontFamily)}
120.zephr-form-gift-future-date-toggle.svelte-c9nudz{margin:10px 0;font-size:var(--zf-font-size-base);font-family:var(--zf-root-fontFamily)}.zephr-form-gift-future-date-toggle-description.svelte-c9nudz{margin:5px 0 0 0;font-size:var(--zf-font-size-small, 14px);color:var(--zf-color-text-secondary, #666);line-height:1.4}
121.zephr-form-gift-future-date-input.svelte-1vykgtl{margin:10px 0;font-size:var(--zf-font-size-base);font-family:var(--zf-root-fontFamily)}.zephr-form-gift-future-date-input-description.svelte-1vykgtl{margin:5px 0 0 0;font-size:var(--zf-font-size-small, 14px);color:var(--zf-color-text-secondary, #666);line-height:1.4}
122.suspend-resume-subscription-section.svelte-1hog2jr{margin-top:1rem;margin-bottom:1rem}.field.svelte-1hog2jr{margin-bottom:0.5rem}label.svelte-1hog2jr{display:block;margin-bottom:0.5rem;color:var(--zephr-color-text-tinted);font-family:var(--zf-root-fontFamily)}input.svelte-1hog2jr{width:100%;padding:0.5rem;border:calc(var(--zephr-input-borderWidth) * 1px) solid var(--zephr-input-borderColor);border-radius:calc(var(--zephr-input-borderRadius) * 1px);background-color:var(--zf-input-bgColor);color:var(--zephr-color-text-main);font-family:var(--zf-root-fontFamily)}input.svelte-1hog2jr::placeholder{color:var(--zephr-color-background-tinted);font-family:var(--zf-root-fontFamily)}input.svelte-1hog2jr:focus{outline:none;border-color:var(--zephr-color-action-main)}.error.svelte-1hog2jr{border-color:var(--zephr-color-warning-main) !important}.error-text.svelte-1hog2jr{color:var(--zephr-color-warning-main);font-size:0.875em;margin-top:0.25rem;font-family:var(--zf-root-fontFamily)}
123.subscription-custom-fields-container.svelte-uox0m2{padding:0;max-width:800px;margin:0 auto}.form-title.svelte-uox0m2{font-size:1.75rem;font-weight:700;margin:0 0 16px 0;color:var(--zephr-color-text-main)}.form-description.svelte-uox0m2{font-size:1rem;margin:0 0 32px 0;color:var(--zephr-color-text-tinted);line-height:1.5}.custom-fields-form.svelte-uox0m2{display:flex;flex-direction:column;gap:16px}.field-item.svelte-uox0m2{display:flex;flex-direction:column;gap:8px;padding:16px;background-color:var(--zephr-color-background-main);border:1px solid var(--zephr-color-background-tinted);border-radius:8px;transition:all 0.2s ease}.field-item.svelte-uox0m2:focus-within{border-color:var(--zephr-color-action-main);box-shadow:0 0 0 2px rgba(66, 153, 225, 0.1)}.field-label.svelte-uox0m2{font-weight:600;font-size:0.9rem;color:var(--zephr-color-text-main);display:flex;align-items:center;gap:8px}.field-input.svelte-uox0m2{padding:12px 16px;border:2px solid var(--zephr-color-background-tinted);border-radius:8px;font-size:1rem;transition:all 0.2s ease;background-color:var(--zephr-color-background-main)}.field-input.svelte-uox0m2:focus{outline:none;border-color:var(--zephr-color-action-main);box-shadow:0 0 0 3px rgba(66, 153, 225, 0.1)}.field-input.svelte-uox0m2:disabled{background-color:#f5f5f5;color:#666;cursor:not-allowed}.success-message.svelte-uox0m2{background-color:#d4edda;border:1px solid #c3e6cb;color:#155724;padding:12px 16px;border-radius:8px;margin:16px 0;font-weight:500;display:flex;align-items:center;gap:8px}.error-message.svelte-uox0m2{background-color:#f8d7da;border:1px solid #f5c6cb;color:#721c24;padding:12px 16px;border-radius:8px;margin:16px 0;font-weight:500;display:flex;align-items:center;gap:8px}.form-actions.svelte-uox0m2{margin-top:32px;padding-top:24px;border-top:1px solid var(--zephr-color-background-tinted);text-align:center;display:flex;justify-content:center;gap:16px}.submit-button.svelte-uox0m2{background:linear-gradient(135deg, var(--zephr-color-action-main) 0%, var(--zephr-color-action-tinted) 100%);color:white;border:none;padding:16px 32px;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:all 0.2s ease;min-width:160px}.submit-button.svelte-uox0m2:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 4px 8px rgba(0, 0, 0, 0.2)}.submit-button.svelte-uox0m2:disabled{opacity:0.6;cursor:not-allowed;transform:none}.simple-field-group.svelte-uox0m2{margin-bottom:24px;display:flex;flex-direction:column;gap:16px}.loading.svelte-uox0m2{text-align:center;padding:40px 20px;color:var(--zephr-color-text-tinted);font-size:1.1rem;background-color:var(--zephr-color-background-tinted);border-radius:8px}
124.bill-to-contact-section.svelte-z564ap{margin-top:1rem;margin-bottom:1rem}.field.svelte-z564ap{margin-bottom:0.5rem}label.svelte-z564ap{display:block;margin-bottom:0.5rem;color:var(--zephr-color-text-tinted);font-family:var(--zf-root-fontFamily)}input.svelte-z564ap,select.svelte-z564ap{width:100%;padding:0.5rem;border:calc(var(--zephr-input-borderWidth) * 1px) solid
125      var(--zephr-input-borderColor);border-radius:calc(var(--zephr-input-borderRadius) * 1px);background-color:var(--zf-input-bgColor);color:var(--zephr-color-text-main);font-family:var(--zf-root-fontFamily)}input.svelte-z564ap::placeholder{color:var(--zephr-color-background-tinted);font-family:var(--zf-root-fontFamily)}input.svelte-z564ap:focus{outline:none;border-color:var(--zephr-color-action-main)}.error.svelte-z564ap{border-color:var(--zephr-color-warning-main) !important}.error-text.svelte-z564ap{color:var(--zephr-color-warning-main);font-size:0.875em;margin-top:0.25rem;font-family:var(--zf-root-fontFamily)}
126.zephr-form-max-width{max-width:var(--zf-container-maxWidth);margin:auto}.zephr-form-content.svelte-j7lu48{padding:var(--zf-container-padding);background-color:var(--zf-container-bgColor);border:var(--zf-container-border);border-radius:var(--zf-container-borderRadius)}.zephr-payment-options-content.svelte-j7lu48{background-color:transparent;border:none;border-radius:0}.close-button-container.svelte-j7lu48{text-align:right;width:100%;margin-bottom:15px}.close-button.svelte-j7lu48{cursor:pointer;display:inline;padding:7px;min-width:32px;min-height:32px;border-radius:16px;margin:1px}.loading-placeholder.svelte-j7lu48{display:flex;justify-content:center;align-items:center;min-height:200px}
127.zephr-form{--zf-root-fontSize:16px;--zf-root-fontFamily:var(--zephr-typography-body-font), var(--zephr-typography-body-fallbackFont);--zf-container-maxWidth:440px;--zf-container-padding:20px;--zf-container-margin:20px auto;--zf-container-border:none;--zf-container-borderRadius:calc(var(--zephr-input-borderRadius) * 1px);--zf-container-color:var(--zephr-color-text-main);--zf-container-bgColor:var(--zephr-color-background-main, transparent);--zf-info-fontSize:14px;--zf-subtext-fontSize:12px;--zf-link-color:#6ba5e9;--zf-input-fontSize:var(--zf-root-fontSize);--zf-input-bgColor:var(--zephr-color-background-main, transparent);--zf-button-fontSize:calc(var(--zephr-button-fontSize, 16) * 1px);--zf-button-color:#fff;--zf-password-valid-color:#7bcb7f;--zf-password-invalid-color:#c4c4c4;--zf-payment-options-fontSize:var(--zf-subtext-fontSize);--zf-payment-options-color:var(--zephr-color-text-main);--zf-payment-options-bgColor:var(--zf-container-bgColor);--zf-payment-options-border:calc(var(--zephr-input-borderWidth) * 1px) solid var(--zephr-input-borderColor);--zf-payment-options-borderRadius:calc(var(--zephr-input-borderRadius) * 1px);--zf-payment-options-highlighted-color:var(--zephr-color-text-main);--zf-payment-options-highlighted-bgColor:var(--zephr-color-accent-main);--zf-payment-summary-fontSize:var(--zf-subtext-fontSize);--zf-payment-summary-color:var(--zephr-color-text-main);--zf-payment-summary-bgColor:var(--zf-input-bgColor);--zf-payment-summary-border:calc(var(--zephr-input-borderWidth) * 1px) solid var(--zephr-input-borderColor);--zf-payment-summary-borderRadius:calc(var(--zephr-input-borderRadius) * 1px);--zf-list-subscriptions-container-maxWidth:630px;--zf-list-subscriptions-container-padding:24px;--zf-list-subscriptions-section-padding:16px 0px;--zf-list-subscriptions-container-border:calc(var(--zephr-input-borderWidth) * 1px) solid var(--zephr-input-borderColor);--zf-list-subscriptions-container-borderRadius:calc(var(--zephr-input-borderRadius) * 1px);--zf-list-subscriptions-info-fontSize:var(--zf-info-fontSize)}.zephr-form.svelte-789zog{color:var(--zf-container-color);margin:var(--zf-container-margin);font-size:var(--zf-root-fontSize);font-family:var(--zf-root-fontFamily)}.zephr-form *{box-sizing:border-box}:where(.zephr-form) button{text-transform:unset;overflow:visible;font-family:var(--zf-root-fontFamily, unset);font-size:var(--zf-root-fontSize, unset);line-height:unset;margin:unset;padding:unset;border:unset;background:unset;&:hover, &:focus-visible {
128            border: unset;
129            background: unset;
130        }}.zephr-form-disabled-div{pointer-events:none;opacity:0.8}.zephr-form-relative-container{position:relative}.zephr-form-flex-container{display:flex}
130.zephr-form-input-inner-button{cursor:pointer;position:absolute;top:50%;transform:translateY(-50%);right:5px;padding:10px 5px}.zephr-form-input-inner-text{color:var(--zephr-color-text-main);font-size:var(--zf-subtext-fontSize);font-weight:bold;font-family:var(--zf-root-fontFamily)}
131</style>
132                                
132<script data-cmp-ab="2">(function () {
133	'use strict';
134
135	/** @returns {void} */
136	function noop() {}
137
138	/**
139	 * @template T
140	 * @template S
141	 * @param {T} tar
142	 * @param {S} src
143	 * @returns {T & S}
144	 */
145	function assign(tar, src) {
146		// @ts-ignore
147		for (const k in src) tar[k] = src[k];
148		return /** @type {T & S} */ (tar);
149	}
150
151	function run(fn) {
152		return fn();
153	}
154
155	function blank_object() {
156		return Object.create(null);
157	}
158
159	/**
160	 * @param {Function[]} fns
161	 * @returns {void}
162	 */
163	function run_all(fns) {
164		fns.forEach(run);
165	}
166
167	/**
168	 * @param {any} thing
169	 * @returns {thing is Function}
170	 */
171	function is_function(thing) {
172		return typeof thing === 'function';
173	}
174
175	/** @returns {boolean} */
176	function safe_not_equal(a, b) {
177		return a != a ? b == b : a !== b || (a && typeof a === 'object') || typeof a === 'function';
178	}
179
180	let src_url_equal_anchor;
181
182	/**
183	 * @param {string} element_src
184	 * @param {string} url
185	 * @returns {boolean}
186	 */
187	function src_url_equal(element_src, url) {
188		if (element_src === url) return true;
189		if (!src_url_equal_anchor) {
190			src_url_equal_anchor = document.createElement('a');
191		}
192		// This is actually faster than doing URL(..).href
193		src_url_equal_anchor.href = url;
194		return element_src === src_url_equal_anchor.href;
195	}
196
197	/** @returns {boolean} */
198	function is_empty(obj) {
199		return Object.keys(obj).length === 0;
200	}
201
202	function create_slot(definition, ctx, $$scope, fn) {
203		if (definition) {
204			const slot_ctx = get_slot_context(definition, ctx, $$scope, fn);
205			return definition[0](slot_ctx);
206		}
207	}
208
209	function get_slot_context(definition, ctx, $$scope, fn) {
210		return definition[1] && fn ? assign($$scope.ctx.slice(), definition[1](fn(ctx))) : $$scope.ctx;
211	}
212
213	function get_slot_changes(definition, $$scope, dirty, fn) {
214		if (definition[2] && fn) {
215			const lets = definition[2](fn(dirty));
216			if ($$scope.dirty === undefined) {
217				return lets;
218			}
219			if (typeof lets === 'object') {
220				const merged = [];
221				const len = Math.max($$scope.dirty.length, lets.length);
222				for (let i = 0; i < len; i += 1) {
223					merged[i] = $$scope.dirty[i] | lets[i];
224				}
225				return merged;
226			}
227			return $$scope.dirty | lets;
228		}
229		return $$scope.dirty;
230	}
231
232	/** @returns {void} */
233	function update_slot_base(
234		slot,
235		slot_definition,
236		ctx,
237		$$scope,
238		slot_changes,
239		get_slot_context_fn
240	) {
241		if (slot_changes) {
242			const slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn);
243			slot.p(slot_context, slot_changes);
244		}
245	}
246
247	/** @returns {any[] | -1} */
248	function get_all_dirty_from_scope($$scope) {
249		if ($$scope.ctx.length > 32) {
250			const dirty = [];
251			const length = $$scope.ctx.length / 32;
252			for (let i = 0; i < length; i++) {
253				dirty[i] = -1;
254			}
255			return dirty;
256		}
257		return -1;
258	}
259
260	function null_to_empty(value) {
261		return value == null ? '' : value;
262	}
263
264	function action_destroyer(action_result) {
265		return action_result && is_function(action_result.destroy) ? action_result.destroy : noop;
266	}
267
268	/**
269	 * @param {Node} target
270	 * @param {Node} node
271	 * @returns {void}
272	 */
273	function append(target, node) {
274		target.appendChild(node);
275	}
276
277	/**
278	 * @param {Node} target
279	 * @param {Node} node
280	 * @param {Node} [anchor]
281	 * @returns {void}
282	 */
283	function insert(target, node, anchor) {
284		target.insertBefore(node, anchor || null);
285	}
286
287	/**
288	 * @param {Node} node
289	 * @returns {void}
290	 */
291	function detach(node) {
292		if (node.parentNode) {
293			node.parentNode.removeChild(node);
294		}
295	}
296
297	/**
298	 * @returns {void} */
299	function destroy_each(iterations, detaching) {
300		for (let i = 0; i < iterations.length; i += 1) {
301			if (iterations[i]) iterations[i].d(detaching);
302		}
303	}
304
305	/**
306	 * @template {keyof HTMLElementTagNameMap} K
307	 * @param {K} name
308	 * @returns {HTMLElementTagNameMap[K]}
309	 */
310	function element(name) {
311		return document.createElement(name);
312	}
313
314	/**
315	 * @template {keyof SVGElementTagNameMap} K
316	 * @param {K} name
317	 * @returns {SVGElement}
318	 */
319	function svg_element(name) {
320		return document.createElementNS('http://www.w3.org/2000/svg', name);
321	}
322
323	/**
324	 * @param {string} data
325	 * @returns {Text}
326	 */
327	function text(data) {
328		return document.createTextNode(data);
329	}
330
331	/**
332	 * @returns {Text} */
333	function space() {
334		return text(' ');
335	}
336
337	/**
338	 * @returns {Text} */
339	function empty() {
340		return text('');
341	}
342
343	/**
344	 * @param {EventTarget} node
345	 * @param {string} event
346	 * @param {EventListenerOrEventListenerObject} handler
347	 * @param {boolean | AddEventListenerOptions | EventListenerOptions} [options]
348	 * @returns {() => void}
349	 */
350	function listen(node, event, handler, options) {
351		node.addEventListener(event, handler, options);
352		return () => node.removeEventListener(event, handler, options);
353	}
354
355	/**
356	 * @returns {(event: any) => any} */
357	function prevent_default(fn) {
358		return function (event) {
359			event.preventDefault();
360			// @ts-ignore
361			return fn.call(this, event);
362		};
363	}
364
365	/**
366	 * @returns {(event: any) => void} */
367	function self(fn) {
368		return function (event) {
369			// @ts-ignore
370			if (event.target === this) fn.call(this, event);
371		};
372	}
373
374	/**
375	 * @param {Element} node
376	 * @param {string} attribute
377	 * @param {string} [value]
378	 * @returns {void}
379	 */
380	function attr(node, attribute, value) {
381		if (value == null) node.removeAttribute(attribute);
382		else if (node.getAttribute(attribute) !== value) node.setAttribute(attribute, value);
383	}
384	/**
385	 * List of attributes that should always be set through the attr method,
386	 * because updating them through the property setter doesn't work reliably.
387	 * In the example of `width`/`height`, the problem is that the setter only
388	 * accepts numeric values, but the attribute can also be set to a string like `50%`.
389	 * If this list becomes too big, rethink this approach.
390	 */
391	const always_set_through_set_attribute = ['width', 'height'];
392
393	/**
394	 * @param {Element & ElementCSSInlineStyle} node
395	 * @param {{ [x: string]: string }} attributes
396	 * @returns {void}
397	 */
398	function set_attributes(node, attributes) {
399		// @ts-ignore
400		const descriptors = Object.getOwnPropertyDescriptors(node.__proto__);
401		for (const key in attributes) {
402			if (attributes[key] == null) {
403				node.removeAttribute(key);
404			} else if (key === 'style') {
405				node.style.cssText = attributes[key];
406			} else if (key === '__value') {
407				/** @type {any} */ (node).value = node[key] = attributes[key];
408			} else if (
409				descriptors[key] &&
410				descriptors[key].set &&
411				always_set_through_set_attribute.indexOf(key) === -1
412			) {
413				node[key] = attributes[key];
414			} else {
415				attr(node, key, attributes[key]);
416			}
417		}
418	}
419
420	/**
421	 * @param {Element} element
422	 * @returns {ChildNode[]}
423	 */
424	function children(element) {
425		return Array.from(element.childNodes);
426	}
427
428	/**
429	 * @param {Text} text
430	 * @param {unknown} data
431	 * @returns {void}
432	 */
433	function set_data(text, data) {
434		data = '' + data;
435		if (text.data === data) return;
436		text.data = /** @type {string} */ (data);
437	}
438
439	/**
440	 * @returns {void} */
441	function set_input_value(input, value) {
442		input.value = value == null ? '' : value;
443	}
444
445	/**
446	 * @returns {void} */
447	function set_style(node, key, value, important) {
448		if (value == null) {
449			node.style.removeProperty(key);
450		} else {
451			node.style.setProperty(key, value, important ? 'important' : '');
452		}
453	}
454
455	/**
456	 * @returns {void} */
457	function select_option(select, value, mounting) {
458		for (let i = 0; i < select.options.length; i += 1) {
459			const option = select.options[i];
460			if (option.__value === value) {
461				option.selected = true;
462				return;
463			}
464		}
465		if (!mounting || value !== undefined) {
466			select.selectedIndex = -1; // no option should be selected
467		}
468	}
469
470	/**
471	 * @returns {void} */
472	function toggle_class(element, name, toggle) {
473		// The `!!` is required because an `undefined` flag means flipping the current state.
474		element.classList.toggle(name, !!toggle);
475	}
476
477	/**
478	 * @template T
479	 * @param {string} type
480	 * @param {T} [detail]
481	 * @param {{ bubbles?: boolean, cancelable?: boolean }} [options]
482	 * @returns {CustomEvent<T>}
483	 */
484	function custom_event(type, detail, { bubbles = false, cancelable = false } = {}) {
485		return new CustomEvent(type, { detail, bubbles, cancelable });
486	}
487
488	function construct_svelte_component(component, props) {
489		return new component(props);
490	}
491
492	/**
493	 * @typedef {Node & {
494	 * 	claim_order?: number;
495	 * 	hydrate_init?: true;
496	 * 	actual_end_child?: NodeEx;
497	 * 	childNodes: NodeListOf<NodeEx>;
498	 * }} NodeEx
499	 */
500
501	/** @typedef {ChildNode & NodeEx} ChildNodeEx */
502
503	/** @typedef {NodeEx & { claim_order: number }} NodeEx2 */
504
505	/**
506	 * @typedef {ChildNodeEx[] & {
507	 * 	claim_info?: {
508	 * 		last_index: number;
509	 * 		total_claimed: number;
510	 * 	};
511	 * }} ChildNodeArray
512	 */
513
514	let current_component;
515
516	/** @returns {void} */
517	function set_current_component(component) {
518		current_component = component;
519	}
520
521	function get_current_component() {
522		if (!current_component) throw new Error('Function called outside component initialization');
523		return current_component;
524	}
525
526	/**
527	 * The `onMount` function schedules a callback to run as soon as the component has been mounted to the DOM.
528	 * It must be called during the component's initialisation (but doesn't need to live *inside* the component;
529	 * it can be called from an external module).
530	 *
531	 * If a function is returned _synchronously_ from `onMount`, it will be called when the component is unmounted.
532	 *
533	 * `onMount` does not run inside a [server-side component](https://svelte.dev/docs#run-time-server-side-component-api).
534	 *
535	 * https://svelte.dev/docs/svelte#onmount
536	 * @template T
537	 * @param {() => import('./private.js').NotFunction<T> | Promise<import('./private.js').NotFunction<T>> | (() => any)} fn
538	 * @returns {void}
539	 */
540	function onMount(fn) {
541		get_current_component().$$.on_mount.push(fn);
542	}
543
544	/**
545	 * Schedules a callback to run immediately after the component has been updated.
546	 *
547	 * The first time the callback runs will be after the initial `onMount`
548	 *
549	 * https://svelte.dev/docs/svelte#afterupdate
550	 * @param {() => any} fn
551	 * @returns {void}
552	 */
553	function afterUpdate(fn) {
554		get_current_component().$$.after_update.push(fn);
555	}
556
557	/**
558	 * Schedules a callback to run immediately before the component is unmounted.
559	 *
560	 * Out of `onMount`, `beforeUpdate`, `afterUpdate` and `onDestroy`, this is the
561	 * only one that runs inside a server-side component.
562	 *
563	 * https://svelte.dev/docs/svelte#ondestroy
564	 * @param {() => any} fn
565	 * @returns {void}
566	 */
567	function onDestroy(fn) {
568		get_current_component().$$.on_destroy.push(fn);
569	}
570
571	/**
572	 * Creates an event dispatcher that can be used to dispatch [component events](https://svelte.dev/docs#template-syntax-component-directives-on-eventname).
573	 * Event dispatchers are functions that can take two arguments: `name` and `detail`.
574	 *
575	 * Component events created with `createEventDispatcher` create a
576	 * [CustomEvent](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent).
577	 * These events do not [bubble](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Building_blocks/Events#Event_bubbling_and_capture).
578	 * The `detail` argument corresponds to the [CustomEvent.detail](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/detail)
579	 * property and can contain any type of data.
580	 *
581	 * The event dispatcher can be typed to narrow the allowed event names and the type of the `detail` argument:
582	 * ```ts
583	 * const dispatch = createEventDispatcher<{
584	 *  loaded: never; // does not take a detail argument
585	 *  change: string; // takes a detail argument of type string, which is required
586	 *  optional: number | null; // takes an optional detail argument of type number
587	 * }>();
588	 * ```
589	 *
590	 * https://svelte.dev/docs/svelte#createeventdispatcher
591	 * @template {Record<string, any>} [EventMap=any]
592	 * @returns {import('./public.js').EventDispatcher<EventMap>}
593	 */
594	function createEventDispatcher() {
595		const component = get_current_component();
596		return (type, detail, { cancelable = false } = {}) => {
597			const callbacks = component.$$.callbacks[type];
598			if (callbacks) {
599				// TODO are there situations where events could be dispatched
600				// in a server (non-DOM) environment?
601				const event = custom_event(/** @type {string} */ (type), detail, { cancelable });
602				callbacks.slice().forEach((fn) => {
603					fn.call(component, event);
604				});
605				return !event.defaultPrevented;
606			}
607			return true;
608		};
609	}
610
611	const dirty_components = [];
612	const binding_callbacks = [];
613
614	let render_callbacks = [];
615
616	const flush_callbacks = [];
617
618	const resolved_promise = /* @__PURE__ */ Promise.resolve();
619
620	let update_scheduled = false;
621
622	/** @returns {void} */
623	function schedule_update() {
624		if (!update_scheduled) {
625			update_scheduled = true;
626			resolved_promise.then(flush);
627		}
628	}
629
630	/** @returns {void} */
631	function add_render_callback(fn) {
632		render_callbacks.push(fn);
633	}
634
635	// flush() calls callbacks in this order:
636	// 1. All beforeUpdate callbacks, in order: parents before children
637	// 2. All bind:this callbacks, in reverse order: children before parents.
638	// 3. All afterUpdate callbacks, in order: parents before children. EXCEPT
639	//    for afterUpdates called during the initial onMount, which are called in
640	//    reverse order: children before parents.
641	// Since callbacks might update component values, which could trigger another
642	// call to flush(), the following steps guard against this:
643	// 1. During beforeUpdate, any updated components will be added to the
644	//    dirty_components array and will cause a reentrant call to flush(). Because
645	//    the flush index is kept outside the function, the reentrant call will pick
646	//    up where the earlier call left off and go through all dirty components. The
647	//    current_component value is saved and restored so that the reentrant call will
648	//    not interfere with the "parent" flush() call.
649	// 2. bind:this callbacks cannot trigger new flush() calls.
650	// 3. During afterUpdate, any updated components will NOT have their afterUpdate
651	//    callback called a second time; the seen_callbacks set, outside the flush()
652	//    function, guarantees this behavior.
653	const seen_callbacks = new Set();
654
655	let flushidx = 0; // Do *not* move this inside the flush() function
656
657	/** @returns {void} */
658	function flush() {
vendor: 4,269 bytes, lines 659-834
659		// Do not reenter flush while dirty components are updated, as this can
660		// result in an infinite loop. Instead, let the inner flush handle it.
661		// Reentrancy is ok afterwards for bindings etc.
662		if (flushidx !== 0) {
663			return;
664		}
665		const saved_component = current_component;
666		do {
667			// first, call beforeUpdate functions
668			// and update components
669			try {
670				while (flushidx < dirty_components.length) {
671					const component = dirty_components[flushidx];
672					flushidx++;
673					set_current_component(component);
674					update(component.$$);
675				}
676			} catch (e) {
677				// reset dirty state to not end up in a deadlocked state and then rethrow
678				dirty_components.length = 0;
679				flushidx = 0;
680				throw e;
681			}
682			set_current_component(null);
683			dirty_components.length = 0;
684			flushidx = 0;
685			while (binding_callbacks.length) binding_callbacks.pop()();
686			// then, once components are updated, call
687			// afterUpdate functions. This may cause
688			// subsequent updates...
689			for (let i = 0; i < render_callbacks.length; i += 1) {
690				const callback = render_callbacks[i];
691				if (!seen_callbacks.has(callback)) {
692					// ...so guard against infinite loops
693					seen_callbacks.add(callback);
694					callback();
695				}
696			}
697			render_callbacks.length = 0;
698		} while (dirty_components.length);
699		while (flush_callbacks.length) {
700			flush_callbacks.pop()();
701		}
702		update_scheduled = false;
703		seen_callbacks.clear();
704		set_current_component(saved_component);
705	}
706
707	/** @returns {void} */
708	function update($$) {
709		if ($$.fragment !== null) {
710			$$.update();
711			run_all($$.before_update);
712			const dirty = $$.dirty;
713			$$.dirty = [-1];
714			$$.fragment && $$.fragment.p($$.ctx, dirty);
715			$$.after_update.forEach(add_render_callback);
716		}
717	}
718
719	/**
720	 * Useful for example to execute remaining `afterUpdate` callbacks before executing `destroy`.
721	 * @param {Function[]} fns
722	 * @returns {void}
723	 */
724	function flush_render_callbacks(fns) {
725		const filtered = [];
726		const targets = [];
727		render_callbacks.forEach((c) => (fns.indexOf(c) === -1 ? filtered.push(c) : targets.push(c)));
728		targets.forEach((c) => c());
729		render_callbacks = filtered;
730	}
731
732	const outroing = new Set();
733
734	/**
735	 * @type {Outro}
736	 */
737	let outros;
738
739	/**
740	 * @returns {void} */
741	function group_outros() {
742		outros = {
743			r: 0,
744			c: [],
745			p: outros // parent group
746		};
747	}
748
749	/**
750	 * @returns {void} */
751	function check_outros() {
752		if (!outros.r) {
753			run_all(outros.c);
754		}
755		outros = outros.p;
756	}
757
758	/**
759	 * @param {import('./private.js').Fragment} block
760	 * @param {0 | 1} [local]
761	 * @returns {void}
762	 */
763	function transition_in(block, local) {
764		if (block && block.i) {
765			outroing.delete(block);
766			block.i(local);
767		}
768	}
769
770	/**
771	 * @param {import('./private.js').Fragment} block
772	 * @param {0 | 1} local
773	 * @param {0 | 1} [detach]
774	 * @param {() => void} [callback]
775	 * @returns {void}
776	 */
777	function transition_out(block, local, detach, callback) {
778		if (block && block.o) {
779			if (outroing.has(block)) return;
780			outroing.add(block);
781			outros.c.push(() => {
782				outroing.delete(block);
783				if (callback) {
784					if (detach) block.d(1);
785					callback();
786				}
787			});
788			block.o(local);
789		} else if (callback) {
790			callback();
791		}
792	}
793
794	/** @typedef {1} INTRO */
795	/** @typedef {0} OUTRO */
796	/** @typedef {{ direction: 'in' | 'out' | 'both' }} TransitionOptions */
797	/** @typedef {(node: Element, params: any, options: TransitionOptions) => import('../transition/public.js').TransitionConfig} TransitionFn */
798
799	/**
800	 * @typedef {Object} Outro
801	 * @property {number} r
802	 * @property {Function[]} c
803	 * @property {Object} p
804	 */
805
806	/**
807	 * @typedef {Object} PendingProgram
808	 * @property {number} start
809	 * @property {INTRO|OUTRO} b
810	 * @property {Outro} [group]
811	 */
812
813	/**
814	 * @typedef {Object} Program
815	 * @property {number} a
816	 * @property {INTRO|OUTRO} b
817	 * @property {1|-1} d
818	 * @property {number} duration
819	 * @property {number} start
820	 * @property {number} end
821	 * @property {Outro} [group]
822	 */
823
824	// general each functions:
825
826	function ensure_array_like(array_like_or_iterator) {
827		return array_like_or_iterator?.length !== undefined
828			? array_like_or_iterator
829			: Array.from(array_like_or_iterator);
830	}
831
832	/** @returns {{}} */
833	function get_spread_update(levels, updates) {
834		const update = {};
835		const to_null_out = {};
836		const accounted_for = { $$scope: 1 };
837		let i = levels.length;
838		while (i--) {
839			const o = levels[i];
840			const n = updates[i];
841			if (n) {
842				for (const key in o) {
843					if (!(key in n)) to_null_out[key] = 1;
844				}
845				for (const key in n) {
846					if (!accounted_for[key]) {
847						update[key] = n[key];
848						accounted_for[key] = 1;
849					}
850				}
851				levels[i] = n;
852			} else {
853				for (const key in o) {
854					accounted_for[key] = 1;
855				}
856			}
857		}
858		for (const key in to_null_out) {
859			if (!(key in update)) update[key] = undefined;
860		}
861		return update;
862	}
863
864	function get_spread_object(spread_props) {
865		return typeof spread_props === 'object' && spread_props !== null ? spread_props : {};
866	}
867
868	/** @returns {void} */
869	function create_component(block) {
870		block && block.c();
871	}
872
873	/** @returns {void} */
874	function mount_component(component, target, anchor) {
875		const { fragment, after_update } = component.$$;
876		fragment && fragment.m(target, anchor);
877		// onMount happens before the initial afterUpdate
878		add_render_callback(() => {
879			const new_on_destroy = component.$$.on_mount.map(run).filter(is_function);
880			// if the component was destroyed immediately
881			// it will update the `$$.on_destroy` reference to `null`.
882			// the destructured on_destroy may still reference to the old array
883			if (component.$$.on_destroy) {
884				component.$$.on_destroy.push(...new_on_destroy);
885			} else {
886				// Edge case - component was destroyed immediately,
887				// most likely as a result of a binding initialising
888				run_all(new_on_destroy);
889			}
890			component.$$.on_mount = [];
891		});
892		after_update.forEach(add_render_callback);
893	}
894
895	/** @returns {void} */
896	function destroy_component(component, detaching) {
897		const $$ = component.$$;
898		if ($$.fragment !== null) {
899			flush_render_callbacks($$.after_update);
900			run_all($$.on_destroy);
901			$$.fragment && $$.fragment.d(detaching);
902			// TODO null out other refs, including component.$$ (but need to
903			// preserve final state?)
904			$$.on_destroy = $$.fragment = null;
905			$$.ctx = [];
906		}
907	}
908
909	/** @returns {void} */
910	function make_dirty(component, i) {
911		if (component.$$.dirty[0] === -1) {
912			dirty_components.push(component);
913			schedule_update();
914			component.$$.dirty.fill(0);
915		}
916		component.$$.dirty[(i / 31) | 0] |= 1 << i % 31;
917	}
918
919	// TODO: Document the other params
920	/**
921	 * @param {SvelteComponent} component
922	 * @param {import('./public.js').ComponentConstructorOptions} options
923	 *
924	 * @param {import('./utils.js')['not_equal']} not_equal Used to compare props and state values.
925	 * @param {(target: Element | ShadowRoot) => void} [append_styles] Function that appends styles to the DOM when the component is first initialised.
926	 * This will be the `add_css` function from the compiled component.
927	 *
928	 * @returns {void}
929	 */
930	function init(
931		component,
932		options,
933		instance,
934		create_fragment,
935		not_equal,
936		props,
937		append_styles = null,
938		dirty = [-1]
939	) {
940		const parent_component = current_component;
941		set_current_component(component);
942		/** @type {import('./private.js').T$$} */
943		const $$ = (component.$$ = {
944			fragment: null,
945			ctx: [],
946			// state
947			props,
948			update: noop,
949			not_equal,
950			bound: blank_object(),
951			// lifecycle
952			on_mount: [],
953			on_destroy: [],
954			on_disconnect: [],
955			before_update: [],
956			after_update: [],
957			context: new Map(options.context || (parent_component ? parent_component.$$.context : [])),
958			// everything else
959			callbacks: blank_object(),
960			dirty,
961			skip_bound: false,
962			root: options.target || parent_component.$$.root
963		});
964		append_styles && append_styles($$.root);
965		let ready = false;
966		$$.ctx = instance
967			? instance(component, options.props || {}, (i, ret, ...rest) => {
968					const value = rest.length ? rest[0] : ret;
969					if ($$.ctx && not_equal($$.ctx[i], ($$.ctx[i] = value))) {
970						if (!$$.skip_bound && $$.bound[i]) $$.bound[i](value);
971						if (ready) make_dirty(component, i);
972					}
973					return ret;
974			  })
975			: [];
976		$$.update();
977		ready = true;
978		run_all($$.before_update);
979		// `false` as a special case of no DOM component
980		$$.fragment = create_fragment ? create_fragment($$.ctx) : false;
981		if (options.target) {
982			if (options.hydrate) {
983				// TODO: what is the correct type here?
984				// @ts-expect-error
985				const nodes = children(options.target);
986				$$.fragment && $$.fragment.l(nodes);
987				nodes.forEach(detach);
988			} else {
989				// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
990				$$.fragment && $$.fragment.c();
991			}
992			if (options.intro) transition_in(component.$$.fragment);
993			mount_component(component, options.target, options.anchor);
994			flush();
995		}
996		set_current_component(parent_component);
997	}
998
999	/**
1000	 * Base class for Svelte components. Used when dev=false.
1001	 *
1002	 * @template {Record<string, any>} [Props=any]
1003	 * @template {Record<string, any>} [Events=any]
1004	 */
1005	class SvelteComponent {
1006		/**
1007		 * ### PRIVATE API
1008		 *
1009		 * Do not use, may change at any time
1010		 *
1011		 * @type {any}
1012		 */
1013		$$ = undefined;
1014		/**
1015		 * ### PRIVATE API
1016		 *
1017		 * Do not use, may change at any time
1018		 *
1019		 * @type {any}
1020		 */
1021		$$set = undefined;
1022
1023		/** @returns {void} */
1024		$destroy() {
1025			destroy_component(this, 1);
1026			this.$destroy = noop;
1027		}
1028
1029		/**
1030		 * @template {Extract<keyof Events, string>} K
1031		 * @param {K} type
1032		 * @param {((e: Events[K]) => void) | null | undefined} callback
1033		 * @returns {() => void}
1034		 */
1035		$on(type, callback) {
1036			if (!is_function(callback)) {
1037				return noop;
1038			}
1039			const callbacks = this.$$.callbacks[type] || (this.$$.callbacks[type] = []);
1040			callbacks.push(callback);
1041			return () => {
1042				const index = callbacks.indexOf(callback);
1043				if (index !== -1) callbacks.splice(index, 1);
1044			};
1045		}
1046
1047		/**
1048		 * @param {Partial<Props>} props
1049		 * @returns {void}
1050		 */
1051		$set(props) {
1052			if (this.$$set && !is_empty(props)) {
1053				this.$$.skip_bound = true;
1054				this.$$set(props);
1055				this.$$.skip_bound = false;
1056			}
1057		}
1058	}
1059
1060	/**
1061	 * @typedef {Object} CustomElementPropDefinition
1062	 * @property {string} [attribute]
1063	 * @property {boolean} [reflect]
1064	 * @property {'String'|'Boolean'|'Number'|'Array'|'Object'} [type]
1065	 */
1066
1067	// generated during release, do not modify
1068
1069	const PUBLIC_VERSION = '4';
1070
1071	if (typeof window !== 'undefined')
1072		// @ts-ignore
1073		(window.__svelte || (window.__svelte = { v: new Set() })).v.add(PUBLIC_VERSION);
1074
1075	// Some height larger than whats resonable expected,
1076	// but not so large as to infulence the transition time
1077	const TRANSITION_OPEN_HEIGHT = '700px';
1078	// Absolute max height
1079	const MAX_OPEN_HEIGHT = '10000px';
1080	const CLOSED_HEIGHT = '0px';
1081	const DURATION_MS = 500;
1082	function accordion(node, isOpen) {
1083	    let currentState = isOpen;
1084	    node.style.maxHeight = isOpen ? MAX_OPEN_HEIGHT : CLOSED_HEIGHT;
1085	    node.style.overflow = isOpen ? "unset" : "hidden";
1086	    const mediaQuery = window.matchMedia('(prefers-reduced-motion: reduce)');
1087	    const animationsDisabled = mediaQuery.matches;
1088	    if (animationsDisabled) {
1089	        node.style.display = isOpen ? 'unset' : 'none';
1090	    }
1091	    return {
1092	        update(isOpen) {
1093	            if (animationsDisabled) {
1094	                node.style.display = isOpen ? 'unset' : 'none';
1095	                return;
1096	            }
1097	            if (isOpen === currentState) {
1098	                return;
1099	            }
1100	            currentState = isOpen;
1101	            const toHeight = isOpen ? TRANSITION_OPEN_HEIGHT : CLOSED_HEIGHT;
1102	            const fromHeight = isOpen ? CLOSED_HEIGHT : TRANSITION_OPEN_HEIGHT;
1103	            node.animate([
1104	                {
1105	                    maxHeight: fromHeight,
1106	                    overflow: 'hidden'
1107	                },
1108	                {
1109	                    maxHeight: toHeight,
1110	                    overflow: 'hidden'
1111	                },
1112	            ], {
1113	                duration: DURATION_MS,
1114	                fill: 'both',
1115	            }).addEventListener("finish", () => {
1116	                // After the opening transition, unset the max height so if it's larger than OPEN_HEIGHT the content
1117	                // will be shown, but via a quick jump
1118	                if (!isOpen) {
1119	                    return;
1120	                }
1121	                node.animate([
1122	                    {
1123	                        maxHeight: toHeight,
1124	                        overflow: 'hidden'
1125	                    },
1126	                    {
1127	                        maxHeight: MAX_OPEN_HEIGHT,
1128	                        overflow: 'hidden'
1129	                    },
1130	                ], {
1131	                    duration: 100,
1132	                    fill: 'both',
1133	                });
1134	            });
1135	        }
1136	    };
1137	}
1138
1139	const elementTypes = {
1140	    PROGRESS_BAR: 'progress_bar',
1141	    PAYMENT_OPTION_SELECTION: 'payment_option_selection',
1142	    PASSWORD: 'password',
1143	    VERIFICATION_CODE: 'otp_code',
1144	    BUTTON: 'button',
1145	    PAYMENT: 'payment',
1146	    PAYMENT_PRE_LOADER: 'payment-pre-loader',
1147	    EMAIL_ADDRESS: 'email_address',
1148	    SUCCESS_MESSAGE: 'success_message',
1149	    TEXT: 'text',
1150	    USER_ATTRIBUTE: 'user_attribute',
1151	    RESET_PASSWORD_LINK: 'link',
1152	    RESEND_LOGIN_LINK: 'resend_login_link',
1153	    SOCIAL_SIGNIN: 'social_sign_in',
1154	    PAYMENT_SUMMARY: 'payment_summary',
1155	    DIVIDER: 'divider',
1156	    LOGIN_LINK: 'show_login_link',
1157	    ACCOUNT_MEMBERSHIP_CODE: 'account_code',
1158	    MOBILE_PAYMENT: 'mobile_payment',
1159	    INVITATION: 'invitation',
1160	    TEMPLATE_COMPONENT: 'template_component',
1161	    SUBSCRIPTION_SELECT: 'subscription_select',
1162	    EVENT_LINK: 'event_link',
1163	    SUBSCRIPTIONS_LIST: 'subscriptions_list',
1164	    PAST_SUBSCRIPTIONS_LINK: 'past_subscriptions_link',
1165	    BILLING_HISTORY: 'billing_history',
1166	    CHNAGE_PAYMENT_METHOD_BUTTON: 'change_payment_method_button',
1167	    READ_ONLY_EMAIL_ADDRESS: 'read_only_email_address',
1168	    READ_ONLY_PASSWORD: 'read_only_password',
1169	    READ_ONLY_USER_ATTRIBUTE: 'read_only_user_attribute',
1170	    CHNAGE_PAYMENT_METHOD: 'change_payment_method',
1171	    DEVICES_SESSIONS_LIST: 'devices_list',
1172	    SIGN_OUT_ALL_OTHER_DEVICES: 'sign_out_of_devices_button',
1173	    TABLINK: 'tablink',
1174	    BUTTON_GROUP: 'button_group',
1175	    LINK_BUTTON: 'link_button',
1176	    RECIPIENT_NAME: 'recipient_name',
1177	    RECIPIENT_EMAIL: 'recipient_email',
1178	    RECIPIENT_ADDRESS: 'recipient_address',
1179	    RECIPIENT_MESSAGE: 'recipient_message',
1180	    GIFT_CODE: 'gift_code',
1181	    GIFT_SUBSCRIPTIONS_LIST: 'gift_subscriptions_list',
1182	    GIFT_TOGGLE: 'gift_toggle',
1183	    GIFT_FUTURE_DATE_TOGGLE: 'gift_future_date_toggle',
1184	    GIFT_FUTURE_DATE_INPUT: 'gift_future_date_input',
1185	    PAYMENT_AUTO_RENEW_TOGGLE: 'payment_auto_renew_toggle',
1186	    SUSPEND_RESUME_SUBSCRIPTION: 'suspend_resume_subscription',
1187	    SUBSCRIPTION_CUSTOM_FIELDS_UPDATE: 'subscription_custom_fields_update',
1188	    SUBSCRIPTION_CUSTOM_FIELDS_LIST: 'subscription_custom_fields_list',
1189	    BILL_TO_CONTACT: 'bill_to_contact',
1190	    BILLING_COUNTRY: 'billing_country',
1191	    BILLING_STATE: 'billing_state',
1192	};
1193
1194	var FormEvent;
1195	(function (FormEvent) {
1196	    FormEvent["FORM_START"] = "FORM_START";
1197	    FormEvent["LOGIN_REGISTRATION_COMPLETE"] = "LOGIN_REGISTRATION_COMPLETE";
1198	    FormEvent["SECTION_EMAIL_COMPLETE"] = "SECTION_EMAIL_COMPLETE";
1199	    FormEvent["SECTION_PASSWORD_RESET_COMPLETE"] = "SECTION_PASSWORD_RESET_COMPLETE";
1200	    FormEvent["SECTION_FORGOT_PASSWORD_COMPLETE"] = "SECTION_FORGOT_PASSWORD_COMPLETE";
1201	    FormEvent["PART_PLAN_SELECT_COMPLETE"] = "PART_PLAN_SELECT_COMPLETE";
1202	    FormEvent["PART_ACCOUNT_VERIFICATION_COMPLETE"] = "PART_ACCOUNT_VERIFICATION_COMPLETE";
1203	    FormEvent["PART_GIFT_RECIPIENT_COMPLETE"] = "PART_GIFT_RECIPIENT_COMPLETE";
1204	    FormEvent["PART_PAYMENT_COMPLETE"] = "PART_PAYMENT_COMPLETE";
1205	    FormEvent["PART_SUCCESS_COMPLETE"] = "PART_SUCCESS_COMPLETE";
1206	    FormEvent["PART_CONTACT_VERIFICATION_COMPLETE"] = "PART_CONTACT_VERIFICATION_COMPLETE";
1207	    FormEvent["PART_PROFILE_UPDATE_COMPLETE"] = "PART_PROFILE_UPDATE_COMPLETE";
1208	    FormEvent["PART_EMAIL_UPDATE_COMPLETE"] = "PART_EMAIL_UPDATE_COMPLETE";
1209	    FormEvent["PART_EMAIL_UPDATE_OTP_COMPLETE"] = "PART_EMAIL_UPDATE_OTP_COMPLETE";
1210	    FormEvent["PART_EMAIL_UPDATE_CONFIRMATION_COMPLETE"] = "PART_EMAIL_UPDATE_CONFIRMATION_COMPLETE";
1211	    FormEvent["PART_PASSWORD_UPDATE_COMPLETE"] = "PART_PASSWORD_UPDATE_COMPLETE";
1212	    FormEvent["PART_PASSWORD_UPDATE_OTP_COMPLETE"] = "PART_PASSWORD_UPDATE_OTP_COMPLETE";
1213	    FormEvent["PART_ATTRIBUTES_UPDATE_COMPLETE"] = "PART_ATTRIBUTES_UPDATE_COMPLETE";
1214	    FormEvent["REGISTRATION_CUSTOM_COMPLETE"] = "REGISTRATION_CUSTOM_COMPLETE";
1215	    FormEvent["SELECT_SUBSCRIPTION_COMPLETE"] = "SELECT_SUBSCRIPTION_COMPLETE";
1216	    FormEvent["UPDATE"] = "UPDATE";
1217	    FormEvent["GO_BACK"] = "GO_BACK";
1218	    FormEvent["VERIFY_EMAIL_UPDATE_OTP"] = "VERIFY_EMAIL_UPDATE_OTP";
1219	    FormEvent["VERIFY_PASSWORD_UPDATE_OTP"] = "VERIFY_PASSWORD_UPDATE_OTP";
1220	    FormEvent["PART_CHANGE_PAYMENT_COMPLETE"] = "PART_CHANGE_PAYMENT_COMPLETE";
1221	    FormEvent["LIST_DEVICES_SESSIONS"] = "LIST_DEVICES_SESSIONS";
1222	    FormEvent["SIGN_OUT_ALL_DEVICES"] = "SIGN_OUT_ALL_DEVICES";
1223	    FormEvent["SIGN_OUT_SINGLE_DEVICE"] = "SIGN_OUT_SINGLE_DEVICE";
1224	    FormEvent["GIFT_REDEMPTION_COMPLETE"] = "GIFT_REDEMPTION_COMPLETE";
1225	    FormEvent["SUSPEND_RESUME_SUBSCRIPTION_COMPLETE"] = "SUSPEND_RESUME_SUBSCRIPTION_COMPLETE";
1226	    FormEvent["BILL_TO_CONTACT_COMPLETE"] = "BILL_TO_CONTACT_COMPLETE";
1227	})(FormEvent || (FormEvent = {}));
1228
1229	const partTypes = {
1230	    PLAN_SELECT: {
1231	        type: 'plan-select',
1232	        order: 0,
1233	        completionEvent: FormEvent.PART_PLAN_SELECT_COMPLETE
1234	    },
1235	    ACCOUNT_VERIFICATION: {
1236	        type: 'account-verification',
1237	        order: 1,
1238	        completionEvent: FormEvent.PART_ACCOUNT_VERIFICATION_COMPLETE
1239	    },
1240	    GIFT_RECIPIENT: {
1241	        type: 'gift-recipient',
1242	        order: 1,
1243	        completionEvent: FormEvent.PART_GIFT_RECIPIENT_COMPLETE
1244	    },
1245	    PAYMENT: {
1246	        type: 'payment',
1247	        order: 2,
1248	        completionEvent: FormEvent.PART_PAYMENT_COMPLETE
1249	    },
1250	    SUCCESS: {
1251	        type: 'success',
1252	        order: 3,
1253	        completionEvent: FormEvent.PART_SUCCESS_COMPLETE
1254	    },
1255	    CONTACT_VERIFICATION: {
1256	        type: 'contact-verification',
1257	        order: 1,
1258	        completionEvent: FormEvent.PART_CONTACT_VERIFICATION_COMPLETE
1259	    },
1260	    PROFILE_UPDATE: {
1261	        type: 'profile-update',
1262	        order: 0,
1263	        completionEvent: FormEvent.PART_PROFILE_UPDATE_COMPLETE
1264	    },
1265	    SELECT_SUBSCRIPTION: {
1266	        type: 'select-subscription',
1267	        order: 0,
1268	        completionEvent: FormEvent.SELECT_SUBSCRIPTION_COMPLETE
1269	    },
1270	    EMAIL_UPDATE: {
1271	        type: 'email-update',
1272	        order: 0,
1273	        completionEvent: FormEvent.PART_EMAIL_UPDATE_COMPLETE
1274	    },
1275	    EMAIL_UPDATE_OTP: {
1276	        type: 'email-update-otp',
1277	        order: 0,
1278	        completionEvent: FormEvent.PART_EMAIL_UPDATE_OTP_COMPLETE
1279	    },
1280	    EMAIL_UPDATE_CONFIRMATION: {
1281	        type: 'email-update-confirmation',
1282	        order: 0,
1283	        completionEvent: FormEvent.PART_EMAIL_UPDATE_CONFIRMATION_COMPLETE
1284	    },
1285	    PASSWORD_UPDATE: {
1286	        type: 'password-update',
1287	        order: 0,
1288	        completionEvent: FormEvent.PART_PASSWORD_UPDATE_COMPLETE
1289	    },
1290	    PASSWORD_UPDATE_OTP: {
1291	        type: 'password-update-otp',
1292	        order: 0,
1293	        completionEvent: FormEvent.PART_PASSWORD_UPDATE_OTP_COMPLETE
1294	    },
1295	    ATTRIBUTES_UPDATE: {
1296	        type: 'attributes-update',
1297	        order: 0,
1298	        completionEvent: FormEvent.PART_ATTRIBUTES_UPDATE_COMPLETE
1299	    },
1300	    LIST_SUBSCRIPTIONS: {
1301	        type: 'list-subscriptions',
1302	        order: 0,
1303	    },
1304	    BILLING_HISTORY: {
1305	        type: 'billing-history',
1306	        order: 0,
1307	    },
1308	    PAST_SUBSCRIPTIONS: {
1309	        type: 'past-subscriptions',
1310	        order: 0,
1311	    },
1312	    CHANGE_PAYMENT: {
1313	        type: 'change-payment',
1314	        order: 2,
1315	        completionEvent: FormEvent.PART_CHANGE_PAYMENT_COMPLETE
1316	    },
1317	    DEVICES_SESSIONS: {
1318	        type: 'devices-sessions',
1319	        order: 0,
1320	        completionEvent: FormEvent.LIST_DEVICES_SESSIONS
1321	    },
1322	    CANCEL_SUCCESS: {
1323	        type: 'cancel-success',
1324	        order: 3,
1325	    },
1326	    GIFT_REDEMPTION: {
1327	        type: 'gift_redemption',
1328	        order: 4
1329	    },
1330	    GIFT_DETAILS: {
1331	        type: 'gift-details',
1332	        order: 1
1333	    },
1334	    SUSPEND_RESUME_SUBSCRIPTION: {
1335	        type: 'suspend-resume-subscription',
1336	        order: 0,
1337	        completionEvent: FormEvent.SUSPEND_RESUME_SUBSCRIPTION_COMPLETE
1338	    },
1339	    SUBSCRIPTION_CUSTOM_FIELDS: {
1340	        type: 'subscription-custom-fields',
1341	        order: 0,
1342	    },
1343	    BILL_TO_CONTACT: {
1344	        type: 'bill-to-contact',
1345	        order: 0,
1346	        completionEvent: FormEvent.BILL_TO_CONTACT_COMPLETE
1347	    }
1348	};
1349	const partTypeFor = (type) => Object.values(partTypes).find(p => p.type == type) || (() => { throw `No part ${type} found`; })();
1350
1351	var ServerError;
1352	(function (ServerError) {
1353	    ServerError[ServerError["USER_DOES_NOT_EXIST"] = 0] = "USER_DOES_NOT_EXIST";
1354	    ServerError[ServerError["USER_ALREADY_EXISTS"] = 1] = "USER_ALREADY_EXISTS";
1355	    ServerError[ServerError["PASSWORD_NOT_STRONG_ENOUGH"] = 2] = "PASSWORD_NOT_STRONG_ENOUGH";
1356	    ServerError[ServerError["EMAIL_VERIFICATION_REQUIRED"] = 3] = "EMAIL_VERIFICATION_REQUIRED";
1357	    ServerError[ServerError["VERIFICATION_CODE_OR_PASSWORD_INCORRECT"] = 4] = "VERIFICATION_CODE_OR_PASSWORD_INCORRECT";
1358	    ServerError[ServerError["VERIFICATION_CODE_INCORRECT"] = 5] = "VERIFICATION_CODE_INCORRECT";
1359	    ServerError[ServerError["LOGIN_FAILED"] = 6] = "LOGIN_FAILED";
1360	    ServerError[ServerError["UNKNOWN_LOGIN_REGISTER_ERROR"] = 7] = "UNKNOWN_LOGIN_REGISTER_ERROR";
1361	    ServerError[ServerError["NO_COOKIE_FROM_LOGIN_REGISTER_ERROR"] = 8] = "NO_COOKIE_FROM_LOGIN_REGISTER_ERROR";
1362	    ServerError[ServerError["NO_ACCOUNT_ACCESS"] = 9] = "NO_ACCOUNT_ACCESS";
1363	    ServerError[ServerError["ACCOUNT_NOT_FOUND"] = 10] = "ACCOUNT_NOT_FOUND";
1364	    ServerError[ServerError["PAYMENT_PROCESSING_ERROR"] = 11] = "PAYMENT_PROCESSING_ERROR";
1365	    ServerError[ServerError["MOBILE_PAYMENT_PROCESSING_ERROR"] = 12] = "MOBILE_PAYMENT_PROCESSING_ERROR";
1366	    ServerError[ServerError["PASSWORD_RESET_LINK_SEND_ERROR"] = 13] = "PASSWORD_RESET_LINK_SEND_ERROR";
1367	    ServerError[ServerError["PASSWORD_RESET_ERROR"] = 14] = "PASSWORD_RESET_ERROR";
1368	    ServerError[ServerError["VERIFICATION_CODE_SEND_ERROR"] = 15] = "VERIFICATION_CODE_SEND_ERROR";
1369	    ServerError[ServerError["SOCIAL_SIGNIN_REGISTRATION_LOGIN_ERROR"] = 16] = "SOCIAL_SIGNIN_REGISTRATION_LOGIN_ERROR";
1370	    ServerError[ServerError["PROMO_CODE_EXPIRED_ERROR"] = 17] = "PROMO_CODE_EXPIRED_ERROR";
1371	    ServerError[ServerError["PROMO_CODE_INVALID_ERROR"] = 18] = "PROMO_CODE_INVALID_ERROR";
1372	    ServerError[ServerError["PROMO_CODE_NOT_VALID_FOR_PLAN_ERROR"] = 19] = "PROMO_CODE_NOT_VALID_FOR_PLAN_ERROR";
1373	    ServerError[ServerError["INVITATION_FAILED_LIMIT_REACHED"] = 20] = "INVITATION_FAILED_LIMIT_REACHED";
1374	    ServerError[ServerError["INVITATION_FAILED_DUPLICATE_EMAIL"] = 21] = "INVITATION_FAILED_DUPLICATE_EMAIL";
1375	    ServerError[ServerError["INVITATION_FAILED_INVALID_EMAIL"] = 22] = "INVITATION_FAILED_INVALID_EMAIL";
1376	    ServerError[ServerError["INVITATION_FAILED_NO_PRODUCT_ACCESS"] = 23] = "INVITATION_FAILED_NO_PRODUCT_ACCESS";
1377	    ServerError[ServerError["INVITATION_FAILED_UNKNOWN"] = 24] = "INVITATION_FAILED_UNKNOWN";
1378	    ServerError[ServerError["TOO_MANY_SESSIONS"] = 25] = "TOO_MANY_SESSIONS";
1379	    ServerError[ServerError["INVALID_USER_ATTRIBUTES"] = 26] = "INVALID_USER_ATTRIBUTES";
1380	    ServerError[ServerError["CONTACT_CREATION_NOT_ENABLED"] = 27] = "CONTACT_CREATION_NOT_ENABLED";
1381	    ServerError[ServerError["NO_AUTHENTICATED_SESSION"] = 28] = "NO_AUTHENTICATED_SESSION";
1382	    ServerError[ServerError["BLOCKED_EMAIL_DOMAIN"] = 29] = "BLOCKED_EMAIL_DOMAIN";
1383	    ServerError[ServerError["UNKNOWN"] = 30] = "UNKNOWN";
1384	    ServerError[ServerError["GIFT_CODE_INVALID"] = 31] = "GIFT_CODE_INVALID";
1385	    ServerError[ServerError["GIFT_CODE_ALREADY_REDEEMED"] = 32] = "GIFT_CODE_ALREADY_REDEEMED";
1386	    ServerError[ServerError["GIFT_CODE_SERVER_ERROR"] = 33] = "GIFT_CODE_SERVER_ERROR";
1387	})(ServerError || (ServerError = {}));
1388	const ServerErrors = {
1389	    [ServerError.USER_DOES_NOT_EXIST]: {
1390	        languagePackKey: 'forms.errors.user-not-found',
1391	        fallbackMessage: 'User not found.',
1392	        jumpToPart: partTypes.ACCOUNT_VERIFICATION.type,
1393	        displayOnElements: [elementTypes.EMAIL_ADDRESS]
1394	    },
1395	    [ServerError.USER_ALREADY_EXISTS]: {
1396	        languagePackKey: 'forms.errors.email-taken',
1397	        fallbackMessage: 'This email address is already registered. Please log in to continue.',
1398	        jumpToPart: partTypes.ACCOUNT_VERIFICATION.type,
1399	        displayOnElements: [elementTypes.EMAIL_ADDRESS]
1400	    },
1401	    [ServerError.EMAIL_VERIFICATION_REQUIRED]: {
1402	        languagePackKey: 'forms.errors.email-verification-required',
1403	        fallbackMessage: 'Email verification is required',
1404	        jumpToPart: partTypes.ACCOUNT_VERIFICATION.type,
1405	        displayOnElements: [elementTypes.EMAIL_ADDRESS]
1406	    },
1407	    [ServerError.VERIFICATION_CODE_OR_PASSWORD_INCORRECT]: {
1408	        languagePackKey: 'forms.errors.otp-or-password-incorrect',
1409	        fallbackMessage: 'The password or code you entered is incorrect.',
1410	        displayOnElements: [elementTypes.VERIFICATION_CODE, elementTypes.PASSWORD]
1411	    },
1412	    [ServerError.VERIFICATION_CODE_INCORRECT]: {
1413	        languagePackKey: 'forms.errors.otp-incorrect',
1414	        fallbackMessage: 'The code you entered is incorrect.',
1415	        displayOnElements: [elementTypes.VERIFICATION_CODE]
1416	    },
1417	    [ServerError.LOGIN_FAILED]: {
1418	        languagePackKey: 'forms.errors.login-failed',
1419	        fallbackMessage: 'The email address or password you entered is incorrect.',
1420	        displayOnElements: [elementTypes.PASSWORD, elementTypes.VERIFICATION_CODE]
1421	    },
1422	    [ServerError.PASSWORD_NOT_STRONG_ENOUGH]: {
1423	        languagePackKey: 'n/a',
1424	        fallbackMessage: '',
1425	        useDymamicMessage: true,
1426	        displayOnElements: [elementTypes.PASSWORD]
1427	    },
1428	    [ServerError.UNKNOWN_LOGIN_REGISTER_ERROR]: {
1429	        languagePackKey: 'forms.errors.unknown-error',
1430	        fallbackMessage: 'Something went wrong. Please try again later',
1431	        displayOnElements: [elementTypes.PASSWORD, elementTypes.VERIFICATION_CODE]
1432	    },
1433	    [ServerError.NO_COOKIE_FROM_LOGIN_REGISTER_ERROR]: {
1434	        languagePackKey: 'forms.errors.unknown-error',
1435	        fallbackMessage: 'Something went wrong. Please try again later',
1436	        displayOnElements: [elementTypes.PASSWORD, elementTypes.VERIFICATION_CODE]
1437	    },
1438	    [ServerError.NO_ACCOUNT_ACCESS]: {
1439	        languagePackKey: 'forms.errors.too-many-requests',
1440	        fallbackMessage: 'To gain login access, please contact your administrator.',
1441	        displayOnElements: [elementTypes.PASSWORD]
1442	    },
1443	    [ServerError.ACCOUNT_NOT_FOUND]: {
1444	        languagePackKey: 'forms.errors.company-account-not-found',
1445	        fallbackMessage: 'Account not found.',
1446	        jumpToPart: partTypes.ACCOUNT_VERIFICATION.type,
1447	        displayOnElements: [elementTypes.ACCOUNT_MEMBERSHIP_CODE]
1448	    },
1449	    [ServerError.PAYMENT_PROCESSING_ERROR]: {
1450	        languagePackKey: 'forms.errors.unknown-payment-error',
1451	        fallbackMessage: 'Something went wrong when processing your payment. Please try again later.',
1452	        displayOnElements: [elementTypes.PAYMENT]
1453	    },
1454	    [ServerError.MOBILE_PAYMENT_PROCESSING_ERROR]: {
1455	        languagePackKey: 'forms.errors.unknown-payment-error',
1456	        fallbackMessage: 'Something went wrong when processing your payment. Please try again later.',
1457	        displayOnElements: [elementTypes.MOBILE_PAYMENT]
1458	    },
1459	    [ServerError.PASSWORD_RESET_LINK_SEND_ERROR]: {
1460	        languagePackKey: 'forms.errors.password-reset-link-send-failed',
1461	        fallbackMessage: 'Unable to send a password reset link. Please try again later',
1462	        displayOnElements: [elementTypes.RESET_PASSWORD_LINK]
1463	    },
1464	    [ServerError.VERIFICATION_CODE_SEND_ERROR]: {
1465	        languagePackKey: 'forms.errors.otp-send-failed',
1466	        fallbackMessage: 'Unable to send a verification code. Please try again later',
1467	        displayOnElements: [elementTypes.VERIFICATION_CODE]
1468	    },
1469	    [ServerError.PASSWORD_RESET_ERROR]: {
1470	        languagePackKey: 'forms.errors.password-reset-failed',
1471	        fallbackMessage: 'Unable to reset your password. Please try again later',
1472	        displayOnElements: [elementTypes.PASSWORD]
1473	    },
1474	    [ServerError.SOCIAL_SIGNIN_REGISTRATION_LOGIN_ERROR]: {
1475	        languagePackKey: 'forms.errors.unknown-error',
1476	        fallbackMessage: 'Something went wrong. Please try again later',
1477	        displayOnElements: [elementTypes.SOCIAL_SIGNIN]
1478	    },
1479	    [ServerError.PROMO_CODE_EXPIRED_ERROR]: {
1480	        languagePackKey: 'forms.errors.promo-code-expired',
1481	        fallbackMessage: 'Promo code expired',
1482	        displayOnElements: [elementTypes.PAYMENT_SUMMARY]
1483	    },
1484	    [ServerError.PROMO_CODE_INVALID_ERROR]: {
1485	        languagePackKey: 'forms.errors.promo-code-invalid',
1486	        fallbackMessage: 'Invalid promo code',
1487	        displayOnElements: [elementTypes.PAYMENT_SUMMARY]
1488	    },
1489	    [ServerError.PROMO_CODE_NOT_VALID_FOR_PLAN_ERROR]: {
1490	        languagePackKey: 'forms.errors.promo-code-invalid-for-payment-option',
1491	        fallbackMessage: 'Promo code cannot be applied to selected option',
1492	        displayOnElements: [elementTypes.PAYMENT_SUMMARY]
1493	    },
1494	    [ServerError.INVITATION_FAILED_LIMIT_REACHED]: {
1495	        languagePackKey: 'forms.errors.invitation-failed-limit-reached',
1496	        fallbackMessage: 'You have reached the sharing limit for this product',
1497	        displayOnElements: [elementTypes.INVITATION]
1498	    },
1499	    [ServerError.INVITATION_FAILED_DUPLICATE_EMAIL]: {
1500	        languagePackKey: 'forms.errors.invitation-failed-duplicate-email',
1501	        fallbackMessage: 'An invite has already been created for this email',
1502	        displayOnElements: [elementTypes.INVITATION]
1503	    },
1504	    [ServerError.INVITATION_FAILED_INVALID_EMAIL]: {
1505	        languagePackKey: 'forms.errors.invitation-failed-invalid-email',
1506	        fallbackMessage: 'Invalid email address',
1507	        displayOnElements: [elementTypes.INVITATION]
1508	    },
1509	    [ServerError.INVITATION_FAILED_NO_PRODUCT_ACCESS]: {
1510	        languagePackKey: 'forms.errors.invitation-failed-no-product-access',
1511	        fallbackMessage: 'You do not currently have access to this product',
1512	        displayOnElements: [elementTypes.INVITATION]
1513	    },
1514	    [ServerError.INVITATION_FAILED_UNKNOWN]: {
1515	        languagePackKey: 'forms.errors.unknown-error',
1516	        fallbackMessage: 'Something went wrong. Please try again later',
1517	        displayOnElements: [elementTypes.INVITATION]
1518	    },
1519	    [ServerError.TOO_MANY_SESSIONS]: {
1520	        languagePackKey: 'forms.errors.session-limit-reached',
1521	        fallbackMessage: 'You have reached the session limit. Please log out from another device to access this content.',
1522	        displayOnElements: [elementTypes.EMAIL_ADDRESS]
1523	    },
1524	    [ServerError.INVALID_USER_ATTRIBUTES]: {
1525	        languagePackKey: 'forms.errors.user-attribute-invalid',
1526	        fallbackMessage: 'Invalid User Attribute',
1527	        displayOnElements: [elementTypes.USER_ATTRIBUTE]
1528	    },
1529	    [ServerError.CONTACT_CREATION_NOT_ENABLED]: {
1530	        languagePackKey: 'forms.errors.contact-creation-disabled',
1531	        fallbackMessage: 'This operation is not possible at the moment, please try again later.',
1532	        jumpToPart: partTypes.ACCOUNT_VERIFICATION.type,
1533	        displayOnElements: [elementTypes.EMAIL_ADDRESS]
1534	    },
1535	    [ServerError.NO_AUTHENTICATED_SESSION]: {
1536	        languagePackKey: 'forms.errors.no-authenticated-session',
1537	        fallbackMessage: 'Please login to update your profile',
1538	    },
1539	    [ServerError.BLOCKED_EMAIL_DOMAIN]: {
1540	        languagePackKey: 'forms.errors.email-domain-blocked',
1541	        fallbackMessage: 'Please use a different email address, this domain is not supported.',
1542	        jumpToPart: partTypes.ACCOUNT_VERIFICATION.type,
1543	        displayOnElements: [elementTypes.EMAIL_ADDRESS]
1544	    },
1545	    [ServerError.UNKNOWN]: {
1546	        languagePackKey: 'forms.errors.unknown-error',
1547	        fallbackMessage: 'Something went wrong. Please try again later',
1548	    },
1549	    [ServerError.GIFT_CODE_INVALID]: {
1550	        languagePackKey: 'forms.errors.gift-code-invalid',
1551	        fallbackMessage: 'Invalid gift code',
1552	        displayOnElements: [elementTypes.GIFT_CODE]
1553	    },
1554	    [ServerError.GIFT_CODE_ALREADY_REDEEMED]: {
1555	        languagePackKey: 'forms.errors.gift-code-already-redeemed',
1556	        fallbackMessage: 'Gift code already redeemed',
1557	        displayOnElements: [elementTypes.GIFT_CODE]
1558	    },
1559	    [ServerError.GIFT_CODE_SERVER_ERROR]: {
1560	        languagePackKey: 'forms.errors.gift-code-server-error',
1561	        fallbackMessage: 'Something went wrong with the gift co
1561de. Please try again later',
1562	        displayOnElements: [elementTypes.GIFT_CODE]
1563	    }
1564	};
1565	const serverErrorForElement = (elementType, formState) => formState.serverErrors.find(e => ServerErrors[e].displayOnElements?.includes(elementType)) ?? undefined;
1566
1567	const sectionTypes = {
1568	    PLAN_SELECT: {
1569	        type: 'plan_select',
1570	        defaultLabel: 'Plan Select',
1571	        fullWidth: true
1572	    },
1573	    EMAIL: {
1574	        type: 'email',
1575	        defaultLabel: 'Account Verification',
1576	        completionEvent: FormEvent.SECTION_EMAIL_COMPLETE,
1577	    },
1578	    RECIPIENT_DETAILS: {
1579	        type: 'recipient_details',
1580	        defaultLabel: 'Recipient',
1581	    },
1582	    PASSWORD_SETUP: {
1583	        type: 'password_setup',
1584	        defaultLabel: 'Password Setup'
1585	    },
1586	    PASSWORDLESS_VIA_LOGIN_LINK: {
1587	        type: 'passwordless_login_via_link',
1588	        defaultLabel: 'Passwordless Login via Login Link'
1589	    },
1590	    VERIFICATION_CODE_LOGIN: {
1591	        type: 'verification_code_login',
1592	        defaultLabel: ''
1593	    },
1594	    VERIFICATION_CODE_REGISTRATION: {
1595	        type: 'verification_code_registration',
1596	        defaultLabel: ''
1597	    },
1598	    LOGIN_PASSWORD: {
1599	        type: 'login_password',
1600	        defaultLabel: 'Login'
1601	    },
1602	    REGISTRATION_CUSTOM: {
1603	        type: 'registration_custom',
1604	        defaultLabel: '',
1605	    },
1606	    FORGOT_PASSWORD: {
1607	        type: 'forgot_password',
1608	        defaultLabel: '',
1609	        completionEvent: FormEvent.SECTION_FORGOT_PASSWORD_COMPLETE,
1610	    },
1611	    PASSWORD_RESET: {
1612	        type: 'reset_password',
1613	        defaultLabel: '',
1614	        completionEvent: FormEvent.SECTION_PASSWORD_RESET_COMPLETE,
1615	    },
1616	    SUCCESS: {
1617	        type: 'success',
1618	        defaultLabel: ''
1619	    },
1620	    EMAIL_VERIFIED: {
1621	        type: 'email_verified',
1622	        defaultLabel: ''
1623	    },
1624	    READ_ONLY_PROFILE: {
1625	        type: 'read_only_profile',
1626	        defaultLabel: 'Read Only Profile'
1627	    },
1628	    UPDATE_EMAIL: {
1629	        type: 'update_email',
1630	        defaultLabel: 'Update Email'
1631	    },
1632	    EMAIL_UPDATE_CONFIRMATION: {
1633	        type: 'email_update_confirmation',
1634	        defaultLabel: 'Email Update Confirmation'
1635	    },
1636	    UPDATE_PASSWORD: {
1637	        type: 'update_password',
1638	        defaultLabel: 'Update Password'
1639	    },
1640	    UPDATE_ATTRIBUTES: {
1641	        type: 'update_attributes',
1642	        defaultLabel: 'Update Attributes'
1643	    },
1644	    CHANGE_PAYMENT: {
1645	        type: 'change-payment',
1646	        completionEvent: FormEvent.PART_CHANGE_PAYMENT_COMPLETE,
1647	        defaultLabel: ''
1648	    },
1649	    SELECT: {
1650	        type: 'select',
1651	        defaultLabel: '',
1652	        fullWidth: true,
1653	    },
1654	    LIST: {
1655	        type: 'list',
1656	        defaultLabel: '',
1657	        fullWidth: true,
1658	    },
1659	    PAST_SUBSCRIPTIONS: {
1660	        type: 'past-subscriptions',
1661	        defaultLabel: '',
1662	        fullWidth: true,
1663	    },
1664	    GIFT_REDEMPTION: {
1665	        type: 'gift_redemption',
1666	        defaultLabel: 'Gift Code Redemption',
1667	        completionEvent: FormEvent.GIFT_REDEMPTION_COMPLETE
1668	    },
1669	    GIFT_REDEEMED: {
1670	        type: 'gift_redeemed',
1671	        defaultLabel: 'Gift Redeemed'
1672	    },
1673	    GIFT_DETAIL: {
1674	        type: 'gift-detail',
1675	        defaultLabel: 'Gift Details'
1676	    },
1677	    SUSPEND_RESUME_SUBSCRIPTION: {
1678	        type: 'suspend_resume_subscription',
1679	        defaultLabel: 'Suspend/Resume Subscription',
1680	    },
1681	    BILL_TO_CONTACT: {
1682	        type: 'bill_to_contact',
1683	        defaultLabel: 'Update Bill To Contact Address',
1684	    },
1685	};
1686	const sectionTypeFor = (type) => Object.values(sectionTypes).find(s => s.type == type);
1687
1688	function logDataLayerEvent(form, eventName, customDimensions) {
1689	    const event = {
1690	        event: eventName,
1691	        formType: form.formType,
1692	        formId: form.formId,
1693	        ruleId: form.ruleId,
1694	        outcomeId: form.outcomeId,
1695	        ...customDimensions
1696	    };
1697	    window.postMessage({ 'zephr-form-datalayer-event': event }, window.origin);
1698	    if (!form.organisationConfiguration.trackFormDataLayerEvents) {
1699	        return;
1700	    }
1701	    const dataLayerName = form.organisationConfiguration.dataLayerName || 'dataLayer';
1702	    window[dataLayerName] = window[dataLayerName] || [];
1703	    window[dataLayerName].push(event);
1704	}
1705
1706	const reScrollToFormTop = (formId) => {
1707	    try {
1708	        const formRootElement = document.getElementById(formId);
1709	        if (!formRootElement)
1710	            return;
1711	        const { top } = formRootElement.getBoundingClientRect();
1712	        if (top < 0) {
1713	            formRootElement.scrollIntoView({
1714	                block: "start",
1715	                inline: "nearest",
1716	            });
1717	        }
1718	    }
1719	    catch (err) {
1720	        console.error(err);
1721	    }
1722	};
1723
1724	/**
1725	 * Functions to initiate movements through the form sections.
1726	 */
1727	const findSection = (sectionType, form) => {
1728	    return form.parts
1729	        .flatMap(part => part.sections.map(section => ({ part, section })))
1730	        .find(partSection => partSection.section.type === sectionType);
1731	};
1732	const findSectionByAddress = (address, form) => {
1733	    const [part, section] = address.includes(':') ? address.split(':') : [null, address];
1734	    return form.parts
1735	        .flatMap(part => part.sections.map(section => ({ part, section })))
1736	        .find(partSection => partSection.section.type === section && (!part || partSection.part.type === part));
1737	};
1738	const jumpToSection = (sectionType, form, formActions) => {
1739	    const destination = findSection(sectionType, form);
1740	    if (!destination) {
1741	        throw `Cannot find section ${sectionType}`;
1742	    }
1743	    const formState = formActions.getFormState();
1744	    setSection({
1745	        form,
1746	        formActions,
1747	        part: destination.part,
1748	        section: destination.section,
1749	        previousPart: formState.currentPart,
1750	        previousSection: formState.currentSection
1751	    });
1752	    return Promise.resolve();
1753	};
1754	const jumpToPart = (partType, form, formActions) => {
1755	    if (form.environment.previewMode) {
1756	        return;
1757	    }
1758	    const part = form.parts.find(p => p.type == partType);
1759	    const formState = formActions.getFormState();
1760	    setSection({
1761	        form,
1762	        formActions,
1763	        part,
1764	        section: part.sections[0],
1765	        previousPart: formState.currentPart,
1766	        previousSection: formState.currentSection
1767	    });
1768	    return Promise.resolve();
1769	};
1770	const findNextPart = (currentPart, form) => {
1771	    const partType = partTypeFor(currentPart.type);
1772	    if (partType) {
1773	        const nextPart = form.parts.find((p) => partTypeFor(p.type).order === partType.order + 1)
1774	            ?? form.parts[form.parts.indexOf(currentPart) + 1];
1775	        if (nextPart) {
1776	            return {
1777	                section: nextPart.sections[0],
1778	                part: nextPart
1779	            };
1780	        }
1781	    }
1782	    return null;
1783	};
1784	const findNextSection = (currentSection, currentPart, form) => {
1785	    // Next section in part ...
1786	    const currentSectionIndex = currentPart.sections.findIndex((s) => s.order == currentSection.order);
1787	    if (currentPart.sections.length > currentSectionIndex + 1) {
1788	        return {
1789	            section: currentPart.sections[currentSectionIndex + 1],
1790	            part: currentPart
1791	        };
1792	    }
1793	    // ... or the first setion in next part
1794	    return findNextPart(currentPart, form);
1795	};
1796	const mapCustomSectionType = (sectionType) => {
1797	    return sectionType?.startsWith('custom_') ? 'registration_custom' : sectionType;
1798	};
1799	const isSectionVisible = (section, form, formState) => form.sectionFlow.sectionVisibilities.find((s) => s.type === mapCustomSectionType(section.type))
1800	    ?.isVisible(form, formState) ?? true;
1801	const isSectionDisplayedInProgressBar = (section, form, formState) => {
1802	    const sectionConfig = form.sectionFlow.sectionVisibilities
1803	        .find((s) => (s.type === mapCustomSectionType(section.type)));
1804	    return (sectionConfig?.isDisplayedInProgressBar && isSectionVisible(section, form, formState)) ?? true;
1805	};
1806	const moveToNextSection = (form, formState, formActions) => {
1807	    if (form.environment.previewMode) {
1808	        return;
1809	    }
1810	    // Find the next visible section
1811	    let i = 0;
1812	    let nextPartSection = { part: formState.currentPart, section: formState.currentSection };
1813	    do {
1814	        i++;
1815	        if (i > 50) {
1816	            throw new Error(`Cannot move from ${formState.currentPart.type}:${formState.currentSection.type}. 
1817      Exceeded max loop size after ${nextPartSection?.part?.type}:${nextPartSection?.section?.type}
1818    `);
1819	        }
1820	        const next = findNextSection(nextPartSection?.section, nextPartSection?.part, form);
1821	        if (next?.part.type === nextPartSection?.part?.type
1822	            && next?.section.type === nextPartSection?.section?.type
1823	            && next?.section.order === nextPartSection?.section?.order) {
1824	            throw new Error(`Cannot move from ${formState.currentPart.type}:${formState.currentSection.type}. 
1825        Infinte loop found at next section ${next?.part?.type}:${next?.section?.type}
1826      `);
1827	        }
1828	        nextPartSection = next;
1829	    } while (nextPartSection && !isSectionVisible(nextPartSection.section, form, formState));
1830	    if (!nextPartSection || nextPartSection.part !== formState.currentPart) {
1831	        const part = partTypeFor(formState.currentPart.type);
1832	        const action = part?.completionEvent && form.sectionFlow.eventHandlers[part.completionEvent];
1833	        if (action) {
1834	            return action(form, formState, formActions);
1835	        }
1836	    }
1837	    if (!nextPartSection) {
1838	        throw "No next section";
1839	    }
1840	    setSection({
1841	        form,
1842	        formActions,
1843	        part: nextPartSection.part,
1844	        section: nextPartSection.section,
1845	        previousPart: formState.currentPart,
1846	        previousSection: formState.currentSection
1847	    });
1848	    return Promise.resolve();
1849	};
1850	const completeSection = (form, formState, formActions) => {
1851	    if (form.environment.previewMode) {
1852	        return;
1853	    }
1854	    const sectionType = sectionTypeFor(formState.currentSection.type);
1855	    const action = (sectionType && form.sectionFlow.eventHandlers[sectionType.completionEvent]) ?? moveToNextSection;
1856	    return action(form, formState, formActions);
1857	};
1858	const attemptCompleteSection = (form, _, formActions) => {
1859	    if (formActions.getFormState().canAttemptSectionCompletion) {
1860	        const updatedState = formActions.updateFormState({
1861	            showFieldErrors: false
1862	        });
1863	        return completeSection(form, updatedState, formActions);
1864	    }
1865	    formActions.updateFormState({
1866	        showFieldErrors: true
1867	    });
1868	    return Promise.resolve();
1869	};
1870	const setSection = ({ form, formActions, part, section, previousSection, previousPart }) => {
1871	    formActions.updateFormState({
1872	        currentPart: part,
1873	        currentSection: section
1874	    });
1875	    logDataLayerEvent(form, 'zephr_form_section_change', {
1876	        sectionId: section.type,
1877	        previousSectionId: previousSection.type,
1878	        partId: part.type,
1879	        previousPartId: previousPart.type
1880	    });
1881	    reScrollToFormTop(form.formId);
1882	};
1883
1884	/* src/components/elements/progressBar/ProgressBar.svelte generated by Svelte v4.2.12 */
1885
1886	function get_each_context$h(ctx, list, i) {
1887		const child_ctx = ctx.slice();
1888		child_ctx[7] = list[i];
1889		const constants_0 = !/*disabled*/ child_ctx[0] && !/*item*/ child_ctx[7].isDisabled && /*item*/ child_ctx[7].order < /*currentItem*/ child_ctx[2].order;
1890		child_ctx[8] = constants_0;
1891		return child_ctx;
1892	}
1893
1894	// (15:0) {#if !isNaN(value)}
1895	function create_if_block$L(ctx) {
1896		let div;
1897		let t;
1898		let progress;
1899		let each_value = ensure_array_like(/*visibleItems*/ ctx[3]);
1900		let each_blocks = [];
1901
1902		for (let i = 0; i < each_value.length; i += 1) {
1903			each_blocks[i] = create_each_block$h(get_each_context$h(ctx, each_value, i));
1904		}
1905
1906		return {
1907			c() {
1908				div = element("div");
1909
1910				for (let i = 0; i < each_blocks.length; i += 1) {
1911					each_blocks[i].c();
1912				}
1913
1914				t = space();
1915				progress = element("progress");
1916				attr(div, "class", "zephr-form-flex-container");
1917				toggle_class(div, "zephr-payment-form-flex-container", /*isPaymentForm*/ ctx[1]);
1918				attr(progress, "class", "zephr-form-progress-bar svelte-19rlx92");
1919				attr(progress, "id", "progress-bar");
1920				attr(progress, "max", "100");
1921				progress.value = /*value*/ ctx[4];
1922				toggle_class(progress, "zephr-payment-form-progress-bar", /*isPaymentForm*/ ctx[1]);
1923			},
1924			m(target, anchor) {
1925				insert(target, div, anchor);
1926
1927				for (let i = 0; i < each_blocks.length; i += 1) {
1928					if (each_blocks[i]) {
1929						each_blocks[i].m(div, null);
1930					}
1931				}
1932
1933				insert(target, t, anchor);
1934				insert(target, progress, anchor);
1935			},
1936			p(ctx, dirty) {
1937				if (dirty & /*isPaymentForm, visibleItems, disabled, currentItem*/ 15) {
1938					each_value = ensure_array_like(/*visibleItems*/ ctx[3]);
1939					let i;
1940
1941					for (i = 0; i < each_value.length; i += 1) {
1942						const child_ctx = get_each_context$h(ctx, each_value, i);
1943
1944						if (each_blocks[i]) {
1945							each_blocks[i].p(child_ctx, dirty);
1946						} else {
1947							each_blocks[i] = create_each_block$h(child_ctx);
1948							each_blocks[i].c();
1949							each_blocks[i].m(div, null);
1950						}
1951					}
1952
1953					for (; i < each_blocks.length; i += 1) {
1954						each_blocks[i].d(1);
1955					}
1956
1957					each_blocks.length = each_value.length;
1958				}
1959
1960				if (dirty & /*isPaymentForm*/ 2) {
1961					toggle_class(div, "zephr-payment-form-flex-container", /*isPaymentForm*/ ctx[1]);
1962				}
1963
1964				if (dirty & /*value*/ 16) {
1965					progress.value = /*value*/ ctx[4];
1966				}
1967
1968				if (dirty & /*isPaymentForm*/ 2) {
1969					toggle_class(progress, "zephr-payment-form-progress-bar", /*isPaymentForm*/ ctx[1]);
1970				}
1971			},
1972			d(detaching) {
1973				if (detaching) {
1974					detach(div);
1975					detach(t);
1976					detach(progress);
1977				}
1978
1979				destroy_each(each_blocks, detaching);
1980			}
1981		};
1982	}
1983
1984	// (33:6) {:else}
1985	function create_else_block$b(ctx) {
1986		let div;
1987		let t0_value = /*item*/ ctx[7].label + "";
1988		let t0;
1989		let t1;
1990
1991		return {
1992			c() {
1993				div = element("div");
1994				t0 = text(t0_value);
1995				t1 = space();
1996				attr(div, "class", "zephr-progress-bar-step disabled svelte-19rlx92");
1997				toggle_class(div, "zephr-payment-progress-bar-step", /*isPaymentForm*/ ctx[1]);
1998			},
1999			m(target, anchor) {
2000				insert(target, div, anchor);
2001				append(div, t0);
2002				append(div, t1);
2003			},
2004			p(ctx, dirty) {
2005				if (dirty & /*visibleItems*/ 8 && t0_value !== (t0_value = /*item*/ ctx[7].label + "")) set_data(t0, t0_value);
2006
2007				if (dirty & /*isPaymentForm*/ 2) {
2008					toggle_class(div, "zephr-payment-progress-bar-step", /*isPaymentForm*/ ctx[1]);
2009				}
2010			},
2011			d(detaching) {
2012				if (detaching) {
2013					detach(div);
2014				}
2015			}
2016		};
2017	}
2018
2019	// (24:6) {#if isClickable}
2020	function create_if_block_1$y(ctx) {
2021		let button;
2022		let t0_value = /*item*/ ctx[7].label + "";
2023		let t0;
2024		let t1;
2025		let mounted;
2026		let dispose;
2027
2028		function click_handler() {
2029			return /*click_handler*/ ctx[6](/*item*/ ctx[7]);
2030		}
2031
2032		return {
2033			c() {
2034				button = element("button");
2035				t0 = text(t0_value);
2036				t1 = space();
2037				attr(button, "type", "button");
2038				attr(button, "class", "zephr-progress-bar-step svelte-19rlx92");
2039				toggle_class(button, "zephr-payment-progress-bar-step", /*isPaymentForm*/ ctx[1]);
2040			},
2041			m(target, anchor) {
2042				insert(target, button, anchor);
2043				append(button, t0);
2044				append(button, t1);
2045
2046				if (!mounted) {
2047					dispose = listen(button, "click", prevent_default(click_handler));
2048					mounted = true;
2049				}
2050			},
2051			p(new_ctx, dirty) {
2052				ctx = new_ctx;
2053				if (dirty & /*visibleItems*/ 8 && t0_value !== (t0_value = /*item*/ ctx[7].label + "")) set_data(t0, t0_value);
2054
2055				if (dirty & /*isPaymentForm*/ 2) {
2056					toggle_class(button, "zephr-payment-progress-bar-step", /*isPaymentForm*/ ctx[1]);
2057				}
2058			},
2059			d(detaching) {
2060				if (detaching) {
2061					detach(button);
2062				}
2063
2064				mounted = false;
2065				dispose();
2066			}
2067		};
2068	}
2069
2070	// (20:4) {#each visibleItems as item}
2071	function create_each_block$h(ctx) {
2072		let if_block_anchor;
2073
2074		function select_block_type(ctx, dirty) {
2075			if (/*isClickable*/ ctx[8]) return create_if_block_1$y;
2076			return create_else_block$b;
2077		}
2078
2079		let current_block_type = select_block_type(ctx);
2080		let if_block = current_block_type(ctx);
2081
2082		return {
2083			c() {
2084				if_block.c();
2085				if_block_anchor = empty();
2086			},
2087			m(target, anchor) {
2088				if_block.m(target, anchor);
2089				insert(target, if_block_anchor, anchor);
2090			},
2091			p(ctx, dirty) {
2092				if (current_block_type === (current_block_type = select_block_type(ctx)) && if_block) {
2093					if_block.p(ctx, dirty);
2094				} else {
2095					if_block.d(1);
2096					if_block = current_block_type(ctx);
2097
2098					if (if_block) {
2099						if_block.c();
2100						if_block.m(if_block_anchor.parentNode, if_block_anchor);
2101					}
2102				}
2103			},
2104			d(detaching) {
2105				if (detaching) {
2106					detach(if_block_anchor);
2107				}
2108
2109				if_block.d(detaching);
2110			}
2111		};
2112	}
2113
2114	function create_fragment$1c(ctx) {
2115		let show_if = !isNaN(/*value*/ ctx[4]);
2116		let if_block_anchor;
2117		let if_block = show_if && create_if_block$L(ctx);
2118
2119		return {
2120			c() {
2121				if (if_block) if_block.c();
2122				if_block_anchor = empty();
2123			},
2124			m(target, anchor) {
2125				if (if_block) if_block.m(target, anchor);
2126				insert(target, if_block_anchor, anchor);
2127			},
2128			p(ctx, [dirty]) {
2129				if (dirty & /*value*/ 16) show_if = !isNaN(/*value*/ ctx[4]);
2130
2131				if (show_if) {
2132					if (if_block) {
2133						if_block.p(ctx, dirty);
2134					} else {
2135						if_block = create_if_block$L(ctx);
2136						if_block.c();
2137						if_block.m(if_block_anchor.parentNode, if_block_anchor);
2138					}
2139				} else if (if_block) {
2140					if_block.d(1);
2141					if_block = null;
2142				}
2143			},
2144			i: noop,
2145			o: noop,
2146			d(detaching) {
2147				if (detaching) {
2148					detach(if_block_anchor);
2149				}
2150
2151				if (if_block) if_block.d(detaching);
2152			}
2153		};
2154	}
2155
2156	function instance$1a($$self, $$props, $$invalidate) {
2157		let currentItem;
2158		let visibleItems;
2159		let value;
2160		let { disabled } = $$props;
2161		let { items } = $$props;
2162		let { isPaymentForm = false } = $$props;
2163
2164		const click_handler = item => {
2165			item.onSelect();
2166		};
2167
2168		$$self.$$set = $$props => {
2169			if ('disabled' in $$props) $$invalidate(0, disabled = $$props.disabled);
2170			if ('items' in $$props) $$invalidate(5, items = $$props.items);
2171			if ('isPaymentForm' in $$props) $$invalidate(1, isPaymentForm = $$props.isPaymentForm);
2172		};
2173
2174		$$self.$$.update = () => {
2175			if ($$self.$$.dirty & /*items*/ 32) {
2176				$$invalidate(2, currentItem = items.find(i => i.isCurrent));
2177			}
2178
2179			if ($$self.$$.dirty & /*items*/ 32) {
2180				$$invalidate(3, visibleItems = items.filter(i => i.isVisible));
2181			}
2182
2183			if ($$self.$$.dirty & /*visibleItems, currentItem*/ 12) {
2184				$$invalidate(4, value = Math.floor(100 / (visibleItems.length - 1) * (currentItem.isVisible
2185				? currentItem.visibleOrder
2186				: Math.max.apply(Math, visibleItems.filter(i => i.order < currentItem.order).map(i => i.visibleOrder)))));
2187			}
2188		};
2189
2190		return [
2191			disabled,
2192			isPaymentForm,
2193			currentItem,
2194			visibleItems,
2195			value,
2196			items,
2197			click_handler
2198		];
2199	}
2200
2201	class ProgressBar extends SvelteComponent {
2202		constructor(options) {
2203			super();
2204			init(this, options, instance$1a, create_fragment$1c, safe_not_equal, { disabled: 0, items: 5, isPaymentForm: 1 });
2205		}
2206	}
2207
2208	var FormType;
2209	(function (FormType) {
2210	    FormType["EMPTY"] = "EMPTY";
2211	    FormType["PAYMENT"] = "PAYMENT";
2212	    FormType["CHANGE_SUBSCRIPTION"] = "CHANGE_SUBSCRIPTION";
2213	    FormType["REGISTRATION"] = "REGISTRATION";
2214	    FormType["CONTACT"] = "CONTACT";
2215	    FormType["DATA_CAPTURE"] = "DATA_CAPTURE";
2216	    FormType["COMPLETE_REGISTRATION"] = "COMPLETE_REGISTRATION";
2217	    FormType["UPDATE_PROFILE"] = "UPDATE_PROFILE";
2218	    FormType["CANCEL_SUBSCRIPTION"] = "CANCEL_SUBSCRIPTION";
2219	    FormType["LIST_SUBSCRIPTIONS"] = "LIST_SUBSCRIPTIONS";
2220	    FormType["SUSPEND_RESUME_SUBSCRIPTION"] = "SUSPEND_RESUME_SUBSCRIPTION";
2221	    FormType["DEVICES"] = "DEVICES";
2222	    FormType["GIFT_SUBSCRIPTION"] = "GIFT_SUBSCRIPTION";
2223	    FormType["GIFT_REDEMPTION"] = "GIFT_REDEMPTION";
2224	    FormType["LIST_GIFT_SUBSCRIPTIONS_SENT"] = "LIST_GIFT_SUBSCRIPTIONS_SENT";
2225	    FormType["BILL_TO_CONTACT"] = "BILL_TO_CONTACT";
2226	})(FormType || (FormType = {}));
2227
2228	const toProgressBarItems = (form, formState, formActions) => {
2229	    let order = 0;
2230	    let visibleOrder = 0;
2231	    return form.parts.flatMap(part => part.sections
2232	        .map(section => ({ part, section })))
2233	        .map(({ part, section }) => ({
2234	        type: section.type,
2235	        isVisible: isSectionDisplayedInProgressBar(section, form, formState),
2236	        label: (section.label ?? part.label) ?? sectionTypeFor(section.type)?.defaultLabel,
2237	        isCurrent: formState.currentSection == section,
2238	        // Do not allow users to go backwards from PAYMENT if they have just registered
2239	        isDisabled: formState.loginRegistrationComplete && ![partTypes.PLAN_SELECT.type ].includes(part.type),
2240	        order: order++,
2241	        visibleOrder: isSectionDisplayedInProgressBar(section, form, formState) ? visibleOrder++ : null,
2242	        onSelect: () => setSection({ form, formActions, part, section, previousSection: formState.currentSection, previousPart: formState.currentPart })
2243	    }));
2244	};
2245	const factory$u = {
2246	    matches: (sectionElement) => sectionElement.type === elementTypes.PROGRESS_BAR,
2247	    create: (form, formState, formActions) => {
2248	        return {
2249	            component: ProgressBar,
2250	            props: {
2251	                disabled: formState.isBusy,
2252	                items: toProgressBarItems(form, formState, formActions),
2253	                isPaymentForm: form.formType === FormType.PAYMENT,
2254	            }
2255	        };
2256	    }
2257	};
2258
2259	const formConfigAs = (form) => {
2260	    return form.typeConfiguration;
2261	};
2262
2263	/* src/components/elements/button/Button.svelte generated by Svelte v4.2.12 */
2264
2265	function create_fragment$1b(ctx) {
2266		let button;
2267		let t;
2268		let button_style_value;
2269		let mounted;
2270		let dispose;
2271
2272		return {
2273			c() {
2274				button = element("button");
2275				t = text(/*text*/ ctx[1]);
2276				attr(button, "class", "zephr-form-button svelte-gd8hr6");
2277				attr(button, "type", "submit");
2278				button.hidden = /*hidden*/ ctx[6];
2279				attr(button, "style", button_style_value = /*hidden*/ ctx[6] ? 'dis
2279play:none' : undefined);
2280				button.disabled = /*disabled*/ ctx[0];
2281				toggle_class(button, "zephr-payment-form-button", /*isPaymentForm*/ ctx[5]);
2282				toggle_class(button, "zephr-form-button-top-margin", !/*noMargin*/ ctx[2]);
2283				toggle_class(button, "zephr-payment-form-button-top-margin", /*isPaymentForm*/ ctx[5] && !/*noMargin*/ ctx[2]);
2284				toggle_class(button, "inputHeight", /*inputHeight*/ ctx[3]);
2285				toggle_class(button, "aside", /*aside*/ ctx[4]);
2286			},
2287			m(target, anchor) {
2288				insert(target, button, anchor);
2289				append(button, t);
2290
2291				if (!mounted) {
2292					dispose = listen(button, "click", prevent_default(function () {
2293						if (is_function(/*onClick*/ ctx[7])) /*onClick*/ ctx[7].apply(this, arguments);
2294					}));
2295
2296					mounted = true;
2297				}
2298			},
2299			p(new_ctx, [dirty]) {
2300				ctx = new_ctx;
2301				if (dirty & /*text*/ 2) set_data(t, /*text*/ ctx[1]);
2302
2303				if (dirty & /*hidden*/ 64) {
2304					button.hidden = /*hidden*/ ctx[6];
2305				}
2306
2307				if (dirty & /*hidden*/ 64 && button_style_value !== (button_style_value = /*hidden*/ ctx[6] ? 'display:none' : undefined)) {
2308					attr(button, "style", button_style_value);
2309				}
2310
2311				if (dirty & /*disabled*/ 1) {
2312					button.disabled = /*disabled*/ ctx[0];
2313				}
2314
2315				if (dirty & /*isPaymentForm*/ 32) {
2316					toggle_class(button, "zephr-payment-form-button", /*isPaymentForm*/ ctx[5]);
2317				}
2318
2319				if (dirty & /*noMargin*/ 4) {
2320					toggle_class(button, "zephr-form-button-top-margin", !/*noMargin*/ ctx[2]);
2321				}
2322
2323				if (dirty & /*isPaymentForm, noMargin*/ 36) {
2324					toggle_class(button, "zephr-payment-form-button-top-margin", /*isPaymentForm*/ ctx[5] && !/*noMargin*/ ctx[2]);
2325				}
2326
2327				if (dirty & /*inputHeight*/ 8) {
2328					toggle_class(button, "inputHeight", /*inputHeight*/ ctx[3]);
2329				}
2330
2331				if (dirty & /*aside*/ 16) {
2332					toggle_class(button, "aside", /*aside*/ ctx[4]);
2333				}
2334			},
2335			i: noop,
2336			o: noop,
2337			d(detaching) {
2338				if (detaching) {
2339					detach(button);
2340				}
2341
2342				mounted = false;
2343				dispose();
2344			}
2345		};
2346	}
2347
2348	function instance$19($$self, $$props, $$invalidate) {
2349		let { disabled } = $$props;
2350		let { text } = $$props;
2351		let { noMargin = false } = $$props;
2352		let { inputHeight = false } = $$props;
2353		let { aside = false } = $$props;
2354		let { isPaymentForm = false } = $$props;
2355		let { hidden = false } = $$props;
2356		let { onClick } = $$props;
2357
2358		$$self.$$set = $$props => {
2359			if ('disabled' in $$props) $$invalidate(0, disabled = $$props.disabled);
2360			if ('text' in $$props) $$invalidate(1, text = $$props.text);
2361			if ('noMargin' in $$props) $$invalidate(2, noMargin = $$props.noMargin);
2362			if ('inputHeight' in $$props) $$invalidate(3, inputHeight = $$props.inputHeight);
2363			if ('aside' in $$props) $$invalidate(4, aside = $$props.aside);
2364			if ('isPaymentForm' in $$props) $$invalidate(5, isPaymentForm = $$props.isPaymentForm);
2365			if ('hidden' in $$props) $$invalidate(6, hidden = $$props.hidden);
2366			if ('onClick' in $$props) $$invalidate(7, onClick = $$props.onClick);
2367		};
2368
2369		return [disabled, text, noMargin, inputHeight, aside, isPaymentForm, hidden, onClick];
2370	}
2371
2372	class Button extends SvelteComponent {
2373		constructor(options) {
2374			super();
2375
2376			init(this, options, instance$19, create_fragment$1b, safe_not_equal, {
2377				disabled: 0,
2378				text: 1,
2379				noMargin: 2,
2380				inputHeight: 3,
2381				aside: 4,
2382				isPaymentForm: 5,
2383				hidden: 6,
2384				onClick: 7
2385			});
2386		}
2387	}
2388
2389	/* src/components/elements/paymentOptionSelection/PaymentOptionComponent.svelte generated by Svelte v4.2.12 */
2390
2391	function create_if_block_1$x(ctx) {
2392		let div;
2393		let t_value = /*paymentOption*/ ctx[1].highlightedText + "";
2394		let t;
2395
2396		return {
2397			c() {
2398				div = element("div");
2399				t = text(t_value);
2400				attr(div, "class", "box-top-text svelte-hcxnnv");
2401			},
2402			m(target, anchor) {
2403				insert(target, div, anchor);
2404				append(div, t);
2405			},
2406			p(ctx, dirty) {
2407				if (dirty & /*paymentOption*/ 2 && t_value !== (t_value = /*paymentOption*/ ctx[1].highlightedText + "")) set_data(t, t_value);
2408			},
2409			d(detaching) {
2410				if (detaching) {
2411					detach(div);
2412				}
2413			}
2414		};
2415	}
2416
2417	// (38:8) {#if paymentOption.disclaimerMessage}
2418	function create_if_block$K(ctx) {
2419		let span;
2420		let t_value = /*paymentOption*/ ctx[1].disclaimerMessage + "";
2421		let t;
2422
2423		return {
2424			c() {
2425				span = element("span");
2426				t = text(t_value);
2427				attr(span, "class", "button-sub-text svelte-hcxnnv");
2428			},
2429			m(target, anchor) {
2430				insert(target, span, anchor);
2431				append(span, t);
2432			},
2433			p(ctx, dirty) {
2434				if (dirty & /*paymentOption*/ 2 && t_value !== (t_value = /*paymentOption*/ ctx[1].disclaimerMessage + "")) set_data(t, t_value);
2435			},
2436			d(detaching) {
2437				if (detaching) {
2438					detach(span);
2439				}
2440			}
2441		};
2442	}
2443
2444	function create_fragment$1a(ctx) {
2445		let div5;
2446		let input;
2447		let input_id_value;
2448		let input_value_value;
2449		let t0;
2450		let div4;
2451		let div0;
2452		let t1;
2453		let div3;
2454		let div1;
2455		let raw_value = (/*paymentOption*/ ctx[1].description ?? '') + "";
2456		let t2;
2457		let div2;
2458		let button;
2459		let t3;
2460		let div3_class_value;
2461		let div4_class_value;
2462		let current;
2463		let mounted;
2464		let dispose;
2465		let if_block0 = /*paymentOption*/ ctx[1].highlightedText && create_if_block_1$x(ctx);
2466
2467		button = new Button({
2468				props: {
2469					disabled: false,
2470					text: /*paymentOption*/ ctx[1].selectButtonText ?? 'Select Plan',
2471					onClick: /*onSelect*/ ctx[0],
2472					isPaymentForm: true
2473				}
2474			});
2475
2476		let if_block1 = /*paymentOption*/ ctx[1].disclaimerMessage && create_if_block$K(ctx);
2477
2478		return {
2479			c() {
2480				div5 = element("div");
2481				input = element("input");
2482				t0 = space();
2483				div4 = element("div");
2484				div0 = element("div");
2485				if (if_block0) if_block0.c();
2486				t1 = space();
2487				div3 = element("div");
2488				div1 = element("div");
2489				t2 = space();
2490				div2 = element("div");
2491				create_component(button.$$.fragment);
2492				t3 = space();
2493				if (if_block1) if_block1.c();
2494				attr(input, "type", "radio");
2495				attr(input, "name", "boxSelect");
2496				attr(input, "id", input_id_value = "boxSelect-" + /*paymentOption*/ ctx[1].slug + "-" + /*paymentOption*/ ctx[1].productId + "}");
2497				input.value = input_value_value = /*paymentOption*/ ctx[1].price;
2498				attr(input, "class", "svelte-hcxnnv");
2499				attr(div0, "class", "box-top svelte-hcxnnv");
2500				attr(div1, "class", "box-content svelte-hcxnnv");
2501				toggle_class(div1, "styled-box-content", /*styleDescription*/ ctx[2]);
2502				attr(div2, "class", "box-bottom svelte-hcxnnv");
2503				attr(div3, "class", div3_class_value = "inner-box " + (/*paymentOption*/ ctx[1].highlightedText || '') + " svelte-hcxnnv");
2504
2505				attr(div4, "class", div4_class_value = "box-container " + (/*paymentOption*/ ctx[1].highlightedText
2506				? 'highlighted'
2507				: '') + " svelte-hcxnnv");
2508
2509				attr(div4, "aria-hidden", "true");
2510				set_style(div4, "cursor", "pointer");
2511				attr(div5, "class", "payment-option-wrapper svelte-hcxnnv");
2512			},
2513			m(target, anchor) {
2514				insert(target, div5, anchor);
2515				append(div5, input);
2516				append(div5, t0);
2517				append(div5, div4);
2518				append(div4, div0);
2519				if (if_block0) if_block0.m(div0, null);
2520				append(div4, t1);
2521				append(div4, div3);
2522				append(div3, div1);
2523				div1.innerHTML = raw_value;
2524				append(div3, t2);
2525				append(div3, div2);
2526				mount_component(button, div2, null);
2527				append(div2, t3);
2528				if (if_block1) if_block1.m(div2, null);
2529				current = true;
2530
2531				if (!mounted) {
2532					dispose = listen(div4, "click", prevent_default(function () {
2533						if (is_function(/*onSelect*/ ctx[0])) /*onSelect*/ ctx[0].apply(this, arguments);
2534					}));
2535
2536					mounted = true;
2537				}
2538			},
2539			p(new_ctx, [dirty]) {
2540				ctx = new_ctx;
2541
2542				if (!current || dirty & /*paymentOption*/ 2 && input_id_value !== (input_id_value = "boxSelect-" + /*paymentOption*/ ctx[1].slug + "-" + /*paymentOption*/ ctx[1].productId + "}")) {
2543					attr(input, "id", input_id_value);
2544				}
2545
2546				if (!current || dirty & /*paymentOption*/ 2 && input_value_value !== (input_value_value = /*paymentOption*/ ctx[1].price)) {
2547					input.value = input_value_value;
2548				}
2549
2550				if (/*paymentOption*/ ctx[1].highlightedText) {
2551					if (if_block0) {
2552						if_block0.p(ctx, dirty);
2553					} else {
2554						if_block0 = create_if_block_1$x(ctx);
2555						if_block0.c();
2556						if_block0.m(div0, null);
2557					}
2558				} else if (if_block0) {
2559					if_block0.d(1);
2560					if_block0 = null;
2561				}
2562
2563				if ((!current || dirty & /*paymentOption*/ 2) && raw_value !== (raw_value = (/*paymentOption*/ ctx[1].description ?? '') + "")) div1.innerHTML = raw_value;
2564				if (!current || dirty & /*styleDescription*/ 4) {
2565					toggle_class(div1, "styled-box-content", /*styleDescription*/ ctx[2]);
2566				}
2567
2568				const button_changes = {};
2569				if (dirty & /*paymentOption*/ 2) button_changes.text = /*paymentOption*/ ctx[1].selectButtonText ?? 'Select Plan';
2570				if (dirty & /*onSelect*/ 1) button_changes.onClick = /*onSelect*/ ctx[0];
2571				button.$set(button_changes);
2572
2573				if (/*paymentOption*/ ctx[1].disclaimerMessage) {
2574					if (if_block1) {
2575						if_block1.p(ctx, dirty);
2576					} else {
2577						if_block1 = create_if_block$K(ctx);
2578						if_block1.c();
2579						if_block1.m(div2, null);
2580					}
2581				} else if (if_block1) {
2582					if_block1.d(1);
2583					if_block1 = null;
2584				}
2585
2586				if (!current || dirty & /*paymentOption*/ 2 && div3_class_value !== (div3_class_value = "inner-box " + (/*paymentOption*/ ctx[1].highlightedText || '') + " svelte-hcxnnv")) {
2587					attr(div3, "class", div3_class_value);
2588				}
2589
2590				if (!current || dirty & /*paymentOption*/ 2 && div4_class_value !== (div4_class_value = "box-container " + (/*paymentOption*/ ctx[1].highlightedText
2591				? 'highlighted'
2592				: '') + " svelte-hcxnnv")) {
2593					attr(div4, "class", div4_class_value);
2594				}
2595			},
2596			i(local) {
2597				if (current) return;
2598				transition_in(button.$$.fragment, local);
2599				current = true;
2600			},
2601			o(local) {
2602				transition_out(button.$$.fragment, local);
2603				current = false;
2604			},
2605			d(detaching) {
2606				if (detaching) {
2607					detach(div5);
2608				}
2609
2610				if (if_block0) if_block0.d();
2611				destroy_component(button);
2612				if (if_block1) if_block1.d();
2613				mounted = false;
2614				dispose();
2615			}
2616		};
2617	}
2618
2619	function instance$18($$self, $$props, $$invalidate) {
2620		let { onSelect } = $$props;
2621		let { paymentOption } = $$props;
2622		let { styleDescription } = $$props;
2623
2624		$$self.$$set = $$props => {
2625			if ('onSelect' in $$props) $$invalidate(0, onSelect = $$props.onSelect);
2626			if ('paymentOption' in $$props) $$invalidate(1, paymentOption = $$props.paymentOption);
2627			if ('styleDescription' in $$props) $$invalidate(2, styleDescription = $$props.styleDescription);
2628		};
2629
2630		return [onSelect, paymentOption, styleDescription];
2631	}
2632
2633	class PaymentOptionComponent extends SvelteComponent {
2634		constructor(options) {
2635			super();
2636
2637			init(this, options, instance$18, create_fragment$1a, safe_not_equal, {
2638				onSelect: 0,
2639				paymentOption: 1,
2640				styleDescription: 2
2641			});
2642		}
2643	}
2644
2645	/* src/components/elements/paymentOptionSelection/PaymentOptionSelectionComponent.svelte generated by Svelte v4.2.12 */
2646
2647	function get_each_context$g(ctx, list, i) {
2648		const child_ctx = ctx.slice();
2649		child_ctx[6] = list[i];
2650		return child_ctx;
2651	}
2652
2653	// (12:2) {#each orderedPaymentOptions as paymentOption}
2654	function create_each_block$g(ctx) {
2655		let paymentoptioncomponent;
2656		let current;
2657
2658		function func() {
2659			return /*func*/ ctx[5](/*paymentOption*/ ctx[6]);
2660		}
2661
2662		paymentoptioncomponent = new PaymentOptionComponent({
2663				props: {
2664					paymentOption: /*paymentOption*/ ctx[6],
2665					styleDescription: /*config*/ ctx[0].styleDescription,
2666					onSelect: func
2667				}
2668			});
2669
2670		return {
2671			c() {
2672				create_component(paymentoptioncomponent.$$.fragment);
2673			},
2674			m(target, anchor) {
2675				mount_component(paymentoptioncomponent, target, anchor);
2676				current = true;
2677			},
2678			p(new_ctx, dirty) {
2679				ctx = new_ctx;
2680				const paymentoptioncomponent_changes = {};
2681				if (dirty & /*orderedPaymentOptions*/ 4) paymentoptioncomponent_changes.paymentOption = /*paymentOption*/ ctx[6];
2682				if (dirty & /*config*/ 1) paymentoptioncomponent_changes.styleDescription = /*config*/ ctx[0].styleDescription;
2683				if (dirty & /*onSelect, orderedPaymentOptions*/ 6) paymentoptioncomponent_changes.onSelect = func;
2684				paymentoptioncomponent.$set(paymentoptioncomponent_changes);
2685			},
2686			i(local) {
2687				if (current) return;
2688				transition_in(paymentoptioncomponent.$$.fragment, local);
2689				current = true;
2690			},
2691			o(local) {
2692				transition_out(paymentoptioncomponent.$$.fragment, local);
2693				current = false;
2694			},
2695			d(detaching) {
2696				destroy_component(paymentoptioncomponent, detaching);
2697			}
2698		};
2699	}
2700
2701	function create_fragment$19(ctx) {
2702		let div;
2703		let current;
2704		let each_value = ensure_array_like(/*orderedPaymentOptions*/ ctx[2]);
2705		let each_blocks = [];
2706
2707		for (let i = 0; i < each_value.length; i += 1) {
2708			each_blocks[i] = create_each_block$g(get_each_context$g(ctx, each_value, i));
2709		}
2710
2711		const out = i => transition_out(each_blocks[i], 1, 1, () => {
2712			each_blocks[i] = null;
2713		});
2714
2715		return {
2716			c() {
2717				div = element("div");
2718
2719				for (let i = 0; i < each_blocks.length; i += 1) {
2720					each_blocks[i].c();
2721				}
2722
2723				attr(div, "class", "payment-options-container svelte-tqlhky");
2724			},
2725			m(target, anchor) {
2726				insert(target, div, anchor);
2727
2728				for (let i = 0; i < each_blocks.length; i += 1) {
2729					if (each_blocks[i]) {
2730						each_blocks[i].m(div, null);
2731					}
2732				}
2733
2734				current = true;
2735			},
2736			p(ctx, [dirty]) {
2737				if (dirty & /*orderedPaymentOptions, config, onSelect*/ 7) {
2738					each_value = ensure_array_like(/*orderedPaymentOptions*/ ctx[2]);
2739					let i;
2740
2741					for (i = 0; i < each_value.length; i += 1) {
2742						const child_ctx = get_each_context$g(ctx, each_value, i);
2743
2744						if (each_blocks[i]) {
2745							each_blocks[i].p(child_ctx, dirty);
2746							transition_in(each_blocks[i], 1);
2747						} else {
2748							each_blocks[i] = create_each_block$g(child_ctx);
2749							each_blocks[i].c();
2750							transition_in(each_blocks[i], 1);
2751							each_blocks[i].m(div, null);
2752						}
2753					}
2754
2755					group_outros();
2756
2757					for (i = each_value.length; i < each_blocks.length; i += 1) {
2758						out(i);
2759					}
2760
2761					check_outros();
2762				}
2763			},
2764			i(local) {
2765				if (current) return;
2766
2767				for (let i = 0; i < each_value.length; i += 1) {
2768					transition_in(each_blocks[i]);
2769				}
2770
2771				current = true;
2772			},
2773			o(local) {
2774				each_blocks = each_blocks.filter(Boolean);
2775
2776				for (let i = 0; i < each_blocks.length; i += 1) {
2777					transition_out(each_blocks[i]);
2778				}
2779
2780				current = false;
2781			},
2782			d(detaching) {
2783				if (detaching) {
2784					detach(div);
2785				}
2786
2787				destroy_each(each_blocks, detaching);
2788			}
2789		};
2790	}
2791
2792	function instance$17($$self, $$props, $$invalidate) {
2793		let orderedPaymentOptions;
2794		let { paymentOptions } = $$props;
2795		let { config } = $$props;
2796		let { onSelect } = $$props;
2797		let { logView } = $$props;
2798		logView();
2799		const func = paymentOption => onSelect(paymentOption);
2800
2801		$$self.$$set = $$props => {
2802			if ('paymentOptions' in $$props) $$invalidate(3, paymentOptions = $$props.paymentOptions);
2803			if ('config' in $$props) $$invalidate(0, config = $$props.config);
2804			if ('onSelect' in $$props) $$invalidate(1, onSelect = $$props.onSelect);
2805			if ('logView' in $$props) $$invalidate(4, logView = $$props.logView);
2806		};
2807
2808		$$self.$$.update = () => {
2809			if ($$self.$$.dirty & /*paymentOptions*/ 8) {
2810				$$invalidate(2, orderedPaymentOptions = paymentOptions.sort((a, b) => a.fieldOrder - b.fieldOrder));
2811			}
2812		};
2813
2814		return [config, onSelect, orderedPaymentOptions, paymentOptions, logView, func];
2815	}
2816
2817	class PaymentOptionSelectionComponent extends SvelteComponent {
2818		constructor(options) {
2819			super();
2820
2821			init(this, options, instance$17, create_fragment$19, safe_not_equal, {
2822				paymentOptions: 3,
2823				config: 0,
2824				onSelect: 1,
2825				logView: 4
2826			});
2827		}
2828	}
2829
2830	const filterValidPaymentOptions = (form, formState) => {
2831	    if (!formConfigAs(form).changeSubscriptionMode) {
2832	        return formConfigAs(form).paymentOptions;
2833	    }
2834	    return formConfigAs(form).paymentOptions
2835	        .filter(paymentOption => formState
2836	        .validChangeFromPlans
2837	        .some(validPlan => validPlan.productId === paymentOption.productId && validPlan.planSlug === paymentOption.slug));
2838	};
2839	const factory$t = {
2840	    matches: (sectionElement) => sectionElement.type === elementTypes.PAYMENT_OPTION_SELECTION,
2841	    create: (form, formState, formActions, elementConfig) => ({
2842	        component: PaymentOptionSelectionComponent,
2843	        props: {
2844	            paymentOptions: filterValidPaymentOptions(form, formState),
2845	            config: elementConfig ? elementConfig : {},
2846	            onSelect: (paymentOption) => {
2847	                const paymentOptionKey = `${paymentOption.productId}-${paymentOption.slug}`;
2848	                const updateState = {
2849	                    paymentOption: {
2850	                        ...paymentOption,
2851	                        autoRenewConfig: paymentOption.autoRenewConfig,
2852	                        autoRenewToggleLabel: paymentOption.autoRenewToggleLabel
2853	                    },
2854	                    serverErrors: [],
2855	                    billingAddress: {
2856	                        country: null,
2857	                        postalCode: null,
2858	                    }
2859	                };
2860	                // Only initialize auto-renew state for payment options with custom_toggle config
2861	                if (paymentOption.autoRenewConfig === 'custom_toggle') {
2862	                    updateState.paymentOptionAutoRenew = {
2863	                        ...formState.paymentOptionAutoRenew,
2864	                        [paymentOptionKey]: paymentOption.terms?.autoRenew ?? false
2865	                    };
2866	                }
2867	                formActions.updateFormState(updateState);
2868	                if (form.organisationConfiguration.trackFormDataLayerEvents) {
2869	                    logDataLayerEvent(form, 'zephr_form_button_press', {
2870	                        sectionId: formState.currentSection.type,
2871	                        buttonType: 'SUBMIT'
2872	                    });
2873	                }
2874	                void formActions.completeSection();
2875	            },
2876	            logView: () => {
2877	                filterValidPaymentOptions(form, formState).forEach(paymentOption => logDataLayerEvent(form, 'view_item', {
2878	                    ecommerce: {
2879	                        currency: formConfigAs(form).formCurrency ?? paymentOption?.currencyCode,
2880	                        value: paymentOption.price,
2881	                        items: [{
2882	                                item_id: paymentOption.slug,
2883	                                item_name: paymentOption.productId,
2884	                                price: paymentOption.price,
2885	                                quantity: 1
2886	                            }]
2887	                    }
2888	                }));
2889	            }
2890	        }
2891	    })
2892	};
2893
2894	/* src/components/elements/ErrorMessage.svelte generated by Svelte v4.2.12 */
2895
2896	function create_fragment$18(ctx) {
2897		let div1;
2898		let div0;
2899		let t;
2900
2901		return {
2902			c() {
2903				div1 = element("div");
2904				div0 = element("div");
2905				t = text(/*error*/ ctx[0]);
2906				attr(div0, "class", "zephr-form-error-message svelte-1ko2lqj");
2907				attr(div0, "aria-live", "assertive");
2908				toggle_class(div0, "zephr-payment-form-error-message", !/*isPaymentForm*/ ctx[1]);
2909				attr(div1, "class", "zephr-form-error-message-min-height svelte-1ko2lqj");
2910				toggle_class(div1, "zephr-payment-form-error-message-min-height", !/*isPaymentForm*/ ctx[1]);
2911			},
2912			m(target, anchor) {
2913				insert(target, div1, anchor);
2914				append(div1, div0);
2915				append(div0, t);
2916			},
2917			p(ctx, [dirty]) {
2918				if (dirty & /*error*/ 1) set_data(t, /*error*/ ctx[0]);
2919
2920				if (dirty & /*isPaymentForm*/ 2) {
2921					toggle_class(div0, "zephr-payment-form-error-message", !/*isPaymentForm*/ ctx[1]);
2922				}
2923
2924				if (dirty & /*isPaymentForm*/ 2) {
2925					toggle_class(div1, "zephr-payment-form-error-message-min-height", !/*isPaymentForm*/ ctx[1]);
2926				}
2927			},
2928			i: noop,
2929			o: noop,
2930			d(detaching) {
2931				if (detaching) {
2932					detach(div1);
2933				}
2934			}
2935		};
2936	}
2937
2938	function instance$16($$self, $$props, $$invalidate) {
2939		let { error } = $$props;
2940		let { isPaymentForm = false } = $$props;
2941
2942		$$self.$$set = $$props => {
2943			if ('error' in $$props) $$invalidate(0, error = $$props.error);
2944			if ('isPaymentForm' in $$props) $$invalidate(1, isPaymentForm = $$props.isPaymentForm);
2945		};
2946
2947		return [error, isPaymentForm];
2948	}
2949
2950	class ErrorMessage extends SvelteComponent {
2951		constructor(options) {
2952			super();
2953			init(this, options, instance$16, create_fragment$18, safe_not_equal, { error: 0, isPaymentForm: 1 });
2954		}
2955	}
2956
2957	/* src/components/elements/Input.svelte generated by Svelte v4.2.12 */
2958
2959	function create_if_block_1$w(ctx) {
2960		let button;
2961		let span;
2962		let t;
2963		let mounted;
2964		let dispose;
2965
2966		return {
2967			c() {
2968				button = element("button");
2969				span = element("span");
2970				t = text(/*innerText*/ ctx[16]);
2971				attr(span, "class", "zephr-form-input-inner-text");
2972				toggle_class(span, "zephr-payment-form-input-inner-text", /*isPaymentForm*/ ctx[7]);
2973				attr(button, "type", "button");
2974				attr(button, "class", "zephr-form-input-inner-button");
2975			},
2976			m(target, anchor) {
2977				insert(target, button, anchor);
2978				append(button, span);
2979				append(span, t);
2980				/*button_binding*/ ctx[28](button);
2981
2982				if (!mounted) {
2983					dispose = listen(button, "click", prevent_default(function () {
2984						if (is_function(/*innerTextOnClick*/ ctx[17])) /*innerTextOnClick*/ ctx[17].apply(this, arguments);
2985					}));
2986
2987					mounted = true;
2988				}
2989			},
2990			p(new_ctx, dirty) {
2991				ctx = new_ctx;
2992				if (dirty & /*innerText*/ 65536) set_data(t, /*innerText*/ ctx[16]);
2993
2994				if (dirty & /*isPaymentForm*/ 128) {
2995					toggle_class(span, "zephr-payment-form-input-inner-text", /*isPaymentForm*/ ctx[7]);
2996				}
2997			},
2998			d(detaching) {
2999				if (detaching) {
3000					detach(button);
3001				}
3002
3003				/*button_binding*/ ctx[28](null);
3004				mounted = false;
3005				dispose();
3006			}
3007		};
3008	}
3009
3010	// (89:0) {#if errorMessage}
3011	function create_if_block$J(ctx) {
3012		let errormessage;
3013		let current;
3014
3015		errormessage = new ErrorMessage({
3016				props: {
3017					error: /*errorMessage*/ ctx[6],
3018					isPaymentForm: /*isPaymentForm*/ ctx[7]
3019				}
3020			});
3021
3022		return {
3023			c() {
3024				create_component(errormessage.$$.fragment);
3025			},
3026			m(target, anchor) {
3027				mount_component(errormessage, target, anchor);
3028				current = true;
3029			},
3030			p(ctx, dirty) {
3031				const errormessage_changes = {};
3032				if (dirty & /*errorMessage*/ 64) errormessage_changes.error = /*errorMessage*/ ctx[6];
3033				if (dirty & /*isPaymentForm*/ 128) errormessage_changes.isPaymentForm = /*isPaymentForm*/ ctx[7];
3034				errormessage.$set(errormessage_changes);
3035			},
3036			i(local) {
3037				if (current) return;
3038				transition_in(errormessage.$$.fragment, local);
3039				current = true;
3040			},
3041			o(local) {
3042				transition_out(errormessage.$$.fragment, local);
3043				current = false;
3044			},
3045			d(detaching) {
3046				destroy_component(errormessage, detaching);
3047			}
3048		};
3049	}
3050
3051	function create_fragment$17(ctx) {
3052		let div;
3053		let input;
3054		let input_value_value;
3055		let input_autocomplete_value;
3056		let input_checked_value;
3057		let input_placeholder_value;
3058		let input_pattern_value;
3059		let input_min_value;
3060		let input_max_value;
3061		let input_step_value;
3062		let input_class_value;
3063		let t0;
3064		let t1;
3065		let t2;
3066		let if_block1_anchor;
3067		let current;
3068		let mounted;
3069		let dispose;
3070		let if_block0 = /*innerText*/ ctx[16] && create_if_block_1$w(ctx);
3071		const default_slot_template = /*#slots*/ ctx[26].default;
3072		const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[25], null);
3073		let if_block1 = /*errorMessage*/ ctx[6] && create_if_block$J(ctx);
3074
3075		return {
3076			c() {
3077				div = element("div");
3078				input = element("input");
3079				t0 = space();
3080				if (if_block0) if_block0.c();
3081				t1 = space();
3082				if (default_slot) default_slot.c();
3083				t2 = space();
3084				if (if_block1) if_block1.c();
3085				if_block1_anchor = empty();
3086				attr(input, "id", /*id*/ ctx[0]);
3087				attr(input, "name", /*name*/ ctx[1]);
3088				input.required = /*required*/ ctx[3];
3089				input.disabled = /*disabled*/ ctx[4];
3090				attr(input, "type", /*type*/ ctx[2]);
3091				input.value = input_value_value = /*value*/ ctx[8] || null;
3092				attr(input, "autocomplete", input_autocomplete_value = /*autocomplete*/ ctx[19] || null);
3093				input.checked = input_checked_value = /*checked*/ ctx[10] || null;
3094				attr(input, "placeholder", input_placeholder_value = /*placeholder*/ ctx[9] || null);
3095				attr(input, "pattern", input_pattern_value = /*pattern*/ ctx[11] || null);
3096				attr(input, "min", input_min_value = /*min*/ ctx[12] || null);
3097				attr(input, "max", input_max_value = /*max*/ ctx[13] || null);
3098				attr(input, "maxlength", /*maxlength*/ ctx[15]);
3099				attr(input, "step", input_step_value = /*step*/ ctx[14] || null);
3100				attr(input, "class", input_class_value = "" + (null_to_empty(`zephr-form-input ${/*type*/ ctx[2] && `zephr-form-input-${/*type*/ ctx[2]}`} ${/*isPaymentForm*/ ctx[7] && /*type*/ ctx[2] && `zephr-payment-form-input-${/*type*/ ctx[2]}`}`) + " svelte-88cmol"));
3101				toggle_class(input, "disabled", /*disabled*/ ctx[4]);
3102				toggle_class(input, "error", /*hasError*/ ctx[5] || /*errorMessage*/ ctx[6]);
3103				toggle_class(input, "zephr-form-input-full-width", /*fill*/ ctx[18]);
3104				toggle_class(input, "zephr-payment-form-input", /*isPaymentForm*/ ctx[7]);
3105				toggle_class(input, "zephr-payment-form-input-full-width", /*isPaymentForm*/ ctx[7] && /*fill*/ ctx[18]);
3106				attr(div, "class", "zephr-form-input-inner-container svelte-88cmol");
3107				toggle_class(div, "zephr-payment-form-input-inner-container", /*isPaymentForm*/ ctx[7]);
3108			},
3109			m(target, anchor) {
3110				insert(target, div, anchor);
3111				append(div, input);
3112				/*input_binding*/ ctx[27](input);
3113				append(div, t0);
3114				if (if_block0) if_block0.m(div, null);
3115				insert(target, t1, anchor);
3116
3117				if (default_slot) {
3118					default_slot.m(target, anchor);
3119				}
3120
3121				insert(target, t2, anchor);
3122				if (if_block1) if_block1.m(target, anchor);
3123				insert(target, if_block1_anchor, anchor);
3124				current = true;
3125
3126				if (!mounted) {
3127					dispose = [
3128						listen(input, "focus", function () {
3129							if (is_function(/*onFocus*/ ctx[20])) /*onFocus*/ ctx[20].apply(this, arguments);
3130						}),
3131						listen(input, "blur", function () {
3132							if (is_function(/*onBlur*/ ctx[21])) /*onBlur*/ ctx[21].apply(this, arguments);
3133						}),
3134						listen(input, "input", /*handleInputChange*/ ctx[24]),
3135						listen(input, "paste", /*handleInputChange*/ ctx[24])
3136					];
3137
3138					mounted = true;
3139				}
3140			},
3141			p(new_ctx, [dirty]) {
3142				ctx = new_ctx;
3143
3144				if (!current || dirty & /*id*/ 1) {
3145					attr(input, "id", /*id*/ ctx[0]);
3146				}
3147
3148				if (!current || dirty & /*name*/ 2) {
3149					attr(input, "name", /*name*/ ctx[1]);
3150				}
3151
3152				if (!current || dirty & /*required*/ 8) {
3153					input.required = /*required*/ ctx[3];
3154				}
3155
3156				if (!current || dirty & /*disabled*/ 16) {
3157					input.disabled = /*disabled*/ ctx[4];
3158				}
3159
3160				if (!current || dirty & /*type*/ 4) {
3161					attr(input, "type", /*type*/ ctx[2]);
3162				}
3163
3164				if (!current || dirty & /*value*/ 256 && input_value_value !== (input_value_value = /*value*/ ctx[8] || null) && input.value !== input_value_value) {
3165					input.value = input_value_value;
3166				}
3167
3168				if (!current || dirty & /*autocomplete*/ 524288 && input_autocomplete_value !== (input_autocomplete_value = /*autocomplete*/ ctx[19] || null)) {
3169					attr(input, "autocomplete", input_autocomplete_value);
3170				}
3171
3172				if (!current || dirty & /*checked*/ 1024 && input_checked_value !== (input_checked_value = /*checked*/ ctx[10] || null)) {
3173					input.checked = input_checked_value;
3174				}
3175
3176				if (!current || dirty & /*placeholder*/ 512 && input_placeholder_value !== (input_placeholder_value = /*placeholder*/ ctx[9] || null)) {
3177					attr(input, "placeholder", input_placeholder_value);
3178				}
3179
3180				if (!current || dirty & /*pattern*/ 2048 && input_pattern_value !== (input_pattern_value = /*pattern*/ ctx[11] || null)) {
3181					attr(input, "pattern", input_pattern_value);
3182				}
3183
3184				if (!current || dirty & /*min*/ 4096 && input_min_value !== (input_min_value = /*min*/ ctx[12] || null)) {
3185					attr(input, "min", input_min_value);
3186				}
3187
3188				if (!current || dirty & /*max*/ 8192 && input_max_value !== (input_max_value = /*max*/ ctx[13] || null)) {
3189					attr(input, "max", input_max_value);
3190				}
3191
3192				if (!current || dirty & /*maxlength*/ 32768) {
3193					attr(input, "maxlength", /*maxlength*/ ctx[15]);
3194				}
3195
3196				if (!current || dirty & /*step*/ 16384 && input_step_value !== (input_step_value = /*step*/ ctx[14] || null)) {
3197					attr(input, "step", input_step_value);
3198				}
3199
3200				if (!current || dirty & /*type, isPaymentForm*/ 132 && input_class_value !== (input_class_value = "" + (null_to_empty(`zephr-form-input ${/*type*/ ctx[2] && `zephr-form-input-${/*type*/ ctx[2]}`} ${/*isPaymentForm*/ ctx[7] && /*type*/ ctx[2] && `zephr-payment-form-input-${/*type*/ ctx[2]}`}`) + " svelte-88cmol"))) {
3201					attr(input, "class", input_class_value);
3202				}
3203
3204				if (!current || dirty & /*type, isPaymentForm, disabled*/ 148) {
3205					toggle_class(input, "disabled", /*disabled*/ ctx[4]);
3206				}
3207
3208				if (!current || dirty & /*type, isPaymentForm, hasError, errorMessage*/ 228) {
3209					toggle_class(input, "error", /*hasError*/ ctx[5] || /*errorMessage*/ ctx[6]);
3210				}
3211
3212				if (!current || dirty & /*type, isPaymentForm, fill*/ 262276) {
3213					toggle_class(input, "zephr-form-input-full-width", /*fill*/ ctx[18]);
3214				}
3215
3216				if (!current || dirty & /*type, isPaymentForm, isPaymentForm*/ 132) {
3217					toggle_class(input, "zephr-payment-form-input", /*isPaymentForm*/ ctx[7]);
3218				}
3219
3220				if (!current || dirty & /*type, isPaymentForm, isPaymentForm, fill*/ 262276) {
3221					toggle_class(input, "zephr-payment-form-input-full-width", /*isPaymentForm*/ ctx[7] && /*fill*/ ctx[18]);
3222				}
3223
3224				if (/*innerText*/ ctx[16]) {
3225					if (if_block0) {
3226						if_block0.p(ctx, dirty);
3227					} else {
3228						if_block0 = create_if_block_1$w(ctx);
3229						if_block0.c();
3230						if_block0.m(div, null);
3231					}
3232				} else if (if_block0) {
3233					if_block0.d(1);
3234					if_block0 = null;
3235				}
3236
3237				if (!current || dirty & /*isPaymentForm*/ 128) {
3238					toggle_class(div, "zephr-payment-form-input-inner-container", /*isPaymentForm*/ ctx[7]);
3239				}
3240
3241				if (default_slot) {
3242					if (default_slot.p && (!current || dirty & /*$$scope*/ 33554432)) {
3243						update_slot_base(
3244							default_slot,
3245							default_slot_template,
3246							ctx,
3247							/*$$scope*/ ctx[25],
3248							!current
3249							? get_all_dirty_from_scope(/*$$scope*/ ctx[25])
3250							: get_slot_changes(default_slot_template, /*$$scope*/ ctx[25], dirty, null),
3251							null
3252						);
3253					}
3254				}
3255
3256				if (/*errorMessage*/ ctx[6]) {
3257					if (if_block1) {
3258						if_block1.p(ctx, dirty);
3259
3260						if (dirty & /*errorMessage*/ 64) {
3261							transition_in(if_block1, 1);
3262						}
3263					} else {
3264						if_block1 = create_if_block$J(ctx);
3265						if_block1.c();
3266						transition_in(if_block1, 1);
3267						if_block1.m(if_block1_anchor.parentNode, if_block1_anchor);
3268					}
3269				} else if (if_block1) {
3270					group_outros();
3271
3272					transition_out(if_block1, 1, 1, () => {
3273						if_block1 = null;
3274					});
3275
3276					check_outros();
3277				}
3278			},
3279			i(local) {
3280				if (current) return;
3281				transition_in(default_slot, local);
3282				transition_in(if_block1);
3283				current = true;
3284			},
3285			o(local) {
3286				transition_out(default_slot, local);
3287				transition_out(if_block1);
3288				current = false;
3289			},
3290			d(detaching) {
3291				if (detaching) {
3292					detach(div);
3293					detach(t1);
3294					detach(t2);
3295					detach(if_block1_anchor);
3296				}
3297
3298				/*input_binding*/ ctx[27](null);
3299				if (if_block0) if_block0.d();
3300				if (default_slot) default_slot.d(detaching);
3301				if (if_block1) if_block1.d(detaching);
3302				mounted = false;
3303				run_all(dispose);
3304			}
3305		};
3306	}
3307
3308	function instance$15($$self, $$props, $$invalidate) {
3309		let { $$slots: slots = {}, $$scope } = $$props;
3310		const dispatch = createEventDispatcher();
3311		let { id } = $$props;
3312		let { name = id } = $$props;
3313		let { type = "text" } = $$props;
3314		let { required = true } = $$props;
3315		let { disabled = false } = $$props;
3316		let { hasError = false } = $$props;
3317		let { errorMessage = null } = $$props;
3318		let { isPaymentForm = false } = $$props;
3319		let { value = "" } = $$props;
3320		let { placeholder = "" } = $$props;
3321		let { checked = false } = $$props;
3322		let { pattern = "" } = $$props;
3323		let { min = 0 } = $$props;
3324		let { max = 0 } = $$props;
3325		let { step = 0 } = $$props;
3326		let { maxlength = null } = $$props;
3327		let { innerText = null } = $$props;
3328		let { innerTextOnClick = null } = $$props;
3329		let { fill = false } = $$props;
3330		let { autocomplete = "" } = $$props;
3331		let { onFocus } = $$props;
3332		let { onBlur } = $$props;
3333		let inputElement;
3334		let buttonElement;
3335
3336		const handleInputChange = e => {
3337			dispatch("change", type !== "checkbox" ? e.target.value : e.target.checked);
3338		};
3339
3340		afterUpdate(() => {
3341			if (innerText && buttonElement && inputElement) {
3342				$$invalidate(22, inputElement.style.paddingRight = `${buttonElement.offsetWidth + 8}px`, inputElement);
3343			}
3344		});
3345
3346		function input_binding($$value) {
3347			binding_callbacks[$$value ? 'unshift' : 'push'](() => {
3348				inputElement = $$value;
3349				$$invalidate(22, inputElement);
3350			});
3351		}
3352
3353		function button_binding($$value) {
3354			binding_callbacks[$$value ? 'unshift' : 'push'](() => {
3355				buttonElement = $$value;
3356				$$invalidate(23, buttonElement);
3357			});
3358		}
3359
3360		$$self.$$set = $$props => {
3361			if ('id' in $$props) $$invalidate(0, id = $$props.id);
3362			if ('name' in $$props) $$invalidate(1, name = $$props.name);
3363			if ('type' in $$props) $$invalidate(2, type = $$props.type);
3364			if ('required' in $$props) $$invalidate(3, required = $$props.required);
3365			if ('disabled' in $$props) $$invalidate(4, disabled = $$props.disabled);
3366			if ('hasError' in $$props) $$invalidate(5, hasError = $$props.hasError);
3367			if ('errorMessage' in $$props) $$invalidate(6, errorMessage = $$props.errorMessage);
3368			if ('isPaymentForm' in $$props) $$invalidate(7, isPaymentForm = $$props.isPaymentForm);
3369			if ('value' in $$props) $$invalidate(8, value = $$props.value);
3370			if ('placeholder' in $$props) $$invalidate(9, placeholder = $$props.placeholder);
3371			if ('checked' in $$props) $$invalidate(10, checked = $$props.checked);
3372			if ('pattern' in $$props) $$invalidate(11, pattern = $$props.pattern);
3373			if ('min' in $$props) $$invalidate(12, min = $$props.min);
3374			if ('max' in $$props) $$invalidate(13, max = $$props.max);
3375			if ('step' in $$props) $$invali
3375date(14, step = $$props.step);
3376			if ('maxlength' in $$props) $$invalidate(15, maxlength = $$props.maxlength);
3377			if ('innerText' in $$props) $$invalidate(16, innerText = $$props.innerText);
3378			if ('innerTextOnClick' in $$props) $$invalidate(17, innerTextOnClick = $$props.innerTextOnClick);
3379			if ('fill' in $$props) $$invalidate(18, fill = $$props.fill);
3380			if ('autocomplete' in $$props) $$invalidate(19, autocomplete = $$props.autocomplete);
3381			if ('onFocus' in $$props) $$invalidate(20, onFocus = $$props.onFocus);
3382			if ('onBlur' in $$props) $$invalidate(21, onBlur = $$props.onBlur);
3383			if ('$$scope' in $$props) $$invalidate(25, $$scope = $$props.$$scope);
3384		};
3385
3386		return [
3387			id,
3388			name,
3389			type,
3390			required,
3391			disabled,
3392			hasError,
3393			errorMessage,
3394			isPaymentForm,
3395			value,
3396			placeholder,
3397			checked,
3398			pattern,
3399			min,
3400			max,
3401			step,
3402			maxlength,
3403			innerText,
3404			innerTextOnClick,
3405			fill,
3406			autocomplete,
3407			onFocus,
3408			onBlur,
3409			inputElement,
3410			buttonElement,
3411			handleInputChange,
3412			$$scope,
3413			slots,
3414			input_binding,
3415			button_binding
3416		];
3417	}
3418
3419	class Input extends SvelteComponent {
3420		constructor(options) {
3421			super();
3422
3423			init(this, options, instance$15, create_fragment$17, safe_not_equal, {
3424				id: 0,
3425				name: 1,
3426				type: 2,
3427				required: 3,
3428				disabled: 4,
3429				hasError: 5,
3430				errorMessage: 6,
3431				isPaymentForm: 7,
3432				value: 8,
3433				placeholder: 9,
3434				checked: 10,
3435				pattern: 11,
3436				min: 12,
3437				max: 13,
3438				step: 14,
3439				maxlength: 15,
3440				innerText: 16,
3441				innerTextOnClick: 17,
3442				fill: 18,
3443				autocomplete: 19,
3444				onFocus: 20,
3445				onBlur: 21
3446			});
3447		}
3448	}
3449
3450	/* src/components/elements/Label.svelte generated by Svelte v4.2.12 */
3451
3452	function create_if_block$I(ctx) {
3453		let span;
3454		let t;
3455
3456		return {
3457			c() {
3458				span = element("span");
3459				t = text(/*sublabel*/ ctx[1]);
3460				attr(span, "class", "svelte-yaw4yg");
3461			},
3462			m(target, anchor) {
3463				insert(target, span, anchor);
3464				append(span, t);
3465			},
3466			p(ctx, dirty) {
3467				if (dirty & /*sublabel*/ 2) set_data(t, /*sublabel*/ ctx[1]);
3468			},
3469			d(detaching) {
3470				if (detaching) {
3471					detach(span);
3472				}
3473			}
3474		};
3475	}
3476
3477	function create_fragment$16(ctx) {
3478		let label_1;
3479		let span;
3480		let t0;
3481		let t1;
3482		let t2;
3483		let current;
3484		let if_block = /*sublabel*/ ctx[1] && create_if_block$I(ctx);
3485		const default_slot_template = /*#slots*/ ctx[6].default;
3486		const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[5], null);
3487
3488		return {
3489			c() {
3490				label_1 = element("label");
3491				span = element("span");
3492				t0 = text(/*label*/ ctx[2]);
3493				t1 = space();
3494				if (if_block) if_block.c();
3495				t2 = space();
3496				if (default_slot) default_slot.c();
3497				attr(span, "class", "svelte-yaw4yg");
3498				attr(label_1, "class", "zephr-form-input-label svelte-yaw4yg");
3499				attr(label_1, "for", /*forInput*/ ctx[0]);
3500				attr(label_1, "style", /*style*/ ctx[3]);
3501				toggle_class(label_1, "zephr-payment-form-input-label", /*isPaymentForm*/ ctx[4]);
3502			},
3503			m(target, anchor) {
3504				insert(target, label_1, anchor);
3505				append(label_1, span);
3506				append(span, t0);
3507				append(label_1, t1);
3508				if (if_block) if_block.m(label_1, null);
3509				append(label_1, t2);
3510
3511				if (default_slot) {
3512					default_slot.m(label_1, null);
3513				}
3514
3515				current = true;
3516			},
3517			p(ctx, [dirty]) {
3518				if (!current || dirty & /*label*/ 4) set_data(t0, /*label*/ ctx[2]);
3519
3520				if (/*sublabel*/ ctx[1]) {
3521					if (if_block) {
3522						if_block.p(ctx, dirty);
3523					} else {
3524						if_block = create_if_block$I(ctx);
3525						if_block.c();
3526						if_block.m(label_1, t2);
3527					}
3528				} else if (if_block) {
3529					if_block.d(1);
3530					if_block = null;
3531				}
3532
3533				if (default_slot) {
3534					if (default_slot.p && (!current || dirty & /*$$scope*/ 32)) {
3535						update_slot_base(
3536							default_slot,
3537							default_slot_template,
3538							ctx,
3539							/*$$scope*/ ctx[5],
3540							!current
3541							? get_all_dirty_from_scope(/*$$scope*/ ctx[5])
3542							: get_slot_changes(default_slot_template, /*$$scope*/ ctx[5], dirty, null),
3543							null
3544						);
3545					}
3546				}
3547
3548				if (!current || dirty & /*forInput*/ 1) {
3549					attr(label_1, "for", /*forInput*/ ctx[0]);
3550				}
3551
3552				if (!current || dirty & /*style*/ 8) {
3553					attr(label_1, "style", /*style*/ ctx[3]);
3554				}
3555
3556				if (!current || dirty & /*isPaymentForm*/ 16) {
3557					toggle_class(label_1, "zephr-payment-form-input-label", /*isPaymentForm*/ ctx[4]);
3558				}
3559			},
3560			i(local) {
3561				if (current) return;
3562				transition_in(default_slot, local);
3563				current = true;
3564			},
3565			o(local) {
3566				transition_out(default_slot, local);
3567				current = false;
3568			},
3569			d(detaching) {
3570				if (detaching) {
3571					detach(label_1);
3572				}
3573
3574				if (if_block) if_block.d();
3575				if (default_slot) default_slot.d(detaching);
3576			}
3577		};
3578	}
3579
3580	function instance$14($$self, $$props, $$invalidate) {
3581		let { $$slots: slots = {}, $$scope } = $$props;
3582		let { forInput } = $$props;
3583		let { sublabel = "" } = $$props;
3584		let { label = "" } = $$props;
3585		let { style = "" } = $$props;
3586		let { isPaymentForm = false } = $$props;
3587
3588		$$self.$$set = $$props => {
3589			if ('forInput' in $$props) $$invalidate(0, forInput = $$props.forInput);
3590			if ('sublabel' in $$props) $$invalidate(1, sublabel = $$props.sublabel);
3591			if ('label' in $$props) $$invalidate(2, label = $$props.label);
3592			if ('style' in $$props) $$invalidate(3, style = $$props.style);
3593			if ('isPaymentForm' in $$props) $$invalidate(4, isPaymentForm = $$props.isPaymentForm);
3594			if ('$$scope' in $$props) $$invalidate(5, $$scope = $$props.$$scope);
3595		};
3596
3597		return [forInput, sublabel, label, style, isPaymentForm, $$scope, slots];
3598	}
3599
3600	class Label extends SvelteComponent {
3601		constructor(options) {
3602			super();
3603
3604			init(this, options, instance$14, create_fragment$16, safe_not_equal, {
3605				forInput: 0,
3606				sublabel: 1,
3607				label: 2,
3608				style: 3,
3609				isPaymentForm: 4
3610			});
3611		}
3612	}
3613
3614	/* src/components/elements/password/PasswordInput.svelte generated by Svelte v4.2.12 */
3615
3616	function create_fragment$15(ctx) {
3617		let label_1;
3618		let t;
3619		let div;
3620		let input;
3621		let current;
3622
3623		label_1 = new Label({
3624				props: {
3625					forInput: /*inputId*/ ctx[13],
3626					label: /*label*/ ctx[1],
3627					isPaymentForm: /*isPaymentForm*/ ctx[8]
3628				}
3629			});
3630
3631		input = new Input({
3632				props: {
3633					disabled: /*disabled*/ ctx[0],
3634					required: true,
3635					id: /*inputId*/ ctx[13],
3636					type: /*passwordInputType*/ ctx[14],
3637					value: /*password*/ ctx[11],
3638					placeholder: /*placeholder*/ ctx[2],
3639					errorMessage: /*error*/ ctx[5],
3640					autocomplete: /*autocomplete*/ ctx[7],
3641					isPaymentForm: /*isPaymentForm*/ ctx[8],
3642					innerTextOnClick: /*func*/ ctx[16],
3643					innerText: /*showPassword*/ ctx[12]
3644					? /*hideLabel*/ ctx[4]
3645					: /*showLabel*/ ctx[3],
3646					onFocus: /*onFocus*/ ctx[9],
3647					onBlur: /*onBlur*/ ctx[10]
3648				}
3649			});
3650
3651		input.$on("change", /*change_handler*/ ctx[17]);
3652
3653		return {
3654			c() {
3655				create_component(label_1.$$.fragment);
3656				t = space();
3657				div = element("div");
3658				create_component(input.$$.fragment);
3659				attr(div, "class", "zephr-form-relative-container");
3660				toggle_class(div, "zephr-payment-form-relative-container", /*isPaymentForm*/ ctx[8]);
3661			},
3662			m(target, anchor) {
3663				mount_component(label_1, target, anchor);
3664				insert(target, t, anchor);
3665				insert(target, div, anchor);
3666				mount_component(input, div, null);
3667				current = true;
3668			},
3669			p(ctx, [dirty]) {
3670				const label_1_changes = {};
3671				if (dirty & /*inputId*/ 8192) label_1_changes.forInput = /*inputId*/ ctx[13];
3672				if (dirty & /*label*/ 2) label_1_changes.label = /*label*/ ctx[1];
3673				if (dirty & /*isPaymentForm*/ 256) label_1_changes.isPaymentForm = /*isPaymentForm*/ ctx[8];
3674				label_1.$set(label_1_changes);
3675				const input_changes = {};
3676				if (dirty & /*disabled*/ 1) input_changes.disabled = /*disabled*/ ctx[0];
3677				if (dirty & /*inputId*/ 8192) input_changes.id = /*inputId*/ ctx[13];
3678				if (dirty & /*passwordInputType*/ 16384) input_changes.type = /*passwordInputType*/ ctx[14];
3679				if (dirty & /*password*/ 2048) input_changes.value = /*password*/ ctx[11];
3680				if (dirty & /*placeholder*/ 4) input_changes.placeholder = /*placeholder*/ ctx[2];
3681				if (dirty & /*error*/ 32) input_changes.errorMessage = /*error*/ ctx[5];
3682				if (dirty & /*autocomplete*/ 128) input_changes.autocomplete = /*autocomplete*/ ctx[7];
3683				if (dirty & /*isPaymentForm*/ 256) input_changes.isPaymentForm = /*isPaymentForm*/ ctx[8];
3684				if (dirty & /*showPassword*/ 4096) input_changes.innerTextOnClick = /*func*/ ctx[16];
3685
3686				if (dirty & /*showPassword, hideLabel, showLabel*/ 4120) input_changes.innerText = /*showPassword*/ ctx[12]
3687				? /*hideLabel*/ ctx[4]
3688				: /*showLabel*/ ctx[3];
3689
3690				if (dirty & /*onFocus*/ 512) input_changes.onFocus = /*onFocus*/ ctx[9];
3691				if (dirty & /*onBlur*/ 1024) input_changes.onBlur = /*onBlur*/ ctx[10];
3692				input.$set(input_changes);
3693
3694				if (!current || dirty & /*isPaymentForm*/ 256) {
3695					toggle_class(div, "zephr-payment-form-relative-container", /*isPaymentForm*/ ctx[8]);
3696				}
3697			},
3698			i(local) {
3699				if (current) return;
3700				transition_in(label_1.$$.fragment, local);
3701				transition_in(input.$$.fragment, local);
3702				current = true;
3703			},
3704			o(local) {
3705				transition_out(label_1.$$.fragment, local);
3706				transition_out(input.$$.fragment, local);
3707				current = false;
3708			},
3709			d(detaching) {
3710				if (detaching) {
3711					detach(t);
3712					detach(div);
3713				}
3714
3715				destroy_component(label_1, detaching);
3716				destroy_component(input);
3717			}
3718		};
3719	}
3720
3721	function instance$13($$self, $$props, $$invalidate) {
3722		let passwordInputType;
3723		let inputId;
3724		let { disabled } = $$props;
3725		let { label } = $$props;
3726		let { placeholder } = $$props;
3727		let { isMainPassword } = $$props;
3728		let { showLabel } = $$props;
3729		let { hideLabel } = $$props;
3730		let { error = null } = $$props;
3731		let { onChange } = $$props;
3732		let { autocomplete } = $$props;
3733		let { isPaymentForm = false } = $$props;
3734		let { onFocus } = $$props;
3735		let { onBlur } = $$props;
3736		let { password } = $$props;
3737		let showPassword = false;
3738		const func = () =>
3738 $$invalidate(12, showPassword = !showPassword);
3739		const change_handler = ({ detail }) => onChange(detail);
3740
3741		$$self.$$set = $$props => {
3742			if ('disabled' in $$props) $$invalidate(0, disabled = $$props.disabled);
3743			if ('label' in $$props) $$invalidate(1, label = $$props.label);
3744			if ('placeholder' in $$props) $$invalidate(2, placeholder = $$props.placeholder);
3745			if ('isMainPassword' in $$props) $$invalidate(15, isMainPassword = $$props.isMainPassword);
3746			if ('showLabel' in $$props) $$invalidate(3, showLabel = $$props.showLabel);
3747			if ('hideLabel' in $$props) $$invalidate(4, hideLabel = $$props.hideLabel);
3748			if ('error' in $$props) $$invalidate(5, error = $$props.error);
3749			if ('onChange' in $$props) $$invalidate(6, onChange = $$props.onChange);
3750			if ('autocomplete' in $$props) $$invalidate(7, autocomplete = $$props.autocomplete);
3751			if ('isPaymentForm' in $$props) $$invalidate(8, isPaymentForm = $$props.isPaymentForm);
3752			if ('onFocus' in $$props) $$invalidate(9, onFocus = $$props.onFocus);
3753			if ('onBlur' in $$props) $$invali
3753date(10, onBlur = $$props.onBlur);
3754			if ('password' in $$props) $$invalidate(11, password = $$props.password);
3755		};
3756
3757		$$self.$$.update = () => {
3758			if ($$self.$$.dirty & /*showPassword*/ 4096) {
3759				$$invalidate(14, passwordInputType = showPassword ? "text" : "password");
3760			}
3761
3762			if ($$self.$$.dirty & /*isMainPassword*/ 32768) {
3763				$$invalidate(13, inputId = `zephr-form-${isMainPassword ? 'password' : 'confirm-password'}`);
3764			}
3765		};
3766
3767		return [
3768			disabled,
3769			label,
3770			placeholder,
3771			showLabel,
3772			hideLabel,
3773			error,
3774			onChange,
3775			autocomplete,
3776			isPaymentForm,
3777			onFocus,
3778			onBlur,
3779			password,
3780			showPassword,
3781			inputId,
3782			passwordInputType,
3783			isMainPassword,
3784			func,
3785			change_handler
3786		];
3787	}
3788
3789	class PasswordInput extends SvelteComponent {
3790		constructor(options) {
3791			super();
3792
3793			init(this, options, instance$13, create_fragment$15, safe_not_equal, {
3794				disabled: 0,
3795				label: 1,
3796				placeholder: 2,
3797				isMainPassword: 15,
3798				showLabel: 3,
3799				hideLabel: 4,
3800				error: 5,
3801				onChange: 6,
3802				autocomplete: 7,
3803				isPaymentForm: 8,
3804				onFocus: 9,
3805				onBlur: 10,
3806				password: 11
3807			});
3808		}
3809	}
3810
3811	function setCustomFontSize(element, size) {
3812	    if (size && size !== "lg" && size !== "sm" && size !== "xs") {
3813	        element.style.fontSize = size.replace("x", "em");
3814	    }
3815	    else {
3816	        element.style.fontSize = "";
3817	    }
3818	}
3819	function getTransform(scale, translateX, translateY, rotate, flip, translateTimes = 1, translateUnit = "", rotateUnit = "") {
3820	    let flipX = 1;
3821	    let flipY = 1;
3822	    if (flip) {
3823	        if (flip == "horizontal") {
3824	            flipX = -1;
3825	        }
3826	        else if (flip == "vertical") {
3827	            flipY = -1;
3828	        }
3829	        else {
3830	            flipX = flipY = -1;
3831	        }
3832	    }
3833	    if (typeof scale === "string") {
3834	        scale = parseFloat(scale);
3835	    }
3836	    if (typeof translateX === "string") {
3837	        translateX = parseFloat(translateX);
3838	    }
3839	    if (typeof translateY === "string") {
3840	        translateY = parseFloat(translateY);
3841	    }
3842	    const x = `${translateX * translateTimes}${translateUnit}`;
3843	    const y = `${translateY * translateTimes}${translateUnit}`;
3844	    let output = `translate(${x},${y}) scale(${flipX * scale},${flipY * scale})`;
3845	    if (rotate) {
3846	        output += ` rotate(${rotate}${rotateUnit})`;
3847	    }
3848	    return output;
3849	}
3850
3851	/* node_modules/svelte-fa/dist/fa.svelte generated by Svelte v4.2.12 */
3852
3853	function create_if_block$H(ctx) {
3854		let svg;
3855		let g1;
3856		let g0;
3857		let g1_transform_value;
3858		let g1_transform_origin_value;
3859		let svg_class_value;
3860		let svg_viewBox_value;
3861
3862		function select_block_type(ctx, dirty) {
3863			if (typeof /*i*/ ctx[16][4] == "string") return create_if_block_1$v;
3864			return create_else_block$a;
3865		}
3866
3867		let current_block_type = select_block_type(ctx);
3868		let if_block = current_block_type(ctx);
3869
3870		return {
3871			c() {
3872				svg = svg_element("svg");
3873				g1 = svg_element("g");
3874				g0 = svg_element("g");
3875				if_block.c();
3876				attr(g0, "transform", /*transform*/ ctx[15]);
3877				attr(g1, "transform", g1_transform_value = "translate(" + /*i*/ ctx[16][0] / 2 + " " + /*i*/ ctx[16][1] / 2 + ")");
3878				attr(g1, "transform-origin", g1_transform_origin_value = "" + (/*i*/ ctx[16][0] / 4 + " 0"));
3879				attr(svg, "id", /*id*/ ctx[1]);
3880				attr(svg, "class", svg_class_value = "svelte-fa svelte-fa-base " + /*clazz*/ ctx[0] + " svelte-f5ydbn");
3881				attr(svg, "style", /*style*/ ctx[2]);
3882				attr(svg, "viewBox", svg_viewBox_value = "0 0 " + /*i*/ ctx[16][0] + " " + /*i*/ ctx[16][1]);
3883				attr(svg, "aria-hidden", "true");
3884				attr(svg, "role", "img");
3885				attr(svg, "xmlns", "http://www.w3.org/2000/svg");
3886				toggle_class(svg, "pulse", /*pulse*/ ctx[8]);
3887				toggle_class(svg, "svelte-fa-size-lg", /*size*/ ctx[3] === "lg");
3888				toggle_class(svg, "svelte-fa-size-sm", /*size*/ ctx[3] === "sm");
3889				toggle_class(svg, "svelte-fa-size-xs", /*size*/ ctx[3] === "xs");
3890				toggle_class(svg, "svelte-fa-fw", /*fw*/ ctx[5]);
3891				toggle_class(svg, "svelte-fa-pull-left", /*pull*/ ctx[6] === "left");
3892				toggle_class(svg, "svelte-fa-pull-right", /*pull*/ ctx[6] === "right");
3893				toggle_class(svg, "spin", /*spin*/ ctx[7]);
3894			},
3895			m(target, anchor) {
3896				insert(target, svg, anchor);
3897				append(svg, g1);
3898				append(g1, g0);
3899				if_block.m(g0, null);
3900				/*svg_binding*/ ctx[23](svg);
3901			},
3902			p(ctx, dirty) {
3903				if (current_block_type === (current_block_type = select_block_type(ctx)) && if_block) {
3904					if_block.p(ctx, dirty);
3905				} else {
3906					if_block.d(1);
3907					if_block = current_block_type(ctx);
3908
3909					if (if_block) {
3910						if_block.c();
3911						if_block.m(g0, null);
3912					}
3913				}
3914
3915				if (dirty & /*transform*/ 32768) {
3916					attr(g0, "transform", /*transform*/ ctx[15]);
3917				}
3918
3919				if (dirty & /*i*/ 65536 && g1_transform_value !== (g1_transform_value = "translate(" + /*i*/ ctx[16][0] / 2 + " " + /*i*/ ctx[16][1] / 2 + ")")) {
3920					attr(g1, "transform", g1_transform_value);
3921				}
3922
3923				if (dirty & /*i*/ 65536 && g1_transform_origin_value !== (g1_transform_origin_value = "" + (/*i*/ ctx[16][0] / 4 + " 0"))) {
3924					attr(g1, "transform-origin", g1_transform_origin_value);
3925				}
3926
3927				if (dirty & /*id*/ 2) {
3928					attr(svg, "id", /*id*/ ctx[1]);
3929				}
3930
3931				if (dirty & /*clazz*/ 1 && svg_class_value !== (svg_class_value = "svelte-fa svelte-fa-base " + /*clazz*/ ctx[0] + " svelte-f5ydbn")) {
3932					attr(svg, "class", svg_class_value);
3933				}
3934
3935				if (dirty & /*style*/ 4) {
3936					attr(svg, "style", /*style*/ ctx[2]);
3937				}
3938
3939				if (dirty & /*i*/ 65536 && svg_viewBox_value !== (svg_viewBox_value = "0 0 " + /*i*/ ctx[16][0] + " " + /*i*/ ctx[16][1])) {
3940					attr(svg, "viewBox", svg_viewBox_value);
3941				}
3942
3943				if (dirty & /*clazz, pulse*/ 257) {
3944					toggle_class(svg, "pulse", /*pulse*/ ctx[8]);
3945				}
3946
3947				if (dirty & /*clazz, size*/ 9) {
3948					toggle_class(svg, "svelte-fa-size-lg", /*size*/ ctx[3] === "lg");
3949				}
3950
3951				if (dirty & /*clazz, size*/ 9) {
3952					toggle_class(svg, "svelte-fa-size-sm", /*size*/ ctx[3] === "sm");
3953				}
3954
3955				if (dirty & /*clazz, size*/ 9) {
3956					toggle_class(svg, "svelte-fa-size-xs", /*size*/ ctx[3] === "xs");
3957				}
3958
3959				if (dirty & /*clazz, fw*/ 33) {
3960					toggle_class(svg, "svelte-fa-fw", /*fw*/ ctx[5]);
3961				}
3962
3963				if (dirty & /*clazz, pull*/ 65) {
3964					toggle_class(svg, "svelte-fa-pull-left", /*pull*/ ctx[6] === "left");
3965				}
3966
3967				if (dirty & /*clazz, pull*/ 65) {
3968					toggle_class(svg, "svelte-fa-pull-right", /*pull*/ ctx[6] === "right");
3969				}
3970
3971				if (dirty & /*clazz, spin*/ 129) {
3972					toggle_class(svg, "spin", /*spin*/ ctx[7]);
3973				}
3974			},
3975			d(detaching) {
3976				if (detaching) {
3977					detach(svg);
3978				}
3979
3980				if_block.d();
3981				/*svg_binding*/ ctx[23](null);
3982			}
3983		};
3984	}
3985
3986	// (61:8) {:else}
3987	function create_else_block$a(ctx) {
3988		let path0;
3989		let path0_d_value;
3990		let path0_fill_value;
3991		let path0_fill_opacity_value;
3992		let path0_transform_value;
3993		let path1;
3994		let path1_d_value;
3995		let path1_fill_value;
3996		let path1_fill_opacity_value;
3997		let path1_transform_value;
3998
3999		return {
4000			c() {
4001				path0 = svg_element("path");
4002				path1 = svg_element("path");
4003				attr(path0, "d", path0_d_value = /*i*/ ctx[16][4][0]);
4004				attr(path0, "fill", path0_fill_value = /*secondaryColor*/ ctx[10] || /*color*/ ctx[4] || "currentColor");
4005
4006				attr(path0, "fill-opacity", path0_fill_opacity_value = /*swapOpacity*/ ctx[13] != false
4007				? /*primaryOpacity*/ ctx[11]
4008				: /*secondaryOpacity*/ ctx[12]);
4009
4010				attr(path0, "transform", path0_transform_value = "translate(" + /*i*/ ctx[16][0] / -2 + " " + /*i*/ ctx[16][1] / -2 + ")");
4011				attr(path1, "d", path1_d_value = /*i*/ ctx[16][4][1]);
4012				attr(path1, "fill", path1_fill_value = /*primaryColor*/ ctx[9] || /*color*/ ctx[4] || "currentColor");
4013
4014				attr(path1, "fill-opacity", path1_fill_opacity_value = /*swapOpacity*/ ctx[13] != false
4015				? /*secondaryOpacity*/ ctx[12]
4016				: /*primaryOpacity*/ ctx[11]);
4017
4018				attr(path1, "transform", path1_transform_value = "translate(" + /*i*/ ctx[16][0] / -2 + " " + /*i*/ ctx[16][1] / -2 + ")");
4019			},
4020			m(target, anchor) {
4021				insert(target, path0, anchor);
4022				insert(target, path1, anchor);
4023			},
4024			p(ctx, dirty) {
4025				if (dirty & /*i*/ 65536 && path0_d_value !== (path0_d_value = /*i*/ ctx[16][4][0])) {
4026					attr(path0, "d", path0_d_value);
4027				}
4028
4029				if (dirty & /*secondaryColor, color*/ 1040 && path0_fill_value !== (path0_fill_value = /*secondaryColor*/ ctx[10] || /*color*/ ctx[4] || "currentColor")) {
4030					attr(path0, "fill", path0_fill_value);
4031				}
4032
4033				if (dirty & /*swapOpacity, primaryOpacity, secondaryOpacity*/ 14336 && path0_fill_opacity_value !== (path0_fill_opacity_value = /*swapOpacity*/ ctx[13] != false
4034				? /*primaryOpacity*/ ctx[11]
4035				: /*secondaryOpacity*/ ctx[12])) {
4036					attr(path0, "fill-opacity", path0_fill_opacity_value);
4037				}
4038
4039				if (dirty & /*i*/ 65536 && path0_transform_value !== (path0_transform_value = "translate(" + /*i*/ ctx[16][0] / -2 + " " + /*i*/ ctx[16][1] / -2 + ")")) {
4040					attr(path0, "transform", path0_transform_value);
4041				}
4042
4043				if (dirty & /*i*/ 65536 && path1_d_value !== (path1_d_value = /*i*/ ctx[16][4][1])) {
4044					attr(path1, "d", path1_d_value);
4045				}
4046
4047				if (dirty & /*primaryColor, color*/ 528 && path1_fill_value !== (path1_fill_value = /*primaryColor*/ ctx[9] || /*color*/ ctx[4] || "currentColor")) {
4048					attr(path1, "fill", path1_fill_value);
4049				}
4050
4051				if (dirty & /*swapOpacity, secondaryOpacity, primaryOpacity*/ 14336 && path1_fill_opacity_value !== (path1_fill_opacity_value = /*swapOpacity*/ ctx[13] != false
4052				? /*secondaryOpacity*/ ctx[12]
4053				: /*primaryOpacity*/ ctx[11])) {
4054					attr(path1, "fill-opacity", path1_fill_opacity_value);
4055				}
4056
4057				if (dirty & /*i*/ 65536 && path1_transform_value !== (path1_transform_value = "translate(" + /*i*/ ctx[16][0] / -2 + " " + /*i*/ ctx[16][1] / -2 + ")")) {
4058					attr(path1, "transform", path1_transform_value);
4059				}
4060			},
4061			d(detaching) {
4062				if (detaching) {
4063					detach(path0);
4064					detach(path1);
4065				}
4066			}
4067		};
4068	}
4069
4070	// (55:8) {#if typeof i[4] == "string"}
4071	function create_if_block_1$v(ctx) {
4072		let path;
4073		let path_d_value;
4074		let path_fill_value;
4075		let path_transform_value;
4076
4077		return {
4078			c() {
4079				path = svg_element("path");
4080				attr(path, "d", path_d_value = /*i*/ ctx[16][4]);
4081				attr(path, "fill", path_fill_value = /*color*/ ctx[4] || /*primaryColor*/ ctx[9] || "currentColor");
4082				attr(path, "transform", path_transform_value = "translate(" + /*i*/ ctx[16][0] / -2 + " " + /*i*/ ctx[16][1] / -2 + ")");
4083			},
4084			m(target, anchor) {
4085				insert(target, path, anchor);
4086			},
4087			p(ctx, dirty) {
4088				if (dirty & /*i*/ 65536 && path_d_value !== (path_d_value = /*i*/ ctx[16][4])) {
4089					attr(path, "d", path_d_value);
4090				}
4091
4092				if (dirty & /*color, primaryColor*/ 528 && path_fill_value !== (path_fill_value = /*color*/ ctx[4] || /*primaryColor*/ ctx[9] || "currentColor")) {
4093					attr(path, "fill", path_fill_value);
4094				}
4095
4096				if (dirty & /*i*/ 65536 && path_transform_value !== (path_transform_value = "translate(" + /*i*/ ctx[16][0] / -2 + " " + /*i*/ ctx[16][1] / -2 + ")")) {
4097					attr(path, "transform", path_transform_value);
4098				}
4099			},
4100			d(detaching) {
4101				if (detaching) {
4102					detach(path);
4103				}
4104			}
4105		};
4106	}
4107
4108	function create_fragment$14(ctx) {
4109		let if_block_anchor;
4110		let if_block = /*i*/ ctx[16][4] && create_if_block$H(ctx);
4111
4112		return {
4113			c() {
4114				if (if_block) if_block.c();
4115				if_block_anchor = empty();
4116			},
4117			m(target, anchor) {
4118				if (if_block) if_block.m(target, anchor);
4119				insert(target, if_block_anchor, anchor);
4120			},
4121			p(ctx, [dirty]) {
4122				if (/*i*/ ctx[16][4]) {
4123					if (if_block) {
4124						if_block.p(ctx, dirty);
4125					} else {
4126						if_block = create_if_block$H(ctx);
4127						if_block.c();
4128						if_block.m(if_block_anchor.parentNode, if_block_anchor);
4129					}
4130				} else if (if_block) {
4131					if_block.d(1);
4132					if_block = null;
4133				}
4134			},
4135			i: noop,
4136			o: noop,
4137			d(detaching) {
4138				if (detaching) {
4139					detach(if_block_anchor);
4140				}
4141
4142				if (if_block) if_block.d(detaching);
4143			}
4144		};
4145	}
4146
4147	function instance$12($$self, $$props, $$invalidate) {
4148		let i;
4149		let transform;
4150		let { class: clazz = void 0 } = $$props;
4151		let { id = void 0 } = $$props;
4152		let { style = void 0 } = $$props;
4153		let { icon } = $$props;
4154		let { size = void 0 } = $$props;
4155		let { color = void 0 } = $$props;
4156		let { fw = false } = $$props;
4157		let { pull = void 0 } = $$props;
4158		let { scale = 1 } = $$props;
4159		let { translateX = 0 } = $$props;
4160		let { translateY = 0 } = $$props;
4161		let { rotate = void 0 } = $$props;
4162		let { flip = void 0 } = $$props;
4163		let { spin = false } = $$props;
4164		let { pulse = false } = $$props;
4165		let { primaryColor = "" } = $$props;
4166		let { secondaryColor = "" } = $$props;
4167		let { primaryOpacity = 1 } = $$props;
4168		let { secondaryOpacity = 0.4 } = $$props;
4169		let { swapOpacity = false } = $$props;
4170		let svgElement;
4171
4172		function svg_binding($$value) {
4173			binding_callbacks[$$value ? 'unshift' : 'push'](() => {
4174				svgElement = $$value;
4175				$$invalidate(14, svgElement);
4176			});
4177		}
4178
4179		$$self.$$set = $$props => {
4180			if ('class' in $$props) $$invalidate(0, clazz = $$props.class);
4181			if ('id' in $$props) $$invalidate(1, id = $$props.id);
4182			if ('style' in $$props) $$invalidate(2, style = $$props.style);
4183			if ('icon' in $$props) $$invalidate(17, icon = $$props.icon);
4184			if ('size' in $$props) $$invalidate(3, size = $$props.size);
4185			if ('color' in $$props) $$invalidate(4, color = $$props.color);
4186			if ('fw' in $$props) $$invalidate(5, fw = $$props.fw);
4187			if ('pull' in $$props) $$invalidate(6, pull = $$props.pull);
4188			if ('scale' in $$props) $$invalidate(18, scale = $$props.scale);
4189			if ('translateX' in $$props) $$invalidate(19, translateX = $$props.translateX);
4190			if ('translateY' in $$props) $$invalidate(20, translateY = $$props.translateY);
4191			if ('rotate' in $$props) $$invalidate(21, rotate = $$props.rotate);
4192			if ('flip' in $$props) $$invalidate(22, flip = $$props.flip);
4193			if ('spin' in $$props) $$invalidate(7, spin = $$props.spin);
4194			if ('pulse' in $$props) $$invali
4194date(8, pulse = $$props.pulse);
4195			if ('primaryColor' in $$props) $$invalidate(9, primaryColor = $$props.primaryColor);
4196			if ('secondaryColor' in $$props) $$invalidate(10, secondaryColor = $$props.secondaryColor);
4197			if ('primaryOpacity' in $$props) $$invalidate(11, primaryOpacity = $$props.primaryOpacity);
4198			if ('secondaryOpacity' in $$props) $$invalidate(12, secondaryOpacity = $$props.secondaryOpacity);
4199			if ('swapOpacity' in $$props) $$invalidate(13, swapOpacity = $$props.swapOpacity);
4200		};
4201
4202		$$self.$$.update = () => {
4203			if ($$self.$$.dirty & /*svgElement, size*/ 16392) {
4204				svgElement && size && setCustomFontSize(svgElement, size);
4205			}
4206
4207			if ($$self.$$.dirty & /*icon*/ 131072) {
4208				$$invalidate(16, i = icon && icon.icon || [0, 0, "", [], ""]);
4209			}
4210
4211			if ($$self.$$.dirty & /*scale, translateX, translateY, rotate, flip*/ 8126464) {
4212				$$invalidate(15, transform = getTransform(scale, translateX, translateY, rotate, flip, 512));
4213			}
4214		};
4215
4216		return [
4217			clazz,
4218			id,
4219			style,
4220			size,
4221			color,
4222			fw,
4223			pull,
4224			spin,
4225			pulse,
4226			primaryColor,
4227			secondaryColor,
4228			primaryOpacity,
4229			secondaryOpacity,
4230			swapOpacity,
4231			svgElement,
4232			transform,
4233			i,
4234			icon,
4235			scale,
4236			translateX,
4237			translateY,
4238			rotate,
4239			flip,
4240			svg_binding
4241		];
4242	}
4243
4244	class Fa extends SvelteComponent {
4245		constructor(options) {
4246			super();
4247
4248			init(this, options, instance$12, create_fragment$14, safe_not_equal, {
4249				class: 0,
4250				id: 1,
4251				style: 2,
4252				icon: 17,
4253				size: 3,
4254				color: 4,
4255				fw: 5,
4256				pull: 6,
4257				scale: 18,
4258				translateX: 19,
4259				translateY: 20,
4260				rotate: 21,
4261				flip: 22,
4262				spin: 7,
4263				pulse: 8,
4264				primaryColor: 9,
4265				secondaryColor: 10,
4266				primaryOpacity: 11,
4267				secondaryOpacity: 12,
4268				swapOpacity: 13
4269			});
4270		}
4271	}
4272
4273	var faCircleCheck = {
4274	  prefix: 'fas',
4275	  iconName: 'circle-check',
4276	  icon: [512, 512, [61533, "check-circle"], "f058", "M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z"]
4277	};
4278	var faCheckCircle = faCircleCheck;
4279	var faSpinner = {
4280	  prefix: 'fas',
4281	  iconName: 'spinner',
4282	  icon: [512, 512, [], "f110", "M304 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm0 416a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM48 304a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm464-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM142.9 437A48 48 0 1 0 75 369.1 48 48 0 1 0 142.9 437zm0-294.2A48 48 0 1 0 75 75a48 48 0 1 0 67.9 67.9zM369.1 437A48 48 0 1 0 437 369.1 48 48 0 1 0 369.1 437z"]
4283	};
4284	var faCheck = {
4285	  prefix: 'fas',
4286	  iconName: 'check',
4287	  icon: [448, 512, [10003, 10004], "f00c", "M438.6 105.4c12.5 12.5 12.5 32.8 0 45.3l-256 256c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 338.7 393.4 105.4c12.5-12.5 32.8-12.5 45.3 0z"]
4288	};
4289	var faCircleXmark = {
4290	  prefix: 'fas',
4291	  iconName: 'circle-xmark',
4292	  icon: [512, 512, [61532, "times-circle", "xmark-circle"], "f057", "M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z"]
4293	};
4294	var faTimesCircle = faCircleXmark;
4295
4296	/* src/components/elements/password/PasswordMatchIndicator.svelte generated by Svelte v4.2.12 */
4297
4298	function create_fragment$13(ctx) {
4299		let div1;
4300		let ul;
4301		let li;
4302		let div0;
4303		let fa;
4304		let t0;
4305		let t1;
4306		let current;
4307
4308		fa = new Fa({
4309				props: {
4310					icon: faCheckCircle,
4311					color: /*password*/ ctx[0] && /*password*/ ctx[0] === /*confirmPassword*/ ctx[1]
4312					? validColor$1
4313					: invalidColor$1
4314				}
4315			});
4316
4317		return {
4318			c() {
4319				div1 = element("div");
4320				ul = element("ul");
4321				li = element("li");
4322				div0 = element("div");
4323				create_component(fa.$$.fragment);
4324				t0 = space();
4325				t1 = text(/*passwordsMatchText*/ ctx[2]);
4326				attr(div0, "class", "zephr-form-password-requirement-icon svelte-tsrdk3");
4327				toggle_class(div0, "zephr-payment-form-password-requirement-icon", /*isPaymentForm*/ ctx[3]);
4328				attr(li, "class", "zephr-form-password-requirement svelte-tsrdk3");
4329				toggle_class(li, "zephr-payment-form-password-requirement", /*isPaymentForm*/ ctx[3]);
4330				attr(ul, "class", "svelte-tsrdk3");
4331				attr(div1, "class", "zephr-form-flex-container zephr-form-password-match svelte-tsrdk3");
4332				toggle_class(div1, "zephr-payment-form-flex-container", /*isPaymentForm*/ ctx[3]);
4333				toggle_class(div1, "zephr-payment-form-password-match", /*isPaymentForm*/ ctx[3]);
4334			},
4335			m(target, anchor) {
4336				insert(target, div1, anchor);
4337				append(div1, ul);
4338				append(ul, li);
4339				append(li, div0);
4340				mount_component(fa, div0, null);
4341				append(li, t0);
4342				append(li, t1);
4343				current = true;
4344			},
4345			p(ctx, [dirty]) {
4346				const fa_changes = {};
4347
4348				if (dirty & /*password, confirmPassword*/ 3) fa_changes.color = /*password*/ ctx[0] && /*password*/ ctx[0] === /*confirmPassword*/ ctx[1]
4349				? validColor$1
4350				: invalidColor$1;
4351
4352				fa.$set(fa_changes);
4353
4354				if (!current || dirty & /*isPaymentForm*/ 8) {
4355					toggle_class(div0, "zephr-payment-form-password-requirement-icon", /*isPaymentForm*/ ctx[3]);
4356				}
4357
4358				if (!current || dirty & /*passwordsMatchText*/ 4) set_data(t1, /*passwordsMatchText*/ ctx[2]);
4359
4360				if (!current || dirty & /*isPaymentForm*/ 8) {
4361					toggle_class(li, "zephr-payment-form-password-requirement", /*isPaymentForm*/ ctx[3]);
4362				}
4363
4364				if (!current || dirty & /*isPaymentForm*/ 8) {
4365					toggle_class(div1, "zephr-payment-form-flex-container", /*isPaymentForm*/ ctx[3]);
4366				}
4367
4368				if (!current || dirty & /*isPaymentForm*/ 8) {
4369					toggle_class(div1, "zephr-payment-form-password-match", /*isPaymentForm*/ ctx[3]);
4370				}
4371			},
4372			i(local) {
4373				if (current) return;
4374				transition_in(fa.$$.fragment, local);
4375				current = true;
4376			},
4377			o(local) {
4378				transition_out(fa.$$.fragment, local);
4379				current = false;
4380			},
4381			d(detaching) {
4382				if (detaching) {
4383					detach(div1);
4384				}
4385
4386				destroy_component(fa);
4387			}
4388		};
4389	}
4390
4391	const validColor$1 = "var(--zf-password-valid-color)";
4392	const invalidColor$1 = "var(--zf-password-invalid-color)";
4393
4394	function instance$11($$self, $$props, $$invalidate) {
4395		let { password } = $$props;
4396		let { confirmPassword } = $$props;
4397		let { passwordsMatchText } = $$props;
4398		let { isPaymentForm = false } = $$props;
4399
4400		$$self.$$set = $$props => {
4401			if ('password' in $$props) $$invalidate(0, password = $$props.password);
4402			if ('confirmPassword' in $$props) $$invalidate(1, confirmPassword = $$props.confirmPassword);
4403			if ('passwordsMatchText' in $$props) $$invalidate(2, passwordsMatchText = $$props.passwordsMatchText);
4404			if ('isPaymentForm' in $$props) $$invalidate(3, isPaymentForm = $$props.isPaymentForm);
4405		};
4406
4407		return [password, confirmPassword, passwordsMatchText, isPaymentForm];
4408	}
4409
4410	class PasswordMatchIndicator extends SvelteComponent {
4411		constructor(options) {
4412			super();
4413
4414			init(this, options, instance$11, create_fragment$13, safe_not_equal, {
4415				password: 0,
4416				confirmPassword: 1,
4417				passwordsMatchText: 2,
4418				isPaymentForm: 3
4419			});
4420		}
4421	}
4422
4423	/* src/components/elements/password/PasswordValidator.svelte generated by Svelte v4.2.12 */
4424
4425	function get_each_context$f(ctx, list, i) {
4426		const child_ctx = ctx.slice();
4427		child_ctx[12] = list[i];
4428		child_ctx[14] = i;
4429		return child_ctx;
4430	}
4431
4432	// (43:2) {#each Array(maxScore) as _, i}
4433	function create_each_block$f(ctx) {
4434		let div;
4435
4436		return {
4437			c() {
4438				div = element("div");
4439				attr(div, "class", "zephr-form-password-bar svelte-1bpbne4");
4440
4441				set_style(div, "background-color", /*score*/ ctx[3] > /*i*/ ctx[14]
4442				? validColor
4443				: invalidColor);
4444
4445				toggle_class(div, "zephr-payment-form-password-bar", /*isPaymentForm*/ ctx[2]);
4446			},
4447			m(target, anchor) {
4448				insert(target, div, anchor);
4449			},
4450			p(ctx, dirty) {
4451				if (dirty & /*score*/ 8) {
4452					set_style(div, "background-color", /*score*/ ctx[3] > /*i*/ ctx[14]
4453					? validColor
4454					: invalidColor);
4455				}
4456
4457				if (dirty & /*isPaymentForm*/ 4) {
4458					toggle_class(div, "zephr-payment-form-password-bar", /*isPaymentForm*/ ctx[2]);
4459				}
4460			},
4461			d(detaching) {
4462				if (detaching) {
4463					detach(div);
4464				}
4465			}
4466		};
4467	}
4468
4469	// (57:4) {#if passwordRequirements.minLength}
4470	function create_if_block_3$e(ctx) {
4471		let li;
4472		let div;
4473		let fa;
4474		let t0;
4475		let t1_value = /*passwordValidationTexts*/ ctx[1].minLengthValidationText + "";
4476		let t1;
4477		let current;
4478
4479		fa = new Fa({
4480				props: {
4481					icon: faCheckCircle,
4482					color: /*isLong*/ ctx[4] ? validColor : invalidColor
4483				}
4484			});
4485
4486		return {
4487			c() {
4488				li = element("li");
4489				div = element("div");
4490				create_component(fa.$$.fragment);
4491				t0 = space();
4492				t1 = text(t1_value);
4493				attr(div, "class", "zephr-form-password-requirement-icon svelte-1bpbne4");
4494				toggle_class(div, "zephr-payment-form-password-requirement-icon", /*isPaymentForm*/ ctx[2]);
4495				attr(li, "class", "zephr-form-password-requirement svelte-1bpbne4");
4496				toggle_class(li, "zephr-payment-form-password-requirement", /*isPaymentForm*/ ctx[2]);
4497			},
4498			m(target, anchor) {
4499				insert(target, li, anchor);
4500				append(li, div);
4501				mount_component(fa, div, null);
4502				append(li, t0);
4503				append(li, t1);
4504				current = true;
4505			},
4506			p(ctx, dirty) {
4507				const fa_changes = {};
4508				if (dirty & /*isLong*/ 16) fa_changes.color = /*isLong*/ ctx[4] ? validColor : invalidColor;
4509				fa.$set(fa_changes);
4510
4511				if (!current || dirty & /*isPaymentForm*/ 4) {
4512					toggle_class(div, "zephr-payment-form-password-requirement-icon", /*isPaymentForm*/ ctx[2]);
4513				}
4514
4515				if ((!current || dirty & /*passwordValidationTexts*/ 2) && t1_value !== (t1_value = /*passwordValidationTexts*/ ctx[1].minLengthValidationText + "")) set_data(t1, t1_value);
4516
4517				if (!current || dirty & /*isPaymentForm*/ 4) {
4518					toggle_class(li, "zephr-payment-form-password-requirement", /*isPaymentForm*/ ctx[2]);
4519				}
4520			},
4521			i(local) {
4522				if (current) return;
4523				transition_in(fa.$$.fragment, local);
4524				current = true;
4525			},
4526			o(local) {
4527				transition_out(fa.$$.fragment, local);
4528				current = false;
4529			},
4530			d(detaching) {
4531				if (detaching) {
4532					detach(li);
4533				}
4534
4535				destroy_component(fa);
4536			}
4537		};
4538	}
4539
4540	// (75:4) {#if passwordRequirements.requireUppercase}
4541	function create_if_block_2$j(ctx) {
4542		let li;
4543		let div;
4544		let fa;
4545		let t0;
4546		let t1_value = /*passwordValidationTexts*/ ctx[1].uppercaseValidationText + "";
4547		let t1;
4548		let current;
4549
4550		fa = new Fa({
4551				props: {
4552					icon: faCheckCircle,
4553					color: /*hasUppercaseLetter*/ ctx[7]
4554					? validColor
4555					: invalidColor
4556				}
4557			});
4558
4559		return {
4560			c() {
4561				li = element("li");
4562				div = element("div");
4563				create_component(fa.$$.fragment);
4564				t0 = space();
4565				t1 = text(t1_value);
4566				attr(div, "class", "zephr-form-password-requirement-icon svelte-1bpbne4");
4567				toggle_class(div, "zephr-payment-form-password-requirement-icon", /*isPaymentForm*/ ctx[2]);
4568				attr(li, "class", "zephr-form-password-requirement svelte-1bpbne4");
4569				toggle_class(li, "zephr-payment-form-password-requirement", /*isPaymentForm*/ ctx[2]);
4570			},
4571			m(target, anchor) {
4572				insert(target, li, anchor);
4573				append(li, div);
4574				mount_component(fa, div, null);
4575				append(li, t0);
4576				append(li, t1);
4577				current = true;
4578			},
4579			p(ctx, dirty) {
4580				const fa_changes = {};
4581
4582				if (dirty & /*hasUppercaseLetter*/ 128) fa_changes.color = /*hasUppercaseLetter*/ ctx[7]
4583				? validColor
4584				: invalidColor;
4585
4586				fa.$set(fa_changes);
4587
4588				if (!current || dirty & /*isPaymentForm*/ 4) {
4589					toggle_class(div, "zephr-payment-form-password-requirement-icon", /*isPaymentForm*/ ctx[2]);
4590				}
4591
4592				if ((!current || dirty & /*passwordValidationTexts*/ 2) && t1_value !== (t1_value = /*passwordValidationTexts*/ ctx[1].uppercaseValidationText + "")) set_data(t1, t1_value);
4593
4594				if (!current || dirty & /*isPaymentForm*/ 4) {
4595					toggle_class(li, "zephr-payment-form-password-requirement", /*isPaymentForm*/ ctx[2]);
4596				}
4597			},
4598			i(local) {
4599				if (current) return;
4600				transition_in(fa.$$.fragment, local);
4601				current = true;
4602			},
4603			o(local) {
4604				transition_out(fa.$$.fragment, local);
4605				current = false;
4606			},
4607			d(detaching) {
4608				if (detaching) {
4609					detach(li);
4610				}
4611
4612				destroy_component(fa);
4613			}
4614		};
4615	}
4616
4617	// (93:4) {#if passwordRequirements.requireNumbers}
4618	function create_if_block_1$u(ctx) {
4619		let li;
4620		let div;
4621		let fa;
4622		let t0;
4623		let t1_value = /*passwordValidationTexts*/ ctx[1].numberValidationText + "";
4624		let t1;
4625		let current;
4626
4627		fa = new Fa({
4628				props: {
4629					icon: faCheckCircle,
4630					color: /*hasNumber*/ ctx[6] ? validColor : invalidColor
4631				}
4632			});
4633
4634		return {
4635			c() {
4636				li = element("li");
4637				div = element("div");
4638				create_component(fa.$$.fragment);
4639				t0 = space();
4640				t1 = text(t1_value);
4641				attr(div, "class", "zephr-form-password-requirement-icon svelte-1bpbne4");
4642				toggle_class(div, "zephr-payment-form-password-requirement-icon", /*isPaymentForm*/ ctx[2]);
4643				attr(li, "class", "zephr-form-password-requirement svelte-1bpbne4");
4644				toggle_class(li, "zephr-payment-form-password-requirement", /*isPaymentForm*/ ctx[2]);
4645			},
4646			m(target, anchor) {
4647				insert(target, li, anchor);
4648				append(li, div);
4649				mount_component(fa, div, null);
4650				append(li, t0);
4651				append(li, t1);
4652				current = true;
4653			},
4654			p(ctx, dirty) {
4655				const fa_changes = {};
4656				if (dirty & /*hasNumber*/ 64) fa_changes.color = /*hasNumber*/ ctx[6] ? validColor : invalidColor;
4657				fa.$set(fa_changes);
4658
4659				if (!current || dirty & /*isPaymentForm*/ 4) {
4660					toggle_class(div, "zephr-payment-form-password-requirement-icon", /*isPaymentForm*/ ctx[2]);
4661				}
4662
4663				if ((!current || dirty & /*passwordValidationTexts*/ 2) && t1_value !== (t1_value = /*passwordValidationTexts*/ ctx[1].numberValidationText + "")) set_data(t1, t1_value);
4664
4665				if (!current || dirty & /*isPaymentForm*/ 4) {
4666					toggle_class(li, "zephr-payment-form-password-requirement", /*isPaymentForm*/ ctx[2]);
4667				}
4668			},
4669			i(local) {
4670				if (current) return;
4671				transition_in(fa.$$.fragment, local);
4672				current = true;
4673			},
4674			o(local) {
4675				transition_out(fa.$$.fragment, local);
4676				current = false;
4677			},
4678			d(detaching) {
4679				if (detaching) {
4680					detach(li);
4681				}
4682
4683				destroy_component(fa);
4684			}
4685		};
4686	}
4687
4688	// (111:4) {#if passwordRequirements.requireSpecialCharacters}
4689	function create_if_block$G(ctx) {
4690		let li;
4691		let div;
4692		let fa;
4693		let t0;
4694		let t1_value = /*passwordValidationTexts*/ ctx[1].symbolValidationText + "";
4695		let t1;
4696		let current;
4697
4698		fa = new Fa({
4699				props: {
4700					icon: faCheckCircle,
4701					color: /*hasSpecialCharacter*/ ctx[5]
4702					? validColor
4703					: invalidColor
4704				}
4705			});
4706
4707		return {
4708			c() {
4709				li = element("li");
4710				div = element("div");
4711				create_component(fa.$$.fragment);
4712				t0 = space();
4713				t1 = text(t1_value);
4714				attr(div, "class", "zephr-form-password-requirement-icon svelte-1bpbne4");
4715				toggle_class(div, "zephr-payment-form-password-requirement-icon", /*isPaymentForm*/ ctx[2]);
4716				attr(li, "class", "zephr-form-password-requirement svelte-1bpbne4");
4717				toggle_class(li, "zephr-payment-form-password-requirement", /*isPaymentForm*/ ctx[2]);
4718			},
4719			m(target, anchor) {
4720				insert(target, li, anchor);
4721				append(li, div);
4722				mount_component(fa, div, null);
4723				append(li, t0);
4724				append(li, t1);
4725				current = true;
4726			},
4727			p(ctx, dirty) {
4728				const fa_changes = {};
4729
4730				if (dirty & /*hasSpecialCharacter*/ 32) fa_changes.color = /*hasSpecialCharacter*/ ctx[5]
4731				? validColor
4732				: invalidColor;
4733
4734				fa.$set(fa_changes);
4735
4736				if (!current || dirty & /*isPaymentForm*/ 4) {
4737					toggle_class(div, "zephr-payment-form-password-requirement-icon", /*isPaymentForm*/ ctx[2]);
4738				}
4739
4740				if ((!current || dirty & /*passwordValidationTexts*/ 2) && t1_value !== (t1_value = /*passwordValidationTexts*/ ctx[1].symbolValidationText 
4740+ "")) set_data(t1, t1_value);
4741
4742				if (!current || dirty & /*isPaymentForm*/ 4) {
4743					toggle_class(li, "zephr-payment-form-password-requirement", /*isPaymentForm*/ ctx[2]);
4744				}
4745			},
4746			i(local) {
4747				if (current) return;
4748				transition_in(fa.$$.fragment, local);
4749				current = true;
4750			},
4751			o(local) {
4752				transition_out(fa.$$.fragment, local);
4753				current = false;
4754			},
4755			d(detaching) {
4756				if (detaching) {
4757					detach(li);
4758				}
4759
4760				destroy_component(fa);
4761			}
4762		};
4763	}
4764
4765	function create_fragment$12(ctx) {
4766		let div0;
4767		let t0;
4768		let div1;
4769		let ul;
4770		let t1;
4771		let t2;
4772		let t3;
4773		let current;
4774		let each_value = ensure_array_like(Array(/*maxScore*/ ctx[8]));
4775		let each_blocks = [];
4776
4777		for (let i = 0; i < each_value.length; i += 1) {
4778			each_blocks[i] = create_each_block$f(get_each_context$f(ctx, each_value, i));
4779		}
4780
4781		let if_block0 = /*passwordRequirements*/ ctx[0].minLength && create_if_block_3$e(ctx);
4782		let if_block1 = /*passwordRequirements*/ ctx[0].requireUppercase && create_if_block_2$j(ctx);
4783		let if_block2 = /*passwordRequirements*/ ctx[0].requireNumbers && create_if_block_1$u(ctx);
4784		let if_block3 = /*passwordRequirements*/ ctx[0].requireSpecialCharacters && create_if_block$G(ctx);
4785
4786		return {
4787			c() {
4788				div0 = element("div");
4789
4790				for (let i = 0; i < each_blocks.length; i += 1) {
4791					each_blocks[i].c();
4792				}
4793
4794				t0 = space();
4795				div1 = element("div");
4796				ul = element("ul");
4797				if (if_block0) if_block0.c();
4798				t1 = space();
4799				if (if_block1) if_block1.c();
4800				t2 = space();
4801				if (if_block2) if_block2.c();
4802				t3 = space();
4803				if (if_block3) if_block3.c();
4804				attr(div0, "class", "zephr-form-password-progress svelte-1bpbne4");
4805				toggle_class(div0, "zephr-payment-form-password-progress", /*isPaymentForm*/ ctx[2]);
4806				attr(ul, "class", "svelte-1bpbne4");
4807				attr(div1, "class", "zephr-form-flex-container zephr-form-password-requirements svelte-1bpbne4");
4808				toggle_class(div1, "zephr-payment-form-flex-container", /*isPaymentForm*/ ctx[2]);
4809				toggle_class(div1, "zephr-payment-form-password-requirements", /*isPaymentForm*/ ctx[2]);
4810			},
4811			m(target, anchor) {
4812				insert(target, div0, anchor);
4813
4814				for (let i = 0; i < each_blocks.length; i += 1) {
4815					if (each_blocks[i]) {
4816						each_blocks[i].m(div0, null);
4817					}
4818				}
4819
4820				insert(target, t0, anchor);
4821				insert(target, div1, anchor);
4822				append(div1, ul);
4823				if (if_block0) if_block0.m(ul, null);
4824				append(ul, t1);
4825				if (if_block1) if_block1.m(ul, null);
4826				append(ul, t2);
4827				if (if_block2) if_block2.m(ul, null);
4828				append(ul, t3);
4829				if (if_block3) if_block3.m(ul, null);
4830				current = true;
4831			},
4832			p(ctx, [dirty]) {
4833				if (dirty & /*score, validColor, invalidColor, isPaymentForm*/ 12) {
4834					each_value = ensure_array_like(Array(/*maxScore*/ ctx[8]));
4835					let i;
4836
4837					for (i = 0; i < each_value.length; i += 1) {
4838						const child_ctx = get_each_context$f(ctx, each_value, i);
4839
4840						if (each_blocks[i]) {
4841							each_blocks[i].p(child_ctx, dirty);
4842						} else {
4843							each_blocks[i] = create_each_block$f(child_ctx);
4844							each_blocks[i].c();
4845							each_blocks[i].m(div0, null);
4846						}
4847					}
4848
4849					for (; i < each_blocks.length; i += 1) {
4850						each_blocks[i].d(1);
4851					}
4852
4853					each_blocks.length = each_value.length;
4854				}
4855
4856				if (!current || dirty & /*isPaymentForm*/ 4) {
4857					toggle_class(div0, "zephr-payment-form-password-progress", /*isPaymentForm*/ ctx[2]);
4858				}
4859
4860				if (/*passwordRequirements*/ ctx[0].minLength) {
4861					if (if_block0) {
4862						if_block0.p(ctx, dirty);
4863
4864						if (dirty & /*passwordRequirements*/ 1) {
4865							transition_in(if_block0, 1);
4866						}
4867					} else {
4868						if_block0 = create_if_block_3$e(ctx);
4869						if_block0.c();
4870						transition_in(if_block0, 1);
4871						if_block0.m(ul, t1);
4872					}
4873				} else if (if_block0) {
4874					group_outros();
4875
4876					transition_out(if_block0, 1, 1, () => {
4877						if_block0 = null;
4878					});
4879
4880					check_outros();
4881				}
4882
4883				if (/*passwordRequirements*/ ctx[0].requireUppercase) {
4884					if (if_block1) {
4885						if_block1.p(ctx, dirty);
4886
4887						if (dirty & /*passwordRequirements*/ 1) {
4888							transition_in(if_block1, 1);
4889						}
4890					} else {
4891						if_block1 = create_if_block_2$j(ctx);
4892						if_block1.c();
4893						transition_in(if_block1, 1);
4894						if_block1.m(ul, t2);
4895					}
4896				} else if (if_block1) {
4897					group_outros();
4898
4899					transition_out(if_block1, 1, 1, () => {
4900						if_block1 = null;
4901					});
4902
4903					check_outros();
4904				}
4905
4906				if (/*passwordRequirements*/ ctx[0].requireNumbers) {
4907					if (if_block2) {
4908						if_block2.p(ctx, dirty);
4909
4910						if (dirty & /*passwordRequirements*/ 1) {
4911							transition_in(if_block2, 1);
4912						}
4913					} else {
4914						if_block2 = create_if_block_1$u(ctx);
4915						if_block2.c();
4916						transition_in(if_block2, 1);
4917						if_block2.m(ul, t3);
4918					}
4919				} else if (if_block2) {
4920					group_outros();
4921
4922					transition_out(if_block2, 1, 1, () => {
4923						if_block2 = null;
4924					});
4925
4926					check_outros();
4927				}
4928
4929				if (/*passwordRequirements*/ ctx[0].requireSpecialCharacters) {
4930					if (if_block3) {
4931						if_block3.p(ctx, dirty);
4932
4933						if (dirty & /*passwordRequirements*/ 1) {
4934							transition_in(if_block3, 1);
4935						}
4936					} else {
4937						if_block3 = create_if_block$G(ctx);
4938						if_block3.c();
4939						transition_in(if_block3, 1);
4940						if_block3.m(ul, null);
4941					}
4942				} else if (if_block3) {
4943					group_outros();
4944
4945					transition_out(if_block3, 1, 1, () => {
4946						if_block3 = null;
4947					});
4948
4949					check_outros();
4950				}
4951
4952				if (!current || dirty & /*isPaymentForm*/ 4) {
4953					toggle_class(div1, "zephr-payment-form-flex-container", /*isPaymentForm*/ ctx[2]);
4954				}
4955
4956				if (!current || dirty & /*isPaymentForm*/ 4) {
4957					toggle_class(div1, "zephr-payment-form-password-requirements", /*isPaymentForm*/ ctx[2]);
4958				}
4959			},
4960			i(local) {
4961				if (current) return;
4962				transition_in(if_block0);
4963				transition_in(if_block1);
4964				transition_in(if_block2);
4965				transition_in(if_block3);
4966				current = true;
4967			},
4968			o(local) {
4969				transition_out(if_block0);
4970				transition_out(if_block1);
4971				transition_out(if_block2);
4972				transition_out(if_block3);
4973				current = false;
4974			},
4975			d(detaching) {
4976				if (detaching) {
4977					detach(div0);
4978					detach(t0);
4979					detach(div1);
4980				}
4981
4982				destroy_each(each_blocks, detaching);
4983				if (if_block0) if_block0.d();
4984				if (if_block1) if_block1.d();
4985				if (if_block2) if_block2.d();
4986				if (if_block3) if_block3.d();
4987			}
4988		};
4989	}
4990
4991	const validColor = "var(--zf-password-valid-color)";
4992	const invalidColor = "var(--zf-password-invalid-color)";
4993
4994	function instance$10($$self, $$props, $$invalidate) {
4995		let hasUppercaseLetter;
4996		let hasNumber;
4997		let hasSpecialCharacter;
4998		let isLong;
4999		let { passwordRequirements } = $$props;
5000		let { passwordValidationTexts } = $$props;
5001		let { isPaymentForm = false } = $$props;
5002		let { onChange } = $$props;
5003		let { password } = $$props;
5004		let { passwordIsValid } = $$props;
5005		let score = 0;
5006
5007		let maxScore = Object.values(passwordRequirements).reduce(
5008			(acc, curr) => {
5009				return acc += curr ? 1 : 0;
5010			},
5011			0
5012		);
5013
5014		$$self.$$set = $$props => {
5015			if ('passwordRequirements' in $$props) $$invalidate(0, passwordRequirements = $$props.passwordRequirements);
5016			if ('passwordValidationTexts' in $$props) $$invalidate(1, passwordValidationTexts = $$props.passwordValidationTexts);
5017			if ('isPaymentForm' in $$props) $$invalidate(2, isPaymentForm = $$props.isPaymentForm);
5018			if ('onChange' in $$props) $$invalidate(9, onChange = $$props.onChange);
5019			if ('password' in $$props) $$invalidate(10, password = $$props.password);
5020			if ('passwordIsValid' in $$props) $$invalidate(11, passwordIsValid = $$props.passwordIsValid);
5021		};
5022
5023		$$self.$$.update = () => {
5024			if ($$self.$$.dirty & /*password*/ 1024) {
5025				$$invalidate(7, hasUppercaseLetter = (/[A-Z]+/).test(password));
5026			}
5027
5028			if ($$self.$$.dirty & /*password*/ 1024) {
5029				$$invalidate(6, hasNumber = (/[0-9]+/).test(password));
5030			}
5031
5032			if ($$self.$$.dirty & /*password*/ 1024) {
5033				$$invalidate(5, hasSpecialCharacter = (/[^a-z0-9A-Z]+/).test(password));
5034			}
5035
5036			if ($$self.$$.dirty & /*password, passwordRequirements*/ 1025) {
5037				$$invalidate(4, isLong = password?.length >= passwordRequirements.minLength);
5038			}
5039
5040			if ($$self.$$.dirty & /*password, passwordRequirements, score, passwordIsValid, onChange*/ 3593) {
5041				{
5042					$$invalidate(3, score = 0);
5043
5044					if ((/[A-Z]+/).test(password) && passwordRequirements.requireUppercase) {
5045						$$invalidate(3, score += 1);
5046					}
5047
5048					if ((/[0-9]+/).test(password) && passwordRequirements.requireNumbers) {
5049						$$invalidate(3, score += 1);
5050					}
5051
5052					if ((/[^a-z0-9A-Z]+/).test(password) && passwordRequirements.requireSpecialCharacters) {
5053						$$invalidate(3, score += 1);
5054					}
5055
5056					if (password?.length >= passwordRequirements.minLength && passwordRequirements.minLength) {
5057						$$invalidate(3, score += 1);
5058					}
5059
5060					score >= maxScore !== passwordIsValid && onChange(score >= maxScore);
5061				}
5062			}
5063		};
5064
5065		return [
5066			passwordRequirements,
5067			passwordValidationTexts,
5068			isPaymentForm,
5069			score,
5070			isLong,
5071			hasSpecialCharacter,
5072			hasNumber,
5073			hasUppercaseLetter,
5074			maxScore,
5075			onChange,
5076			password,
5077			passwordIsValid
5078		];
5079	}
5080
5081	class PasswordValidator extends SvelteComponent {
5082		constructor(options) {
5083			super();
5084
5085			init(this, options, instance$10, create_fragment$12, safe_not_equal, {
5086				passwordRequirements: 0,
5087				passwordValidationTexts: 1,
5088				isPaymentForm: 2,
5089				onChange: 9,
5090				password: 10,
5091				passwordIsValid: 11
5092			});
5093		}
5094	}
5095
5096	/* src/components/elements/password/CreatePassword.svelte generated by Svelte v4.2.12 */
5097
5098	function create_if_block_3$d(ctx) {
5099		let passwordvalidator;
5100		let current;
5101
5102		passwordvalidator = new PasswordValidator({
5103				props: {
5104					password: /*password*/ ctx[12],
5105					passwordIsValid: /*passwordIsValid*/ ctx[14],
5106					passwordRequirements: /*passwordRequirements*/ ctx[1],
5107					passwordValidationTexts: /*passwordValidationTexts*/ ctx[16],
5108					isPaymentForm: /*isPaymentForm*/ ctx[3],
5109					onChange: /*onPasswordIsValidChange*/ ctx[10]
5110				}
5111			});
5112
5113		return {
5114			c() {
5115				create_component(passwordvalidator.$$.fragment);
5116			},
5117			m(target, anchor) {
5118				mount_component(passwordvalidator, target, anchor);
5119				current = true;
5120			},
5121			p(ctx, dirty) {
5122				const passwordvalidator_changes = {};
5123				if (dirty & /*password*/ 4096) passwordvalidator_changes.password = /*password*/ ctx[12];
5124				if (dirty & /*passwordIsValid*/ 16384) passwordvalidator_changes.passwordIsValid = /*passwordIsValid*/ ctx[14];
5125				if (dirty & /*passwordRequirements*/ 2) passwordvalidator_changes.passwordRequirements = /*passwordRequirements*/ ctx[1];
5126				if (dirty & /*isPaymentForm*/ 8) passwordvalidator_changes.isPaymentForm = /*isPaymentForm*/ ctx[3];
5127				if (dirty & /*onPasswordIsValidChange*/ 1024) passwordvalidator_changes.onChange = /*onPasswordIsValidChange*/ ctx[10];
5128				passwordvalidator.$set(passwordvalidator_changes);
5129			},
5130			i(local) {
5131				if (current) return;
5132				transition_in(passwordvalidator.$$.fragment, local);
5133				current = true;
5134			},
5135			o(local) {
5136				transition_out(passwordvalidator.$$.fragment, local);
5137				current = false;
5138			},
5139			d(detaching) {
5140				destroy_component(passwordvalidator, detaching);
5141			}
5142		};
5143	}
5144
5145	// (58:0) {#if !hideConfirmPassword}
5146	function create_if_block_2$i(ctx) {
5147		let passwordinput;
5148		let current;
5149
5150		passwordinput = new PasswordInput({
5151				props: {
5152					disabled: /*disabled*/ ctx[11],
5153					password: /*confirmPassword*/ ctx[13],
5154					isMainPassword: false,
5155					label: /*config*/ ctx[0].confirm,
5156					hideLabel: /*config*/ ctx[0].hide,
5157					showLabel: /*config*/ ctx[0].show,
5158					placeholder: /*config*/ ctx[0].confirmPlaceholder,
5159					isPaymentForm: /*isPaymentForm*/ ctx[3],
5160					autocomplete: "new-password",
5161					onChange: /*onConfirmPasswordChange*/ ctx[7],
5162					onFocus: /*onConfirmPasswordFocus*/ ctx[8],
5163					onBlur: /*onConfirmPasswordBlur*/ ctx[9]
5164				}
5165			});
5166
5167		return {
5168			c() {
5169				create_component(passwordinput.$$.fragment);
5170			},
5171			m(target, anchor) {
5172				mount_component(passwordinput, target, anchor);
5173				current = true;
5174			},
5175			p(ctx, dirty) {
5176				const passwordinput_changes = {};
5177				if (dirty & /*disabled*/ 2048) passwordinput_changes.disabled = /*disabled*/ ctx[11];
5178				if (dirty & /*confirmPassword*/ 8192) passwordinput_changes.password = /*confirmPassword*/ ctx[13];
5179				if (dirty & /*config*/ 1) passwordinput_changes.label = /*config*/ ctx[0].confirm;
5180				if (dirty & /*config*/ 1) passwordinput_changes.hideLabel = /*config*/ ctx[0].hide;
5181				if (dirty & /*config*/ 1) passwordinput_changes.showLabel = /*config*/ ctx[0].show;
5182				if (dirty & /*config*/ 1) passwordinput_changes.placeholder = /*config*/ ctx[0].confirmPlaceholder;
5183				if (dirty & /*isPaymentForm*/ 8) passwordinput_changes.isPaymentForm = /*isPaymentForm*/ ctx[3];
5184				if (dirty & /*onConfirmPasswordChange*/ 128) passwordinput_changes.onChange = /*onConfirmPasswordChange*/ ctx[7];
5185				if (dirty & /*onConfirmPasswordFocus*/ 256) passwordinput_changes.onFocus = /*onConfirmPasswordFocus*/ ctx[8];
5186				if (dirty & /*onConfirmPasswordBlur*/ 512) passwordinput_changes.onBlur = /*onConfirmPasswordBlur*/ ctx[9];
5187				passwordinput.$set(passwordinput_changes);
5188			},
5189			i(local) {
5190				if (current) return;
5191				transition_in(passwordinput.$$.fragment, local);
5192				current = true;
5193			},
5194			o(local) {
5195				transition_out(passwordinput.$$.fragment, local);
5196				current = false;
5197			},
5198			d(detaching) {
5199				destroy_component(passwordinput, detaching);
5200			}
5201		};
5202	}
5203
5204	// (75:0) {#if config.passwordsMatchIndicatorEnabled}
5205	function create_if_block_1$t(ctx) {
5206		let passwordmatchindicator;
5207		let current;
5208
5209		passwordmatchindicator = new PasswordMatchIndicator({
5210				props: {
5211					password: /*password*/ ctx[12],
5212					confirmPassword: /*confirmPassword*/ ctx[13],
5213					passwordsMatchText: /*passwordValidationTexts*/ ctx[16].passwordsMatchText,
5214					isPaymentForm: /*isPaymentForm*/ ctx[3]
5215				}
5216			});
5217
5218		return {
5219			c() {
5220				create_component(passwordmatchindicator.$$.fragment);
5221			},
5222			m(target, anchor) {
5223				mount_component(passwordmatchindicator, target, anchor);
5224				current = true;
5225			},
5226			p(ctx, dirty) {
5227				const passwordmatchindicator_changes = {};
5228				if (dirty & /*password*/ 4096) passwordmatchindicator_changes.password = /*password*/ ctx[12];
5229				if (dirty & /*confirmPassword*/ 8192) passwordmatchindicator_changes.confirmPassword = /*confirmPassword*/ ctx[13];
5230				if (dirty & /*isPaymentForm*/ 8) passwordmatchindicator_changes.isPaymentForm = /*isPaymentForm*/ ctx[3];
5231				passwordmatchindicator.$set(passwordmatchindicator_changes);
5232			},
5233			i(local) {
5234				if (current) return;
5235				transition_in(passwordmatchindicator.$$.fragment, local);
5236				current = true;
5237			},
5238			o(local) {
5239				transition_out(passwordmatchindicator.$$.fragment, local);
5240				current = false;
5241			},
5242			d(detaching) {
5243				destroy_component(passwordmatchindicator, detaching);
5244			}
5245		};
5246	}
5247
5248	// (84:0) {#if error}
5249	function create_if_block$F(ctx) {
5250		let errormessage;
5251		let current;
5252
5253		errormessage = new ErrorMessage({
5254				props: {
5255					error: /*error*/ ctx[15] ?? "",
5256					isPaymentForm: /*isPaymentForm*/ ctx[3]
5257				}
5258			});
5259
5260		return {
5261			c() {
5262				create_component(errormessage.$$.fragment);
5263			},
5264			m(target, anchor) {
5265				mount_component(errormessage, target, anchor);
5266				current = true;
5267			},
5268			p(ctx, dirty) {
5269				const errormessage_changes = {};
5270				if (dirty & /*error*/ 32768) errormessage_changes.error = /*error*/ ctx[15] ?? "";
5271				if (dirty & /*isPaymentForm*/ 8) errormessage_changes.isPaymentForm = /*isPaymentForm*/ ctx[3];
5272				errormessage.$set(errormessage_changes);
5273			},
5274			i(local) {
5275				if (current) return;
5276				transition_in(errormessage.$$.fragment, local);
5277				current = true;
5278			},
5279			o(local) {
5280				transition_out(errormessage.$$.fragment, local);
5281				current = false;
5282			},
5283			d(detaching) {
5284				destroy_component(errormessage, detaching);
5285			}
5286		};
5287	}
5288
5289	function create_fragment$11(ctx) {
5290		let passwordinput;
5291		let t0;
5292		let t1;
5293		let t2;
5294		let t3;
5295		let if_block3_anchor;
5296		let current;
5297
5298		passwordinput = new PasswordInput({
5299				props: {
5300					disabled: /*disabled*/ ctx[11],
5301					password: /*password*/ ctx[12],
5302					isMainPassword: true,
5303					label: /*config*/ ctx[0].password,
5304					hideLabel: /*config*/ ctx[0].hide,
5305					showLabel: /*config*/ ctx[0].show,
5306					placeholder: /*config*/ ctx[0].placeholder,
5307					isPaymentForm: /*isPaymentForm*/ ctx[3],
5308					autocomplete: /*hideConfirmPassword*/ ctx[2]
5309					? "current-password"
5310					: "new-password",
5311					onChange: /*onPasswordChange*/ ctx[4],
5312					onFocus: /*onPasswordFocus*/ ctx[5],
5313					onBlur: /*onPasswordBlur*/ ctx[6]
5314				}
5315			});
5316
5317		let if_block0 = /*config*/ ctx[0].passValidatorEnabled && create_if_block_3$d(ctx);
5318		let if_block1 = !/*hideConfirmPassword*/ ctx[2] && create_if_block_2$i(ctx);
5319		let if_block2 = /*config*/ ctx[0].passwordsMatchIndicatorEnabled && create_if_block_1$t(ctx);
5320		let if_block3 = /*error*/ ctx[15] && create_if_block$F(ctx);
5321
5322		return {
5323			c() {
5324				create_component(passwordinput.$$.fragment);
5325				t0 = space();
5326				if (if_block0) if_block0.c();
5327				t1 = space();
5328				if (if_block1) if_block1.c();
5329				t2 = space();
5330				if (if_block2) if_block2.c();
5331				t3 = space();
5332				if (if_block3) if_block3.c();
5333				if_block3_anchor = empty();
5334			},
5335			m(target, anchor) {
5336				mount_component(passwordinput, target, anchor);
5337				insert(target, t0, anchor);
5338				if (if_block0) if_block0.m(target, anchor);
5339				insert(target, t1, anchor);
5340				if (if_block1) if_block1.m(target, anchor);
5341				insert(target, t2, anchor);
5342				if (if_block2) if_block2.m(target, anchor);
5343				insert(target, t3, anchor);
5344				if (if_block3) if_block3.m(target, anchor);
5345				insert(target, if_block3_anchor, anchor);
5346				current = true;
5347			},
5348			p(ctx, [dirty]) {
5349				const passwordinput_changes = {};
5350				if (dirty & /*disabled*/ 2048) passwordinput_changes.disabled = /*disabled*/ ctx[11];
5351				if (dirty & /*password*/ 4096) passwordinput_changes.password = /*password*/ ctx[12];
5352				if (dirty & /*config*/ 1) passwordinput_changes.label = /*config*/ ctx[0].password;
5353				if (dirty & /*config*/ 1) passwordinput_changes.hideLabel = /*config*/ ctx[0].hide;
5354				if (dirty & /*config*/ 1) passwordinput_changes.showLabel = /*config*/ ctx[0].show;
5355				if (dirty & /*config*/ 1) passwordinput_changes.placeholder = /*config*/ ctx[0].placeholder;
5356				if (dirty & /*isPaymentForm*/ 8) passwordinput_changes.isPaymentForm = /*isPaymentForm*/ ctx[3];
5357
5358				if (dirty & /*hideConfirmPassword*/ 4) passwordinput_changes.autocomplete = /*hideConfirmPassword*/ ctx[2]
5359				? "current-password"
5360				: "new-password";
5361
5362				if (dirty & /*onPasswordChange*/ 16) passwordinput_changes.onChange = /*onPasswordChange*/ ctx[4];
5363				if (dirty & /*onPasswordFocus*/ 32) passwordinput_changes.onFocus = /*onPasswordFocus*/ ctx[5];
5364				if (dirty & /*onPasswordBlur*/ 64) passwordinput_changes.onBlur = /*onPasswordBlur*/ ctx[6];
5365				passwordinput.$set(passwordinput_changes);
5366
5367				if (/*config*/ ctx[0].passValidatorEnabled) {
5368					if (if_block0) {
5369						if_block0.p(ctx, dirty);
5370
5371						if (dirty & /*config*/ 1) {
5372							transition_in(if_block0, 1);
5373						}
5374					} else {
5375						if_block0 = create_if_block_3$d(ctx);
5376						if_block0.c();
5377						transition_in(if_block0, 1);
5378						if_block0.m(t1.parentNode, t1);
5379					}
5380				} else if (if_block0) {
5381					group_outros();
5382
5383					transition_out(if_block0, 1, 1, () => {
5384						if_block0 = null;
5385					});
5386
5387					check_outros();
5388				}
5389
5390				if (!/*hideConfirmPassword*/ ctx[2]) {
5391					if (if_block1) {
5392						if_block1.p(ctx, dirty);
5393
5394						if (dirty & /*hideConfirmPassword*/ 4) {
5395							transition_in(if_block1, 1);
5396						}
5397					} else {
5398						if_block1 = create_if_block_2$i(ctx);
5399						if_block1.c();
5400						transition_in(if_block1, 1);
5401						if_block1.m(t2.parentNode, t2);
5402					}
5403				} else if (if_block1) {
5404					group_outros();
5405
5406					transition_out(if_block1, 1, 1, () => {
5407						if_block1 = null;
5408					});
5409
5410					check_outros();
5411				}
5412
5413				if (/*config*/ ctx[0].passwordsMatchIndicatorEnabled) {
5414					if (if_block2) {
5415						if_block2.p(ctx, dirty);
5416
5417						if (dirty & /*config*/ 1) {
5418							transition_in(if_block2, 1);
5419						}
5420					} else {
5421						if_block2 = create_if_block_1$t(ctx);
5422						if_block2.c();
5423						transition_in(if_block2, 1);
5424						if_block2.m(t3.parentNode, t3);
5425					}
5426				} else if (if_block2) {
5427					group_outros();
5428
5429					transition_out(if_block2, 1, 1, () => {
5430						if_block2 = null;
5431					});
5432
5433					check_outros();
5434				}
5435
5436				if (/*error*/ ctx[15]) {
5437					if (if_block3) {
5438						if_block3.p(ctx, dirty);
5439
5440						if (dirty & /*error*/ 32768) {
5441							transition_in(if_block3, 1);
5442						}
5443					} else {
5444						if_block3 = create_if_block$F(ctx);
5445						if_block3.c();
5446						transition_in(if_block3, 1);
5447						if_block3.m(if_block3_anchor.parentNode, if_block3_anchor);
5448					}
5449				} else if (if_block3) {
5450					group_outros();
5451
5452					transition_out(if_block3, 1, 1, () => {
5453						if_block3 = null;
5454					});
5455
5456					check_outros();
5457				}
5458			},
5459			i(local) {
5460				if (current) return;
5461				transition_in(passwordinput.$$.fragment, local);
5462				transition_in(if_block0);
5463				transition_in(if_block1);
5464				transition_in(if_block2);
5465				transition_in(if_block3);
5466				current = true;
5467			},
5468			o(local) {
5469				transition_out(passwordinput.$$.fragment, local);
5470				transition_out(if_block0);
5471				transition_out(if_block1);
5472				transition_out(if_block2);
5473				transition_out(if_block3);
5474				current = false;
5475			},
5476			d(detaching) {
5477				if (detaching) {
5478					detach(t0);
5479					detach(t1);
5480					detach(t2);
5481					detach(t3);
5482					detach(if_block3_anchor);
5483				}
5484
5485				destroy_component(passwordinput, detaching);
5486				if (if_block0) if_block0.d(detaching);
5487				if (if_block1) if_block1.d(detaching);
5488				if (if_block2) if_block2.d(detaching);
5489				if (if_block3) if_block3.d(detaching);
5490			}
5491		};
5492	}
5493
5494	function instance$$($$self, $$props, $$invalidate) {
5495		let { config } = $$props;
5496		let { passwordRequirements } = $$props;
5497		let { hideConfirmPassword } = $$props;
5498		let { isPaymentForm = false } = $$props;
5499		let { onPasswordChange } = $$props;
5500		let { onPasswordFocus } = $$props;
5501		let { onPasswordBlur } = $$props;
5502		let { onConfirmPasswordChange } = $$props;
5503		let { onConfirmPasswordFocus } = $$props;
5504		let { onConfirmPasswordBlur } = $$props;
5505		let { onPasswordIsValidChange } = $$props;
5506		let { disabled } = $$props;
5507		let { password } = $$props;
5508		let { confirmPassword } = $$props;
5509		let { passwordIsValid } = $$props;
5510		let { error = null } = $$props;
5511
5512		let passwordValidationTexts = {
5513			minLengthValidationText: config.minLengthValidation || `Must include at least ${passwordRequirements.minLength} characters`,
5514			uppercaseValidationText: config.uppercaseValidation || 'Must include an uppercase letter',
5515			numberValidationText: config.numberValidation || 'Must include a number character',
5516			symbolValidationText: config.symbolValidation || 'Must include a supported symbol',
5517			passwordsMatchText: config.passwordsMatchText || 'Passwords match'
5518		};
5519
5520		$$self.$$set = $$props => {
5521			if ('config' in $$props) $$invalidate(0, config = $$props.config);
5522			if ('passwordRequirements' in $$props) $$invalidate(1, passwordRequirements = $$props.passwordRequirements);
5523			if ('hideConfirmPassword' in $$props) $$invalidate(2, hideConfirmPassword = $$props.hideConfirmPassword);
5524			if ('isPaymentForm' in $$props) $$invalidate(3, isPaymentForm = $$props.isPaymentForm);
5525			if ('onPasswordChange' in $$props) $$invalidate(4, onPasswordChange = $$props.onPasswordChange);
5526			if ('onPasswordFocus' in $$props) $$invalidate(5, onPasswordFocus = $$props.onPasswordFocus);
5527			if ('onPasswordBlur' in $$props) $$invalidate(6, onPasswordBlur = $$props.onPasswordBlur);
5528			if ('onConfirmPasswordChange' in $$props) $$invalidate(7, onConfirmPasswordChange = $$props.onConfirmPasswordChange);
5529			if ('onConfirmPasswordFocus' in $$props) $$invalidate(8, onConfirmPasswordFocus = $$props.onConfirmPasswordFocus);
5530			if ('onConfirmPasswordBlur' in $$props) $$invalidate(9, onConfirmPasswordBlur = $$props.onConfirmPasswordBlur);
5531			if ('onPasswordIsValidChange' in $$props) $$invalidate(10, onPasswordIsValidChange = $$props.onPasswordIsValidChange);
5532			if ('disabled' in $$props) $$invalidate(11, disabled = $$props.disabled);
5533			if ('password' in $$props) $$invalidate(12, password = $$props.password);
5534			if ('confirmPassword' in $$props) $$invalidate(13, confirmPassword = $$props.confirmPassword);
5535			if ('passwordIsValid' in $$props) $$invalidate(14, passwordIsValid = $$props.passwordIsValid);
5536			if ('error' in $$props) $$invalidate(15, error = $$props.error);
5537		};
5538
5539		return [
5540			config,
5541			passwordRequirements,
5542			hideConfirmPassword,
5543			isPaymentForm,
5544			onPasswordChange,
5545			onPasswordFocus,
5546			onPasswordBlur,
5547			onConfirmPasswordChange,
5548			onConfirmPasswordFocus,
5549			onConfirmPasswordBlur,
5550			onPasswordIsValidChange,
5551			disabled,
5552			password,
5553			confirmPassword,
5554			passwordIsValid,
5555			error,
5556			passwordValidationTexts
5557		];
5558	}
5559
5560	class CreatePassword extends SvelteComponent {
5561		constructor(options) {
5562			super();
5563
5564			init(this, options, instance$$, create_fragment$11, safe_not_equal, {
5565				config: 0,
5566				passwordRequirements: 1,
5567				hideConfirmPassword: 2,
5568				isPaymentForm: 3,
5569				onPasswordChange: 4,
5570				onPasswordFocus: 5,
5571				onPasswordBlur: 6,
5572				onConfirmPasswordChange: 7,
5573				onConfirmPasswordFocus: 8,
5574				onConfirmPasswordBlur: 9,
5575				onPasswordIsValidChange: 10,
5576				disabled: 11,
5577				password: 12,
5578				confirmPassword: 13,
5579				passwordIsValid: 14,
5580				error: 15
5581			});
5582		}
5583	}
5584
5585	const factory$s = {
5586	    matches: (sectionElement) => sectionElement.type === elementTypes.PASSWORD && sectionElement.config?.confirm != null,
5587	    create: (form, formState, formActions, elementConfig) => ({
5588	        component: CreatePassword,
5589	        props: {
5590	            disabled: formState.isBusy,
5591	            config: elementConfig,
5592	            passwordRequirements: form.organisationConfiguration.passwordStrengthRequirements,
5593	            hideConfirmPassword: form.organisationConfiguration.hideConfirmPasswordOnRegForm,
5594	            isPaymentForm: form.formType === FormType.PAYMENT,
5595	            onPasswordChange: (value) => {
5596	                formActions.updateFormState({
5597	                    createPassword: value
5598	                });
5599	                logDataLayerEvent(form, 'zephr_form_input_change', {
5600	                    inputName: 'zephr-form-password',
5601	                    sectionId: formState.currentSection.type,
5602	                    field: 'create-password'
5603	                });
5604	            },
5605	            onPasswordFocus: () => logDataLayerEvent(form, 'zephr_form_input_focus', {
5606	                inputName: 'zephr-form-password',
5607	                sectionId: formState.currentSection.type,
5608	                field: 'create-password'
5609	            }),
5610	            onPasswordBlur: () => logDataLayerEvent(form, 'zephr_form_input_blur', {
5611	                inputName: 'zephr-form-password',
5612	                sectionId: formState.currentSection.type,
5613	                field: 'create-password'
5614	            }),
5615	            onConfirmPasswordChange: (value) => {
5616	                formActions.updateFormState({
5617	                    confirmCreatePassword: value
5618	                });
5619	                logDataLayerEvent(form, 'zephr_form_input_change', {
5620	                    inputName: 'zephr-form-confirm-password',
5621	                    sectionId: formState.currentSection.type,
5622	                    field: 'confirm-password'
5623	                });
5624	            },
5625	            onConfirmPasswordFocus: () => logDataLayerEvent(form, 'zephr_form_input_focus', {
5626	                inputName: 'zephr-form-confirm-password',
5627	                sectionId: formState.currentSection.type,
5628	                field: 'confirm-password'
5629	            }),
5630	            onConfirmPasswordBlur: () => logDataLayerEvent(form, 'zephr_form_input_blur', {
5631	                inputName: 'zephr-form-confirm-password',
5632	                sectionId: formState.currentSection.type,
5633	                field: 'confirm-password'
5634	            }),
5635	            onPasswordIsValidChange: (value) => formActions.updateFormState({
5636	                passwordIsValid: value
5637	            }),
5638	            password: formState.createPassword,
5639	            confirmPassword: formState.confirmCreatePassword,
5640	            passwordIsValid: formState.passwordIsValid
5641	        },
5642	        isValid: formState.password != null
5643	            && (!elementConfig.passValidatorEnabled || formState.passwordIsValid) && (form.organisationConfiguration.hideConfirmPasswordOnRegForm ||
5644	            formState.createPassword === formState.confirmCreatePassword),
5645	    })
5646	};
5647
5648	// TODO
5649	const isValid = (password) => password != null && password.length > 2;
5650	const factory$r = {
5651	    matches: (sectionElement) => sectionElement.type === elementTypes.PASSWORD && sectionElement.config?.confirm == null,
5652	    create: (form, formState, formActions, elementConfig) => {
5653	        const stateKey = elementConfig.isUpdatePasswordCurrentPassword ? 'currentPassword' : 'password';
5654	        return {
5655	            component: PasswordInput,
5656	            props: {
5657	                disabled: formState.isBusy,
5658	                label: elementConfig.password,
5659	                placeholder: elementConfig.placeholder,
5660	                isMainPassword: true,
5661	                showLabel: elementConfig.showLabel,
5662	                hideLabel: elementConfig.hideLabel,
5663	                password: formState[stateKey],
5664	                autocomplete: 'password',
5665	                onChange: (value) => {
5666	                    formActions.updateFormState({ [stateKey]: value });
5667	                    logDataLayerEvent(form, 'zephr_form_input_change', {
5668	                        inputName: 'zephr-form-password',
5669	                        sectionId: formState.currentSection.type,
5670	                        field: 'password'
5671	                    });
5672	                },
5673	                onFocus: () => logDataLayerEvent(form, 'zephr_form_input_focus', {
5674	                    inputName: 'zephr-form-password',
5675	                    sectionId: formState.currentSection.type,
5676	                    field: 'password'
5677	                }),
5678	                onBlur: () => logDataLayerEvent(form, 'zephr_form_input_blur', {
5679	                    inputName: 'zephr-form-password',
5680	                    sectionId: formState.currentSection.type,
5681	                    field: 'password'
5682	                }),
5683	            },
5684	            isValid: isValid(formState[stateKey])
5685	        };
5686	    }
5687	};
5688
5689	/* src/components/elements/payment/braintree/BraintreeMobilePayment.svelte generated by Svelte v4.2.12 */
5690
5691	function create_fragment$10(ctx) {
5692		let script0;
5693		let script0_src_value;
5694		let script1;
5695		let script1_src_value;
5696		let script2;
5697		let script2_src_value;
5698		let script3;
5699		let script3_src_value;
5700		let t0;
5701		let div0;
5702		let t1;
5703		let div1;
5704
5705		return {
5706			c() {
5707				script0 = element("script");
5708				script0.innerHTML = ``;
5709				script1 = element("script");
5710				script1.innerHTML = ``;
5711				script2 = element("script");
5712				script2.innerHTML = ``;
5713				script3 = element("script");
5714				script3.innerHTML = ``;
5715				t0 = space();
5716				div0 = element("div");
5717				t1 = space();
5718				div1 = element("div");
5719				div1.innerHTML = ``;
5720				if (!src_url_equal(script0.src, script0_src_value = "https://js.braintreegateway.com/web/3.85.3/js/google-payment.min.js")) attr(script0, "src", script0_src_value);
5721				if (!src_url_equal(script1.src, script1_src_value = "https://pay.google.com/gp/p/js/pay.js")) attr(script1, "src", script1_src_value);
5722				attr(script1, "onload", "window.googlePayLoadBraintreeCallback()");
5723				if (!src_url_equal(script2.src, script2_src_value = "https://js.braintreegateway.com/web/3.85.3/js/client.min.js")) attr(script2, "src", script2_src_value);
5724				attr(script2, "onload", "window.braintreeLoadCallback()");
5725				if (!src_url_equal(script3.src, script3_src_value = "https://js.braintreegateway.com/web/3.85.3/js/apple-pay.min.js")) attr(script3, "src", script3_src_value);
5726				attr(script3, "onload", "window.applePayLoadBraintreeCallback()");
5727				attr(div0, "id", "google-pay-button");
5728				attr(div0, "class", "svelte-1drqjgk");
5729				toggle_class(div0, "zephr-form-disabled-div", /*isDisabled*/ ctx[0]);
5730				toggle_class(div0, "zephr-payment-form-disabled-div", /*isDisabled*/ ctx[0]);
5731				attr(div1, "id", "apple_pay_button");
5732			},
5733			m(target, anchor) {
5734				append(document.head, script0);
5735				append(document.head, script1);
5736				append(document.head, script2);
5737				append(document.head, script3);
5738				insert(target, t0, anchor);
5739				insert(target, div0, anchor);
5740				insert(target, t1, anchor);
5741				insert(target, div1, anchor);
5742			},
5743			p(ctx, [dirty]) {
5744				if (dirty & /*isDisabled*/ 1) {
5745					toggle_class(div0, "zephr-form-disabled-div", /*isDisabled*/ ctx[0]);
5746				}
5747
5748				if (dirty & /*isDisabled*/ 1) {
5749					toggle_class(div0, "zephr-payment-form-disabled-div", /*isDisabled*/ ctx[0]);
5750				}
5751			},
5752			i: noop,
5753			o: noop,
5754			d(detaching) {
5755				if (detaching) {
5756					detach(t0);
5757					detach(div0);
5758					detach(t1);
5759					detach(div1);
5760				}
5761
5762				detach(script0);
5763				detach(script1);
5764				detach(script2);
5765				detach(script3);
5766			}
5767		};
5768	}
5769
5770	function instance$_($$self, $$props, $$invalidate) {
5771		let { onMountCallback } = $$props;
5772		let { isDisabled } = $$props;
5773		let { disableCoreDependencyHeader } = $$props;
5774		onMount(onMountCallback);
5775
5776		$$self.$$set = $$props => {
5777			if ('onMountCallback' in $$props) $$invalidate(1, onMountCallback = $$props.onMountCallback);
5778			if ('isDisabled' in $$props) $$invalidate(0, isDisabled = $$props.isDisabled);
5779			if ('disableCoreDependencyHeader' in $$props) $$invalidate(2, disableCoreDependencyHeader = $$props.disableCoreDependencyHeader);
5780		};
5781
5782		return [isDisabled, onMountCallback, disableCoreDependencyHeader];
5783	}
5784
5785	class BraintreeMobilePayment extends SvelteComponent {
5786		constructor(options) {
5787			super();
5788
5789			init(this, options, instance$_, create_fragment$10, safe_not_equal, {
5790				onMountCallback: 1,
5791				isDisabled: 0,
5792				disableCoreDependencyHeader: 2
5793			});
5794		}
5795	}
5796
5797	/* src/components/elements/payment/braintree/BraintreePayment.svelte generated by Svelte v4.2.12 */
5798
5799	function create_fragment$$(ctx) {
5800		let script;
5801		let script_src_value;
5802		let t0;
5803		let div;
5804		let t1;
5805		let errormessage;
5806		let current;
5807
5808		errormessage = new ErrorMessage({
5809				props: {
5810					error: /*providerError*/ ctx[0]?.message ?? /*error*/ ctx[2] ?? "",
5811					isPaymentForm: true
5812				}
5813			});
5814
5815		return {
5816			c() {
5817				script = element("script");
5818				script.innerHTML = ``;
5819				t0 = space();
5820				div = element("div");
5821				t1 = space();
5822				create_component(errormessage.$$.fragment);
5823				if (!src_url_equal(script.src, script_src_value = "https://js.braintreegateway.com/web/dropin/1.33.2/js/dropin.min.js")) attr(script, "src", script_src_value);
5824				attr(script, "onload", "window.braintreeLoadCallback()");
5825				attr(div, "id", "braintree-dropin-container");
5826				attr(div, "class", "svelte-w52z2j");
5827				toggle_class(div, "zephr-form-disabled-div", /*isDisabled*/ ctx[1]);
5828				toggle_class(div, "zephr-payment-form-disabled-div", /*isDisabled*/ ctx[1]);
5829			},
5830			m(target, anchor) {
5831				append(document.head, script);
5832				insert(target, t0, anchor);
5833				insert(target, div, anchor);
5834				insert(target, t1, anchor);
5835				mount_component(errormessage, target, anchor);
5836				current = true;
5837			},
5838			p(ctx, [dirty]) {
5839				if (!current || dirty & /*isDisabled*/ 2) {
5840					toggle_class(div, "zephr-form-disabled-div", /*isDisabled*/ ctx[1]);
5841				}
5842
5843				if (!current || dirty & /*isDisabled*/ 2) {
5844					toggle_class(div, "zephr-payment-form-disabled-div", /*isDisabled*/ ctx[1]);
5845				}
5846
5847				const errormessage_changes = {};
5848				if (dirty & /*providerError, error*/ 5) errormessage_changes.error = /*providerError*/ ctx[0]?.message ?? /*error*/ ctx[2] ?? "";
5849				errormessage.$set(errormessage_changes);
5850			},
5851			i(local) {
5852				if (current) return;
5853				transition_in(errormessage.$$.fragment, local);
5854				current = true;
5855			},
5856			o(local) {
5857				transition_out(errormessage.$$.fragment, local);
5858				current = false;
5859			},
5860			d(detaching) {
5861				if (detaching) {
5862					detach(t0);
5863					detach(div);
5864					detach(t1);
5865				}
5866
5867				detach(script);
5868				destroy_component(errormessage, detaching);
5869			}
5870		};
5871	}
5872
5873	function instance$Z($$self, $$props, $$invalidate) {
5874		let { onMountCallback } = $$props;
5875		let { providerError } = $$props;
5876		let { isDisabled } = $$props;
5877		let { isLoaded } = $$props;
5878		let { error = null } = $$props;
5879		onMount(onMountCallback);
5880
5881		$$self.$$set = $$props => {
5882			if ('onMountCallback' in $$props) $$invalidate(3, onMountCallback = $$props.onMountCallback);
5883			if ('providerError' in $$props) $$invalidate(0, providerError = $$props.providerError);
5884			if ('isDisabled' in $$props) $$invalidate(1, isDisabled = $$props.isDisabled);
5885			if ('isLoaded' in $$props) $$invalidate(4, isLoaded = $$props.isLoaded);
5886			if ('error' in $$props) $$invalidate(2, error = $$props.error);
5887		};
5888
5889		return [providerError, isDisabled, error, onMountCallback, isLoaded];
5890	}
5891
5892	class BraintreePayment extends SvelteComponent {
5893		constructor(options) {
5894			super();
5895
5896			init(this, options, instance$Z, create_fragment$$, safe_not_equal, {
5897				onMountCallback: 3,
5898				providerError: 0,
5899				isDisabled: 1,
5900				isLoaded: 4,
5901				error: 2
5902			});
5903		}
5904	}
5905
5906	/* src/components/elements/payment/stripe/StripePayment.svelte generated by Svelte v4.2.12 */
5907
5908	function create_fragment$_(ctx) {
5909		let script;
5910		let script_src_value;
5911		let t0;
5912		let div;
5913		let t1;
5914		let errormessage;
5915		let current;
5916
5917		errormessage = new ErrorMessage({
5918				props: {
5919					error: /*providerError*/ ctx[0]?.message ?? (/*isComplete*/ ctx[2] ? /*error*/ ctx[3] : "") ?? "",
5920					isPaymentForm: true
5921				}
5922			});
5923
5924		return {
5925			c() {
5926				script = element("script");
5927				script.innerHTML = ``;
5928				t0 = space();
5929				div = element("div");
5930				t1 = space();
5931				create_component(errormessage.$$.fragment);
5932				if (!src_url_equal(script.src, script_src_value = "https://js.stripe.com/v3/")) attr(script, "src", script_src_value);
5933				attr(script, "onload", "window.stripeLoadCallback()");
5934				attr(div, "id", /*id*/ ctx[4]);
5935				attr(div, "class", "stripe-element svelte-1bi6tmz");
5936				toggle_class(div, "zephr-form-disabled-div", /*isDisabled*/ ctx[1]);
5937				toggle_class(div, "zephr-payment-form-disabled-div", /*isDisabled*/ ctx[1]);
5938			},
5939			m(target, anchor) {
5940				append(document.head, script);
5941				insert(target, t0, anchor);
5942				insert(target, div, anchor);
5943				insert(target, t1, anchor);
5944				mount_component(errormessage, target, anchor);
5945				current = true;
5946			},
5947			p(ctx, [dirty]) {
5948				if (!current || dirty & /*isDisabled*/ 2) {
5949					toggle_class(div, "zephr-form-disabled-div", /*isDisabled*/ ctx[1]);
5950				}
5951
5952				if (!current || dirty & /*isDisabled*/ 2) {
5953					toggle_class(div, "zephr-payment-form-disabled-div", /*isDisabled*/ ctx[1]);
5954				}
5955
5956				const errormessage_changes = {};
5957				if (dirty & /*providerError, isComplete, error*/ 13) errormessage_changes.error = /*providerError*/ ctx[0]?.message ?? (/*isComplete*/ ctx[2] ? /*error*/ ctx[3] : "") ?? "";
5958				errormessage.$set(errormessage_changes);
5959			},
5960			i(local) {
5961				if (current) return;
5962				transition_in(errormessage.$$.fragment, local);
5963				current = true;
5964			},
5965			o(local) {
5966				transition_out(errormessage.$$.fragment, local);
5967				current = false;
5968			},
5969			d(detaching) {
5970				if (detaching) {
5971					detach(t0);
5972					detach(div);
5973					detach(t1);
5974				}
5975
5976				detach(script);
5977				destroy_component(errormessage, detaching);
5978			}
5979		};
5980	}
5981
5982	function instance$Y($$self, $$props, $$invalidate) {
5983		let { onMountCallback } = $$props;
5984		let { providerError } = $$props;
5985		let { isDisabled } = $$props;
5986		let { isComplete } = $$props;
5987		let { isLoaded } = $$props;
5988		let { error = null } = $$props;
5989		let { formKey } = $$props;
5990		const id = `stripe-element-${formKey}`;
5991		onMount(onMountCallback);
5992
5993		$$self.$$set = $$props => {
5994			if ('onMountCallback' in $$props) $$invalidate(5, onMountCallback = $$props.onMountCallback);
5995			if ('providerError' in $$props) $$invalidate(0, providerError = $$props.providerError);
5996			if ('isDisabled' in $$props) $$invalidate(1, isDisabled = $$props.isDisabled);
5997			if ('isComplete' in $$props) $$invalidate(2, isComplete = $$props.isComplete);
5998			if ('isLoaded' in $$props) $$invalidate(6, isLoaded = $$props.isLoaded);
5999			if ('error' in $$props) $$invalidate(3, error = $$props.error);
6000			if ('formKey' in $$props) $$invalidate(7, formKey = $$props.formKey);
6001		};
6002
6003		return [
6004			providerError,
6005			isDisabled,
6006			isComplete,
6007			error,
6008			id,
6009			onMountCallback,
6010			isLoaded,
6011			formKey
6012		];
6013	}
6014
6015	class StripePayment extends SvelteComponent {
6016		constructor(options) {
6017			super();
6018
6019			init(this, options, instance$Y, create_fragment$_, safe_not_equal, {
6020				onMountCallback: 5,
6021				providerError: 0,
6022				isDisabled: 1,
6023				isComplete: 2,
6024				isLoaded: 6,
6025				error: 3,
6026				formKey: 7
6027			});
6028		}
6029	}
6030
6031	/* src/components/elements/payment/stripe/StripeMobilePayment.svelte generated by Svelte v4.2.12 */
6032
6033	function create_if_block$E(ctx) {
6034		let script;
6035		let script_src_value;
6036
6037		return {
6038			c() {
6039				script = element("script");
6040				script.innerHTML = ``;
6041				if (!src_url_equal(script.src, script_src_value = "https://js.stripe.com/v3/")) attr(script, "src", script_src_value);
6042				attr(script, "onload", "window.stripeLoadCallback()");
6043			},
6044			m(target, anchor) {
6045				insert(target, script, anchor);
6046			},
6047			d(detaching) {
6048				if (detaching) {
6049					detach(script);
6050				}
6051			}
6052		};
6053	}
6054
6055	function create_fragment$Z(ctx) {
6056		let script;
6057		let script_src_value;
6058		let if_block_anchor;
6059		let t;
6060		let div;
6061		let if_block = !/*disableCoreDependencyHeader*/ ctx[1] && create_if_block$E();
6062
6063		return {
6064			c() {
6065				script = element("script");
6066				script.innerHTML = ``;
6067				if (if_block) if_block.c();
6068				if_block_anchor = empty();
6069				t = space();
6070				div = element("div");
6071				if (!src_url_equal(script.src, script_src_value = "https://pay.google.com/gp/p/js/pay.js")) attr(script, "src", script_src_value);
6072				attr(script, "onload", "window.googlePayLoadStripeCallback()");
6073				attr(div, "id", "stripe-mobile-pay-button");
6074				attr(div, "class", "svelte-12ehv8b");
6075				toggle_class(div, "zephr-form-disabled-div", /*isDisabled*/ ctx[0]);
6076				toggle_class(div, "zephr-payment-form-disabled-div", /*isDisabled*/ ctx[0]);
6077			},
6078			m(target, anchor) {
6079				append(document.head, script);
6080				if (if_block) if_block.m(document.head, null);
6081				append(document.head, if_block_anchor);
6082				insert(target, t, anchor);
6083				insert(target, div, anchor);
6084			},
6085			p(ctx, [dirty]) {
6086				if (!/*disableCoreDependencyHeader*/ ctx[1]) {
6087					if (if_block) ; else {
6088						if_block = create_if_block$E();
6089						if_block.c();
6090						if_block.m(if_block_anchor.parentNode, if_block_anchor);
6091					}
6092				} else if (if_block) {
6093					if_block.d(1);
6094					if_block = null;
6095				}
6096
6097				if (dirty & /*isDisabled*/ 1) {
6098					toggle_class(div, "zephr-form-disabled-div", /*isDisabled*/ ctx[0]);
6099				}
6100
6101				if (dirty & /*isDisabled*/ 1) {
6102					toggle_class(div, "zephr-payment-form-disabled-div", /*isDisabled*/ ctx[0]);
6103				}
6104			},
6105			i: noop,
6106			o: noop,
6107			d(detaching) {
6108				if (detaching) {
6109					detach(t);
6110					detach(div);
6111				}
6112
6113				detach(script);
6114				if (if_block) if_block.d(detaching);
6115				detach(if_block_anchor);
6116			}
6117		};
6118	}
6119
6120	function instance$X($$self, $$props, $$invalidate) {
6121		let { onMountCallback } = $$props;
6122		let { isDisabled } = $$props;
6123		let { disableCoreDependencyHeader } = $$props;
6124		onMount(onMountCallback);
6125
6126		$$self.$$set = $$props => {
6127			if ('onMountCallback' in $$props) $$invalidate(2, onMountCallback = $$props.onMountCallback);
6128			if ('isDisabled' in $$props) $$invalidate(0, isDisabled = $$props.isDisabled);
6129			if ('disableCoreDependencyHeader' in $$props) $$invalidate(1, disableCoreDependencyHeader = $$props.disableCoreDependencyHeader);
6130		};
6131
6132		return [isDisabled, disableCoreDependencyHeader, onMountCallback];
6133	}
6134
6135	class StripeMobilePayment extends SvelteComponent {
6136		constructor(options) {
6137			super();
6138
6139			init(this, options, instance$X, create_fragment$Z, safe_not_equal, {
6140				onMountCallback: 2,
6141				isDisabled: 0,
6142				disableCoreDependencyHeader: 1
6143			});
6144		}
6145	}
6146
6147	/* src/components/elements/Spinner.svelte generated by Svelte v4.2.12 */
6148
6149	function create_fragment$Y(ctx) {
6150		let div;
6151		let fa;
6152		let current;
6153
6154		fa = new Fa({
6155				props: { size: "2x", icon: faSpinner, spin: true }
6156			});
6157
6158		return {
6159			c() {
6160				div = element("div");
6161				create_component(fa.$$.fragment);
6162				attr(div, "class", "spinner-container svelte-1c5ov4v");
6163			},
6164			m(target, anchor) {
6165				insert(target, div, anchor);
6166				mount_component(fa, div, null);
6167				current = true;
6168			},
6169			p: noop,
6170			i(local) {
6171				if (current) return;
6172				transition_in(fa.$$.fragment, local);
6173				current = true;
6174			},
6175			o(local) {
6176				transition_out(fa.$$.fragment, local);
6177				current = false;
6178			},
6179			d(detaching) {
6180				if (detaching) {
6181					detach(div);
6182				}
6183
6184				destroy_component(fa);
6185			}
6186		};
6187	}
6188
6189	class Spinner extends SvelteComponent {
6190		constructor(options) {
6191			super();
6192			init(this, options, null, create_fragment$Y, safe_not_equal, {});
6193		}
6194	}
6195
6196	/* src/components/elements/payment/zuora/ZuoraPayment.svelte generated by Svelte v4.2.12 */
6197
6198	function create_if_block_1$s(ctx) {
6199		let spinner;
6200		let current;
6201		spinner = new Spinner({});
6202
6203		return {
6204			c() {
6205				create_component(spinner.$$.fragment);
6206			},
6207			m(target, anchor) {
6208				mount_component(spinner, target, anchor);
6209				current = true;
6210			},
6211			i(local) {
6212				if (current) return;
6213				transition_in(spinner.$$.fragment, local);
6214				current = true;
6215			},
6216			o(local) {
6217				transition_out(spinner.$$.fragment, local);
6218				current = false;
6219			},
6220			d(detaching) {
6221				destroy_component(spinner, detaching);
6222			}
6223		};
6224	}
6225
6226	// (19:4) {#if isBusy}
6227	function create_if_block$D(ctx) {
6228		let div;
6229		let spinner;
6230		let current;
6231		spinner = new Spinner({});
6232
6233		return {
6234			c() {
6235				div = element("div");
6236				create_component(spinner.$$.fragment);
6237				attr(div, "class", "spinner-overlay svelte-1vnsk3p");
6238			},
6239			m(target, anchor) {
6240				insert(target, div, anchor);
6241				mount_component(spinner, div, null);
6242				current = true;
6243			},
6244			i(local) {
6245				if (current) return;
6246				transition_in(spinner.$$.fragment, local);
6247				current = true;
6248			},
6249			o(local) {
6250				transition_out(spinner.$$.fragment, local);
6251				current = false;
6252			},
6253			d(detaching) {
6254				if (detaching) {
6255					detach(div);
6256				}
6257
6258				destroy_component(spinner);
6259			}
6260		};
6261	}
6262
6263	function create_fragment$X(ctx) {
6264		let t0;
6265		let div1;
6266		let t1;
6267		let div0;
6268		let div0_class_value;
6269		let div1_class_value;
6270		let t2;
6271		let div2;
6272		let t3;
6273		let errormessage;
6274		let current;
6275		let if_block0 = !/*isLoaded*/ ctx[2] && create_if_block_1$s();
6276		let if_block1 = /*isBusy*/ ctx[3] && create_if_block$D();
6277
6278		errormessage = new ErrorMessage({
6279				props: {
6280					error: /*providerError*/ ctx[1]?.message ?? /*error*/ ctx[4] ?? "",
6281					isPaymentForm: true
6282				}
6283			});
6284
6285		return {
6286			c() {
6287				if (if_block0) if_block0.c();
6288				t0 = space();
6289				div1 = element("div");
6290				if (if_block1) if_block1.c();
6291				t1 = space();
6292				div0 = element("div");
6293				t2 = space();
6294				div2 = element("div");
6295				t3 = space();
6296				create_component(errormessage.$$.fragment);
6297				attr(div0, "id", "zuora_payment");
6298
6299				attr(div0, "class", div0_class_value = "" + (null_to_empty(/*isDisabled*/ ctx[0]
6300				? "zuora-disabled-iframe-container zuora-dynamic-form-disabled"
6301				: "") + " svelte-1vnsk3p"));
6302
6303				attr(div1, "class", div1_class_value = "" + (null_to_empty(/*isBusy*/ ctx[3]
6304				? "zuora-dynamic-form-disabled form-wrapper"
6305				: "form-wrapper") + " svelte-1vnsk3p"));
6306
6307				attr(div2, "id", "core-style");
6308			},
6309			m(target, anchor) {
6310				if (if_block0) if_block0.m(target, anchor);
6311				insert(target, t0, anchor);
6312				insert(target, div1, anchor);
6313				if (if_block1) if_block1.m(div1, null);
6314				append(div1, t1);
6315				append(div1, div0);
6316				insert(target, t2, anchor);
6317				insert(target, div2, anchor);
6318				insert(target, t3, anchor);
6319				mount_component(errormessage, target, anchor);
6320				current = true;
6321			},
6322			p(ctx, [dirty]) {
6323				if (!/*isLoaded*/ ctx[2]) {
6324					if (if_block0) {
6325						if (dirty & /*isLoaded*/ 4) {
6326							transition_in(if_block0, 1);
6327						}
6328					} else {
6329						if_block0 = create_if_block_1$s();
6330						if_block0.c();
6331						transition_in(if_block0, 1);
6332						if_block0.m(t0.parentNode, t0);
6333					}
6334				} else if (if_block0) {
6335					group_outros();
6336
6337					transition_out(if_block0, 1, 1, () => {
6338						if_block0 = null;
6339					});
6340
6341					check_outros();
6342				}
6343
6344				if (/*isBusy*/ ctx[3]) {
6345					if (if_block1) {
6346						if (dirty & /*isBusy*/ 8) {
6347							transition_in(if_block1, 1);
6348						}
6349					} else {
6350						if_block1 = create_if_block$D();
6351						if_block1.c();
6352						transition_in(if_block1, 1);
6353						if_block1.m(div1, t1);
6354					}
6355				} else if (if_block1) {
6356					group_outros();
6357
6358					transition_out(if_block1, 1, 1, () => {
6359						if_block1 = null;
6360					});
6361
6362					check_outros();
6363				}
6364
6365				if (!current || dirty & /*isDisabled*/ 1 && div0_class_value !== (div0_class_value = "" + (null_to_empty(/*isDisabled*/ ctx[0]
6366				? "zuora-disabled-iframe-container zuora-dynamic-form-disabled"
6367				: "") + " svelte-1vnsk3p"))) {
6368					attr(div0, "class", div0_class_value);
6369				}
6370
6371				if (!current || dirty & /*isBusy*/ 8 && div1_class_value !== (div1_class_value = "" + (null_to_empty(/*isBusy*/ ctx[3]
6372				? "zuora-dynamic-form-disabled form-wrapper"
6373				: "form-wrapper") + " svelte-1vnsk3p"))) {
6374					attr(div1, "class", div1_class_value);
6375				}
6376
6377				const errormessage_changes = {};
6378				if (dirty & /*providerError, error*/ 18) errormessage_changes.error = /*providerError*/ ctx[1]?.message ?? /*error*/ ctx[4] ?? "";
6379				errormessage.$set(errormessage_changes);
6380			},
6381			i(local) {
6382				if (current) return;
6383				transition_in(if_block0);
6384				transition_in(if_block1);
6385				transition_in(errormessage.$$.fragment, local);
6386				current = true;
6387			},
6388			o(local) {
6389				transition_out(if_block0);
6390				transition_out(if_block1);
6391				transition_out(errormessage.$$.fragment, local);
6392				current = false;
6393			},
6394			d(detaching) {
6395				if (detaching) {
6396					detach(t0);
6397					detach(div1);
6398					detach(t2);
6399					detach(div2);
6400					detach(t3);
6401				}
6402
6403				if (if_block0) if_block0.d(detaching);
6404				if (if_block1) if_block1.d();
6405				destroy_component(errormessage, detaching);
6406			}
6407		};
6408	}
6409
6410	function instance$W($$self, $$props, $$invalidate) {
6411		let { onMountCallback } = $$props;
6412		let { isDisabled } = $$props;
6413		let { providerError } = $$props;
6414		let { isLoaded } = $$props;
6415		let { isBusy } = $$props;
6416		let { error = null } = $$props;
6417		onMount(onMountCallback);
6418
6419		$$self.$$set = $$props => {
6420			if ('onMountCallback' in $$props) $$invalidate(5, onMountCallback = $$props.onMountCallback);
6421			if ('isDisabled' in $$props) $$invalidate(0, isDisabled = $$props.isDisabled);
6422			if ('providerError' in $$props) $$invalidate(1, providerError = $$props.providerError);
6423			if ('isLoaded' in $$props) $$invalidate(2, isLoaded = $$props.isLoaded);
6424			if ('isBusy' in $$props) $$invalidate(3, isBusy = $$props.isBusy);
6425			if ('error' in $$props) $$invalidate(4, error = $$props.error);
6426		};
6427
6428		return [isDisabled, providerError, isLoaded, isBusy, error, onMountCallback];
6429	}
6430
6431	class ZuoraPayment extends SvelteComponent {
6432		constructor(options) {
6433			super();
6434
6435			init(this, options, instance$W, create_fragment$X, safe_not_equal, {
6436				onMountCallback: 5,
6437				isDisabled: 0,
6438				providerError: 1,
6439				isLoaded: 2,
6440				isBusy: 3,
6441				error: 4
6442			});
6443		}
6444	}
6445
6446	/* src/components/elements/payment/zuora/ZuoraPreLoader.svelte generated by Svelte v4.2.12 */
6447
6448	function create_fragment$W(ctx) {
6449		let script;
6450		let script_src_value;
6451
6452		return {
6453			c() {
6454				script = element("script");
6455				script.innerHTML = ``;
6456				attr(script, "type", "text/javascript");
6457				if (!src_url_equal(script.src, script_src_value = "https://static.zuora.com/Resources/libs/hosted/1.3.1/zuora-min.js")) attr(script, "src", script_src_value);
6458				attr(script, "onload", "window.zuoraLoadCallback()");
6459			},
6460			m(target, anchor) {
6461				append(document.head, script);
6462			},
6463			p: noop,
6464			i: noop,
6465			o: noop,
6466			d(detaching) {
6467				detach(script);
6468			}
6469		};
6470	}
6471
6472	function instance$V($$self, $$props, $$invalidate) {
6473		let { onMountCallback } = $$props;
6474		onMount(onMountCallback);
6475
6476		$$self.$$set = $$props => {
6477			if ('onMountCallback' in $$props) $$invalidate(0, onMountCallback = $$props.onMountCallback);
6478		};
6479
6480		return [onMountCallback];
6481	}
6482
6483	class ZuoraPreLoader extends SvelteComponent {
6484		constructor(options) {
6485			super();
6486			init(this, options, instance$V, create_fragment$W, safe_not_equal, { onMountCallback: 0 });
6487		}
6488	}
6489
6490	const paymentProviders = {
6491	    BRAINTREE: 'braintree',
6492	    STRIPE: 'stripe',
6493	    ZUORA: 'zuora-billing',
6494	};
6495
6496	const defaultHeaders = new Headers();
6497	defaultHeaders.append("Content-Type", "application/json");
6498	defaultHeaders.append("Accept", "application/json");
6499	const request = async (url, options, formActions, busyKey = null, clearFormErrors = false) => {
6500	    if (!clearFormErrors) {
6501	        formActions.updateFormState({
6502	            serverErrors: []
6503	        });
6504	    }
6505	    formActions.incrementRequestCount(busyKey);
6506	    try {
6507	        return await fetch(`${formActions.apiUrlBase}/${url}`, {
6508	            method: options.method,
6509	            body: options.bodyObject == null ? undefined : JSON.stringify(options.bodyObject),
6510	            headers: defaultHeaders,
6511	            credentials: "include"
6512	        });
6513	    }
6514	    finally {
6515	        formActions.decrementRequestCount(busyKey);
6516	    }
6517	};
6518
6519	const isOneOffPurchase = (paymentOption) => paymentOption.type === 'ONE_OFF';
6520	const getChangeSubscriptionPaymentConfiguration = (form, formState) => {
6521	    const paymentConfig = formConfigAs(form);
6522	    const environmentKey = formState.paymentOption?.virtualEnvironment || 'live';
6523	    if (formState.requiresPaymentMethodSetup && paymentConfig.paymentMethodSetupFormConfig) {
6524	        const setupConfig = paymentConfig.paymentMethodSetupFormConfig[environmentKey];
6525	        if (setupConfig) {
6526	            return setupConfig;
6527	        }
6528	    }
6529	    // Virtual environments for change subscription
6530	    if (paymentConfig.virtualEnvironmentsPaymentProviderFormConfig &&
6531	        formState.paymentOption?.virtualEnvironment) {
6532	        const envConfig = paymentConfig.virtualEnvironmentsPaymentProviderFormConfig[environmentKey];
6533	        if (envConfig) {
6534	            return envConfig;
6535	        }
6536	    }
6537	    // 3. Fallback to regular config
6538	    return paymentConfig.paymentProviderFormConfig;
6539	};
6540	const mapToPayRequest = (form, formState, paymentProvider, vendorFields) => {
6541	    if (formState.paymentOption.pricePointId) {
6542	        return {
6543	            url: `blaize/payment/${paymentProvider}/buy`,
6544	            body: {
6545	                product_id: formState.paymentOption.productId,
6546	                price_point_id: formState.paymentOption.slug,
6547	                discount_code: formState.promoCodeValid ? formState.promoCode : undefined,
6548	                ...vendorFields
6549	            }
6550	        };
6551	    }
6552	    let endpoint;
6553	    let method;
6554	    let changeSubscriptionBodyParams = {};
6555	    if (formConfigAs(form).changeSubscriptionMode || formState.convertCancelSubscriptionToAcceptOffer) {
6556	        let subscriptionExternalId;
6557	        if (formState.convertCancelSubscriptionToAcceptOffer) {
6558	            // For cancel save offers, use the selected subscription
6559	            subscriptionExternalId = formState.selectedSubscription.externalId;
6560	        }
6561	        else {
6562	            // For regular change subscription, find from validChangeFromPlans
6563	            const changingFromSubscription = formState
6564	                .validChangeFromPlans
6565	                .find(plan => formState.paymentOption.slug === plan.planSlug && formState.paymentOption.productId === plan.productId)
6566	                .changesFromSubscription;
6567	            subscriptionExternalId = changingFromSubscription.externalId;
6568	        }
6569	        endpoint = `subscriptions/${subscriptionExternalId}`;
6570	        method = 'PATCH';
6571	        changeSubscriptionBodyParams = {
6572	            navigated_from: `ChangeForm ${window.location.href}`
6573	        };
6574	    }
6575	    else if (isOneOffPurchase(formState.paymentOption)) {
6576	        endpoint = 'payment/buy';
6577	        method = 'POST';
6578	    }
6579	    else {
6580	        endpoint = 'subscribe';
6581	        method = 'POST';
6582	    }
6583	    return {
6584	        url: `zephr/${endpoint}`,
6585	        method,
6586	        body: {
6587	            product_id: formState.paymentOption.productId,
6588	            plan_id: formState.paymentOption.slug,
6589	            discount_code: formState.promoCodeValid ? formState.promoCode : undefined,
6590	            ...changeSubscriptionBodyParams,
6591	            vendor_fields: vendorFields ?? {}
6592	        }
6593	    };
6594	};
6595
6596	const tokenPath = 'blaize/payment/braintree/token';
6597	let braintreeInstance;
6598	const loadBraintree = new Promise(function (resolve) {
6599	    window.braintreeLoadCallback = resolve;
6600	});
6601	// https://braintree.github.io/braintree-web-drop-in/docs/current/module-braintree-web-drop-in.html#~paypalCreateOptions
6602	const paypalConfiguration = (formState) => ({
6603	    flow: formState.paymentOption.type === 'ONE_OFF' ? 'checkout' : 'vault',
6604	    singleUse: true,
6605	    buttonStyle: {
6606	        shape: 'rect',
6607	        size: 'medium'
6608	    },
6609	    // Show 'continue' button rather than 'pay now' on the PayPal modal
6610	    commit: false,
6611	    currency: formState.paymentOption.currencyCode.toLowerCase(),
6612	    amount: formState.paymentOptionPrices.totalPrice,
6613	});
6614	const getBraintreeToken = (formState, formActions) => request(tokenPath, {
6615	    method: "GET"
6616	}, formActions, null, true)
6617	    .then(response => response.json())
6618	    .then(json => json.token);
6619	const loadBraintreeUi = (form, formState, formActions) => {
6620	    const paypalEnabled = formConfigAs(form).paymentProviderFormConfig?.enablePaypal;
6621	    formActions.incrementRequestCount();
6622	    void loadBraintree
6623	        .then(() => getBraintreeToken(formState, formActions))
6624	        .then((braintreeToken) => {
6625	        window.braintree.dropin.create({
6626	            authorization: braintreeToken,
6627	            container: '#braintree-dropin-container',
6628	            ...(paypalEnabled ? {
6629	                paypal: paypalConfiguration(formState)
6630	            } : {})
6631	        }, (createErr, instance) => {
6632	            formActions.decrementRequestCount();
6633	            braintreeInstance = instance;
6634	            formActions.updateFormState({
6635	                paymentProviderFormLoaded: true,
6636	            });
6637	            if (createErr) {
6638	                throw createErr;
6639	            }
6640	            // If this is an existing user, they may already have a payment option and paymentMethodRequestable won't be fired
6641	            if (braintreeInstance.isPaymentMethodRequestable()) {
6642	                formActions.updateFormState({
6643	                    paymentFormComplete: true
6644	                });
6645	            }
6646	            braintreeInstance.on('paymentMethodRequestable', () => {
6647	                formActions.updateFormState({
6648	                    paymentFormComplete: true
6649	                });
6650	            });
6651	            braintreeInstance.on('noPaymentMethodRequestable', () => {
6652	                formActions.updateFormState({
6653	                    paymentFormComplete: false
6654	                });
6655	            });
6656	        });
6657	    }).catch(err => {
6658	        console.error(err);
6659	        formActions.decrementRequestCount();
6660	    });
6661	};
6662	const braintreePay = async (form, formState, formActions) => {
6663	    formActions.incrementRequestCount();
6664	    let resolveHandle, rejectHandle;
6665	    const promise = new Promise((resolve, reject) => { resolveHandle = resolve, rejectHandle = reject; });
6666	    const success = () => {
6667	        formActions.decrementRequestCount();
6668	        resolveHandle();
6669	    };
6670	    const errored = (err) => {
6671	        console.error(err);
6672	        formActions.decrementRequestCount();
6673	        rejectHandle();
6674	    };
6675	    braintreeInstance.requestPaymentMethod((err, payload) => {
6676	        if (err || !payload) {
6677	            errored(`Error requesting payment method ${JSON.stringify(err)}`);
6678	        }
6679	        const { url, body, method } = mapToPayRequest(form, formState, paymentProviders.BRAINTREE, {
6680	            payment_nonce: payload.nonce,
6681	            ...(payload.type === 'PayPalAccount' ? { paypal: true } : {})
6682	        });
6683	        return request(url, {
6684	            method,
6685	            bodyObject: body
6686	        }, formActions)
6687	            .then(response => {
6688	            if (response?.ok) {
6689	                success();
6690	                return;
6691	            }
6692	            errored(response);
6693	        }).catch((err) => {
6694	            errored(err);
6695	        });
6696	    });
6697	    return promise;
6698	};
6699	const braintreeChangePayment = async (form, formState, formActions) => {
6700	    let resolveHandle, rejectHandle;
6701	    const promise = new Promise((resolve, reject) => { resolveHandle = resolve, rejectHandle = reject; });
6702	    braintreeInstance.requestPaymentMethod((err, payload) => {
6703	        if (err || !payload) {
6704	            console.error(`Error requesting payment method ${JSON.stringify(err)}`);
6705	        }
6706	        return request(`blaize/payment/braintree/subscriptions/${formState.selectedSubscription?.externalId}`, {
6707	            method: 'PATCH',
6708	            bodyObject: {
6709	                payment_method_nonce: payload?.nonce,
6710	            }
6711	        }, formActions)
6712	            .then(response => {
6713	            console.log(response);
6714	            if (response?.ok) {
6715	                resolveHandle();
6716	                return;
6717	            }
6718	            rejectHandle(response);
6719	        }).catch((err) => {
6720	            rejectHandle(err);
6721	        });
6722	    });
6723	    return promise;
6724	};
6725
6726	/**
6727	 * Mobile (Social) payment services
6728	 *
6729	 * note: Using a string-backed enum here for better debug logging.
6730	 */
6731	var MobilePaymentService;
6732	(function (MobilePaymentService) {
6733	    MobilePaymentService["GOOGLE_PAY"] = "GOOGLE_PAY";
6734	    MobilePaymentService["APPLE_PAY"] = "APPLE_PAY";
6735	})(MobilePaymentService || (MobilePaymentService = {}));
6736
6737	const loadGooglePay$1 = new Promise(function (resolve) {
6738	    window.googlePayLoadBraintreeCallback = resolve;
6739	});
6740	const loadBraintreeApplePay = new Promise(function (resolve) {
6741	    window.applePayLoadBraintreeCallback = resolve;
6742	});
6743	const braintreePayWithMobile = (form, formState, formActions) => {
6744	    const { url, body, method } = mapToPayRequest(form, formState, paymentProviders.BRAINTREE, {
6745	        payment_nonce: formState.mobilePaymentMethodId,
6746	        vault_payment_method: true
6747	    });
6748	    return request(url, {
6749	        method,
6750	        bodyObject: body
6751	    }, formActions)
6752	        .then(response => {
6753	        if (!response?.ok) {
6754	            throw JSON.stringify(response);
6755	        }
6756	    });
6757	};
6758	const configureBraintreeMobilePayments = async (form, formState, formActions) => {
6759	    await configureBraintreeGooglePay(form, formState, formActions);
6760	    await configureBraintreeApplePay(form, formState, formActions);
6761	};
6762	const configureBraintreeGooglePay = (form, formState, formActions) => {
6763	    const braintreeMobilePaymentConfig = JSON.parse(form.organisationConfiguration?.braintreeMobilePaymentConfig ?? "{}");
6764	    let googlePaymentsClient;
6765	    return loadGooglePay$1
6766	        .then(() => {
6767	        const container = document.getElementById('google-pay-button');
6768	        // Empty the container
6769	        while (container.firstChild) {
6770	            container.removeChild(container.lastChild);
6771	        }
6772	        // No need to show the user any errors here just hide the button
6773	        if (!braintreeMobilePaymentConfig?.google) {
6774	            container.style.display = 'none';
6775	            console.error("Braintree Mobile payments are not configured in the console");
6776	            return;
6777	        }
6778	        formState = formActions.getFormState();
6779	        googlePaymentsClient = new window.google.payments.api.PaymentsClient({
6780	            environment: form.organisationConfiguration.braintreeSandboxEnv ? 'TEST' : 'PRODUCTION'
6781	        });
6782	        void loadBraintree
6783	            .then(() => getBraintreeToken(formState, formActions))
6784	            .then((braintreeToken) => {
6785	            window.braintree.client.create({
6786	                authorization: braintreeToken
6787	            }, (createErr, clientInstance) => {
6788	                // Empty the container
6789	                while (container.firstChild) {
6790	                    container.removeChild(container.lastChild);
6791	                }
6792	                if (createErr) {
6793	                    // No need to show the user any errors here just hide the button
6794	                    console.error("Error creating braintree client", createErr);
6795	                    container.style.display = 'none';
6796	                    return;
6797	                }
6798	                window.braintree.googlePayment.create({
6799	                    client: clientInstance,
6800	                    googlePayVersion: 2,
6801	                    googleMerchantId: braintreeMobilePaymentConfig.google.googleMerchantId
6802	                }, (googlePaymentErr, googlePaymentInstance) => {
6803	                    if (googlePaymentErr) {
6804	                        // No need to show the user any errors here just hide the button
6805	                        console.error("Error creating braintree client", googlePaymentErr);
6806	                        container.style.display = 'none';
6807	                        return;
6808	                    }
6809	                    googlePaymentsClient.isReadyToPay({
6810	                        apiVersion: 2,
6811	                        apiVersionMinor: 0,
6812	                        allowedPaymentMethods: googlePaymentInstance.createPaymentDataRequest().allowedPaymentMethods,
6813	                        existingPaymentMethodRequired: true,
6814	                    }).then((response) => {
6815	                        if (!response.result || !response.paymentMethodPresent) {
6816	                            container.style.display = 'none';
6817	                            console.error(response.paymentMethodPresent ? "Google Pay supp
6817ort not found" : "No payment method");
6818	                            formActions.updateFormState({
6819	                                serverErrors: [ServerError.MOBILE_PAYMENT_PROCESSING_ERROR]
6820	                            });
6821	                            logDataLayerEvent(form, 'zephr_form_error', {
6822	                                error: ServerError[ServerError.MOBILE_PAYMENT_PROCESSING_ERROR],
6823	                            });
6824	                        }
6825	                        container.appendChild(googlePaymentsClient.createButton({
6826	                            buttonColor: 'default',
6827	                            buttonType: 'plain',
6828	                            buttonSizeMode: 'fill',
6829	                            onClick: () => {
6830	                                onClickPaymentButton$1(form, formState, formActions, googlePaymentInstance, googlePaymentsClient);
6831	                            },
6832	                        }));
6833	                    });
6834	                });
6835	            });
6836	        });
6837	    });
6838	};
6839	const onClickPaymentButton$1 = (form, formState, formActions, googlePaymentInstance, googlePaymentsClient) => {
6840	    formActions.updateFormState({
6841	        mobilePaymentService: MobilePaymentService.GOOGLE_PAY,
6842	        serverErrors: [],
6843	    });
6844	    const paymentDataRequest = googlePaymentInstance.createPaymentDataRequest({
6845	        transactionInfo: {
6846	            currencyCode: formState.paymentOption.currencyCode,
6847	            totalPriceStatus: 'FINAL',
6848	            totalPrice: formState.paymentOptionPrices.totalPrice.toFixed(2)
6849	        },
6850	        emailRequired: false,
6851	        shippingAddressRequired: false
6852	    });
6853	    googlePaymentsClient.loadPaymentData(paymentDataRequest).then(function (paymentData) {
6854	        googlePaymentInstance.parseResponse(paymentData, (err, result) => {
6855	            if (err || !result.nonce) {
6856	                formActions.updateFormState({
6857	                    serverErrors: [ServerError.MOBILE_PAYMENT_PROCESSING_ERROR],
6858	                    mobilePaymentService: null,
6859	                });
6860	                console.error('Error requesting payment data', err, result);
6861	                logDataLayerEvent(form, 'zephr_form_error', {
6862	                    error: ServerError[ServerError.MOBILE_PAYMENT_PROCESSING_ERROR],
6863	                });
6864	                return;
6865	            }
6866	            formActions.updateFormState({
6867	                mobilePaymentMethodId: result.nonce
6868	            });
6869	            formActions.completeSection();
6870	        });
6871	    }).catch(function (err) {
6872	        // If we get heree, the user may have just closed the modal without paying.
6873	        // Not sure if we should be showing an error in that case, but we cant distinguish
6874	        // it from other failure cases https://developers.google.com/pay/api/web/reference/client#errors_1 
6875	        console.warn('Error requesting payment data', err);
6876	        formActions.updateFormState({
6877	            mobilePaymentService: null,
6878	            serverErrors: [ServerError.MOBILE_PAYMENT_PROCESSING_ERROR],
6879	        });
6880	        logDataLayerEvent(form, 'zephr_form_error', {
6881	            error: ServerError[ServerError.MOBILE_PAYMENT_PROCESSING_ERROR],
6882	        });
6883	    });
6884	};
6885	const configureBraintreeApplePay = (form, formState, formActions) => {
6886	    const apple_container = document.getElementById('apple_pay_button');
6887	    while (apple_container.firstChild) {
6888	        apple_container.removeChild(apple_container.lastChild);
6889	    }
6890	    return loadBraintreeApplePay
6891	        .then(() => {
6892	        if (!(window.ApplePaySession && window.ApplePaySession.supportsVersion(3) && window.ApplePaySession.canMakePayments())) {
6893	            apple_container.style.display = 'none';
6894	            console.log('Cannot make payments with Apple Pay');
6895	            return;
6896	        }
6897	        return loadBraintree
6898	            .then(() => getBraintreeToken(formState, formActions))
6899	            .then((braintreeToken) => {
6900	            window.braintree.client.create({
6901	                authorization: braintreeToken
6902	            }, (clientErr, clientInstance) => {
6903	                if (clientErr) {
6904	                    apple_container.style.display = 'none';
6905	                    console.error('Error creating braintree client:', clientErr);
6906	                    return;
6907	                }
6908	                window.braintree.applePay.create({
6909	                    client: clientInstance
6910	                }, function (applePayErr, applePayInstance) {
6911	                    while (apple_container.firstChild) {
6912	                        apple_container.removeChild(apple_container.lastChild);
6913	                    }
6914	                    if (applePayErr) {
6915	                        apple_container.style.display = 'none';
6916	                        console.error('Error creating applePayInstance:', applePayErr);
6917	                        return;
6918	                    }
6919	                    const paymentRequest = applePayInstance.createPaymentRequest({
6920	                        total: {
6921	                            label: formState.paymentOption.label,
6922	                            amount: formState.paymentOptionPrices.totalPrice.toFixed(2)
6923	                        }
6924	                    });
6925	                    const applePayDiv = document.createElement("div");
6926	                    applePayDiv.classList.add("apple-pay-button");
6927	                    applePayDiv.classList.add("apple-pay-button-black");
6928	                    apple_container.appendChild(applePayDiv);
6929	                    applePayDiv.addEventListener('click', function () {
6930	                        onClickApplePayment(form, formState, formActions, paymentRequest, applePayInstance);
6931	                    });
6932	                });
6933	            });
6934	        });
6935	    });
6936	};
6937	const onClickApplePayment = (form, formState, formActions, paymentRequest, applePayInstance) => {
6938	    formActions.updateFormState({
6939	        mobilePaymentService: MobilePaymentService.APPLE_PAY,
6940	        serverErrors: [],
6941	    });
6942	    const session = new ApplePaySession(3, paymentRequest);
6943	    session.onvalidatemerchant = function (event) {
6944	        applePayInstance.performValidation({
6945	            validationURL: event.validationURL,
6946	            displayName: formState.paymentOption.label
6947	        }, function (err, merchantSession) {
6948	            if (err) {
6949	                formActions.updateFormState({
6950	                    serverErrors: [ServerError.MOBILE_PAYMENT_PROCESSING_ERROR],
6951	                    mobilePaymentService: null,
6952	                });
6953	                console.log('err in onvalidatemerchant in apple pay configuration: ', err);
6954	                logDataLayerEvent(form, 'zephr_form_error', {
6955	                    error: ServerError[ServerError.MOBILE_PAYMENT_PROCESSING_ERROR],
6956	                });
6957	                return;
6958	            }
6959	            session.completeMerchantValidation(merchantSession);
6960	        });
6961	    };
6962	    session.onpaymentauthorized = function (event) {
6963	        applePayInstance.tokenize({
6964	            token: event.payment.token
6965	        }, function (tokenizeErr, payload) {
6966	            if (tokenizeErr) {
6967	                formActions.updateFormState({
6968	                    serverErrors: [ServerError.MOBILE_PAYMENT_PROCESSING_ERROR],
6969	                    mobilePaymentService: null,
6970	                });
6971	                console.error('Error tokenizing Apple Pay:', tokenizeErr);
6972	                logDataLayerEvent(form, 'zephr_form_error', {
6973	                    error: ServerError[ServerError.MOBILE_PAYMENT_PROCESSING_ERROR],
6974	                });
6975	                session.completePayment(ApplePaySession.STATUS_FAILURE);
6976	                return;
6977	            }
6978	            formActions.updateFormState({
6979	                mobilePaymentMethodId: payload.nonce
6980	            });
6981	            formActions.completeSection();
6982	            session.completePayment(ApplePaySession.STATUS_SUCCESS);
6983	        });
6984	    };
6985	    session.begin();
6986	};
6987
6988	const invalidCurrencySymbol = '¤';
6989	const roundingErrorSmallNumber = 0.00001;
6990	const formatFromCurrencyCode = (price, currencyCode) => new Intl.NumberFormat(undefined, {
6991	    style: 'currency',
6992	    currency: currencyCode,
6993	    minimumFractionDigits: Math.abs(price) % 1 < roundingErrorSmallNumber ? 0 : undefined,
6994	    maximumFractionDigits: Math.abs(price) % 1 < roundingErrorSmallNumber ? 0 : 2,
6995	}).format(price);
6996	const formatFromCurrencySymbol = (price, currencySymbol) => currencySymbol?.length === 1 ?
6997	    `${currencySymbol}${price}` :
6998	    `${price} ${currencySymbol}`.trim();
6999	/**
7000	 * currency might either be a symbol ($,£,etc) or a code (GBP,EUR)
7001	 */
7002	const formatCurrency = (price, currency) => {
7003	    try {
7004	        if (currency?.length === 3) {
7005	            const formatted = formatFromCurrencyCode(price, currency);
7006	            if (!formatted.includes(invalidCurrencySymbol)) {
7007	                return formatted;
7008	            }
7009	        }
7010	    }
7011	    catch (e) {
7012	        console.warn(`Error formatting currency for symbol ${currency}`, e);
7013	    }
7014	    return formatFromCurrencySymbol(price, currency);
7015	};
7016
7017	const getProductAddons = async (form, formState, formActions, skipMobileReload = false) => {
7018	    const providerConfig = paymentProviderFor(form.organisationConfiguration.paymentProvider);
7019	    if (!providerConfig.hasProductAddons || !(formState.loginRegistrationComplete || formState.userSession)) {
7020	        return Promise.resolve(formState);
7021	    }
7022	    return request(providerConfig.productAddonPath, {
7023	        method: 'POST',
7024	        bodyObject: {
7025	            promoCode: formState.promoCodeValid ? formState.promoCode : null,
7026	            paymentOptions: formConfigAs(form).paymentOptions
7027	        }
7028	    }, formActions, null, true)
7029	        .then(async (response) => {
7030	        if (!response.ok) {
7031	            console.log("error loading product addons", response);
7032	            logDataLayerEvent(form, 'zephr_form_error', {
7033	                error: ServerError[ServerError.UNKNOWN],
7034	            });
7035	            return formActions.updateFormState({
7036	                addons: [],
7037	                serverErrors: [ServerError.UNKNOWN]
7038	            });
7039	        }
7040	        const json = await response.json();
7041	        try {
7042	            const addons = json.map(addon => ({
7043	                id: addon.id,
7044	                label: addon.label,
7045	                planPrices: addon.paymentOptions.map(planAddon => ({
7046	                    planSlug: planAddon.slug,
7047	                    productId: planAddon.productId,
7048	                    addonPrice: planAddon.addonPrice
7049	                }))
7050	            }));
7051	            return formActions.updateFormState({
7052	                addons
7053	            });
7054	        }
7055	        catch (err) {
7056	            console.error("Error parsing product addons response", err, json);
7057	            return formState;
7058	        }
7059	    }).then(async (updatedFormState) => {
7060	        if (!skipMobileReload) {
7061	            await afterProductAddonChange(form, updatedFormState, formActions);
7062	        }
7063	        return updatedFormState;
7064	    });
7065	};
7066	/*
7067	If we're using mobile payment and we're on the payment screen,
7068	we'll need to reload the mobile payment button so it has the discounted amount
7069	and make sure they can't press the button while the button is updating
7070	*/
7071	const afterProductAddonChange = async (form, formState, formActions) => {
7072	    if (formState.currentSection.elements.some(element => element.type === elementTypes.MOBILE_PAYMENT && element.config?.enabled !== false)) {
7073	        formActions.incrementRequestCount();
7074	        try {
7075	            // Only reload mobile payment service if the provider actually supports mobile payments
7076	            if (supportsMobilePayments(form.organisationConfiguration.paymentProvider)) {
7077	                await mobilePaymentServiceFor(form.organisationConfiguration.paymentProvider).loader(form, formState, formActions);
7078	            }
7079	        }
7080	        finally {
7081	            formActions.decrementRequestCount();
7082	        }
7083	    }
7084	};
7085	const addonsForPlan = (formState) => formState.addons.map(addon => {
7086	    const plan = addon.planPrices
7087	        .find(plan => plan.planSlug === formState.paymentOption.slug && plan.productId === formState.paymentOption.productId);
7088	    return plan && {
7089	        label: addon.label,
7090	        addonPrice: plan.addonPrice,
7091	        addonPriceFormattedString: formatCurrency(plan.addonPrice, formState.paymentOption.currencyCode)
7092	    };
7093	}).filter(o => o);
7094
7095	/**
7096	 * Calculate the actual prices for a payment option, considering:
7097	 * - The payment option
7098	 * - Discount code
7099	 *
7100	 * Try not to run the calculation if the inputs have not changed from the previous calculation.
7101	 */
7102	const calculatePrices = async (form, formState, formActions) => {
7103	    if (formState.paymentOptionPrices != null
7104	        && formState.paymentOptionPrices.productId === formState.paymentOption.productId
7105	        && formState.paymentOptionPrices.slug === formState.paymentOption.slug
7106	        && formState.paymentOptionPrices.promoCode === formState.promoCode
7107	        && formState.paymentOptionPrices.addonPrices == addonsForPlan(formState)
7108	        && formState.paymentOptionPrices.billingAddress.country === formState.billingAddress.country
7109	        && formState.paymentOptionPrices.billingAddress.postalCode === formState.billingAddress.postalCode
7110	        // // This is a bit of a fudge but we know that there are only addons for braintree where the price calculation is non-io
7111	        && formState.paymentOptionPrices.addonPrices.length == 0
7112	        && addonsForPlan(formState).length == 0) {
7113	        return formState;
7114	    }
7115	    formActions.updateFormState({
7116	        paymentOptionPrices: null
7117	    });
7118	    const paymentOptionPrices = await paymentProviderFor(form.organisationConfiguration.paymentProvider).priceCalculator(form, formState, formActions);
7119	    return formActions.updateFormState({
7120	        paymentOptionPrices
7121	    });
7122	};
7123
7124	// See https://stripe.com/docs/currencies
7125	const currencies = [
7126	    "BIF",
7127	    "CLP",
7128	    "DJF",
7129	    "GNF",
7130	    "JPY",
7131	    "KMF",
7132	    "KRW",
7133	    "MGA",
7134	    "PYG",
7135	    "RWF",
7136	    "UGX",
7137	    "VND",
7138	    "VUV",
7139	    "XAF",
7140	    "XOF",
7141	    "XPF",
7142	];
7143	const isZeroDecimalCurrency = currencyCode => currencies.includes(currencyCode);
7144
7145	const stripePaymentElementAppearance = (siteStyles) => {
7146	    const stylesObj = JSON.parse(siteStyles ?? "{}");
7147	    return {
7148	        variables: {
7149	            color: stylesObj?.color?.text?.main ?? '#32325d',
7150	            fontFamily: `${stylesObj?.typography?.body?.font}, ${stylesObj?.typography?.body?.fallbackFont},  "Helvetica Neue", Helvetica, sans-serif`,
7151	            fontSmooth: 'always',
7152	            fontSizeBase: '16px',
7153	            colorWarningText: stylesObj?.color?.warning?.main ?? '#fa755a',
7154	            colorIconCardError: stylesObj?.color?.warning?.main ?? '#fa755a',
7155	            borderRadius: `${(stylesObj?.input?.borderRadius ?? '4')}px`
7156	        },
7157	        rules: {
7158	            '.Input::placeholder': {
7159	                color: '#aab7c4'
7160	            },
7161	        }
7162	    };
7163	};
7164	const stripeCardElementStyle = {
7165	    base: {
7166	        color: '#32325d',
7167	        fontFamily: '"Helvetica Neue", Helvetica, sans-serif',
7168	        fontSmoothing: 'antialiased',
7169	        fontSize: '16px',
7170	        '::placeholder': {
7171	            color: '#aab7c4'
7172	        }
7173	    },
7174	    invalid: {
7175	        color: '#fa755a',
7176	        iconColor: '#fa755a'
7177	    }
7178	};
7179	const createStripePaymentElement = (stripe, form, formActions) => {
7180	    const formState = formActions.getFormState();
7181	    const currencyMultiplier = isZeroDecimalCurrency(formState.paymentOption.currencyCode.toUpperCase()) ? 1 : 100;
7182	    const elements = stripe.elements({
7183	        mode: 'payment',
7184	        currency: formState.paymentOption.currencyCode.toLowerCase(),
7185	        amount: parseFloat((formState.paymentOptionPrices.totalPrice * currencyMultiplier).toFixed(2)),
7186	        setup_future_usage: 'off_session',
7187	        appearance: stripePaymentElementAppearance(form.organisationConfiguration.siteStyles),
7188	        paymentMethodTypes: ['card']
7189	    });
7190	    return elements.create('payment', {
7191	        terms: {
7192	            card: 'never'
7193	        },
7194	        wallets: {
7195	            applePay: 'never',
7196	            googlePay: 'never'
7197	        }
7198	    });
7199	};
7200	const createStripeCardElement = (stripe) => {
7201	    return stripe.elements().create('card', { style: stripeCardElementStyle });
7202	};
7203	const createStripeElement = (stripe, form, formActions) => {
7204	    if (form.organisationConfiguration.stripeAutomaticTaxEnabled && form.formType !== FormType.LIST_SUBSCRIPTIONS
7205	        || formConfigAs(form).paymentProviderFormConfig?.usePaymentElement) {
7206	        return createStripePaymentElement(stripe, form, formActions);
7207	    }
7208	    else {
7209	        return createStripeCardElement(stripe);
7210	    }
7211	};
7212
7213	/*!
7214	 * mustache.js - Logic-less {{mustache}} templates with JavaScript
7215	 * http://github.com/janl/mustache.js
7216	 */
7217
7218	var objectToString = Object.prototype.toString;
7219	var isArray = Array.isArray || function isArrayPolyfill (object) {
7220	  return objectToString.call(object) === '[object Array]';
7221	};
7222
7223	function isFunction (object) {
7224	  return typeof object === 'function';
7225	}
7226
7227	/**
7228	 * More correct typeof string handling array
7229	 * which normally returns typeof 'object'
7230	 */
7231	function typeStr (obj) {
7232	  return isArray(obj) ? 'array' : typeof obj;
7233	}
7234
7235	function escapeRegExp (string) {
7236	  return string.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, '\\$&');
7237	}
7238
7239	/**
7240	 * Null safe way of checking whether or not an object,
7241	 * including its prototype, has a given property
7242	 */
7243	function hasProperty (obj, propName) {
7244	  return obj != null && typeof obj === 'object' && (propName in obj);
7245	}
7246
7247	/**
7248	 * Safe way of detecting whether or not the given thing is a primitive and
7249	 * whether it has the given property
7250	 */
7251	function primitiveHasOwnProperty (primitive, propName) {
7252	  return (
7253	    primitive != null
7254	    && typeof primitive !== 'object'
7255	    && primitive.hasOwnProperty
7256	    && primitive.hasOwnProperty(propName)
7257	  );
7258	}
7259
7260	// Workaround for https://issues.apache.org/jira/browse/COUCHDB-577
7261	// See https://github.com/janl/mustache.js/issues/189
7262	var regExpTest = RegExp.prototype.test;
7263	function testRegExp (re, string) {
7264	  return regExpTest.call(re, string);
7265	}
7266
7267	var nonSpaceRe = /\S/;
7268	function isWhitespace (string) {
7269	  return !testRegExp(nonSpaceRe, string);
7270	}
7271
7272	var entityMap = {
7273	  '&': '&amp;',
7274	  '<': '&lt;',
7275	  '>': '&gt;',
7276	  '"': '&quot;',
7277	  "'": '&#39;',
7278	  '/': '&#x2F;',
7279	  '`': '&#x60;',
7280	  '=': '&#x3D;'
7281	};
7282
7283	function escapeHtml (string) {
7284	  return String(string).replace(/[&<>
vendor: 18,467 bytes, lines 7284-7847
7284"'`=\/]/g, function fromEntityMap (s) {
7285	    return entityMap[s];
7286	  });
7287	}
7288
7289	var whiteRe = /\s*/;
7290	var spaceRe = /\s+/;
7291	var equalsRe = /\s*=/;
7292	var curlyRe = /\s*\}/;
7293	var tagRe = /#|\^|\/|>|\{|&|=|!/;
7294
7295	/**
7296	 * Breaks up the given `template` string into a tree of tokens. If the `tags`
7297	 * argument is given here it must be an array with two string values: the
7298	 * opening and closing tags used in the template (e.g. [ "<%", "%>" ]). Of
7299	 * course, the default is to use mustaches (i.e. mustache.tags).
7300	 *
7301	 * A token is an array with at least 4 elements. The first element is the
7302	 * mustache symbol that was used inside the tag, e.g. "#" or "&". If the tag
7303	 * did not contain a symbol (i.e. {{myValue}}) this element is "name". For
7304	 * all text that appears outside a symbol this element is "text".
7305	 *
7306	 * The second element of a token is its "value". For mustache tags this is
7307	 * whatever else was inside the tag besides the opening symbol. For text tokens
7308	 * this is the text itself.
7309	 *
7310	 * The third and fourth elements of the token are the start and end indices,
7311	 * respectively, of the token in the original template.
7312	 *
7313	 * Tokens that are the root node of a subtree contain two more elements: 1) an
7314	 * array of tokens in the subtree and 2) the index in the original template at
7315	 * which the closing tag for that section begins.
7316	 *
7317	 * Tokens for partials also contain two more elements: 1) a string value of
7318	 * indendation prior to that tag and 2) the index of that tag on that line -
7319	 * eg a value of 2 indicates the partial is the third tag on this line.
7320	 */
7321	function parseTemplate (template, tags) {
7322	  if (!template)
7323	    return [];
7324	  var lineHasNonSpace = false;
7325	  var sections = [];     // Stack to hold section tokens
7326	  var tokens = [];       // Buffer to hold the tokens
7327	  var spaces = [];       // Indices of whitespace tokens on the current line
7328	  var hasTag = false;    // Is there a {{tag}} on the current line?
7329	  var nonSpace = false;  // Is there a non-space char on the current line?
7330	  var indentation = '';  // Tracks indentation for tags that use it
7331	  var tagIndex = 0;      // Stores a count of number of tags encountered on a line
7332
7333	  // Strips all whitespace tokens array for the current line
7334	  // if there was a {{#tag}} on it and otherwise only space.
7335	  function stripSpace () {
7336	    if (hasTag && !nonSpace) {
7337	      while (spaces.length)
7338	        delete tokens[spaces.pop()];
7339	    } else {
7340	      spaces = [];
7341	    }
7342
7343	    hasTag = false;
7344	    nonSpace = false;
7345	  }
7346
7347	  var openingTagRe, closingTagRe, closingCurlyRe;
7348	  function compileTags (tagsToCompile) {
7349	    if (typeof tagsToCompile === 'string')
7350	      tagsToCompile = tagsToCompile.split(spaceRe, 2);
7351
7352	    if (!isArray(tagsToCompile) || tagsToCompile.length !== 2)
7353	      throw new Error('Invalid tags: ' + tagsToCompile);
7354
7355	    openingTagRe = new RegExp(escapeRegExp(tagsToCompile[0]) + '\\s*');
7356	    closingTagRe = new RegExp('\\s*' + escapeRegExp(tagsToCompile[1]));
7357	    closingCurlyRe = new RegExp('\\s*' + escapeRegExp('}' + tagsToCompile[1]));
7358	  }
7359
7360	  compileTags(tags || mustache.tags);
7361
7362	  var scanner = new Scanner(template);
7363
7364	  var start, type, value, chr, token, openSection;
7365	  while (!scanner.eos()) {
7366	    start = scanner.pos;
7367
7368	    // Match any text between tags.
7369	    value = scanner.scanUntil(openingTagRe);
7370
7371	    if (value) {
7372	      for (var i = 0, valueLength = value.length; i < valueLength; ++i) {
7373	        chr = value.charAt(i);
7374
7375	        if (isWhitespace(chr)) {
7376	          spaces.push(tokens.length);
7377	          indentation += chr;
7378	        } else {
7379	          nonSpace = true;
7380	          lineHasNonSpace = true;
7381	          indentation += ' ';
7382	        }
7383
7384	        tokens.push([ 'text', chr, start, start + 1 ]);
7385	        start += 1;
7386
7387	        // Check for whitespace on the current line.
7388	        if (chr === '\n') {
7389	          stripSpace();
7390	          indentation = '';
7391	          tagIndex = 0;
7392	          lineHasNonSpace = false;
7393	        }
7394	      }
7395	    }
7396
7397	    // Match the opening tag.
7398	    if (!scanner.scan(openingTagRe))
7399	      break;
7400
7401	    hasTag = true;
7402
7403	    // Get the tag type.
7404	    type = scanner.scan(tagRe) || 'name';
7405	    scanner.scan(whiteRe);
7406
7407	    // Get the tag value.
7408	    if (type === '=') {
7409	      value = scanner.scanUntil(equalsRe);
7410	      scanner.scan(equalsRe);
7411	      scanner.scanUntil(closingTagRe);
7412	    } else if (type === '{') {
7413	      value = scanner.scanUntil(closingCurlyRe);
7414	      scanner.scan(curlyRe);
7415	      scanner.scanUntil(closingTagRe);
7416	      type = '&';
7417	    } else {
7418	      value = scanner.scanUntil(closingTagRe);
7419	    }
7420
7421	    // Match the closing tag.
7422	    if (!scanner.scan(closingTagRe))
7423	      throw new Error('Unclosed tag at ' + scanner.pos);
7424
7425	    if (type == '>') {
7426	      token = [ type, value, start, scanner.pos, indentation, tagIndex, lineHasNonSpace ];
7427	    } else {
7428	      token = [ type, value, start, scanner.pos ];
7429	    }
7430	    tagIndex++;
7431	    tokens.push(token);
7432
7433	    if (type === '#' || type === '^') {
7434	      sections.push(token);
7435	    } else if (type === '/') {
7436	      // Check section nesting.
7437	      openSection = sections.pop();
7438
7439	      if (!openSection)
7440	        throw new Error('Unopened section "' + value + '" at ' + start);
7441
7442	      if (openSection[1] !== value)
7443	        throw new Error('Unclosed section "' + openSection[1] + '" at ' + start);
7444	    } else if (type === 'name' || type === '{' || type === '&') {
7445	      nonSpace = true;
7446	    } else if (type === '=') {
7447	      // Set the tags for the next time around.
7448	      compileTags(value);
7449	    }
7450	  }
7451
7452	  stripSpace();
7453
7454	  // Make sure there are no open sections when we're done.
7455	  openSection = sections.pop();
7456
7457	  if (openSection)
7458	    throw new Error('Unclosed section "' + openSection[1] + '" at ' + scanner.pos);
7459
7460	  return nestTokens(squashTokens(tokens));
7461	}
7462
7463	/**
7464	 * Combines the values of consecutive text tokens in the given `tokens` array
7465	 * to a single token.
7466	 */
7467	function squashTokens (tokens) {
7468	  var squashedTokens = [];
7469
7470	  var token, lastToken;
7471	  for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {
7472	    token = tokens[i];
7473
7474	    if (token) {
7475	      if (token[0] === 'text' && lastToken && lastToken[0] === 'text') {
7476	        lastToken[1] += token[1];
7477	        lastToken[3] = token[3];
7478	      } else {
7479	        squashedTokens.push(token);
7480	        lastToken = token;
7481	      }
7482	    }
7483	  }
7484
7485	  return squashedTokens;
7486	}
7487
7488	/**
7489	 * Forms the given array of `tokens` into a nested tree structure where
7490	 * tokens that represent a section have two additional items: 1) an array of
7491	 * all tokens that appear in that section and 2) the index in the original
7492	 * template that represents the end of that section.
7493	 */
7494	function nestTokens (tokens) {
7495	  var nestedTokens = [];
7496	  var collector = nestedTokens;
7497	  var sections = [];
7498
7499	  var token, section;
7500	  for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {
7501	    token = tokens[i];
7502
7503	    switch (token[0]) {
7504	      case '#':
7505	      case '^':
7506	        collector.push(token);
7507	        sections.push(token);
7508	        collector = token[4] = [];
7509	        break;
7510	      case '/':
7511	        section = sections.pop();
7512	        section[5] = token[2];
7513	        collector = sections.length > 0 ? sections[sections.length - 1][4] : nestedTokens;
7514	        break;
7515	      default:
7516	        collector.push(token);
7517	    }
7518	  }
7519
7520	  return nestedTokens;
7521	}
7522
7523	/**
7524	 * A simple string scanner that is used by the template parser to find
7525	 * tokens in template strings.
7526	 */
7527	function Scanner (string) {
7528	  this.string = string;
7529	  this.tail = string;
7530	  this.pos = 0;
7531	}
7532
7533	/**
7534	 * Returns `true` if the tail is empty (end of string).
7535	 */
7536	Scanner.prototype.eos = function eos () {
7537	  return this.tail === '';
7538	};
7539
7540	/**
7541	 * Tries to match the given regular expression at the current position.
7542	 * Returns the matched text if it can match, the empty string otherwise.
7543	 */
7544	Scanner.prototype.scan = function scan (re) {
7545	  var match = this.tail.match(re);
7546
7547	  if (!match || match.index !== 0)
7548	    return '';
7549
7550	  var string = match[0];
7551
7552	  this.tail = this.tail.substring(string.length);
7553	  this.pos += string.length;
7554
7555	  return string;
7556	};
7557
7558	/**
7559	 * Skips all text until the given regular expression can be matched. Returns
7560	 * the skipped string, which is the entire tail if no match can be made.
7561	 */
7562	Scanner.prototype.scanUntil = function scanUntil (re) {
7563	  var index = this.tail.search(re), match;
7564
7565	  switch (index) {
7566	    case -1:
7567	      match = this.tail;
7568	      this.tail = '';
7569	      break;
7570	    case 0:
7571	      match = '';
7572	      break;
7573	    default:
7574	      match = this.tail.substring(0, index);
7575	      this.tail = this.tail.substring(index);
7576	  }
7577
7578	  this.pos += match.length;
7579
7580	  return match;
7581	};
7582
7583	/**
7584	 * Represents a rendering context by wrapping a view object and
7585	 * maintaining a reference to the parent context.
7586	 */
7587	function Context (view, parentContext) {
7588	  this.view = view;
7589	  this.cache = { '.': this.view };
7590	  this.parent = parentContext;
7591	}
7592
7593	/**
7594	 * Creates a new context using the given view with this context
7595	 * as the parent.
7596	 */
7597	Context.prototype.push = function push (view) {
7598	  return new Context(view, this);
7599	};
7600
7601	/**
7602	 * Returns the value of the given name in this context, traversing
7603	 * up the context hierarchy if the value is absent in this context's view.
7604	 */
7605	Context.prototype.lookup = function lookup (name) {
7606	  var cache = this.cache;
7607
7608	  var value;
7609	  if (cache.hasOwnProperty(name)) {
7610	    value = cache[name];
7611	  } else {
7612	    var context = this, intermediateValue, names, index, lookupHit = false;
7613
7614	    while (context) {
7615	      if (name.indexOf('.') > 0) {
7616	        intermediateValue = context.view;
7617	        names = name.split('.');
7618	        index = 0;
7619
7620	        /**
7621	         * Using the dot notion path in `name`, we descend through the
7622	         * nested objects.
7623	         *
7624	         * To be certain that the lookup has been successful, we have to
7625	         * check if the last object in the path actually has the property
7626	         * we are looking for. We store the result in `lookupHit`.
7627	         *
7628	         * This is specially necessary for when the value has been set to
7629	         * `undefined` and we want to avoid looking up parent contexts.
7630	         *
7631	         * In the case where dot notation is used, we consider the lookup
7632	         * to be successful even if the last "object" in the path is
7633	         * not actually an object but a primitive (e.g., a string, or an
7634	         * integer), because it is sometimes useful to access a property
7635	         * of an autoboxed primitive, such as the length of a string.
7636	         **/
7637	        while (intermediateValue != null && index < names.length) {
7638	          if (index === names.length - 1)
7639	            lookupHit = (
7640	              hasProperty(intermediateValue, names[index])
7641	              || primitiveHasOwnProperty(intermediateValue, names[index])
7642	            );
7643
7644	          intermediateValue = intermediateValue[names[index++]];
7645	        }
7646	      } else {
7647	        intermediateValue = context.view[name];
7648
7649	        /**
7650	         * Only checking against `hasProperty`, which always returns `false` if
7651	         * `context.view` is not an object. Deliberately omitting the check
7652	         * against `primitiveHasOwnProperty` if dot notation is not used.
7653	         *
7654	         * Consider this example:
7655	         * ```
7656	         * Mustache.render("The length of a football field is {{#length}}{{length}}{{/length}}.", {length: "100 yards"})
7657	         * ```
7658	         *
7659	         * If we were to check also against `primitiveHasOwnProperty`, as we do
7660	         * in the dot notation case, then render call would return:
7661	         *
7662	         * "The length of a football field is 9."
7663	         *
7664	         * rather than the expected:
7665	         *
7666	         * "The length of a football field is 100 yards."
7667	         **/
7668	        lookupHit = hasProperty(context.view, name);
7669	      }
7670
7671	      if (lookupHit) {
7672	        value = intermediateValue;
7673	        break;
7674	      }
7675
7676	      context = context.parent;
7677	    }
7678
7679	    cache[name] = value;
7680	  }
7681
7682	  if (isFunction(value))
7683	    value = value.call(this.view);
7684
7685	  return value;
7686	};
7687
7688	/**
7689	 * A Writer knows how to take a stream of tokens and render them to a
7690	 * string, given a context. It also maintains a cache of templates to
7691	 * avoid the need to parse the same template twice.
7692	 */
7693	function Writer () {
7694	  this.templateCache = {
7695	    _cache: {},
7696	    set: function set (key, value) {
7697	      this._cache[key] = value;
7698	    },
7699	    get: function get (key) {
7700	      return this._cache[key];
7701	    },
7702	    clear: function clear () {
7703	      this._cache = {};
7704	    }
7705	  };
7706	}
7707
7708	/**
7709	 * Clears all cached templates in this writer.
7710	 */
7711	Writer.prototype.clearCache = function clearCache () {
7712	  if (typeof this.templateCache !== 'undefined') {
7713	    this.templateCache.clear();
7714	  }
7715	};
7716
7717	/**
7718	 * Parses and caches the given `template` according to the given `tags` or
7719	 * `mustache.tags` if `tags` is omitted,  and returns the array of tokens
7720	 * that is generated from the parse.
7721	 */
7722	Writer.prototype.parse = function parse (template, tags) {
7723	  var cache = this.templateCache;
7724	  var cacheKey = template + ':' + (tags || mustache.tags).join(':');
7725	  var isCacheEnabled = typeof cache !== 'undefined';
7726	  var tokens = isCacheEnabled ? cache.get(cacheKey) : undefined;
7727
7728	  if (tokens == undefined) {
7729	    tokens = parseTemplate(template, tags);
7730	    isCacheEnabled && cache.set(cacheKey, tokens);
7731	  }
7732	  return tokens;
7733	};
7734
7735	/**
7736	 * High-level method that is used to render the given `template` with
7737	 * the given `view`.
7738	 *
7739	 * The optional `partials` argument may be an object that contains the
7740	 * names and templates of partials that are used in the template. It may
7741	 * also be a function that is used to load partial templates on the fly
7742	 * that takes a single argument: the name of the partial.
7743	 *
7744	 * If the optional `config` argument is given here, then it should be an
7745	 * object with a `tags` attribute or an `escape` attribute or both.
7746	 * If an array is passed, then it will be interpreted the same way as
7747	 * a `tags` attribute on a `config` object.
7748	 *
7749	 * The `tags` attribute of a `config` object must be an array with two
7750	 * string values: the opening and closing tags used in the template (e.g.
7751	 * [ "<%", "%>" ]). The default is to mustache.tags.
7752	 *
7753	 * The `escape` attribute of a `config` object must be a function which
7754	 * accepts a string as input and outputs a safely escaped string.
7755	 * If an `escape` function is not provided, then an HTML-safe string
7756	 * escaping function is used as the default.
7757	 */
7758	Writer.prototype.render = function render (template, view, partials, config) {
7759	  var tags = this.getConfigTags(config);
7760	  var tokens = this.parse(template, tags);
7761	  var context = (view instanceof Context) ? view : new Context(view, undefined);
7762	  return this.renderTokens(tokens, context, partials, template, config);
7763	};
7764
7765	/**
7766	 * Low-level method that renders the given array of `tokens` using
7767	 * the given `context` and `partials`.
7768	 *
7769	 * Note: The `originalTemplate` is only ever used to extract the portion
7770	 * of the original template that was contained in a higher-order section.
7771	 * If the template doesn't use higher-order sections, this argument may
7772	 * be omitted.
7773	 */
7774	Writer.prototype.renderTokens = function renderTokens (tokens, context, partials, originalTemplate, config) {
7775	  var buffer = '';
7776
7777	  var token, symbol, value;
7778	  for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {
7779	    value = undefined;
7780	    token = tokens[i];
7781	    symbol = token[0];
7782
7783	    if (symbol === '#') value = this.renderSection(token, context, partials, originalTemplate, config);
7784	    else if (symbol === '^') value = this.renderInverted(token, context, partials, originalTemplate, config);
7785	    else if (symbol === '>') value = this.renderPartial(token, context, partials, config);
7786	    else if (symbol === '&') value = this.unescapedValue(token, context);
7787	    else if (symbol === 'name') value = this.escapedValue(token, context, config);
7788	    else if (symbol === 'text') value = this.rawValue(token);
7789
7790	    if (value !== undefined)
7791	      buffer += value;
7792	  }
7793
7794	  return buffer;
7795	};
7796
7797	Writer.prototype.renderSection = function renderSection (token, context, partials, originalTemplate, config) {
7798	  var self = this;
7799	  var buffer = '';
7800	  var value = context.lookup(token[1]);
7801
7802	  // This function is used to render an arbitrary template
7803	  // in the current context by higher-order sections.
7804	  function subRender (template) {
7805	    return self.render(template, context, partials, config);
7806	  }
7807
7808	  if (!value) return;
7809
7810	  if (isArray(value)) {
7811	    for (var j = 0, valueLength = value.length; j < valueLength; ++j) {
7812	      buffer += this.renderTokens(token[4], context.push(value[j]), partials, originalTemplate, config);
7813	    }
7814	  } else if (typeof value === 'object' || typeof value === 'string' || typeof value === 'number') {
7815	    buffer += this.renderTokens(token[4], context.push(value), partials, originalTemplate, config);
7816	  } else if (isFunction(value)) {
7817	    if (typeof originalTemplate !== 'string')
7818	      throw new Error('Cannot use higher-order sections without the original template');
7819
7820	    // Extract the portion of the original template that the section contains.
7821	    value = value.call(context.view, originalTemplate.slice(token[3], token[5]), subRender);
7822
7823	    if (value != null)
7824	      buffer += value;
7825	  } else {
7826	    buffer += this.renderTokens(token[4], context, partials, originalTemplate, config);
7827	  }
7828	  return buffer;
7829	};
7830
7831	Writer.prototype.renderInverted = function renderInverted (token, context, partials, originalTemplate, config) {
7832	  var value = context.lookup(token[1]);
7833
7834	  // Use JavaScript's definition of falsy. Include empty arrays.
7835	  // See https://github.com/janl/mustache.js/issues/186
7836	  if (!value || (isArray(value) && value.length === 0))
7837	    return this.renderTokens(token[4], context, partials, originalTemplate, config);
7838	};
7839
7840	Writer.prototype.indentPartial = function indentPartial (partial, indentation, lineHasNonSpace) {
7841	  var filteredIndentation = indentation.replace(/[^ \t]/g, '');
7842	  var partialByNl = partial.split('\n');
7843	  for (var i = 0; i < partialByNl.length; i++) {
7844	    if (partialByNl[i].length && (i > 0 || !lineHasNonSpace)) {
7845	      partialByNl[i] = filteredIndentation + partialByNl[i];
7846	    }
7847	  }
7848	  return partialByNl.join('\n');
7849	};
7850
7851	Writer.prototype.renderPartial = function renderPartial (token, context, partials, config) {
7852	  if (!partials) return;
7853	  var tags = this.getConfigTags(config);
7854
7855	  var value = isFunction(partials) ? partials(token[1]) : partials[token[1]];
7856	  if (value != null) {
7857	    var lineHasNonSpace = token[6];
7858	    var tagIndex = token[5];
7859	    var indentation = token[4];
7860	    var indentedValue = value;
7861	    if (tagIndex == 0 && indentation) {
7862	      indentedValue = this.indentPartial(value, indentation, lineHasNonSpace);
7863	    }
7864	    var tokens = this.parse(indentedValue, tags);
7865	    return this.renderTokens(tokens, context, partials, indentedValue, config);
7866	  }
7867	};
7868
7869	Writer.prototype.unescapedValue = function unescapedValue (token, context) {
7870	  var value = context.lookup(token[1]);
7871	  if (value != null)
7872	    return value;
7873	};
7874
7875	Writer.prototype.escapedValue = function escapedValue (token, context, config) {
7876	  var escape = this.getConfigEscape(config) || mustache.escape;
7877	  var value = context.lookup(token[1]);
7878	  if (value != null)
7879	    return (typeof value === 'number' && escape === mustache.escape) ? String(value) : escape(value);
7880	};
7881
7882	Writer.prototype.rawValue = function rawValue (token) {
7883	  return token[1];
7884	};
7885
7886	Writer.prototype.getConfigTags = function getConfigTags (config) {
7887	  if (isArray(config)) {
7888	    return config;
7889	  }
7890	  else if (config && typeof config === 'object') {
7891	    return config.tags;
7892	  }
7893	  else {
7894	    return undefined;
7895	  }
7896	};
7897
7898	Writer.prototype.getConfigEscape = function getConfigEscape (config) {
7899	  if (config && typeof config === 'object' && !isArray(config)) {
7900	    return config.escape;
7901	  }
7902	  else {
7903	    return undefined;
7904	  }
7905	};
7906
7907	var mustache = {
7908	  name: 'mustache.js',
7909	  version: '4.2.0',
7910	  tags: [ '{{', '}}' ],
7911	  clearCache: undefined,
7912	  escape: undefined,
7913	  parse: undefined,
7914	  render: undefined,
7915	  Scanner: undefined,
7916	  Context: undefined,
7917	  Writer: undefined,
7918	  /**
7919	   * Allows a user to override the default caching strategy, by providing an
7920	   * object with set, get and clear methods. This can also be used to disable
7921	   * the cache by setting it to the literal `undefined`.
7922	   */
7923	  set templateCache (cache) {
7924	    defaultWriter.templateCache = cache;
7925	  },
7926	  /**
7927	   * Gets the default or overridden caching object from the default writer.
7928	   */
7929	  get templateCache () {
7930	    return defaultWriter.templateCache;
7931	  }
7932	};
7933
7934	// All high-level mustache.* functions use this writer.
7935	var defaultWriter = new Writer();
7936
7937	/**
7938	 * Clears all cached templates in the default writer.
7939	 */
7940	mustache.clearCache = function clearCache () {
7941	  return defaultWriter.clearCache();
7942	};
7943
7944	/**
7945	 * Parses and caches the given template in the default writer and returns the
7946	 * array of tokens it contains. Doing this ahead of time avoids the need to
7947	 * parse templates on the fly as they are rendered.
7948	 */
7949	mustache.parse = function parse (template, tags) {
7950	  return defaultWriter.parse(template, tags);
7951	};
7952
7953	/**
7954	 * Renders the `template` with the given `view`, `partials`, and `config`
7955	 * using the default writer.
7956	 */
7957	mustache.render = function render (template, view, partials, config) {
7958	  if (typeof template !== 'string') {
7959	    throw new TypeError('Invalid template! Template should be a "string" ' +
7960	                        'but "' + typeStr(template) + '" was given as the first ' +
7961	                        'argument for mustache#render(template, view, partials)');
7962	  }
7963
7964	  return defaultWriter.render(template, view, partials, config);
7965	};
7966
7967	// Export the escaping function so that the user may override it.
7968	// See https://github.com/janl/mustache.js/issues/244
7969	mustache.escape = escapeHtml;
7970
7971	// Export these mainly for testing, but also for advanced usage.
7972	mustache.Scanner = Scanner;
7973	mustache.Context = Context;
7974	mustache.Writer = Writer;
7975
7976	const processMustacheTemplate = (template, scope) => {
7977	    return mustache.render(template, scope);
7978	};
7979
7980	const getUserAttributes = async (formActions) => {
7981	    try {
7982	        return await request('blaize/profile', {
7983	            method: "GET"
7984	        }, formActions).then(response => response.json());
7985	    }
7986	    catch (error) {
7987	        console.error('Failed to fetch user attributes:', error);
7988	        return {};
7989	    }
7990	};
7991	const getSessions = async (formActions) => {
7992	    try {
7993	        const response = await request('zephr/public/sessions/v1/sessions', {
7994	            method: "GET"
7995	        }, formActions, null, true);
7996	        return await response.json();
7997	    }
7998	    catch (error) {
7999	        console.error('Failed to fetch sessions:', error);
8000	        return [];
8001	    }
8002	};
8003	const getUtmParameters = () => {
8004	    const params = new URLSearchParams(window.location.search);
8005	    return {
8006	        source: params.get('utm_source'),
8007	        medium: params.get('utm_medium'),
8008	        campaign: params.get('utm_campaign'),
8009	        term: params.get('utm_term'),
8010	        content: params.get('utm_content')
8011	    };
8012	};
8013	const initializeSubscriptionScope = async (form, formActions) => {
8014	    try {
8015	        const [sessions, attributes] = await Promise.all([
8016	            getSessions(formActions),
8017	            getUserAttributes(formActions)
8018	        ]);
8019	        const deviceSession = sessions.find(session => session.requestingSession) || null;
8020	        return {
8021	            page: {
8022	                url: window.location.href,
8023	                path: window.location.pathname,
8024	                searchParameters: Object.fromEntries(new URLSearchParams(window.location.search)),
8025	                utmParameters: getUtmParameters(),
8026	                referrer: document.referrer || null
8027	            },
8028	            user: {
8029	                attributes: attributes,
8030	                session: deviceSession ? {
8031	                    id: deviceSession.id,
8032	                    tenantId: deviceSession.tenantId,
8033	                    userId: deviceSession.userId,
8034	                    deviceName: deviceSession.deviceName,
8035	                    browser: deviceSession.browser,
8036	                    startDate: deviceSession.startDate,
8037	                    ipAddress: deviceSession.ipAddress ?? null,
8038	                    requestingSession: deviceSession.requestingSession
8039	                } : null,
8040	                geoLocation: {
8041	                    city: deviceSession?.city ?? "unknown",
8042	                    country: deviceSession?.country ?? "unknown",
8043	                    state: deviceSession?.geoState ?? "unknown",
8044	                    ipAddress: deviceSession?.ipAddress ?? null
8045	                }
8046	            },
8047	            form: {
8048	                id: form.id,
8049	                outcomeId: form.outcomeId,
8050	                ruleId: form.ruleId
8051	            }
8052	        };
8053	    }
8054	    catch (error) {
8055	        console.error('Failed to initialize subscription scope:', error);
8056	        throw error;
8057	    }
8058	};
8059
8060	const publicKeyPath = 'blaize/payment/stripe/publicKey';
8061	const getStripePublicKey = (formActions) => request(publicKeyPath, {
8062	    method: "GET"
8063	}, formActions, null, true)
8064	    .then(response => response.text());
8065	let loadStripePromise, stripe, stripeElement;
8066	const loadStripe = (formActions) => {
8067	    if (loadStripePromise) {
8068	        return loadStripePromise;
8069	    }
8070	    return loadStripePromise = new Promise(function (resolve) {
8071	        window.stripeLoadCallback = resolve;
8072	    }).then(() => getStripePublicKey(formActions))
8073	        .then(publicKey => { stripe = window.Stripe(publicKey); return stripe; });
8074	};
8075	const handleStripeFormChecktax = (event, form, formActions) => {
8076	    // only check tax if the form is complete
8077	    if (!event.complete) {
8078	        return;
8079	    }
8080	    formActions.incrementRequestCount();
8081	    stripe
8082	        .createPaymentMethod('card', stripeElement, {})
8083	        .then(({ error, paymentMethod }) => {
8084	        if (error || !paymentMethod) {
8085	            console.error(`Error requesting payment method ${JSON.stringify(error)}`);
8086	            return null;
8087	        }
8088	        formActions.updateFormState({
8089	            paymentMethodId: paymentMethod.id
8090	        });
8091	        return paymentMethod?.billing_details?.address;
8092	    })
8093	        .catch((error) => {
8094	        console.error(`Error requesting payment method ${JSON.stringify(error)}`);
8095	        return null;
8096	    }).then((billingAddress) => calculatePrices(form, formActions.updateFormState({
8097	        billingAddress: {
8098	            country: billingAddress?.country,
8099	            postalCode: billingAddress?.postal_code,
8100	        }
8101	    }), formActions))
8102	        .catch((error) => {
8103	        console.error(`Error requesting payment method ${JSON.stringify(error)}`);
8104	    }).finally(() => {
8105	        formActions.decrementRequestCount();
8106	    });
8107	};
8108	const loadStripeUi = (form, formState, formActions) => {
8109	    formActions.incrementRequestCount();
8110	    void loadStripe(formActions).then(() => {
8111	        stripeElement = createStripeElement(stripe, form, formActions);
8112	        const id = '#stripe-element-' + form.uniqueKey;
8113	        stripeElement.mount(id);
8114	        stripeElement.addEventListener('change', (event) => {
8115	            formActions.updateFormState({
8116	                paymentProviderError: event.error,
8117	                paymentFormComplete: event.complete,
8118	                serverErrors: []
8119	            });
8120	            if (form.organisationConfiguration.stripeAutomaticTaxEnabled && form.formType !== FormType.LIST_SUBSCRIPTIONS) {
8121	                handleStripeFormChecktax(event, form, formActions);
8122	            }
8123	        });
8124	        stripeElement.addEventListener('ready', () => {
8125	            formActions.updateFormState({
8126	                paymentProviderFormLoaded: true,
8127	            });
8128	        });
8129	        formActions.decrementRequestCount();
8130	    }).catch(err => {
8131	        console.error(err);
8132	        formActions.decrementRequestCount();
8133	    });
8134	};
8135	const stripePay = (form, formState, formActions) => {
8136	    const paymentMethodId = formState.paymentMethodId;
8137	    formActions.incrementRequestCount();
8138	    if (paymentMethodId) {
8139	        return performPay(form, formState, formActions, paymentMethodId);
8140	    }
8141	    else {
8142	        return stripe.createPaymentMethod('card', stripeElement, {})
8143	            .then(async ({ error, paymentMethod }) => {
8144	            if (error || !paymentMethod) {
8145	                formActions.decrementRequestCount();
8146	                throw `Error requesting payment method ${JSON.stringify(error)}`;
8147	            }
8148	            await performPay(form, formState, formActions, paymentMethod.id);
8149	        });
8150	    }
8151	};
8152	const stripeChangePayment = (form, formState, formActions) => {
8153	    const paymentMethodId = formState.paymentMethodId;
8154	    formActions.incrementRequestCount();
8155	    if (paymentMethodId) {
8156	        return performChangePayment(form, formState, formActions, paymentMethodId);
8157	    }
8158	    else {
8159	        return stripe.createPaymentMethod('card', stripeElement, {})
8160	            .then(async ({ error, paymentMethod }) => {
8161	            if (error || !paymentMethod) {
8162	                formActions.decrementRequestCount();
8163	                throw `Error requesting payment method ${JSON.stringify(error)}`;
8164	            }
8165	            await request('zephr/payment/stripe/setupIntentSecret', {
8166	                method: 'POST',
8167	            }, formActions)
8168	                .then(async (resp) => {
8169	                const json = await resp.json();
8170	                const token = json.clientSecret;
8171	                return stripe.confirmCardSetup(token, {
8172	                    payment_method: {
8173	                        card: stripeElement,
8174	                    },
8175	                });
8176	            }).then(async (resp) => {
8177	                return performChangePayment(form, formState, formActions, resp.setupIntent.payment_method);
8178	            });
8179	        });
8180	    }
8181	};
8182	const performChangePayment = (form, formState, formActions, paymentMethod) => {
8183	    return request('zephr/payment/stripe/updateSubscription', {
8184	        method: 'POST',
8185	        bodyObject: {
8186	            payment_method_id: paymentMethod,
8187	            subscription_id: formState.selectedSubscription.externalId,
8188	        },
8189	    }, formActions);
8190	};
8191	const performPay = async (form, formState, formActions, paymentMethod) => {
8192	    const subscriptionMetadataRaw = (formConfigAs(form).paymentProviderFormConfig?.subscriptionMetadata || {});
8193	    const subscriptionMetadata = {};
8194	    if (subscriptionMetadataRaw) {
8195	        const subscriptionFormScope = await initializeSubscriptionScope(form, formActions);
8196	        for (const [key, value] of Object.entries(subscriptionMetadataRaw)) {
8197	            subscriptionMetadata[key] = processMustacheTemplate(value, subscriptionFormScope) || '';
8198	        }
8199	    }
8200	    const hasSubscriptionMetadata = !!Object.keys(subscriptionMetadata).length;
8201	    const { url, body, method } = mapToPayRequest(form, formState, paymentProviders.STRIPE, {
8202	        payment_method: paymentMethod,
8203	        billing_address_provided: !!formState.billingAddress.country,
8204	        ...(hasSubscriptionMetadata ? { subscription_metadata: JSON.stringify(subscriptionMetadata) } : {}),
8205	    });
8206	    return request(url, {
8207	        method,
8208	        bodyObject: body
8209	    }, formActions)
8210	        .then(async (response) => {
8211	        if (!response?.ok) {
8212	            throw JSON.stringify(response);
8213	        }
8214	        return response.json();
8215	    }).then(responseJson => {
8216	        if (responseJson.grant_id) {
8217	            return;
8218	        }
8219	        if (responseJson.paymentIntentStatus === 'requires_action') {
8220	            return stripe.confirmCardPayment(responseJson.clientSecret ?? responseJson.client_secret)
8221	                .then(afterConfirmResponse => {
8222	                if (afterConfirmResponse.error || !afterConfirmResponse.paymentIntent) {
8223	                    throw `Error requesting payment method ${JSON.stringify(afterConfirmResponse)}`;
8224	                }
8225	                if (isOneOffPurchase(formState.paymentOption) && responseJson.payment_intent_id) {
8226	                    const { url, body, method } = mapToPayRequest(form, formState, paymentProviders.STRIPE, {
8227	                        payment_method: paymentMethod,
8228	                        billing_address_provided: !!formState.billingAddress.country,
8229	                        payment_intent_id: responseJson.payment_intent_id,
8230	                        ...(hasSubscriptionMetadata ? { subscription_metadata: JSON.stringify(subscriptionMetadata) } : {}),
8231	                    });
8232	                    return request(url, {
8233	                        method,
8234	                        bodyObject: body
8235	                    }, formActions).then(response => {
8236	                        if (response?.ok) {
8237	                            return;
8238	                        }
8239	                        throw response;
8240	                    });
8241	                }
8242	                else {
8243	                    return request('blaize/payment/stripe/subscription/confirmation', {
8244	                        method: 'POST',
8245	                        bodyObject: {
8246	                            subscriptionId: responseJson.subscriptionId
8247	                        }
8248	                    }, formActions)
8249	                        .then(response => {
8250	                        if (response?.ok) {
8251	                            return;
8252	                        }
8253	                        throw response;
8254	                    });
8255	                }
8256	            });
8257	        }
8258	        throw JSON.stringify(responseJson);
8259	    }).catch((err) => {
8260	        console.error(err);
8261	        // TODO
8262	        throw err;
8263	    }).finally(() => {
8264	        formActions.decrementRequestCount();
8265	    });
8266	};
8267
8268	/**
8269	 * See https://stripe.com/docs/stripe-js/elements/payment-request-button
8270	 */
8271	const loadGooglePay = new Promise(function (resolve) {
8272	    window.googlePayLoadStripeCallback = resolve;
8273	});
8274	const configureStripeMobilePay = async (form, formState, formActions) => {
8275	    const stripeMobilePaymentConfig = JSON.parse(form.organisationConfiguration?.stripeMobilePaymentConfig ?? "{}");
8276	    const container = document.getElementById('stripe-mobile-pay-button');
8277	    // No need to show the user any errors here just hide the button
8278	    if (!stripeMobilePaymentConfig?.google && !stripeMobilePaymentConfig?.apple) {
8279	        container.style.display = 'none';
8280	        console.error("Stripe Mobile payments are not configured in the console");
8281	        return;
8282	    }
8283	    return loadGooglePay
8284	        .then(async () => await loadStripe(formActions))
8285	        .then(stripe => {
8286	        formState = formActions.getFormState();
8287	        const currencyMultiplier = isZeroDecimalCurrency(formState.paymentOption.currencyCode.toUpperCase()) ? 1 : 100;
8288	        const paymentLabels = {
8289	            country: stripeMobilePaymentConfig.google?.countryCode ?? stripeMobilePaymentConfig.apple?.countryCode,
8290	            currency: formState.paymentOption.currencyCode.toLowerCase(),
8291	            total: {
8292	                label: formState.paymentOption.label,
8293	                amount: parseFloat((formState.paymentOptionPrices.totalPrice * currencyMultiplier).toFixed(2)),
8294	            },
8295	            requestPayerName: true
8296	        };
8297	        const paymentRequest = stripe.paymentRequest(paymentLabels);
8298	        const elements = stripe.elements();
8299	        const paymentButton = elements.create('paymentRequestButton', {
8300	            paymentRequest: paymentRequest,
8301	        });
8302	        paymentRequest.canMakePayment().then(result => {
8303	            if (!result || (!result.googlePay && !result.applePay)) {
8304	                // Not an error - Google Pay or Apple Pay are not supported here
8305	                console.warn("Cannot make mobile payments on this browser", result);
8306	                container.style.display = 'none';
8307	                return;
8308	            }
8309	            paymentButton.mount('#stripe-mobile-pay-button');
8310	            paymentRequest.on('paymentmethod', (ev) => {
8311	                void onClickPaymentButton(formState, formActions, stripe, ev, result, form);
8312	            });
8313	        });
8314	    }).catch(err => {
8315	        console.error(err);
8316	        formActions.updateFormState({
8317	            serverErrors: [ServerError.UNKNOWN]
8318	        });
8319	        logDataLayerEvent(form, 'zephr_form_error', {
8320	            error: ServerError[ServerError.UNKNOWN],
8321	        });
8322	    });
8323	};
8324	const onClickPaymentButton = async (formState, formActions, stripe, ev, mobilePaymentType, form) => {
8325	    if (mobilePaymentType.googlePay) {
8326	        formActions.updateFormState({
8327	            mobilePaymentService: MobilePaymentService.GOOGLE_PAY,
8328	            serverErrors: [],
8329	        });
8330	    }
8331	    else if (mobilePaymentType.applePay) {
8332	        formActions.updateFormState({
8333	            mobilePaymentService: MobilePaymentService.APPLE_PAY,
8334	            serverErrors: [],
8335	        });
8336	    }
8337	    if (!ev) {
8338	        ev.complete('fail');
8339	        formActions.updateFormState({
8340	            serverErrors: [ServerError.MOBILE_PAYMENT_PROCESSING_ERROR]
8341	        });
8342	        logDataLayerEvent(form, 'zephr_form_error', {
8343	            error: ServerError[ServerError.MOBILE_PAYMENT_PROCESSING_ERROR],
8344	        });
8345	        return;
8346	    }
8347	    const billingAddress = ev.paymentMethod.billing_details.address;
8348	    if (form.organisationConfiguration.stripeAutomaticTaxEnabled) {
8349	        formState = await (calculatePrices(form, formActions.updateFormState({
8350	            billingAddress: {
8351	                country: billingAddress.country,
8352	                postalCode: billingAddress.postal_code,
8353	            }
8354	        }), formActions));
8355	    }
8356	    formState = formActions.updateFormState({
8357	        paymentMethodId: ev.paymentMethod.id
8358	    });
8359	    ev.complete('success');
8360	    if (formState.paymentOptionPrices.taxPrice || !formState.canAttemptSectionCompletion) {
8361	        const elementId = formState.elementValidity.find((e) => !e.isValid && e.elementType != 'payment')?.elementId;
8362	        const element = elementId ? document.getElementById(`zephr-form-${elementId}`) : document.getElementsByClassName('zephr-form-button')[0];
8363	        element?.scrollIntoView({
8364	            block: "center",
8365	        });
8366	    }
8367	    else {
8368	        formActions.completeSection();
8369	    }
8370	};
8371
8372	const calculateBraintreeStripePrice = (form, formState, _) => {
8373	    const addons = addonsForPlan(formState);
8374	    const paymentOption = formConfigAs(form).paymentOptions.find(opt => opt.productId == formState.paymentOption.productId && opt.slug == formState.paymentOption.slug);
8375	    const planPrice = paymentOption.price;
8376	    const priceAfterPromoCode = formState.discountedPlanPrices.find(discount => discount.planSlug === formState.paymentOption.slug && discount.productId === formState.paymentOption.productId)
8377	        ?.discountPrice;
8378	    let finalPrice = priceAfterPromoCode ?? planPrice;
8379	    let discountTotal = planPrice - finalPrice;
8380	    // For Braintree only, we apply discounts on top of any promo code discounts
8381	    if (form.organisationConfiguration.paymentProvider === 'braintree' &&
8382	        paymentOption.discounts &&
8383	        paymentOption.discounts.length > 0) {
8384	        const totalBuiltInDiscount = paymentOption.discounts.reduce((sum, discount) => {
8385	            return sum + (discount.amount || 0);
8386	        }, 0);
8387	        finalPrice = Math.max(0, finalPrice - totalBuiltInDiscount);
8388	        discountTotal = planPrice - finalPrice;
8389	    }
8390	    const total = addons.reduce((total, addon) => total + addon.addonPrice, finalPrice);
8391	    return Promise.resolve({
8392	        slug: formState.paymentOption.slug,
8393	        productId: formState.paymentOption.productId,
8394	        promoCode: formState.promoCode,
8395	        addonPrices: addons,
8396	        billingAddress: formState.billingAddress,
8397	        totalPrice: total,
8398	        totalPriceFormattedString: formatCurrency(total, formState.paymentOption.currencyCode),
8399	        netPrice: planPrice,
8400	        netPriceFormattedString: formatCurrency(planPrice, formState.paymentOption.currencyCode),
8401	        discountPrice: discountTotal,
8402	        discountPriceFormattedPrice: formatCurrency(discountTotal, formState.paymentOption.currencyCode),
8403	        chargeItems: []
8404	    });
8405	};
8406
8407	const getRelevantCurrency = (form, formState) => {
8408	    const formConfig = formConfigAs(form);
8409	    if (formConfig.dynamicOffer?.id) {
8410	        return formState.paymentOption?.currencyCode;
8411	    }
8412	    return formConfigAs(form).formCurrency ?? formState.paymentOption?.currencyCode;
8413	};
8414
8415	const getPaymentFormNumber = (form, formState) => {
8416	    const paymentConfig = formConfigAs(form);
8417	    if (paymentConfig.changeSubscriptionMode) {
8418	        return getChangeSubscriptionPaymentConfiguration(form, formState).paymentFormNumber;
8419	    }
8420	    return paymentConfig.paymentProviderFormConfig?.paymentFormNumber ?? undefined;
8421	};
8422	const loadZuoraDynamicFormKey = async (_, formActions) => {
8423	    const response = await request("zephr/public/payment/v1/billing/publishable-key", { method: "GET", }, formActions);
8424	    return (await response.json())?.message;
8425	};
8426	// Helper to cast custom field values to appropriate types
8427	const castCustomFieldValue$1 = (value, type) => {
8428	    const trimmedValue = value.trim();
8429	    try {
8430	        switch (type.toUpperCase()) {
8431	            case 'INTEGER': {
8432	                const intVal = parseInt(trimmedValue, 10);
8433	                if (isNaN(intVal))
8434	                    throw new Error();
8435	                return intVal;
8436	            }
8437	            case 'NUMBER': {
8438	                const floatVal = parseFloat(trimmedValue);
8439	                if (isNaN(floatVal))
8440	                    throw new Error();
8441	                return floatVal;
8442	            }
8443	            case 'BOOLEAN':
8444	                return trimmedValue.toLowerCase() === 'true';
8445	            case 'TEXT':
8446	            case 'LONGTEXT':
8447	            case 'PICKLIST':
8448	            default:
8449	                return trimmedValue.toString();
8450	        }
8451	    }
8452	    catch (e) {
8453	        console.warn(`Error casting custom field value "${trimmedValue}" to type ${type}`);
8454	        return null;
8455	    }
8456	};
8457	const createPaymentSession = async (form, formActions, context, operation) => {
8458	    if (formActions.getFormState().isBusy) {
8459	        console.warn('Form is busy - ignoring payment request');
8460	        return;
8461	    }
8462	    formActions.updateFormState({
8463	        serverErrors: [],
8464	        paymentProviderFormBusy: true
8465	    });
8466	    formActions.incrementRequestCount();
8467	    try {
8468	        const formConfig = formConfigAs(form);
8469	        const formState = formActions.getFormState();
8470	        const response = await request('zephr/public/payment/v1/billing/payment-sessions', {
8471	            method: "POST",
8472	            bodyObject: {
8473	                currency: getRelevantCurrency(form, formState) || formState.existingSubscriptions?.[0]?.currency,
8474	                amount: formState.paymentOptionPrices?.totalPrice || 0.01,
8475	                paymentMethodType: context?.paymentMethodType,
8476	                // Only include country if it's configured and has a value
8477	                ...(formConfig.countryLabel && formState.billingCountry && {
8478	                    country: formState.billingCountry
8479	                }),
8480	                // Only include state if it's configured, has a value, and country is US/CA
8481	                ...(formConfig.stateLabel && formState.billingState && (formState.billingCountry === "US" ||
8482	                    formState.billingCountry === "CA") && {
8483	                    state: formState.billingState
8484	                }),
8485	                operation: operation,
8486	                ...(formState.pfToken && {
8487	                    pfToken: formState.pfToken
8488	                })
8489	            }
8490	        }, formActions);
8491	        if (response.ok) {
8492	            return (await response.json())?.token;
8493	        }
8494	        else {
8495	            console.error("Error occurred while creating payment session.", response);
8496	            formActions.updateFormState({
8497	                serverErrors: [ServerError.PAYMENT_PROCESSING_ERROR],
8498	                paymentProviderFormBusy: false
8499	            });
8500	            logDataLayerEvent(form, 'zephr_form_error', {
8501	                error: ServerError[ServerError.PAYMENT_PROCESSING_ERROR],
8502	            });
8503	        }
8504	    }
8505	    catch (error) {
8506	        console.error("Error occurred while creating payment session.", error);
8507	        formActions.updateFormState({
8508	            serverErrors: [ServerError.PAYMENT_PROCESSING_ERROR],
8509	            paymentProviderFormBusy: false
8510	        });
8511	        logDataLayerEvent(form, 'zephr_form_error', {
8512	            error: ServerError[ServerError.PAYMENT_PROCESSING_ERROR],
8513	        });
8514	    }
8515	};
8516	const onComplete = async (form, formActions, result) => {
8517	    if (!result?.success || !result.paymentMethodId) {
8518	        formActions.decrementRequestCount();
8519	        console.warn('Non-success payment result', result);
8520	        formActions.updateFormState({
8521	            serverErrors: [ServerError.PAYMENT_PROCESSING_ERROR],
8522	            paymentProviderFormBusy: false
8523	        });
8524	        logDataLayerEvent(form, 'zephr_form_error', {
8525	            error: ServerError[ServerError.PAYMENT_PROCESSING_ERROR],
8526	        });
8527	        return;
8528	    }
8529	    const currentFormState = formActions.getFormState();
8530	    const isPaymentMethodSetupMode = formConfigAs(form).changeSubscriptionMode && currentFormState.requiresPaymentMethodSetup === true;
8531	    if (isPaymentMethodSetupMode) {
8532	        formActions.updateFormState({
8533	            paymentMethodSetupComplete: true,
8534	            requiresPaymentMethodSetup: false,
8535	        });
8536	    }
8537	    if (form.formType === FormType.LIST_SUBSCRIPTIONS || form.formType === FormType.LIST_GIFT_SUBSCRIPTIONS_SENT) {
8538	        formActions.updateFormState({
8539	            paymentFormComplete: true,
8540	            paymentProviderVendorFields: {
8541	                detail: JSON.stringify({
8542	                    creditCardCountry: result.creditCardCountry,
8543	                    creditCardState: result.creditCardState,
8544	                    refId: result.paymentMethodId,
8545	                    email: currentFormState.emailAddress,
8546	                    paymentId: result?.paymentId,
8547	                    paymentMethodId: result?.paymentMethodId,
8548	                }),
8549	            }
8550	        });
8551	    }
8552	    else {
8553	        // Get the autoRenew value based on payment option configuration
8554	        const autoRenewConfig = currentFormState.paymentOption.autoRenewConfig;
8555	        let autoRenewValue;
8556	        if (autoRenewConfig === 'auto_renew') {
8557	            autoRenewValue = true;
8558	        }
8559	        else if (autoRenewConfig === 'no_auto_renew') {
8560	            autoRenewValue = false;
8561	        }
8562	        else if (autoRenewConfig === 'custom_toggle') {
8563	            // Use user's choice from the toggle
8564	            const paymentOptionKey = `${currentFormState.paymentOption.productId}-${currentFormState.paymentOption.slug}`;
8565	            autoRenewValue = currentFormState.paymentOptionAutoRenew?.[paymentOptionKey] ?? false;
8566	        }
8567	        else {
8568	            // Default behavior for legacy payment options without configuration
8569	            autoRenewValue = true;
8570	        }
8571	        // Process subscription custom fields if any
8572	        const rawCustomFields = formConfigAs(form).paymentProviderFormConfig?.subscriptionCustomFields || [];
8573	        const subscriptionCustomFields = {};
8574	        if (rawCustomFields?.length) {
8575	            const subscriptionFormScope = await initializeSubscriptionScope(form, formActions);
8576	            for (const field of rawCustomFields) {
8577	                const processedTemplate = processMustacheTemplate(field.value, subscriptionFormScope) || '';
8578	                subscriptionCustomFields[field.name] = castCustomFieldValue$1(processedTemplate, field.type);
8579	            }
8580	        }
8581	        const hasCustomFields = !!Object.keys(subscriptionCustomFields).length;
8582	        formActions.updateFormState({
8583	            paymentFormComplete: true,
8584	            paymentProviderVendorFields: {
8585	                currency: getRelevantCurrency(form, currentFormState),
8586	                detail: JSON.stringify({
8587	                    creditCardCountry: result.creditCardCountry,
8588	                    creditCardState: result.creditCardState,
8589	                    refId: result.paymentMethodId,
8590	                    email: currentFormState.emailAddress,
8591	                    paymentId: result?.paymentId,
8592	                    paymentMethodId: result?.paymentMethodId,
8593	                }),
8594	                ...(currentFormState.dynamicOfferResult ? { dynamicOfferResult: JSON.stringify(currentFormState.dynamicOfferResult) } : {}),
8595	                ...(currentFormState.paymentOption?.terms ? {
8596	                    terms: JSON.stringify({
8597	                        ...currentFormState.paymentOption.terms,
8598	                        autoRenew: autoRenewValue
8599	                    })
8600	                } : {}),
8601	                ...(currentFormState.paymentOption?.termsAndConditions ? {
8602	                    termsAndConditions: JSON.stringify({
8603	                        ...currentFormState.paymentOption.termsAndConditions,
8604	                        autoRenew: autoRenewValue
8605	                    })
8606	                } : {}),
8607	                ...(currentFormState.paymentOption?.triggerOffsets ? { triggerOffsets: JSON.stringify(currentFormState.paymentOption.triggerOffsets) } : {}),
8608	                ...(currentFormState.paymentOption?.changeSubscriptionTriggerOffsets ? { changeSubscriptionTriggerOffsets: JSON.stringify(currentFormState.paymentOption.changeSubscriptionTriggerOffsets) } : {}),
8609	                ...(hasCustomFields ? { subscriptionCustomFields: JSON.stringify(subscriptionCustomFields) } : {})
8610	            }
8611	        });
8612	    }
8613	    formActions.decrementRequestCount();
8614	    formActions.completeSection();
8615	};
8616	const loadZuoraDynamicFormUi = async (form, formState, formActions, publishableKey, operation) => {
8617	    const state = formState.paymentOption && await calculatePrices(form, formState, formActions);
8618	    const [locale, region] = (navigator.language ?? '').split('-');
8619	    const paymentConfig = formConfigAs(form);
8620	    const requestCountry = paymentConfig?.requestCountry;
8621	    const isValidCountry = requestCountry && requestCountry.toLowerCase() !== 'unknown';
8622	    const configuration = {
8623	        locale: locale || "en",
8624	        region: (isValidCountry ? requestCountry : region) || 'US',
8625	        currency: getRelevantCurrency(form, formState) || formState.existingSubscriptions?.[0]?.currency,
8626	        amount: `${state?.paymentOptionPrices?.totalPrice ?? '0.00'}`,
8627	        profile: getPaymentFormNumber(form, formState),
8628	        createPaymentSession: (context) => createPaymentSession(form, formActions, context, operation),
8629	        onComplete: (result) => onComplete(form, formActions, result),
8630	    };
8631	    // Render form
8632	    const zuora = window.Zuora(publishableKey);
8633	    const paymentForm = await zuora.createPaymentForm(configuration);
8634	    paymentForm.mount("#zuora_payment");
8635	    formActions.updateFormState({
8636	        paymentProviderFormLoaded: true,
8637	    });
8638	};
8639
8640	let zuoraLoadPromise;
8641	const loadZuora = () => {
8642	    if (zuoraLoadPromise != null) {
8643	        return zuoraLoadPromise;
8644	    }
8645	    return zuoraLoadPromise = new Promise(function (resolve) {
8646	        window.zuoraLoadCallback = resolve;
8647	    });
8648	};
8649	const isDynamicForm = (form, formState) => {
8650	    const paymentConfig = formConfigAs(form);
8651	    if (paymentConfig.changeSubscriptionMode && formState) {
8652	        return getChangeSubscriptionPaymentConfiguration(form, formState).useDynamicForm;
8653	    }
8654	    return paymentConfig.paymentProviderFormConfig?.useDynamicForm;
8655	};
8656	/**
8657	 * Determines the autoRenew value based on payment option configuration
8658	 */
8659	const getAutoRenewValue = (formState) => {
8660	    const autoRenewConfig = formState.paymentOption.autoRenewConfig;
8661	    if (autoRenewConfig === 'auto_renew') {
8662	        return true;
8663	    }
8664	    else if (autoRenewConfig === 'no_auto_renew') {
8665	        return false;
8666	    }
8667	    else if (autoRenewConfig === 'custom_toggle') {
8668	        // Use user's choice from the toggle
8669	        const paymentOptionKey = `${formState.paymentOption.productId}-${formState.paymentOption.slug}`;
8670	        return formState.paymentOptionAutoRenew?.[paymentOptionKey] ?? false;
8671	    }
8672	    else {
8673	        // Default behavior for legacy payment options without configuration
8674	        return true;
8675	    }
8676	};
8677	const loadZuoraFormConfiguration = (form, formActions) => {
8678	    const formState = formActions.getFormState();
8679	    if (isDynamicForm(form, formState)) {
8680	        return loadZuoraDynamicFormKey(form, formActions);
8681	    }
8682	    // Get configuration based on form type
8683	    const paymentConfig = formConfigAs(form);
8684	    let hostedPageConfig;
8685	    if (paymentConfig.changeSubscriptionMode) {
8686	        hostedPageConfig = getChangeSubscriptionPaymentConfiguration(form, formState);
8687	    }
8688	    else {
8689	        // Use regular payment provider configuration
8690	        hostedPageConfig = paymentConfig.paymentProviderFormConfig;
8691	    }
8692	    if (!hostedPageConfig) {
8693	        throw new Error('No hosted page configuration found for payment provider');
8694	    }
8695	    return request("plugins/public/zuora-billing/payment-form-token", {
8696	        method: "POST",
8697	        bodyObject: {
8698	            hostedPageId: hostedPageConfig.hostedPageId,
8699	            hostedPageUrl: hostedPageConfig.hostedPageUrl,
8700	        }
8701	    }, formActions).then((response) => response.json());
8702	};
8703	const loadZuoraUi = (form, formState, formActions) => {
8704	    // Check if we're in payment method setup mode for Change Subscription
8705	    const isPaymentMethodSetupMode = formConfigAs(form).changeSubscriptionMode &&
8706	        formState.requiresPaymentMethodSetup === true;
8707	    // Don't show card form if changing a Zuora subscription (unless in payment method setup mode)
8708	    if (formConfigAs(form).changeSubscriptionMode && !isPaymentMethodSetupMode) {
8709	        formActions.updateFormState({
8710	            paymentFormComplete: true,
8711	        });
8712	        return;
8713	    }
8714	    if (form.formType === FormType.LIST_SUBSCRIPTIONS || form.formType === FormType.LIST_GIFT_SUBSCRIPTIONS_SENT || isPaymentMethodSetupMode) {
8715	        void loadZuora()
8716	            .then(() => loadZuoraFormConfiguration(form, formActions))
8717	            .then(formToken => {
8718	            if (isDynamicForm(form, formState)) {
8719	                return loadZuoraDynamicFormUi(form, formState, formActions, formToken, 2);
8720	            }
8721	            const formConfiguration = {
8722	                tenantId: formToken.tenantId,
8723	                token: formToken.token,
8724	                signature: formToken.signature,
8725	                key: formToken.key,
8726	                id: formToken.id,
8727	                url: formToken.url,
8728	                style: 'inline',
8729	                submitEnabled: true,
8730	            };
8731	            const prePopulatedFields = {
8732	                email: formState.emailAddress,
8733	            };
8734	            window.Z.setEventHandler("onloadCallback", () => {
8735	                formActions.updateFormState({
8736	                    paymentProviderFormLoaded: true,
8737	                });
8738	            });
8739	            window.Z.render(formConfiguration, prePopulatedFields, (event) => {
8740	                if (event.success !== "true") {
8741	                    console.error("Payment failed", event);
8742	                    formActions.updateFormState({
8743	                        serverErrors: [ServerError.PAYMENT_PROCESSING_ERROR]
8744	                    });
8745	                    logDataLayerEvent(form, 'zephr_form_error', {
8746	                        error: ServerError[ServerError.PAYMENT_PROCESSING_ERROR],
8747	                    });
8748	                    return;
8749	                }
8750	                // Handle payment method setup completion for Change Subscription forms
8751	                const isPaymentMethodSetupMode = formConfigAs(form).changeSubscriptionMode &&
8752	                    formState.requiresPaymentMethodSetup === true;
8753	                if (isPaymentMethodSetupMode) {
8754	                    formActions.updateFormState({
8755	                        paymentFormComplete: true,
8756	                        paymentMethodSetupComplete: true,
8757	                        requiresPaymentMethodSetup: false,
8758	                        paymentProviderVendorFields: {
8759	                            detail: JSON.stringify({
8760	                                creditCardCountry: event.credit
8760CardCountry,
8761	                                creditCardState: event.creditCardState,
8762	                                refId: event.refId,
8763	                                email: event.email,
8764	                            }),
8765	                        }
8766	                    });
8767	                }
8768	                else {
8769	                    formActions.updateFormState({
8770	                        paymentFormComplete: true,
8771	                        paymentProviderVendorFields: {
8772	                            detail: JSON.stringify({
8773	                                creditCardCountry: event.creditCardCountry,
8774	                                creditCardState: event.creditCardState,
8775	                                refId: event.refId,
8776	                                email: event.email,
8777	                            }),
8778	                        }
8779	                    });
8780	                }
8781	                formActions.completeSection();
8782	            });
8783	        });
8784	    }
8785	    else {
8786	        void loadZuora()
8787	            .then(() => loadZuoraFormConfiguration(form, formActions))
8788	            .then(formToken => {
8789	            if (!getRelevantCurrency(form, formState)) {
8790	                formActions.updateFormState({
8791	                    serverErrors: [ServerError.PAYMENT_PROCESSING_ERROR]
8792	                });
8793	                console.error("Form currency not set");
8794	                logDataLayerEvent(form, 'zephr_form_error', {
8795	                    error: ServerError[ServerError.PAYMENT_PROCESSING_ERROR],
8796	                });
8797	                return;
8798	            }
8799	            if (isDynamicForm(form, formState)) {
8800	                return loadZuoraDynamicFormUi(form, formState, formActions, formToken, 1);
8801	            }
8802	            const formConfiguration = {
8803	                tenantId: formToken.tenantId,
8804	                token: formToken.token,
8805	                signature: formToken.signature,
8806	                key: formToken.key,
8807	                id: formToken.id,
8808	                url: formToken.url,
8809	                style: 'inline',
8810	                submitEnabled: true,
8811	            };
8812	            const prePopulatedFields = {
8813	                email: formState.emailAddress,
8814	            };
8815	            window.Z.setEventHandler("onloadCallback", () => {
8816	                formActions.updateFormState({
8817	                    paymentProviderFormLoaded: true,
8818	                });
8819	            });
8820	            window.Z.render(formConfiguration, prePopulatedFields, (event) => {
8821	                if (event.success !== "true") {
8822	                    console.error("Payment failed", event);
8823	                    formActions.updateFormState({
8824	                        serverErrors: [ServerError.PAYMENT_PROCESSING_ERROR]
8825	                    });
8826	                    logDataLayerEvent(form, 'zephr_form_error', {
8827	                        error: ServerError[ServerError.PAYMENT_PROCESSING_ERROR],
8828	                    });
8829	                    return;
8830	                }
8831	                const currentFormState = formActions.getFormState();
8832	                const autoRenewValue = getAutoRenewValue(currentFormState);
8833	                formActions.updateFormState({
8834	                    paymentFormComplete: true,
8835	                    paymentProviderVendorFields: {
8836	                        currency: getRelevantCurrency(form, currentFormState),
8837	                        detail: JSON.stringify({
8838	                            creditCardCountry: event.creditCardCountry,
8839	                            creditCardState: event.creditCardState,
8840	                            refId: event.refId,
8841	                            email: event.email,
8842	                        }),
8843	                        ...(currentFormState.dynamicOfferResult ? { dynamicOfferResult: JSON.stringify(currentFormState.dynamicOfferResult) } : {}),
8844	                        ...(currentFormState.paymentOption?.terms ? {
8845	                            terms: JSON.stringify({
8846	                                ...currentFormState.paymentOption.terms,
8847	                                autoRenew: autoRenewValue
8848	                            })
8849	                        } : {}),
8850	                        ...(currentFormState.paymentOption?.termsAndConditions ? {
8851	                            termsAndConditions: JSON.stringify({
8852	                                ...currentFormState.paymentOption.termsAndConditions,
8853	                                autoRenew: autoRenewValue
8854	                            })
8855	                        } : {}),
8856	                        ...(currentFormState.paymentOption?.triggerOffsets ? { triggerOffsets: JSON.stringify(currentFormState.paymentOption.triggerOffsets) } : {}),
8857	                        ...(currentFormState.paymentOption?.changeSubscriptionTriggerOffsets ? { changeSubscriptionTriggerOffsets: JSON.stringify(currentFormState.paymentOption.changeSubscriptionTriggerOffsets) } : {}),
8858	                    }
8859	                });
8860	                formActions.completeSection();
8861	            });
8862	        });
8863	    }
8864	};
8865	// TODO: Remove the ability to add MULTISELECT fields in the Console (Filter it out from the listBillingCustomFields endpoint)
8866	const castCustomFieldValue = (value, type) => {
8867	    const trimmedValue = value.trim();
8868	    try {
8869	        switch (type.toUpperCase()) {
8870	            case 'INTEGER': {
8871	                const intVal = parseInt(trimmedValue, 10);
8872	                if (isNaN(intVal))
8873	                    throw new Error();
8874	                return intVal;
8875	            }
8876	            case 'NUMBER': {
8877	                const floatVal = parseFloat(trimmedValue);
8878	                if (isNaN(floatVal))
8879	                    throw new Error();
8880	                return floatVal;
8881	            }
8882	            case 'BOOLEAN':
8883	                return trimmedValue.toLowerCase() === 'true';
8884	            case 'TEXT':
8885	            case 'LONGTEXT':
8886	            case 'PICKLIST':
8887	            default:
8888	                return trimmedValue.toString();
8889	        }
8890	    }
8891	    catch (e) {
8892	        console.warn(`Error casting custom field value "${trimmedValue}" to type ${type}`);
8893	        return null;
8894	    }
8895	};
8896	const zuoraComplete = async (form, formState, formActions) => {
8897	    const typeConfiguration = formConfigAs(form);
8898	    const requires_address = typeConfiguration.requires_address;
8899	    const isChangeSubscriptionMode = formConfigAs(form).changeSubscriptionMode;
8900	    formActions.incrementRequestCount();
8901	    try {
8902	        if (!isChangeSubscriptionMode && !formState.paymentProviderVendorFields) {
8903	            console.error("Flow error - no Zuora vendor fields found");
8904	            formActions.updateFormState({
8905	                serverErrors: [ServerError.PAYMENT_PROCESSING_ERROR]
8906	            });
8907	            logDataLayerEvent(form, 'zephr_form_error', {
8908	                error: ServerError[ServerError.PAYMENT_PROCESSING_ERROR],
8909	            });
8910	            return Promise.resolve();
8911	        }
8912	        const rawCustomFields = formConfigAs(form).paymentProviderFormConfig?.subscriptionCustomFields || [];
8913	        const subscriptionCustomFields = {};
8914	        if (rawCustomFields?.length) {
8915	            const subscriptionFormScope = await initializeSubscriptionScope(form, formActions);
8916	            for (const field of rawCustomFields) {
8917	                const processedTemplate = processMustacheTemplate(field.value, subscriptionFormScope) || '';
8918	                subscriptionCustomFields[field.name] = castCustomFieldValue(processedTemplate, field.type);
8919	            }
8920	        }
8921	        const hasCustomFields = !!Object.keys(subscriptionCustomFields).length;
8922	        // For changeSubscriptionMode, create vendor fields from termsAndConditions
8923	        let vendorFields;
8924	        if (isChangeSubscriptionMode && formState.paymentOption?.termsAndConditions) {
8925	            const autoRenewValue = getAutoRenewValue(formState);
8926	            const changingFromSubscription = formState
8927	                .validChangeFromPlans
8928	                .find(plan => formState.paymentOption.slug === plan.planSlug && formState.paymentOption.productId === plan.productId)
8929	                ?.changesFromSubscription;
8930	            vendorFields = {
8931	                currency: formState.paymentOption.currencyCode,
8932	                detail: JSON.stringify({
8933	                    refId: changingFromSubscription?.externalId || '',
8934	                    email: formState.emailAddress || ''
8935	                }),
8936	                termsAndConditions: JSON.stringify({
8937	                    ...formState.paymentOption.termsAndConditions,
8938	                    autoRenew: autoRenewValue
8939	                }),
8940	                ...(hasCustomFields ? { subscriptionCustomFields: JSON.stringify(subscriptionCustomFields) } : {})
8941	            };
8942	        }
8943	        else if (formState.convertCancelSubscriptionToAcceptOffer) {
8944	            const changingFromSubscription = formState
8945	                .validChangeFromPlans
8946	                .find(plan => formState.paymentOption.slug === plan.planSlug && formState.paymentOption.productId === plan.productId)
8947	                ?.changesFromSubscription;
8948	            vendorFields = {
8949	                currency: formState.paymentOption.currencyCode,
8950	                detail: JSON.stringify({
8951	                    refId: changingFromSubscription?.externalId || '',
8952	                    email: formState.emailAddress || ''
8953	                }),
8954	                ...(hasCustomFields ? { subscriptionCustomFields: JSON.stringify(subscriptionCustomFields) } : {})
8955	            };
8956	        }
8957	        else {
8958	            vendorFields = {
8959	                ...formState.paymentProviderVendorFields,
8960	                ...(hasCustomFields ? { subscriptionCustomFields: JSON.stringify(subscriptionCustomFields) } : {})
8961	            };
8962	        }
8963	        const { url, body, method } = mapToPayRequest(form, formState, paymentProviders.ZUORA, vendorFields);
8964	        if (form.formType === FormType.GIFT_SUBSCRIPTION) {
8965	            const giftBody = {
8966	                ...body, // Includes attributes mapped by mapToPayRequest
8967	                plan_id: `zuora-billing_product_rate_plan-${body.plan_id}-unused`,
8968	                discount_code: formState.promoCodeValid ? formState.promoCode : undefined,
8969	                vendor_fields: {
8970	                    ...(body.vendor_fields || {}),
8971	                    // Only include giftDetails if isGiftForm is true (defaults to true if no gift toggle elements are present)
8972	                    ...(formState.isGiftForm ? {
8973	                        giftDetails: JSON.stringify({
8974	                            recipient_email: formState.giftRecipient.email,
8975	                            firstName: formState.giftRecipient.firstName,
8976	                            lastName: formState.giftRecipient.lastName,
8977	                            message: formState.giftRecipient.customMessage,
8978	                            ...(requires_address ? {
8979	                                recipient_address: {
8980	                                    addressLine1: formState.giftRecipient.recipientAddress?.addressLine1 || '',
8981	                                    addressLine2: formState.giftRecipient.recipientAddress?.addressLine2 || '',
8982	                                    city: formState.giftRecipient.recipientAddress?.city || '',
8983	                                    state: formState.giftRecipient.recipientAddress?.state || '',
8984	                                    country: formState.giftRecipient.recipientAddress?.country || '',
8985	                                    postalCode: formState.giftRecipient.recipientAddress?.postalCode || '',
8986	                                }
8987	                            } : {}),
8988	                            ...(formState.giftRecipient.futureDeliveryEnabled && formState.giftRecipient.futureDeliveryDate ? {
8989	                                startDate: formState.giftRecipient.futureDeliveryDate
8990	                            } : {})
8991	                        })
8992	                    } : {})
8993	                }
8994	            };
8995	            const giftResponse = await request('zephr/subscribe', {
8996	                method: 'POST',
8997	                bodyObject: {
8998	                    ...giftBody,
8999	                    ...(formState.pfToken ? { pf_token: formState.pfToken } : {})
9000	                }
9001	            }, formActions);
9002	            if (!giftResponse?.ok) {
9003	                console.error("Error creating gift subscription", giftResponse);
9004	                formActions.updateFormState({
9005	                    serverErrors: [ServerError.PAYMENT_PROCESSING_ERROR]
9006	                });
9007	                return Promise.reject();
9008	            }
9009	            return Promise.resolve();
9010	        }
9011	        else {
9012	            // Regular flow for non-gift subscriptions
9013	            const modifiedBody = formConfigAs(form).changeSubscriptionMode ? body : {
9014	                ...body,
9015	                // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
9016	                plan_id: `zuora-billing_product_rate_plan-${body.plan_id}-unused`,
9017	            };
9018	            return await request(url, {
9019	                method,
9020	                bodyObject: {
9021	                    ...modifiedBody,
9022	                    ...(url === 'zephr/subscribe' && formState.pfToken ? { pf_token: formState.pfToken } : {})
9023	                }
9024	            }, formActions).then(response => {
9025	                if (!response?.ok) {
9026	                    void response.json().then(json => {
9027	                        console.error("Error when subscribing", json);
9028	                    });
9029	                    return Promise.reject();
9030	                }
9031	            });
9032	        }
9033	    }
9034	    finally {
9035	        formActions.decrementRequestCount();
9036	        formActions.updateFormState({
9037	            paymentProviderFormBusy: false
9038	        });
9039	    }
9040	};
9041	const zuoraChangePayment = (form, formState, formActions) => {
9042	    console.log(formState.paymentProviderVendorFields);
9043	    const paymentMethodId = JSON.parse(formState.paymentProviderVendorFields?.detail).refId;
9044	    return request('plugins/public/zuora-billing/update-account', {
9045	        method: 'POST',
9046	        bodyObject: {
9047	            paymentMethodId,
9048	        }
9049	    }, formActions).then(response => {
9050	        if (!response?.ok) {
9051	            console.error("Error when changing default payment method", response);
9052	            return Promise.reject();
9053	        }
9054	    });
9055	};
9056
9057	const getDynamicOffer = async (form, formActions) => {
9058	    const dynamicOfferId = formConfigAs(form).dynamicOffer?.id;
9059	    const dynamicOfferPreview = formConfigAs(form).dynamicOfferPreview;
9060	    if (form.environment.previewMode) {
9061	        formActions.updateFormState({ dynamicOfferResult: dynamicOfferPreview });
9062	        return;
9063	    }
9064	    let session;
9065	    let jwt;
9066	    try {
9067	        session = document.cookie.match(/blaize_session=[0-9a-z-]+/)[0].substring(15);
9068	    }
9069	    catch {
9070	        session = null;
9071	    }
9072	    try {
9073	        jwt = document.cookie.match(/(?<=blaize_jwt=)[^;]+/)[0];
9074	    }
9075	    catch {
9076	        jwt = null;
9077	    }
9078	    if (!dynamicOfferId) {
9079	        throw Error('Missing Dynamic Offer id');
9080	    }
9081	    const response = await request('zephr/public/decisions/v2/dynamic-offers', {
9082	        method: "POST",
9083	        bodyObject: {
9084	            "dynamic_offer": { "slug": dynamicOfferId },
9085	            "session": session,
9086	            "jwt": jwt
9087	        },
9088	    }, formActions);
9089	    const dynamicOfferResult = await response.json();
9090	    formActions.updateFormState({ dynamicOfferResult });
9091	};
9092	const mockBillingPreviewResponse = (dynamicOfferResult) => {
9093	    const chargeOne = dynamicOfferResult?.products
9094	        ? dynamicOfferResult.products[0].paymentPlans[0].charges[0]
9095	        : { prices: [{ price: 25 }], chargeData: { name: 'Monthly Fee' } };
9096	    const amount = chargeOne.prices[0]?.price;
9097	    const chargeName = chargeOne.chargeData?.name;
9098	    return {
9099	        "success": true,
9100	        "contractedMrr": amount,
9101	        "totalContractedValue": null,
9102	        "amount": amount + 3,
9103	        "amountWithoutTax": amount,
9104	        "taxAmount": 3,
9105	        "invoiceTargetDate": "2024-05-20",
9106	        "documentDate": "2024-05-20",
9107	        "invoiceItems": {
9108	            "0": {
9109	                "serviceStartDate": "2024-05-20",
9110	                "serviceEndDate": "2024-06-19",
9111	                "chargeAmount": amount,
9112	                "taxAmount": 3,
9113	                "chargeDescription": "",
9114	                "chargeName": chargeName,
9115	                "productName": "Product",
9116	                "productRatePlanChargeId": "8ad097b48f533234018f57a8982a5a45",
9117	                "quantity": 1,
9118	                "unitOfMeasure": ""
9119	            }
9120	        }
9121	    };
9122	};
9123	const filterChangeSubDynamicOfferResponse = (dynamicOfferResult, form, formState) => {
9124	    if (!formConfigAs(form).changeSubscriptionMode || form.environment.previewMode) {
9125	        return dynamicOfferResult;
9126	    }
9127	    return {
9128	        ...dynamicOfferResult,
9129	        products: dynamicOfferResult.products.map(product => ({
9130	            ...product,
9131	            paymentPlans: product.paymentPlans.filter(plan => formState
9132	                .validChangeFromPlans
9133	                .some(changeFromPlan => changeFromPlan.planSlug === plan.planId && changeFromPlan.productId === product.id))
9134	        }))
9135	    };
9136	};
9137
9138	function ownKeys(e, r) {
9139	  var t = Object.keys(e);
9140	  if (Object.getOwnPropertySymbols) {
9141	    var o = Object.getOwnPropertySymbols(e);
9142	    r && (o = o.filter(function (r) {
9143	      return Object.getOwnPropertyDescriptor(e, r).enumerable;
9144	    })), t.push.apply(t, o);
9145	  }
9146	  return t;
9147	}
9148	function _objectSpread2(e) {
9149	  for (var r = 1; r < arguments.length; r++) {
9150	    var t = null != arguments[r] ? arguments[r] : {};
9151	    r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {
9152	      _defineProperty(e, r, t[r]);
9153	    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {
9154	      Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
9155	    });
9156	  }
9157	  return e;
9158	}
9159	function _defineProperty(obj, key, value) {
9160	  key = _toPropertyKey(key);
9161	  if (key in obj) {
9162	    Object.defineProperty(obj, key, {
9163	      value: value,
9164	      enumerable: true,
9165	      configurable: true,
9166	      writable: true
9167	    });
9168	  } else {
9169	    obj[key] = value;
9170	  }
9171	  return obj;
9172	}
9173	function _objectWithoutPropertiesLoose(source, excluded) {
9174	  if (source == null) return {};
9175	  var target = {};
9176	  var sourceKeys = Object.keys(source);
9177	  var key, i;
9178	  for (i = 0; i < sourceKeys.length; i++) {
9179	    key = sourceKeys[i];
9180	    if (excluded.indexOf(key) >= 0) continue;
9181	    target[key] = source[key];
9182	  }
9183	  return target;
9184	}
9185	function _objectWithoutProperties(source, excluded) {
9186	  if (source == null) return {};
9187	  var target = _objectWithoutPropertiesLoose(source, excluded);
9188	  var key, i;
9189	  if (Object.getOwnPropertySymbols) {
9190	    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
9191	    for (i = 0; i < sourceSymbolKeys.length; i++) {
9192	      key = sourceSymbolKeys[i];
9193	      if (excluded.indexOf(key) >= 0) continue;
9194	      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
9195	      target[key] = source[key];
9196	    }
9197	  }
9198	  return target;
9199	}
9200	function _toPrimitive(input, hint) {
9201	  if (typeof input !== "object" || input === null) return input;
9202	  var prim = input[Symbol.toPrimitive];
9203	  if (prim !== undefined) {
9204	    var res = prim.call(input, hint || "default");
9205	    if (typeof res !== "object") return res;
9206	    throw new TypeError("@@toPrimitive must return a primitive value.");
9207	  }
9208	  return (hint === "string" ? String : Number)(input);
9209	}
9210	function _toPropertyKey(arg) {
9211	  var key = _toPrimitive(arg, "string");
9212	  return typeof key === "symbol" ? key : String(key);
9213	}
9214
9215	var countries$1 = {
9216		AD: "Andorra",
9217		AE: "United Arab Emirates",
9218		AF: "Afghanistan",
9219		AG: "Antigua and Barbuda",
9220		AI: "Anguilla",
9221		AL: "Albania",
9222		AM: "Armenia",
9223		AO: "Angola",
9224		AQ: "Antarctica",
9225		AR: "Argentina",
9226		AS: "American Samoa",
9227		AT: "Austria",
9228		AU: "Australia",
9229		AW: "Aruba",
9230		AX: "Åland Islands",
9231		AZ: "Azerbaijan",
9232		BA: "Bosnia and Herzegovina",
9233		BB: "Barbados",
9234		BD: "Bangladesh",
9235		BE: "Belgium",
9236		BF: "Burkina Faso",
9237		BG: "Bulgaria",
9238		BH: "Bahrain",
9239		BI: "Burundi",
9240		BJ: "Benin",
9241		BL: "Saint Barthélemy",
9242		BM: "Bermuda",
9243		BN: "Brunei",
9244		BO: "Bolivia",
9245		BQ: "Caribbean Netherlands",
9246		BR: "Brazil",
9247		BS: "Bahamas",
9248		BT: "Bhutan",
9249		BW: "Botswana",
9250		BY: "Belarus",
9251		BZ: "Belize",
9252		CA: "Canada",
9253		CC: "Cocos Islands",
9254		CD: "Democratic Republic of the Congo",
9255		CF: "Central African Republic",
9256		CG: "Republic of the Congo",
9257		CH: "Switzerland",
9258		CI: "Ivory Coast",
9259		CK: "Cook Islands",
9260		CL: "Chile",
9261		CM: "Cameroon",
9262		CN: "China",
9263		CO: "Colombia",
9264		CR: "Costa Rica",
9265		CU: "Cuba",
9266		CV: "Cabo Verde",
9267		CW: "Curaçao",
9268		CX: "Christmas Island",
9269		CY: "Cyprus",
9270		CZ: "Czechia",
9271		DE: "Germany",
9272		DJ: "Djibouti",
9273		DK: "Denmark",
9274		DM: "Dominica",
9275		DO: "Dominican Republic",
9276		DZ: "Algeria",
9277		EC: "Ecuador",
9278		EE: "Estonia",
9279		EG: "Egypt",
9280		EH: "Western Sahara",
9281		ER: "Eritrea",
9282		ES: "Spain",
9283		ET: "Ethiopia",
9284		FI: "Finland",
9285		FJ: "Fiji",
9286		FK: "Falkland Islands",
9287		FM: "Micronesia",
9288		FO: "Faroe Islands",
9289		FR: "France",
9290		GA: "Gabon",
9291		GB: "United Kingdom",
9292		GD: "Grenada",
9293		GE: "Georgia",
9294		GF: "French Guiana",
9295		GG: "Guernsey",
9296		GH: "Ghana",
9297		GI: "Gibraltar",
9298		GL: "Greenland",
9299		GM: "Gambia",
9300		GN: "Guinea",
9301		GP: "Guadeloupe",
9302		GQ: "Equatorial Guinea",
9303		GR: "Greece",
9304		GS: "South Georgia and the South Sandwich Islands",
9305		GT: "Guatemala",
9306		GU: "Guam",
9307		GW: "Guinea-Bissau",
9308		GY: "Guyana",
9309		HK: "Hong Kong",
9310		HN: "Honduras",
9311		HR: "Croatia",
9312		HT: "Haiti",
9313		HU: "Hungary",
9314		ID: "Indonesia",
9315		IE: "Ireland",
9316		IL: "Israel",
9317		IM: "Isle of Man",
9318		IN: "India",
9319		IO: "British Indian Ocean Territory",
9320		IQ: "Iraq",
9321		IR: "Iran",
9322		IS: "Iceland",
9323		IT: "Italy",
9324		JE: "Jersey",
9325		JM: "Jamaica",
9326		JO: "Jordan",
9327		JP: "Japan",
9328		KE: "Kenya",
9329		KG: "Kyrgyzstan",
9330		KH: "Cambodia",
9331		KI: "Kiribati",
9332		KM: "Comoros",
9333		KN: "Saint Kitts and Nevis",
9334		KP: "North Korea",
9335		KR: "South Korea",
9336		KW: "Kuwait",
9337		KY: "Cayman Islands",
9338		KZ: "Kazakhstan",
9339		LA: "Laos",
9340		LB: "Lebanon",
9341		LC: "Saint Lucia",
9342		LI: "Liechtenstein",
9343		LK: "Sri Lanka",
9344		LR: "Liberia",
9345		LS: "Lesotho",
9346		LT: "Lithuania",
9347		LU: "Luxembourg",
9348		LV: "Latvia",
9349		LY: "Libya",
9350		MA: "Morocco",
9351		MC: "Monaco",
9352		MD: "Moldova",
9353		ME: "Montenegro",
9354		MF: "Saint Martin",
9355		MG: "Madagascar",
9356		MH: "Marshall Islands",
9357		MK: "North Macedonia",
9358		ML: "Mali",
9359		MM: "Myanmar",
9360		MN: "Mongolia",
9361		MO: "Macao",
9362		MP: "Northern Mariana Islands",
9363		MQ: "Martinique",
9364		MR: "Mauritania",
9365		MS: "Montserrat",
9366		MT: "Malta",
9367		MU: "Mauritius",
9368		MV: "Maldives",
9369		MW: "Malawi",
9370		MX: "Mexico",
9371		MY: "Malaysia",
9372		MZ: "Mozambique",
9373		NA: "Namibia",
9374		NC: "New Caledonia",
9375		NE: "Niger",
9376		NF: "Norfolk Island",
9377		NG: "Nigeria",
9378		NI: "Nicaragua",
9379		NL: "Netherlands",
9380		NO: "Norway",
9381		NP: "Nepal",
9382		NR: "Nauru",
9383		NU: "Niue",
9384		NZ: "New Zealand",
9385		OM: "Oman",
9386		PA: "Panama",
9387		PE: "Peru",
9388		PF: "French Polynesia",
9389		PG: "Papua New Guinea",
9390		PH: "Philippines",
9391		PK: "Pakistan",
9392		PL: "Poland",
9393		PM: "Saint Pierre and Miquelon",
9394		PN: "Pitcairn",
9395		PR: "Puerto Rico",
9396		PS: "Palestine",
9397		PT: "Portugal",
9398		PW: "Palau",
9399		PY: "Paraguay",
9400		QA: "Qatar",
9401		RE: "Réunion",
9402		RO: "Romania",
9403		RS: "Serbia",
9404		RU: "Russia",
9405		RW: "Rwanda",
9406		SA: "Saudi Arabia",
9407		SB: "Solomon Islands",
9408		SC: "Seychelles",
9409		SD: "Sudan",
9410		SE: "Sweden",
9411		SG: "Singapore",
9412		SH: "Saint Helena, Ascension and Tristan da Cunha",
9413		SI: "Slovenia",
9414		SJ: "Svalbard and Jan Mayen",
9415		SK: "Slovakia",
9416		SL: "Sierra Leone",
9417		SM: "San Marino",
9418		SN: "Senegal",
9419		SO: "Somalia",
9420		SR: "Suriname",
9421		SS: "South Sudan",
9422		ST: "Sao Tome and Principe",
9423		SV: "El Salvador",
9424		SX: "Sint Maarten",
9425		SY: "Syria",
9426		SZ: "Eswatini",
9427		TC: "Turks and Caicos Islands",
9428		TD: "Chad",
9429		TF: "French Southern Territories",
9430		TG: "Togo",
9431		TH: "Thailand",
9432		TJ: "Tajikistan",
9433		TK: "Tokelau",
9434		TL: "Timor-Leste",
9435		TM: "Turkmenistan",
9436		TN: "Tunisia",
9437		TO: "Tonga",
9438		TR: "Türkiye",
9439		TT: "Trinidad and Tobago",
9440		TV: "Tuvalu",
9441		TW: "Taiwan",
9442		TZ: "Tanzania",
9443		UA: "Ukraine",
9444		UG: "Uganda",
9445		UM: "United States Minor Outlying Islands",
9446		US: "United States of America",
9447		UY: "Uruguay",
9448		UZ: "Uzbekistan",
9449		VA: "Holy See",
9450		VC: "Saint Vincent and the Grenadines",
9451		VE: "Venezuela",
9452		VG: "Virgin Islands (UK)",
9453		VI: "Virgin Islands (US)",
9454		VN: "Vietnam",
9455		VU: "Vanuatu",
9456		WF: "Wallis and Futuna",
9457		WS: "Samoa",
9458		YE: "Yemen",
9459		YT: "Mayotte",
9460		ZA: "South Africa",
9461		ZM: "Zambia",
9462		ZW: "Zimbabwe"
9463	};
9464	var timezones$1 = {
9465		"Africa/Abidjan": {
9466			u: 0,
9467			c: [
9468				"CI",
9469				"BF",
9470				"GH",
9471				"GM",
9472				"GN",
9473				"IS",
9474				"ML",
9475				"MR",
9476				"SH",
9477				"SL",
9478				"SN",
9479				"TG"
9480			]
9481		},
9482		"Africa/Accra": {
9483			a: "Africa/Abidjan",
9484			c: [
9485				"GH"
9486			],
9487			r: 1
9488		},
9489		"Africa/Addis_Ababa": {
9490			a: "Africa/Nairobi",
9491			c: [
9492				"ET"
9493			],
9494			r: 1
9495		},
9496		"Africa/Algiers": {
9497			u: 60,
9498			c: [
9499				"DZ"
9500			]
9501		},
9502		"Africa/Asmara": {
9503			a: "Africa/Nairobi",
9504			c: [
9505				"ER"
9506			],
9507			r: 1
9508		},
9509		"Africa/Asmera": {
9510			a: "Africa/Nairobi",
9511			c: [
9512				"ER"
9513			],
9514			r: 1
9515		},
9516		"Africa/Bamako": {
9517			a: "Africa/Abidjan",
9518			c: [
9519				"ML"
9520			],
9521			r: 1
9522		},
9523		"Africa/Bangui": {
9524			a: "Africa/Lagos",
9525			c: [
9526				"CF"
9527			],
9528			r: 1
9529		},
9530		"Africa/Banjul": {
9531			a: "Africa/Abidjan",
9532			c: [
9533				"GM"
9534			],
9535			r: 1
9536		},
9537		"Africa/Bissau": {
9538			u: 0,
9539			c: [
9540				"GW"
9541			]
9542		},
9543		"Africa/Blantyre": {
9544			a: "Africa/Maputo",
9545			c: [
9546				"MW"
9547			],
9548			r: 1
9549		},
9550		"Africa/Brazzaville": {
9551			a: "Africa/Lagos",
9552			c: [
9553				"CG"
9554			],
9555			r: 1
9556		},
9557		"Africa/Bujumbura": {
9558			a: "Africa/Maputo",
9559			c: [
9560				"BI"
9561			],
9562			r: 1
9563		},
9564		"Africa/Cairo": {
9565			u: 120,
9566			d: 180,
9567			c: [
9568				"EG"
9569			]
9570		},
9571		"Africa/Casablanca": {
9572			u: 60,
9573			d: 0,
9574			c: [
9575				"MA"
9576			]
9577		},
9578		"Africa/Ceuta": {
9579			u: 60,
9580			d: 120,
9581			c: [
9582				"ES"
9583			]
9584		},
9585		"Africa/Conakry": {
9586			a: "Africa/Abidjan",
9587			c: [
9588				"GN"
9589			],
9590			r: 1
9591		},
9592		"Africa/Dakar": {
9593			a: "Africa/Abidjan",
9594			c: [
9595				"SN"
9596			],
9597			r: 1
9598		},
9599		"Africa/Dar_es_Salaam": {
9600			a: "Africa/Nairobi",
9601			c: [
9602				"TZ"
9603			],
9604			r: 1
9605		},
9606		"Africa/Djibouti": {
9607			a: "Africa/Nairobi",
9608			c: [
9609				"DJ"
9610			],
9611			r: 1
9612		},
9613		"Africa/Douala": {
9614			a: "Africa/Lagos",
9615			c: [
vendor: 38,090 bytes, lines 9616-13003
9616				"CM"
9617			],
9618			r: 1
9619		},
9620		"Africa/El_Aaiun": {
9621			u: 60,
9622			d: 0,
9623			c: [
9624				"EH"
9625			]
9626		},
9627		"Africa/Freetown": {
9628			a: "Africa/Abidjan",
9629			c: [
9630				"SL"
9631			],
9632			r: 1
9633		},
9634		"Africa/Gaborone": {
9635			a: "Africa/Maputo",
9636			c: [
9637				"BW"
9638			],
9639			r: 1
9640		},
9641		"Africa/Harare": {
9642			a: "Africa/Maputo",
9643			c: [
9644				"ZW"
9645			],
9646			r: 1
9647		},
9648		"Africa/Johannesburg": {
9649			u: 120,
9650			c: [
9651				"ZA",
9652				"LS",
9653				"SZ"
9654			]
9655		},
9656		"Africa/Juba": {
9657			u: 120,
9658			c: [
9659				"SS"
9660			]
9661		},
9662		"Africa/Kampala": {
9663			a: "Africa/Nairobi",
9664			c: [
9665				"UG"
9666			],
9667			r: 1
9668		},
9669		"Africa/Khartoum": {
9670			u: 120,
9671			c: [
9672				"SD"
9673			]
9674		},
9675		"Africa/Kigali": {
9676			a: "Africa/Maputo",
9677			c: [
9678				"RW"
9679			],
9680			r: 1
9681		},
9682		"Africa/Kinshasa": {
9683			a: "Africa/Lagos",
9684			c: [
9685				"CD"
9686			],
9687			r: 1
9688		},
9689		"Africa/Lagos": {
9690			u: 60,
9691			c: [
9692				"NG",
9693				"AO",
9694				"BJ",
9695				"CD",
9696				"CF",
9697				"CG",
9698				"CM",
9699				"GA",
9700				"GQ",
9701				"NE"
9702			]
9703		},
9704		"Africa/Libreville": {
9705			a: "Africa/Lagos",
9706			c: [
9707				"GA"
9708			],
9709			r: 1
9710		},
9711		"Africa/Lome": {
9712			a: "Africa/Abidjan",
9713			c: [
9714				"TG"
9715			],
9716			r: 1
9717		},
9718		"Africa/Luanda": {
9719			a: "Africa/Lagos",
9720			c: [
9721				"AO"
9722			],
9723			r: 1
9724		},
9725		"Africa/Lubumbashi": {
9726			a: "Africa/Maputo",
9727			c: [
9728				"CD"
9729			],
9730			r: 1
9731		},
9732		"Africa/Lusaka": {
9733			a: "Africa/Maputo",
9734			c: [
9735				"ZM"
9736			],
9737			r: 1
9738		},
9739		"Africa/Malabo": {
9740			a: "Africa/Lagos",
9741			c: [
9742				"GQ"
9743			],
9744			r: 1
9745		},
9746		"Africa/Maputo": {
9747			u: 120,
9748			c: [
9749				"MZ",
9750				"BI",
9751				"BW",
9752				"CD",
9753				"MW",
9754				"RW",
9755				"ZM",
9756				"ZW"
9757			]
9758		},
9759		"Africa/Maseru": {
9760			a: "Africa/Johannesburg",
9761			c: [
9762				"LS"
9763			],
9764			r: 1
9765		},
9766		"Africa/Mbabane": {
9767			a: "Africa/Johannesburg",
9768			c: [
9769				"SZ"
9770			],
9771			r: 1
9772		},
9773		"Africa/Mogadishu": {
9774			a: "Africa/Nairobi",
9775			c: [
9776				"SO"
9777			],
9778			r: 1
9779		},
9780		"Africa/Monrovia": {
9781			u: 0,
9782			c: [
9783				"LR"
9784			]
9785		},
9786		"Africa/Nairobi": {
9787			u: 180,
9788			c: [
9789				"KE",
9790				"DJ",
9791				"ER",
9792				"ET",
9793				"KM",
9794				"MG",
9795				"SO",
9796				"TZ",
9797				"UG",
9798				"YT"
9799			]
9800		},
9801		"Africa/Ndjamena": {
9802			u: 60,
9803			c: [
9804				"TD"
9805			]
9806		},
9807		"Africa/Niamey": {
9808			a: "Africa/Lagos",
9809			c: [
9810				"NE"
9811			],
9812			r: 1
9813		},
9814		"Africa/Nouakchott": {
9815			a: "Africa/Abidjan",
9816			c: [
9817				"MR"
9818			],
9819			r: 1
9820		},
9821		"Africa/Ouagadougou": {
9822			a: "Africa/Abidjan",
9823			c: [
9824				"BF"
9825			],
9826			r: 1
9827		},
9828		"Africa/Porto-Novo": {
9829			a: "Africa/Lagos",
9830			c: [
9831				"BJ"
9832			],
9833			r: 1
9834		},
9835		"Africa/Sao_Tome": {
9836			u: 0,
9837			c: [
9838				"ST"
9839			]
9840		},
9841		"Africa/Timbuktu": {
9842			a: "Africa/Abidjan",
9843			c: [
9844				"ML"
9845			],
9846			r: 1
9847		},
9848		"Africa/Tripoli": {
9849			u: 120,
9850			c: [
9851				"LY"
9852			]
9853		},
9854		"Africa/Tunis": {
9855			u: 60,
9856			c: [
9857				"TN"
9858			]
9859		},
9860		"Africa/Windhoek": {
9861			u: 120,
9862			c: [
9863				"NA"
9864			]
9865		},
9866		"America/Adak": {
9867			u: -600,
9868			d: -540,
9869			c: [
9870				"US"
9871			]
9872		},
9873		"America/Anchorage": {
9874			u: -540,
9875			d: -480,
9876			c: [
9877				"US"
9878			]
9879		},
9880		"America/Anguilla": {
9881			a: "America/Puerto_Rico",
9882			c: [
9883				"AI"
9884			],
9885			r: 1
9886		},
9887		"America/Antigua": {
9888			a: "America/Puerto_Rico",
9889			c: [
9890				"AG"
9891			],
9892			r: 1
9893		},
9894		"America/Araguaina": {
9895			u: -180,
9896			c: [
9897				"BR"
9898			]
9899		},
9900		"America/Argentina/Buenos_Aires": {
9901			u: -180,
9902			c: [
9903				"AR"
9904			]
9905		},
9906		"America/Argentina/Catamarca": {
9907			u: -180,
9908			c: [
9909				"AR"
9910			]
9911		},
9912		"America/Argentina/ComodRivadavia": {
9913			a: "America/Argentina/Catamarca",
9914			r: 1
9915		},
9916		"America/Argentina/Cordoba": {
9917			u: -180,
9918			c: [
9919				"AR"
9920			]
9921		},
9922		"America/Argentina/Jujuy": {
9923			u: -180,
9924			c: [
9925				"AR"
9926			]
9927		},
9928		"America/Argentina/La_Rioja": {
9929			u: -180,
9930			c: [
9931				"AR"
9932			]
9933		},
9934		"America/Argentina/Mendoza": {
9935			u: -180,
9936			c: [
9937				"AR"
9938			]
9939		},
9940		"America/Argentina/Rio_Gallegos": {
9941			u: -180,
9942			c: [
9943				"AR"
9944			]
9945		},
9946		"America/Argentina/Salta": {
9947			u: -180,
9948			c: [
9949				"AR"
9950			]
9951		},
9952		"America/Argentina/San_Juan": {
9953			u: -180,
9954			c: [
9955				"AR"
9956			]
9957		},
9958		"America/Argentina/San_Luis": {
9959			u: -180,
9960			c: [
9961				"AR"
9962			]
9963		},
9964		"America/Argentina/Tucuman": {
9965			u: -180,
9966			c: [
9967				"AR"
9968			]
9969		},
9970		"America/Argentina/Ushuaia": {
9971			u: -180,
9972			c: [
9973				"AR"
9974			]
9975		},
9976		"America/Aruba": {
9977			a: "America/Puerto_Rico",
9978			c: [
9979				"AW"
9980			],
9981			r: 1
9982		},
9983		"America/Asuncion": {
9984			u: -240,
9985			d: -180,
9986			c: [
9987				"PY"
9988			]
9989		},
9990		"America/Atikokan": {
9991			a: "America/Panama",
9992			c: [
9993				"CA"
9994			],
9995			r: 1
9996		},
9997		"America/Atka": {
9998			a: "America/Adak",
9999			r: 1
10000		},
10001		"America/Bahia": {
10002			u: -180,
10003			c: [
10004				"BR"
10005			]
10006		},
10007		"America/Bahia_Banderas": {
10008			u: -360,
10009			c: [
10010				"MX"
10011			]
10012		},
10013		"America/Barbados": {
10014			u: -240,
10015			c: [
10016				"BB"
10017			]
10018		},
10019		"America/Belem": {
10020			u: -180,
10021			c: [
10022				"BR"
10023			]
10024		},
10025		"America/Belize": {
10026			u: -360,
10027			c: [
10028				"BZ"
10029			]
10030		},
10031		"America/Blanc-Sablon": {
10032			a: "America/Puerto_Rico",
10033			c: [
10034				"CA"
10035			],
10036			r: 1
10037		},
10038		"America/Boa_Vista": {
10039			u: -240,
10040			c: [
10041				"BR"
10042			]
10043		},
10044		"America/Bogota": {
10045			u: -300,
10046			c: [
10047				"CO"
10048			]
10049		},
10050		"America/Boise": {
10051			u: -420,
10052			d: -360,
10053			c: [
10054				"US"
10055			]
10056		},
10057		"America/Buenos_Aires": {
10058			a: "America/Argentina/Buenos_Aires",
10059			r: 1
10060		},
10061		"America/Cambridge_Bay": {
10062			u: -420,
10063			d: -360,
10064			c: [
10065				"CA"
10066			]
10067		},
10068		"America/Campo_Grande": {
10069			u: -240,
10070			c: [
10071				"BR"
10072			]
10073		},
10074		"America/Cancun": {
10075			u: -300,
10076			c: [
10077				"MX"
10078			]
10079		},
10080		"America/Caracas": {
10081			u: -240,
10082			c: [
10083				"VE"
10084			]
10085		},
10086		"America/Catamarca": {
10087			a: "America/Argentina/Catamarca",
10088			r: 1
10089		},
10090		"America/Cayenne": {
10091			u: -180,
10092			c: [
10093				"GF"
10094			]
10095		},
10096		"America/Cayman": {
10097			a: "America/Panama",
10098			c: [
10099				"KY"
10100			],
10101			r: 1
10102		},
10103		"America/Chicago": {
10104			u: -360,
10105			d: -300,
10106			c: [
10107				"US"
10108			]
10109		},
10110		"America/Chihuahua": {
10111			u: -360,
10112			c: [
10113				"MX"
10114			]
10115		},
10116		"America/Ciudad_Juarez": {
10117			u: -420,
10118			d: -360,
10119			c: [
10120				"MX"
10121			]
10122		},
10123		"America/Coral_Harbour": {
10124			a: "America/Panama",
10125			c: [
10126				"CA"
10127			],
10128			r: 1
10129		},
10130		"America/Cordoba": {
10131			a: "America/Argentina/Cordoba",
10132			r: 1
10133		},
10134		"America/Costa_Rica": {
10135			u: -360,
10136			c: [
10137				"CR"
10138			]
10139		},
10140		"America/Creston": {
10141			a: "America/Phoenix",
10142			c: [
10143				"CA"
10144			],
10145			r: 1
10146		},
10147		"America/Cuiaba": {
10148			u: -240,
10149			c: [
10150				"BR"
10151			]
10152		},
10153		"America/Curacao": {
10154			a: "America/Puerto_Rico",
10155			c: [
10156				"CW"
10157			],
10158			r: 1
10159		},
10160		"America/Danmarkshavn": {
10161			u: 0,
10162			c: [
10163				"GL"
10164			]
10165		},
10166		"America/Dawson": {
10167			u: -420,
10168			c: [
10169				"CA"
10170			]
10171		},
10172		"America/Dawson_Creek": {
10173			u: -420,
10174			c: [
10175				"CA"
10176			]
10177		},
10178		"America/Denver": {
10179			u: -420,
10180			d: -360,
10181			c: [
10182				"US"
10183			]
10184		},
10185		"America/Detroit": {
10186			u: -300,
10187			d: -240,
10188			c: [
10189				"US"
10190			]
10191		},
10192		"America/Dominica": {
10193			a: "America/Puerto_Rico",
10194			c: [
10195				"DM"
10196			],
10197			r: 1
10198		},
10199		"America/Edmonton": {
10200			u: -420,
10201			d: -360,
10202			c: [
10203				"CA"
10204			]
10205		},
10206		"America/Eirunepe": {
10207			u: -300,
10208			c: [
10209				"BR"
10210			]
10211		},
10212		"America/El_Salvador": {
10213			u: -360,
10214			c: [
10215				"SV"
10216			]
10217		},
10218		"America/Ensenada": {
10219			a: "America/Tijuana",
10220			r: 1
10221		},
10222		"America/Fort_Nelson": {
10223			u: -420,
10224			c: [
10225				"CA"
10226			]
10227		},
10228		"America/Fort_Wayne": {
10229			a: "America/Indiana/Indianapolis",
10230			r: 1
10231		},
10232		"America/Fortaleza": {
10233			u: -180,
10234			c: [
10235				"BR"
10236			]
10237		},
10238		"America/Glace_Bay": {
10239			u: -240,
10240			d: -180,
10241			c: [
10242				"CA"
10243			]
10244		},
10245		"America/Godthab": {
10246			a: "America/Nuuk",
10247			r: 1
10248		},
10249		"America/Goose_Bay": {
10250			u: -240,
10251			d: -180,
10252			c: [
10253				"CA"
10254			]
10255		},
10256		"America/Grand_Turk": {
10257			u: -300,
10258			d: -240,
10259			c: [
10260				"TC"
10261			]
10262		},
10263		"America/Grenada": {
10264			a: "America/Puerto_Rico",
10265			c: [
10266				"GD"
10267			],
10268			r: 1
10269		},
10270		"America/Guadeloupe": {
10271			a: "America/Puerto_Rico",
10272			c: [
10273				"GP"
10274			],
10275			r: 1
10276		},
10277		"America/Guatemala": {
10278			u: -360,
10279			c: [
10280				"GT"
10281			]
10282		},
10283		"America/Guayaquil": {
10284			u: -300,
10285			c: [
10286				"EC"
10287			]
10288		},
10289		"America/Guyana": {
10290			u: -240,
10291			c: [
10292				"GY"
10293			]
10294		},
10295		"America/Halifax": {
10296			u: -240,
10297			d: -180,
10298			c: [
10299				"CA"
10300			]
10301		},
10302		"America/Havana": {
10303			u: -300,
10304			d: -240,
10305			c: [
10306				"CU"
10307			]
10308		},
10309		"America/Hermosillo": {
10310			u: -420,
10311			c: [
10312				"MX"
10313			]
10314		},
10315		"America/Indiana/Indianapolis": {
10316			u: -300,
10317			d: -240,
10318			c: [
10319				"US"
10320			]
10321		},
10322		"America/Indiana/Knox": {
10323			u: -360,
10324			d: -300,
10325			c: [
10326				"US"
10327			]
10328		},
10329		"America/Indiana/Marengo": {
10330			u: -300,
10331			d: -240,
10332			c: [
10333				"US"
10334			]
10335		},
10336		"America/Indiana/Petersburg": {
10337			u: -300,
10338			d: -240,
10339			c: [
10340				"US"
10341			]
10342		},
10343		"America/Indiana/Tell_City": {
10344			u: -360,
10345			d: -300,
10346			c: [
10347				"US"
10348			]
10349		},
10350		"America/Indiana/Vevay": {
10351			u: -300,
10352			d: -240,
10353			c: [
10354				"US"
10355			]
10356		},
10357		"America/Indiana/Vincennes": {
10358			u: -300,
10359			d: -240,
10360			c: [
10361				"US"
10362			]
10363		},
10364		"America/Indiana/Winamac": {
10365			u: -300,
10366			d: -240,
10367			c: [
10368				"US"
10369			]
10370		},
10371		"America/Indianapolis": {
10372			a: "America/Indiana/Indianapolis",
10373			r: 1
10374		},
10375		"America/Inuvik": {
10376			u: -420,
10377			d: -360,
10378			c: [
10379				"CA"
10380			]
10381		},
10382		"America/Iqaluit": {
10383			u: -300,
10384			d: -240,
10385			c: [
10386				"CA"
10387			]
10388		},
10389		"America/Jamaica": {
10390			u: -300,
10391			c: [
10392				"JM"
10393			]
10394		},
10395		"America/Jujuy": {
10396			a: "America/Argentina/Jujuy",
10397			r: 1
10398		},
10399		"America/Juneau": {
10400			u: -540,
10401			d: -480,
10402			c: [
10403				"US"
10404			]
10405		},
10406		"America/Kentucky/Louisville": {
10407			u: -300,
10408			d: -240,
10409			c: [
10410				"US"
10411			]
10412		},
10413		"America/Kentucky/Monticello": {
10414			u: -300,
10415			d: -240,
10416			c: [
10417				"US"
10418			]
10419		},
10420		"America/Knox_IN": {
10421			a: "America/Indiana/Knox",
10422			r: 1
10423		},
10424		"America/Kralendijk": {
10425			a: "America/Puerto_Rico",
10426			c: [
10427				"BQ"
10428			],
10429			r: 1
10430		},
10431		"America/La_Paz": {
10432			u: -240,
10433			c: [
10434				"BO"
10435			]
10436		},
10437		"America/Lima": {
10438			u: -300,
10439			c: [
10440				"PE"
10441			]
10442		},
10443		"America/Los_Angeles": {
10444			u: -480,
10445			d: -420,
10446			c: [
10447				"US"
10448			]
10449		},
10450		"America/Louisville": {
10451			a: "America/Kentucky/Louisville",
10452			r: 1
10453		},
10454		"America/Lower_Princes": {
10455			a: "America/Puerto_Rico",
10456			c: [
10457				"SX"
10458			],
10459			r: 1
10460		},
10461		"America/Maceio": {
10462			u: -180,
10463			c: [
10464				"BR"
10465			]
10466		},
10467		"America/Managua": {
10468			u: -360,
10469			c: [
10470				"NI"
10471			]
10472		},
10473		"America/Manaus": {
10474			u: -240,
10475			c: [
10476				"BR"
10477			]
10478		},
10479		"America/Marigot": {
10480			a: "America/Puerto_Rico",
10481			c: [
10482				"MF"
10483			],
10484			r: 1
10485		},
10486		"America/Martinique": {
10487			u: -240,
10488			c: [
10489				"MQ"
10490			]
10491		},
10492		"America/Matamoros": {
10493			u: -360,
10494			d: -300,
10495			c: [
10496				"MX"
10497			]
10498		},
10499		"America/Mazatlan": {
10500			u: -420,
10501			c: [
10502				"MX"
10503			]
10504		},
10505		"America/Mendoza": {
10506			a: "America/Argentina/Mendoza",
10507			r: 1
10508		},
10509		"America/Menominee": {
10510			u: -360,
10511			d: -300,
10512			c: [
10513				"US"
10514			]
10515		},
10516		"America/Merida": {
10517			u: -360,
10518			c: [
10519				"MX"
10520			]
10521		},
10522		"America/Metlakatla": {
10523			u: -540,
10524			d: -480,
10525			c: [
10526				"US"
10527			]
10528		},
10529		"America/Mexico_City": {
10530			u: -360,
10531			c: [
10532				"MX"
10533			]
10534		},
10535		"America/Miquelon": {
10536			u: -180,
10537			d: -120,
10538			c: [
10539				"PM"
10540			]
10541		},
10542		"America/Moncton": {
10543			u: -240,
10544			d: -180,
10545			c: [
10546				"CA"
10547			]
10548		},
10549		"America/Monterrey": {
10550			u: -360,
10551			c: [
10552				"MX"
10553			]
10554		},
10555		"America/Montevideo": {
10556			u: -180,
10557			c: [
10558				"UY"
10559			]
10560		},
10561		"America/Montreal": {
10562			a: "America/Toronto",
10563			c: [
10564				"CA"
10565			],
10566			r: 1
10567		},
10568		"America/Montserrat": {
10569			a: "America/Puerto_Rico",
10570			c: [
10571				"MS"
10572			],
10573			r: 1
10574		},
10575		"America/Nassau": {
10576			a: "America/Toronto",
10577			c: [
10578				"BS"
10579			],
10580			r: 1
10581		},
10582		"America/New_York": {
10583			u: -300,
10584			d: -240,
10585			c: [
10586				"US"
10587			]
10588		},
10589		"America/Nipigon": {
10590			a: "America/Toronto",
10591			c: [
10592				"CA"
10593			],
10594			r: 1
10595		},
10596		"America/Nome": {
10597			u: -540,
10598			d: -480,
10599			c: [
10600				"US"
10601			]
10602		},
10603		"America/Noronha": {
10604			u: -120,
10605			c: [
10606				"BR"
10607			]
10608		},
10609		"America/North_Dakota/Beulah": {
10610			u: -360,
10611			d: -300,
10612			c: [
10613				"US"
10614			]
10615		},
10616		"America/North_Dakota/Center": {
10617			u: -360,
10618			d: -300,
10619			c: [
10620				"US"
10621			]
10622		},
10623		"America/North_Dakota/New_Salem": {
10624			u: -360,
10625			d: -300,
10626			c: [
10627				"US"
10628			]
10629		},
10630		"America/Nuuk": {
10631			u: -120,
10632			d: -60,
10633			c: [
10634				"GL"
10635			]
10636		},
10637		"America/Ojinaga": {
10638			u: -360,
10639			d: -300,
10640			c: [
10641				"MX"
10642			]
10643		},
10644		"America/Panama": {
10645			u: -300,
10646			c: [
10647				"PA",
10648				"CA",
10649				"KY"
10650			]
10651		},
10652		"America/Pangnirtung": {
10653			a: "America/Iqaluit",
10654			r: 1
10655		},
10656		"America/Paramaribo": {
10657			u: -180,
10658			c: [
10659				"SR"
10660			]
10661		},
10662		"America/Phoenix": {
10663			u: -420,
10664			c: [
10665				"US",
10666				"CA"
10667			]
10668		},
10669		"America/Port-au-Prince": {
10670			u: -300,
10671			d: -240,
10672			c: [
10673				"HT"
10674			]
10675		},
10676		"America/Port_of_Spain": {
10677			a: "America/Puerto_Rico",
10678			c: [
10679				"TT"
10680			],
10681			r: 1
10682		},
10683		"America/Porto_Acre": {
10684			a: "America/Rio_Branco",
10685			r: 1
10686		},
10687		"America/Porto_Velho": {
10688			u: -240,
10689			c: [
10690				"BR"
10691			]
10692		},
10693		"America/Puerto_Rico": {
10694			u: -240,
10695			c: [
10696				"PR",
10697				"AG",
10698				"CA",
10699				"AI",
10700				"AW",
10701				"BL",
10702				"BQ",
10703				"CW",
10704				"DM",
10705				"GD",
10706				"GP",
10707				"KN",
10708				"LC",
10709				"MF",
10710				"MS",
10711				"SX",
10712				"TT",
10713				"VC",
10714				"VG",
10715				"VI"
10716			]
10717		},
10718		"America/Punta_Arenas": {
10719			u: -180,
10720			c: [
10721				"CL"
10722			]
10723		},
10724		"America/Rainy_River": {
10725			a: "America/Winnipeg",
10726			r: 1
10727		},
10728		"America/Rankin_Inlet": {
10729			u: -360,
10730			d: -300,
10731			c: [
10732				"CA"
10733			]
10734		},
10735		"America/Recife": {
10736			u: -180,
10737			c: [
10738				"BR"
10739			]
10740		},
10741		"America/Regina": {
10742			u: -360,
10743			c: [
10744				"CA"
10745			]
10746		},
10747		"America/Resolute": {
10748			u: -360,
10749			d: -300,
10750			c: [
10751				"CA"
10752			]
10753		},
10754		"America/Rio_Branco": {
10755			u: -300,
10756			c: [
10757				"BR"
10758			]
10759		},
10760		"America/Rosario": {
10761			a: "America/Argentina/Cordoba",
10762			r: 1
10763		},
10764		"America/Santa_Isabel": {
10765			a: "America/Tijuana",
10766			r: 1
10767		},
10768		"America/Santarem": {
10769			u: -180,
10770			c: [
10771				"BR"
10772			]
10773		},
10774		"America/Santiago": {
10775			u: -240,
10776			d: -180,
10777			c: [
10778				"CL"
10779			]
10780		},
10781		"America/Santo_Domingo": {
10782			u: -240,
10783			c: [
10784				"DO"
10785			]
10786		},
10787		"America/Sao_Paulo": {
10788			u: -180,
10789			c: [
10790				"BR"
10791			]
10792		},
10793		"America/Scoresbysund": {
10794			u: -60,
10795			d: 0,
10796			c: [
10797				"GL"
10798			]
10799		},
10800		"America/Shiprock": {
10801			a: "America/Denver",
10802			r: 1
10803		},
10804		"America/Sitka": {
10805			u: -540,
10806			d: -480,
10807			c: [
10808				"US"
10809			]
10810		},
10811		"America/St_Barthelemy": {
10812			a: "America/Puerto_Rico",
10813			c: [
10814				"BL"
10815			],
10816			r: 1
10817		},
10818		"America/St_Johns": {
10819			u: -210,
10820			d: -150,
10821			c: [
10822				"CA"
10823			]
10824		},
10825		"America/St_Kitts": {
10826			a: "America/Puerto_Rico",
10827			c: [
10828				"KN"
10829			],
10830			r: 1
10831		},
10832		"America/St_Lucia": {
10833			a: "America/Puerto_Rico",
10834			c: [
10835				"LC"
10836			],
10837			r: 1
10838		},
10839		"America/St_Thomas": {
10840			a: "America/Puerto_Rico",
10841			c: [
10842				"VI"
10843			],
10844			r: 1
10845		},
10846		"America/St_Vincent": {
10847			a: "America/Puerto_Rico",
10848			c: [
10849				"VC"
10850			],
10851			r: 1
10852		},
10853		"America/Swift_Current": {
10854			u: -360,
10855			c: [
10856				"CA"
10857			]
10858		},
10859		"America/Tegucigalpa": {
10860			u: -360,
10861			c: [
10862				"HN"
10863			]
10864		},
10865		"America/Thule": {
10866			u: -240,
10867			d: -180,
10868			c: [
10869				"GL"
10870			]
10871		},
10872		"America/Thunder_Bay": {
10873			a: "America/Toronto",
10874			c: [
10875				"CA"
10876			],
10877			r: 1
10878		},
10879		"America/Tijuana": {
10880			u: -480,
10881			d: -420,
10882			c: [
10883				"MX"
10884			]
10885		},
10886		"America/Toronto": {
10887			u: -300,
10888			d: -240,
10889			c: [
10890				"CA",
10891				"BS"
10892			]
10893		},
10894		"America/Tortola": {
10895			a: "America/Puerto_Rico",
10896			c: [
10897				"VG"
10898			],
10899			r: 1
10900		},
10901		"America/Vancouver": {
10902			u: -480,
10903			d: -420,
10904			c: [
10905				"CA"
10906			]
10907		},
10908		"America/Virgin": {
10909			a: "America/Puerto_Rico",
10910			c: [
10911				"VI"
10912			],
10913			r: 1
10914		},
10915		"America/Whitehorse": {
10916			u: -420,
10917			c: [
10918				"CA"
10919			]
10920		},
10921		"America/Winnipeg": {
10922			u: -360,
10923			d: -300,
10924			c: [
10925				"CA"
10926			]
10927		},
10928		"America/Yakutat": {
10929			u: -540,
10930			d: -480,
10931			c: [
10932				"US"
10933			]
10934		},
10935		"America/Yellowknife": {
10936			a: "America/Edmonton",
10937			r: 1
10938		},
10939		"Antarctica/Casey": {
10940			u: 660,
10941			c: [
10942				"AQ"
10943			]
10944		},
10945		"Antarctica/Davis": {
10946			u: 420,
10947			c: [
10948				"AQ"
10949			]
10950		},
10951		"Antarctica/DumontDUrville": {
10952			a: "Pacific/Port_Moresby",
10953			c: [
10954				"AQ"
10955			],
10956			r: 1
10957		},
10958		"Antarctica/Macquarie": {
10959			u: 600,
10960			d: 660,
10961			c: [
10962				"AU"
10963			]
10964		},
10965		"Antarctica/Mawson": {
10966			u: 300,
10967			c: [
10968				"AQ"
10969			]
10970		},
10971		"Antarctica/McMurdo": {
10972			a: "Pacific/Auckland",
10973			c: [
10974				"AQ"
10975			],
10976			r: 1
10977		},
10978		"Antarctica/Palmer": {
10979			u: -180,
10980			c: [
10981				"AQ"
10982			]
10983		},
10984		"Antarctica/Rothera": {
10985			u: -180,
10986			c: [
10987				"AQ"
10988			]
10989		},
10990		"Antarctica/South_Pole": {
10991			a: "Pacific/Auckland",
10992			c: [
10993				"AQ"
10994			],
10995			r: 1
10996		},
10997		"Antarctica/Syowa": {
10998			a: "Asia/Riyadh",
10999			c: [
11000				"AQ"
11001			],
11002			r: 1
11003		},
11004		"Antarctica/Troll": {
11005			u: 0,
11006			d: 120,
11007			c: [
11008				"AQ"
11009			]
11010		},
11011		"Antarctica/Vostok": {
11012			a: "Asia/Urumqi",
11013			c: [
11014				"AQ"
11015			],
11016			r: 1
11017		},
11018		"Arctic/Longyearbyen": {
11019			a: "Europe/Berlin",
11020			c: [
11021				"SJ"
11022			],
11023			r: 1
11024		},
11025		"Asia/Aden": {
11026			a: "Asia/Riyadh",
11027			c: [
11028				"YE"
11029			],
11030			r: 1
11031		},
11032		"Asia/Almaty": {
11033			u: 360,
11034			c: [
11035				"KZ"
11036			]
11037		},
11038		"Asia/Amman": {
11039			u: 180,
11040			c: [
11041				"JO"
11042			]
11043		},
11044		"Asia/Anadyr": {
11045			u: 720,
11046			c: [
11047				"RU"
11048			]
11049		},
11050		"Asia/Aqtau": {
11051			u: 300,
11052			c: [
11053				"KZ"
11054			]
11055		},
11056		"Asia/Aqtobe": {
11057			u: 300,
11058			c: [
11059				"KZ"
11060			]
11061		},
11062		"Asia/Ashgabat": {
11063			u: 300,
11064			c: [
11065				"TM"
11066			]
11067		},
11068		"Asia/Ashkhabad": {
11069			a: "Asia/Ashgabat",
11070			r: 1
11071		},
11072		"Asia/Atyrau": {
11073			u: 300,
11074			c: [
11075				"KZ"
11076			]
11077		},
11078		"Asia/Baghdad": {
11079			u: 180,
11080			c: [
11081				"IQ"
11082			]
11083		},
11084		"Asia/Bahrain": {
11085			a: "Asia/Qatar",
11086			c: [
11087				"BH"
11088			],
11089			r: 1
11090		},
11091		"Asia/Baku": {
11092			u: 240,
11093			c: [
11094				"AZ"
11095			]
11096		},
11097		"Asia/Bangkok": {
11098			u: 420,
11099			c: [
11100				"TH",
11101				"CX",
11102				"KH",
11103				"LA",
11104				"VN"
11105			]
11106		},
11107		"Asia/Barnaul": {
11108			u: 420,
11109			c: [
11110				"RU"
11111			]
11112		},
11113		"Asia/Beirut": {
11114			u: 120,
11115			d: 180,
11116			c: [
11117				"LB"
11118			]
11119		},
11120		"Asia/Bishkek": {
11121			u: 360,
11122			c: [
11123				"KG"
11124			]
11125		},
11126		"Asia/Brunei": {
11127			a: "Asia/Kuching",
11128			c: [
11129				"BN"
11130			],
11131			r: 1
11132		},
11133		"Asia/Calcutta": {
11134			a: "Asia/Kolkata",
11135			r: 1
11136		},
11137		"Asia/Chita": {
11138			u: 540,
11139			c: [
11140				"RU"
11141			]
11142		},
11143		"Asia/Choibalsan": {
11144			u: 480,
11145			c: [
11146				"MN"
11147			]
11148		},
11149		"Asia/Chongqing": {
11150			a: "Asia/Shanghai",
11151			r: 1
11152		},
11153		"Asia/Chungking": {
11154			a: "Asia/Shanghai",
11155			r: 1
11156		},
11157		"Asia/Colombo": {
11158			u: 330,
11159			c: [
11160				"LK"
11161			]
11162		},
11163		"Asia/Dacca": {
11164			a: "Asia/Dhaka",
11165			r: 1
11166		},
11167		"Asia/Damascus": {
11168			u: 180,
11169			c: [
11170				"SY"
11171			]
11172		},
11173		"Asia/Dhaka": {
11174			u: 360,
11175			c: [
11176				"BD"
11177			]
11178		},
11179		"Asia/Dili": {
11180			u: 540,
11181			c: [
11182				"TL"
11183			]
11184		},
11185		"Asia/Dubai": {
11186			u: 240,
11187			c: [
11188				"AE",
11189				"OM",
11190				"RE",
11191				"SC",
11192				"TF"
11193			]
11194		},
11195		"Asia/Dushanbe": {
11196			u: 300,
11197			c: [
11198				"TJ"
11199			]
11200		},
11201		"Asia/Famagusta": {
11202			u: 120,
11203			d: 180,
11204			c: [
11205				"CY"
11206			]
11207		},
11208		"Asia/Gaza": {
11209			u: 120,
11210			d: 180,
11211			c: [
11212				"PS"
11213			]
11214		},
11215		"Asia/Harbin": {
11216			a: "Asia/Shanghai",
11217			r: 1
11218		},
11219		"Asia/Hebron": {
11220			u: 120,
11221			d: 180,
11222			c: [
11223				"PS"
11224			]
11225		},
11226		"Asia/Ho_Chi_Minh": {
11227			u: 420,
11228			c: [
11229				"VN"
11230			]
11231		},
11232		"Asia/Hong_Kong": {
11233			u: 480,
11234			c: [
11235				"HK"
11236			]
11237		},
11238		"Asia/Hovd": {
11239			u: 420,
11240			c: [
11241				"MN"
11242			]
11243		},
11244		"Asia/Irkutsk": {
11245			u: 480,
11246			c: [
11247				"RU"
11248			]
11249		},
11250		"Asia/Istanbul": {
11251			a: "Europe/Istanbul",
11252			r: 1
11253		},
11254		"Asia/Jakarta": {
11255			u: 420,
11256			c: [
11257				"ID"
11258			]
11259		},
11260		"Asia/Jayapura": {
11261			u: 540,
11262			c: [
11263				"ID"
11264			]
11265		},
11266		"Asia/Jerusalem": {
11267			u: 120,
11268			d: 180,
11269			c: [
11270				"IL"
11271			]
11272		},
11273		"Asia/Kabul": {
11274			u: 270,
11275			c: [
11276				"AF"
11277			]
11278		},
11279		"Asia/Kamchatka": {
11280			u: 720,
11281			c: [
11282				"RU"
11283			]
11284		},
11285		"Asia/Karachi": {
11286			u: 300,
11287			c: [
11288				"PK"
11289			]
11290		},
11291		"Asia/Kashgar": {
11292			a: "Asia/Urumqi",
11293			c: [
11294				"CN"
11295			],
11296			r: 1
11297		},
11298		"Asia/Kathmandu": {
11299			u: 345,
11300			c: [
11301				"NP"
11302			]
11303		},
11304		"Asia/Katmandu": {
11305			a: "Asia/Kathmandu",
11306			r: 1
11307		},
11308		"Asia/Khandyga": {
11309			u: 540,
11310			c: [
11311				"RU"
11312			]
11313		},
11314		"Asia/Kolkata": {
11315			u: 330,
11316			c: [
11317				"IN"
11318			]
11319		},
11320		"Asia/Krasnoyarsk": {
11321			u: 420,
11322			c: [
11323				"RU"
11324			]
11325		},
11326		"Asia/Kuala_Lumpur": {
11327			a: "Asia/Singapore",
11328			c: [
11329				"MY"
11330			],
11331			r: 1
11332		},
11333		"Asia/Kuching": {
11334			u: 480,
11335			c: [
11336				"MY",
11337				"BN"
11338			]
11339		},
11340		"Asia/Kuwait": {
11341			a: "Asia/Riyadh",
11342			c: [
11343				"KW"
11344			],
11345			r: 1
11346		},
11347		"Asia/Macao": {
11348			a: "Asia/Macau",
11349			r: 1
11350		},
11351		"Asia/Macau": {
11352			u: 480,
11353			c: [
11354				"MO"
11355			]
11356		},
11357		"Asia/Magadan": {
11358			u: 660,
11359			c: [
11360				"RU"
11361			]
11362		},
11363		"Asia/Makassar": {
11364			u: 480,
11365			c: [
11366				"ID"
11367			]
11368		},
11369		"Asia/Manila": {
11370			u: 480,
11371			c: [
11372				"PH"
11373			]
11374		},
11375		"Asia/Muscat": {
11376			a: "Asia/Dubai",
11377			c: [
11378				"OM"
11379			],
11380			r: 1
11381		},
11382		"Asia/Nicosia": {
11383			u: 120,
11384			d: 180,
11385			c: [
11386				"CY"
11387			]
11388		},
11389		"Asia/Novokuznetsk": {
11390			u: 420,
11391			c: [
11392				"RU"
11393			]
11394		},
11395		"Asia/Novosibirsk": {
11396			u: 420,
11397			c: [
11398				"RU"
11399			]
11400		},
11401		"Asia/Omsk": {
11402			u: 360,
11403			c: [
11404				"RU"
11405			]
11406		},
11407		"Asia/Oral": {
11408			u: 300,
11409			c: [
11410				"KZ"
11411			]
11412		},
11413		"Asia/Phnom_Penh": {
11414			a: "Asia/Bangkok",
11415			c: [
11416				"KH"
11417			],
11418			r: 1
11419		},
11420		"Asia/Pontianak": {
11421			u: 420,
11422			c: [
11423				"ID"
11424			]
11425		},
11426		"Asia/Pyongyang": {
11427			u: 540,
11428			c: [
11429				"KP"
11430			]
11431		},
11432		"Asia/Qatar": {
11433			u: 180,
11434			c: [
11435				"QA",
11436				"BH"
11437			]
11438		},
11439		"Asia/Qostanay": {
11440			u: 360,
11441			c: [
11442				"KZ"
11443			]
11444		},
11445		"Asia/Qyzylorda": {
11446			u: 300,
11447			c: [
11448				"KZ"
11449			]
11450		},
11451		"Asia/Rangoon": {
11452			a: "Asia/Yangon",
11453			c: [
11454				"MM"
11455			],
11456			r: 1
11457		},
11458		"Asia/Riyadh": {
11459			u: 180,
11460			c: [
11461				"SA",
11462				"AQ",
11463				"KW",
11464				"YE"
11465			]
11466		},
11467		"Asia/Saigon": {
11468			a: "Asia/Ho_Chi_Minh",
11469			r: 1
11470		},
11471		"Asia/Sakhalin": {
11472			u: 660,
11473			c: [
11474				"RU"
11475			]
11476		},
11477		"Asia/Samarkand": {
11478			u: 300,
11479			c: [
11480				"UZ"
11481			]
11482		},
11483		"Asia/Seoul": {
11484			u: 540,
11485			c: [
11486				"KR"
11487			]
11488		},
11489		"Asia/Shanghai": {
11490			u: 480,
11491			c: [
11492				"CN"
11493			]
11494		},
11495		"Asia/Singapore": {
11496			u: 480,
11497			c: [
11498				"SG",
11499				"MY"
11500			]
11501		},
11502		"Asia/Srednekolymsk": {
11503			u: 660,
11504			c: [
11505				"RU"
11506			]
11507		},
11508		"Asia/Taipei": {
11509			u: 480,
11510			c: [
11511				"TW"
11512			]
11513		},
11514		"Asia/Tashkent": {
11515			u: 300,
11516			c: [
11517				"UZ"
11518			]
11519		},
11520		"Asia/Tbilisi": {
11521			u: 240,
11522			c: [
11523				"GE"
11524			]
11525		},
11526		"Asia/Tehran": {
11527			u: 210,
11528			c: [
11529				"IR"
11530			]
11531		},
11532		"Asia/Tel_Aviv": {
11533			a: "Asia/Jerusalem",
11534			r: 1
11535		},
11536		"Asia/Thimbu": {
11537			a: "Asia/Thimphu",
11538			r: 1
11539		},
11540		"Asia/Thimphu": {
11541			u: 360,
11542			c: [
11543				"BT"
11544			]
11545		},
11546		"Asia/Tokyo": {
11547			u: 540,
11548			c: [
11549				"JP"
11550			]
11551		},
11552		"Asia/Tomsk": {
11553			u: 420,
11554			c: [
11555				"RU"
11556			]
11557		},
11558		"Asia/Ujung_Pandang": {
11559			a: "Asia/Makassar",
11560			r: 1
11561		},
11562		"Asia/Ulaanbaatar": {
11563			u: 480,
11564			c: [
11565				"MN"
11566			]
11567		},
11568		"Asia/Ulan_Bator": {
11569			a: "Asia/Ulaanbaatar",
11570			r: 1
11571		},
11572		"Asia/Urumqi": {
11573			u: 360,
11574			c: [
11575				"CN",
11576				"AQ"
11577			]
11578		},
11579		"Asia/Ust-Nera": {
11580			u: 600,
11581			c: [
11582				"RU"
11583			]
11584		},
11585		"Asia/Vientiane": {
11586			a: "Asia/Bangkok",
11587			c: [
11588				"LA"
11589			],
11590			r: 1
11591		},
11592		"Asia/Vladivostok": {
11593			u: 600,
11594			c: [
11595				"RU"
11596			]
11597		},
11598		"Asia/Yakutsk": {
11599			u: 540,
11600			c: [
11601				"RU"
11602			]
11603		},
11604		"Asia/Yangon": {
11605			u: 390,
11606			c: [
11607				"MM",
11608				"CC"
11609			]
11610		},
11611		"Asia/Yekaterinburg": {
11612			u: 300,
11613			c: [
11614				"RU"
11615			]
11616		},
11617		"Asia/Yerevan": {
11618			u: 240,
11619			c: [
11620				"AM"
11621			]
11622		},
11623		"Atlantic/Azores": {
11624			u: -60,
11625			d: 0,
11626			c: [
11627				"PT"
11628			]
11629		},
11630		"Atlantic/Bermuda": {
11631			u: -240,
11632			d: -180,
11633			c: [
11634				"BM"
11635			]
11636		},
11637		"Atlantic/Canary": {
11638			u: 0,
11639			d: 60,
11640			c: [
11641				"ES"
11642			]
11643		},
11644		"Atlantic/Cape_Verde": {
11645			u: -60,
11646			c: [
11647				"CV"
11648			]
11649		},
11650		"Atlantic/Faeroe": {
11651			a: "Atlantic/Faroe",
11652			r: 1
11653		},
11654		"Atlantic/Faroe": {
11655			u: 0,
11656			d: 60,
11657			c: [
11658				"FO"
11659			]
11660		},
11661		"Atlantic/Jan_Mayen": {
11662			a: "Europe/Berlin",
11663			c: [
11664				"SJ"
11665			],
11666			r: 1
11667		},
11668		"Atlantic/Madeira": {
11669			u: 0,
11670			d: 60,
11671			c: [
11672				"PT"
11673			]
11674		},
11675		"Atlantic/Reykjavik": {
11676			a: "Africa/Abidjan",
11677			c: [
11678				"IS"
11679			],
11680			r: 1
11681		},
11682		"Atlantic/South_Georgia": {
11683			u: -120,
11684			c: [
11685				"GS"
11686			]
11687		},
11688		"Atlantic/St_Helena": {
11689			a: "Africa/Abidjan",
11690			c: [
11691				"SH"
11692			],
11693			r: 1
11694		},
11695		"Atlantic/Stanley": {
11696			u: -180,
11697			c: [
11698				"FK"
11699			]
11700		},
11701		"Australia/ACT": {
11702			a: "Australia/Sydney",
11703			r: 1
11704		},
11705		"Australia/Adelaide": {
11706			u: 570,
11707			d: 630,
11708			c: [
11709				"AU"
11710			]
11711		},
11712		"Australia/Brisbane": {
11713			u: 600,
11714			c: [
11715				"AU"
11716			]
11717		},
11718		"Australia/Broken_Hill": {
11719			u: 570,
11720			d: 630,
11721			c: [
11722				"AU"
11723			]
11724		},
11725		"Australia/Canberra": {
11726			a: "Australia/Sydney",
11727			r: 1
11728		},
11729		"Australia/Currie": {
11730			a: "Australia/Hobart",
11731			r: 1
11732		},
11733		"Australia/Darwin": {
11734			u: 570,
11735			c: [
11736				"AU"
11737			]
11738		},
11739		"Australia/Eucla": {
11740			u: 525,
11741			c: [
11742				"AU"
11743			]
11744		},
11745		"Australia/Hobart": {
11746			u: 600,
11747			d: 660,
11748			c: [
11749				"AU"
11750			]
11751		},
11752		"Australia/LHI": {
11753			a: "Australia/Lord_Howe",
11754			r: 1
11755		},
11756		"Australia/Lindeman": {
11757			u: 600,
11758			c: [
11759				"AU"
11760			]
11761		},
11762		"Australia/Lord_Howe": {
11763			u: 630,
11764			d: 660,
11765			c: [
11766				"AU"
11767			]
11768		},
11769		"Australia/Melbourne": {
11770			u: 600,
11771			d: 660,
11772			c: [
11773				"AU"
11774			]
11775		},
11776		"Australia/NSW": {
11777			a: "Australia/Sydney",
11778			r: 1
11779		},
11780		"Australia/North": {
11781			a: "Australia/Darwin",
11782			r: 1
11783		},
11784		"Australia/Perth": {
11785			u: 480,
11786			c: [
11787				"AU"
11788			]
11789		},
11790		"Australia/Queensland": {
11791			a: "Australia/Brisbane",
11792			r: 1
11793		},
11794		"Australia/South": {
11795			a: "Australia/Adelaide",
11796			r: 1
11797		},
11798		"Australia/Sydney": {
11799			u: 600,
11800			d: 660,
11801			c: [
11802				"AU"
11803			]
11804		},
11805		"Australia/Tasmania": {
11806			a: "Australia/Hobart",
11807			r: 1
11808		},
11809		"Australia/Victoria": {
11810			a: "Australia/Melbourne",
11811			r: 1
11812		},
11813		"Australia/West": {
11814			a: "Australia/Perth",
11815			r: 1
11816		},
11817		"Australia/Yancowinna": {
11818			a: "Australia/Broken_Hill",
11819			r: 1
11820		},
11821		"Brazil/Acre": {
11822			a: "America/Rio_Branco",
11823			r: 1
11824		},
11825		"Brazil/DeNoronha": {
11826			a: "America/Noronha",
11827			r: 1
11828		},
11829		"Brazil/East": {
11830			a: "America/Sao_Paulo",
11831			r: 1
11832		},
11833		"Brazil/West": {
11834			a: "America/Manaus",
11835			r: 1
11836		},
11837		CET: {
11838			u: 60,
11839			d: 120
11840		},
11841		CST6CDT: {
11842			u: -360,
11843			d: -300
11844		},
11845		"Canada/Atlantic": {
11846			a: "America/Halifax",
11847			r: 1
11848		},
11849		"Canada/Central": {
11850			a: "America/Winnipeg",
11851			r: 1
11852		},
11853		"Canada/Eastern": {
11854			a: "America/Toronto",
11855			c: [
11856				"CA"
11857			],
11858			r: 1
11859		},
11860		"Canada/Mountain": {
11861			a: "America/Edmonton",
11862			r: 1
11863		},
11864		"Canada/Newfoundland": {
11865			a: "America/St_Johns",
11866			r: 1
11867		},
11868		"Canada/Pacific": {
11869			a: "America/Vancouver",
11870			r: 1
11871		},
11872		"Canada/Saskatchewan": {
11873			a: "America/Regina",
11874			r: 1
11875		},
11876		"Canada/Yukon": {
11877			a: "America/Whitehorse",
11878			r: 1
11879		},
11880		"Chile/Continental": {
11881			a: "America/Santiago",
11882			r: 1
11883		},
11884		"Chile/EasterIsland": {
11885			a: "Pacific/Easter",
11886			r: 1
11887		},
11888		Cuba: {
11889			a: "America/Havana",
11890			r: 1
11891		},
11892		EET: {
11893			u: 120,
11894			d: 180
11895		},
11896		EST: {
11897			u: -300
11898		},
11899		EST5EDT: {
11900			u: -300,
11901			d: -240
11902		},
11903		Egypt: {
11904			a: "Africa/Cairo",
11905			r: 1
11906		},
11907		Eire: {
11908			a: "Europe/Dublin",
11909			r: 1
11910		},
11911		"Etc/GMT": {
11912			u: 0
11913		},
11914		"Etc/GMT+0": {
11915			a: "Etc/GMT",
11916			r: 1
11917		},
11918		"Etc/GMT+1": {
11919			u: -60
11920		},
11921		"Etc/GMT+10": {
11922			u: -600
11923		},
11924		"Etc/GMT+11": {
11925			u: -660
11926		},
11927		"Etc/GMT+12": {
11928			u: -720
11929		},
11930		"Etc/GMT+2": {
11931			u: -120
11932		},
11933		"Etc/GMT+3": {
11934			u: -180
11935		},
11936		"Etc/GMT+4": {
11937			u: -240
11938		},
11939		"Etc/GMT+5": {
11940			u: -300
11941		},
11942		"Etc/GMT+6": {
11943			u: -360
11944		},
11945		"Etc/GMT+7": {
11946			u: -420
11947		},
11948		"Etc/GMT+8": {
11949			u: -480
11950		},
11951		"Etc/GMT+9": {
11952			u: -540
11953		},
11954		"Etc/GMT-0": {
11955			a: "Etc/GMT",
11956			r: 1
11957		},
11958		"Etc/GMT-1": {
11959			u: 60
11960		},
11961		"Etc/GMT-10": {
11962			u: 600
11963		},
11964		"Etc/GMT-11": {
11965			u: 660
11966		},
11967		"Etc/GMT-12": {
11968			u: 720
11969		},
11970		"Etc/GMT-13": {
11971			u: 780
11972		},
11973		"Etc/GMT-14": {
11974			u: 840
11975		},
11976		"Etc/GMT-2": {
11977			u: 120
11978		},
11979		"Etc/GMT-3": {
11980			u: 180
11981		},
11982		"Etc/GMT-4": {
11983			u: 240
11984		},
11985		"Etc/GMT-5": {
11986			u: 300
11987		},
11988		"Etc/GMT-6": {
11989			u: 360
11990		},
11991		"Etc/GMT-7": {
11992			u: 420
11993		},
11994		"Etc/GMT-8": {
11995			u: 480
11996		},
11997		"Etc/GMT-9": {
11998			u: 540
11999		},
12000		"Etc/GMT0": {
12001			a: "Etc/GMT",
12002			r: 1
12003		},
12004		"Etc/Greenwich": {
12005			a: "Etc/GMT",
12006			r: 1
12007		},
12008		"Etc/UCT": {
12009			a: "Etc/UTC",
12010			r: 1
12011		},
12012		"Etc/UTC": {
12013			u: 0
12014		},
12015		"Etc/Universal": {
12016			a: "Etc/UTC",
12017			r: 1
12018		},
12019		"Etc/Zulu": {
12020			a: "Etc/UTC",
12021			r: 1
12022		},
12023		"Europe/Amsterdam": {
12024			a: "Europe/Brussels",
12025			c: [
12026				"NL"
12027			],
12028			r: 1
12029		},
12030		"Europe/Andorra": {
12031			u: 60,
12032			d: 120,
12033			c: [
12034				"AD"
12035			]
12036		},
12037		"Europe/Astrakhan": {
12038			u: 240,
12039			c: [
12040				"RU"
12041			]
12042		},
12043		"Europe/Athens": {
12044			u: 120,
12045			d: 180,
12046			c: [
12047				"GR"
12048			]
12049		},
12050		"Europe/Belfast": {
12051			a: "Europe/London",
12052			c: [
12053				"GB"
12054			],
12055			r: 1
12056		},
12057		"Europe/Belgrade": {
12058			u: 60,
12059			d: 120,
12060			c: [
12061				"RS",
12062				"BA",
12063				"HR",
12064				"ME",
12065				"MK",
12066				"SI"
12067			]
12068		},
12069		"Europe/Berlin": {
12070			u: 60,
12071			d: 120,
12072			c: [
12073				"DE",
12074				"DK",
12075				"NO",
12076				"SE",
12077				"SJ"
12078			]
12079		},
12080		"Europe/Bratislava": {
12081			a: "Europe/Prague",
12082			c: [
12083				"SK"
12084			],
12085			r: 1
12086		},
12087		"Europe/Brussels": {
12088			u: 60,
12089			d: 120,
12090			c: [
12091				"BE",
12092				"LU",
12093				"NL"
12094			]
12095		},
12096		"Europe/Bucharest": {
12097			u: 120,
12098			d: 180,
12099			c: [
12100				"RO"
12101			]
12102		},
12103		"Europe/Budapest": {
12104			u: 60,
12105			d: 120,
12106			c: [
12107				"HU"
12108			]
12109		},
12110		"Europe/Busingen": {
12111			a: "Europe/Zurich",
12112			c: [
12113				"DE"
12114			],
12115			r: 1
12116		},
12117		"Europe/Chisinau": {
12118			u: 120,
12119			d: 180,
12120			c: [
12121				"MD"
12122			]
12123		},
12124		"Europe/Copenhagen": {
12125			a: "Europe/Berlin",
12126			c: [
12127				"DK"
12128			],
12129			r: 1
12130		},
12131		"Europe/Dublin": {
12132			u: 60,
12133			d: 0,
12134			c: [
12135				"IE"
12136			]
12137		},
12138		"Europe/Gibraltar": {
12139			u: 60,
12140			d: 120,
12141			c: [
12142				"GI"
12143			]
12144		},
12145		"Europe/Guernsey": {
12146			a: "Europe/London",
12147			c: [
12148				"GG"
12149			],
12150			r: 1
12151		},
12152		"Europe/Helsinki": {
12153			u: 120,
12154			d: 180,
12155			c: [
12156				"FI",
12157				"AX"
12158			]
12159		},
12160		"Europe/Isle_of_Man": {
12161			a: "Europe/London",
12162			c: [
12163				"IM"
12164			],
12165			r: 1
12166		},
12167		"Europe/Istanbul": {
12168			u: 180,
12169			c: [
12170				"TR"
12171			]
12172		},
12173		"Europe/Jersey": {
12174			a: "Europe/London",
12175			c: [
12176				"JE"
12177			],
12178			r: 1
12179		},
12180		"Europe/Kaliningrad": {
12181			u: 120,
12182			c: [
12183				"RU"
12184			]
12185		},
12186		"Europe/Kiev": {
12187			a: "Europe/Kyiv",
12188			r: 1
12189		},
12190		"Europe/Kirov": {
12191			u: 180,
12192			c: [
12193				"RU"
12194			]
12195		},
12196		"Europe/Kyiv": {
12197			u: 120,
12198			d: 180,
12199			c: [
12200				"UA"
12201			]
12202		},
12203		"Europe/Lisbon": {
12204			u: 0,
12205			d: 60,
12206			c: [
12207				"PT"
12208			]
12209		},
12210		"Europe/Ljubljana": {
12211			a: "Europe/Belgrade",
12212			c: [
12213				"SI"
12214			],
12215			r: 1
12216		},
12217		"Europe/London": {
12218			u: 0,
12219			d: 60,
12220			c: [
12221				"GB",
12222				"GG",
12223				"IM",
12224				"JE"
12225			]
12226		},
12227		"Europe/Luxembourg": {
12228			a: "Europe/Brussels",
12229			c: [
12230				"LU"
12231			],
12232			r: 1
12233		},
12234		"Europe/Madrid": {
12235			u: 60,
12236			d: 120,
12237			c: [
12238				"ES"
12239			]
12240		},
12241		"Europe/Malta": {
12242			u: 60,
12243			d: 120,
12244			c: [
12245				"MT"
12246			]
12247		},
12248		"Europe/Mariehamn": {
12249			a: "Europe/Helsinki",
12250			c: [
12251				"AX"
12252			],
12253			r: 1
12254		},
12255		"Europe/Minsk": {
12256			u: 180,
12257			c: [
12258				"BY"
12259			]
12260		},
12261		"Europe/Monaco": {
12262			a: "Europe/Paris",
12263			c: [
12264				"MC"
12265			],
12266			r: 1
12267		},
12268		"Europe/Moscow": {
12269			u: 180,
12270			c: [
12271				"RU"
12272			]
12273		},
12274		"Europe/Nicosia": {
12275			a: "Asia/Nicosia",
12276			r: 1
12277		},
12278		"Europe/Oslo": {
12279			a: "Europe/Berlin",
12280			c: [
12281				"NO"
12282			],
12283			r: 1
12284		},
12285		"Europe/Paris": {
12286			u: 60,
12287			d: 120,
12288			c: [
12289				"FR",
12290				"MC"
12291			]
12292		},
12293		"Europe/Podgorica": {
12294			a: "Europe/Belgrade",
12295			c: [
12296				"ME"
12297			],
12298			r: 1
12299		},
12300		"Europe/Prague": {
12301			u: 60,
12302			d: 120,
12303			c: [
12304				"CZ",
12305				"SK"
12306			]
12307		},
12308		"Europe/Riga": {
12309			u: 120,
12310			d: 180,
12311			c: [
12312				"LV"
12313			]
12314		},
12315		"Europe/Rome": {
12316			u: 60,
12317			d: 120,
12318			c: [
12319				"IT",
12320				"SM",
12321				"VA"
12322			]
12323		},
12324		"Europe/Samara": {
12325			u: 240,
12326			c: [
12327				"RU"
12328			]
12329		},
12330		"Europe/San_Marino": {
12331			a: "Europe/Rome",
12332			c: [
12333				"SM"
12334			],
12335			r: 1
12336		},
12337		"Europe/Sarajevo": {
12338			a: "Europe/Belgrade",
12339			c: [
12340				"BA"
12341			],
12342			r: 1
12343		},
12344		"Europe/Saratov": {
12345			u: 240,
12346			c: [
12347				"RU"
12348			]
12349		},
12350		"Europe/Simferopol": {
12351			u: 180,
12352			c: [
12353				"RU",
12354				"UA"
12355			]
12356		},
12357		"Europe/Skopje": {
12358			a: "Europe/Belgrade",
12359			c: [
12360				"MK"
12361			],
12362			r: 1
12363		},
12364		"Europe/Sofia": {
12365			u: 120,
12366			d: 180,
12367			c: [
12368				"BG"
12369			]
12370		},
12371		"Europe/Stockholm": {
12372			a: "Europe/Berlin",
12373			c: [
12374				"SE"
12375			],
12376			r: 1
12377		},
12378		"Europe/Tallinn": {
12379			u: 120,
12380			d: 180,
12381			c: [
12382				"EE"
12383			]
12384		},
12385		"Europe/Tirane": {
12386			u: 60,
12387			d: 120,
12388			c: [
12389				"AL"
12390			]
12391		},
12392		"Europe/Tiraspol": {
12393			a: "Europe/Chisinau",
12394			r: 1
12395		},
12396		"Europe/Ulyanovsk": {
12397			u: 240,
12398			c: [
12399				"RU"
12400			]
12401		},
12402		"Europe/Uzhgorod": {
12403			a: "Europe/Kyiv",
12404			r: 1
12405		},
12406		"Europe/Vaduz": {
12407			a: "Europe/Zurich",
12408			c: [
12409				"LI"
12410			],
12411			r: 1
12412		},
12413		"Europe/Vatican": {
12414			a: "Europe/Rome",
12415			c: [
12416				"VA"
12417			],
12418			r: 1
12419		},
12420		"Europe/Vienna": {
12421			u: 60,
12422			d: 120,
12423			c: [
12424				"AT"
12425			]
12426		},
12427		"Europe/Vilnius": {
12428			u: 120,
12429			d: 180,
12430			c: [
12431				"LT"
12432			]
12433		},
12434		"Europe/Volgograd": {
12435			u: 180,
12436			c: [
12437				"RU"
12438			]
12439		},
12440		"Europe/Warsaw": {
12441			u: 60,
12442			d: 120,
12443			c: [
12444				"PL"
12445			]
12446		},
12447		"Europe/Zagreb": {
12448			a: "Europe/Belgrade",
12449			c: [
12450				"HR"
12451			],
12452			r: 1
12453		},
12454		"Europe/Zaporozhye": {
12455			a: "Europe/Kyiv",
12456			r: 1
12457		},
12458		"Europe/Zurich": {
12459			u: 60,
12460			d: 120,
12461			c: [
12462				"CH",
12463				"DE",
12464				"LI"
12465			]
12466		},
12467		Factory: {
12468			u: 0
12469		},
12470		GB: {
12471			a: "Europe/London",
12472			c: [
12473				"GB"
12474			],
12475			r: 1
12476		},
12477		"GB-Eire": {
12478			a: "Europe/London",
12479			c: [
12480				"GB"
12481			],
12482			r: 1
12483		},
12484		GMT: {
12485			a: "Etc/GMT",
12486			r: 1
12487		},
12488		"GMT+0": {
12489			a: "Etc/GMT",
12490			r: 1
12491		},
12492		"GMT-0": {
12493			a: "Etc/GMT",
12494			r: 1
12495		},
12496		GMT0: {
12497			a: "Etc/GMT",
12498			r: 1
12499		},
12500		Greenwich: {
12501			a: "Etc/GMT",
12502			r: 1
12503		},
12504		HST: {
12505			u: -600
12506		},
12507		Hongkong: {
12508			a: "Asia/Hong_Kong",
12509			r: 1
12510		},
12511		Iceland: {
12512			a: "Africa/Abidjan",
12513			c: [
12514				"IS"
12515			],
12516			r: 1
12517		},
12518		"Indian/Antananarivo": {
12519			a: "Africa/Nairobi",
12520			c: [
12521				"MG"
12522			],
12523			r: 1
12524		},
12525		"Indian/Chagos": {
12526			u: 360,
12527			c: [
12528				"IO"
12529			]
12530		},
12531		"Indian/Christmas": {
12532			a: "Asia/Bangkok",
12533			c: [
12534				"CX"
12535			],
12536			r: 1
12537		},
12538		"Indian/Cocos": {
12539			a: "Asia/Yangon",
12540			c: [
12541				"CC"
12542			],
12543			r: 1
12544		},
12545		"Indian/Comoro": {
12546			a: "Africa/Nairobi",
12547			c: [
12548				"KM"
12549			],
12550			r: 1
12551		},
12552		"Indian/Kerguelen": {
12553			a: "Indian/Maldives",
12554			c: [
12555				"TF"
12556			],
12557			r: 1
12558		},
12559		"Indian/Mahe": {
12560			a: "Asia/Dubai",
12561			c: [
12562				"SC"
12563			],
12564			r: 1
12565		},
12566		"Indian/Maldives": {
12567			u: 300,
12568			c: [
12569				"MV",
12570				"TF"
12571			]
12572		},
12573		"Indian/Mauritius": {
12574			u: 240,
12575			c: [
12576				"MU"
12577			]
12578		},
12579		"Indian/Mayotte": {
12580			a: "Africa/Nairobi",
12581			c: [
12582				"YT"
12583			],
12584			r: 1
12585		},
12586		"Indian/Reunion": {
12587			a: "Asia/Dubai",
12588			c: [
12589				"RE"
12590			],
12591			r: 1
12592		},
12593		Iran: {
12594			a: "Asia/Tehran",
12595			r: 1
12596		},
12597		Israel: {
12598			a: "Asia/Jerusalem",
12599			r: 1
12600		},
12601		Jamaica: {
12602			a: "America/Jamaica",
12603			r: 1
12604		},
12605		Japan: {
12606			a: "Asia/Tokyo",
12607			r: 1
12608		},
12609		Kwajalein: {
12610			a: "Pacific/Kwajalein",
12611			r: 1
12612		},
12613		Libya: {
12614			a: "Africa/Tripoli",
12615			r: 1
12616		},
12617		MET: {
12618			u: 60,
12619			d: 120
12620		},
12621		MST: {
12622			u: -420
12623		},
12624		MST7MDT: {
12625			u: -420,
12626			d: -360
12627		},
12628		"Mexico/BajaNorte": {
12629			a: "America/Tijuana",
12630			r: 1
12631		},
12632		"Mexico/BajaSur": {
12633			a: "America/Mazatlan",
12634			r: 1
12635		},
12636		"Mexico/General": {
12637			a: "America/Mexico_City",
12638			r: 1
12639		},
12640		NZ: {
12641			a: "Pacific/Auckland",
12642			c: [
12643				"NZ"
12644			],
12645			r: 1
12646		},
12647		"NZ-CHAT": {
12648			a: "Pacific/Chatham",
12649			r: 1
12650		},
12651		Navajo: {
12652			a: "America/Denver",
12653			r: 1
12654		},
12655		PRC: {
12656			a: "Asia/Shanghai",
12657			r: 1
12658		},
12659		PST8PDT: {
12660			u: -480,
12661			d: -420
12662		},
12663		"Pacific/Apia": {
12664			u: 780,
12665			c: [
12666				"WS"
12667			]
12668		},
12669		"Pacific/Auckland": {
12670			u: 720,
12671			d: 780,
12672			c: [
12673				"NZ",
12674				"AQ"
12675			]
12676		},
12677		"Pacific/Bougainville": {
12678			u: 660,
12679			c: [
12680				"PG"
12681			]
12682		},
12683		"Pacific/Chatham": {
12684			u: 765,
12685			d: 825,
12686			c: [
12687				"NZ"
12688			]
12689		},
12690		"Pacific/Chuuk": {
12691			a: "Pacific/Port_Moresby",
12692			c: [
12693				"FM"
12694			],
12695			r: 1
12696		},
12697		"Pacific/Easter": {
12698			u: -360,
12699			d: -300,
12700			c: [
12701				"CL"
12702			]
12703		},
12704		"Pacific/Efate": {
12705			u: 660,
12706			c: [
12707				"VU"
12708			]
12709		},
12710		"Pacific/Enderbury": {
12711			a: "Pacific/Kanton",
12712			r: 1
12713		},
12714		"Pacific/Fakaofo": {
12715			u: 780,
12716			c: [
12717				"TK"
12718			]
12719		},
12720		"Pacific/Fiji": {
12721			u: 720,
12722			c: [
12723				"FJ"
12724			]
12725		},
12726		"Pacific/Funafuti": {
12727			a: "Pacific/Tarawa",
12728			c: [
12729				"TV"
12730			],
12731			r: 1
12732		},
12733		"Pacific/Galapagos": {
12734			u: -360,
12735			c: [
12736				"EC"
12737			]
12738		},
12739		"Pacific/Gambier": {
12740			u: -540,
12741			c: [
12742				"PF"
12743			]
12744		},
12745		"Pacific/Guadalcanal": {
12746			u: 660,
12747			c: [
12748				"SB",
12749				"FM"
12750			]
12751		},
12752		"Pacific/Guam": {
12753			u: 600,
12754			c: [
12755				"GU",
12756				"MP"
12757			]
12758		},
12759		"Pacific/Honolulu": {
12760			u: -600,
12761			c: [
12762				"US"
12763			]
12764		},
12765		"Pacific/Johnston": {
12766			a: "Pacific/Honolulu",
12767			r: 1
12768		},
12769		"Pacific/Kanton": {
12770			u: 780,
12771			c: [
12772				"KI"
12773			]
12774		},
12775		"Pacific/Kiritimati": {
12776			u: 840,
12777			c: [
12778				"KI"
12779			]
12780		},
12781		"Pacific/Kosrae": {
12782			u: 660,
12783			c: [
12784				"FM"
12785			]
12786		},
12787		"Pacific/Kwajalein": {
12788			u: 720,
12789			c: [
12790				"MH"
12791			]
12792		},
12793		"Pacific/Majuro": {
12794			a: "Pacific/Tarawa",
12795			c: [
12796				"MH"
12797			],
12798			r: 1
12799		},
12800		"Pacific/Marquesas": {
12801			u: -570,
12802			c: [
12803				"PF"
12804			]
12805		},
12806		"Pacific/Midway": {
12807			a: "Pacific/Pago_Pago",
12808			c: [
12809				"UM"
12810			],
12811			r: 1
12812		},
12813		"Pacific/Nauru": {
12814			u: 720,
12815			c: [
12816				"NR"
12817			]
12818		},
12819		"Pacific/Niue": {
12820			u: -660,
12821			c: [
12822				"NU"
12823			]
12824		},
12825		"Pacific/Norfolk": {
12826			u: 660,
12827			d: 720,
12828			c: [
12829				"NF"
12830			]
12831		},
12832		"Pacific/Noumea": {
12833			u: 660,
12834			c: [
12835				"NC"
12836			]
12837		},
12838		"Pacific/Pago_Pago": {
12839			u: -660,
12840			c: [
12841				"AS",
12842				"UM"
12843			]
12844		},
12845		"Pacific/Palau": {
12846			u: 540,
12847			c: [
12848				"PW"
12849			]
12850		},
12851		"Pacific/Pitcairn": {
12852			u: -480,
12853			c: [
12854				"PN"
12855			]
12856		},
12857		"Pacific/Pohnpei": {
12858			a: "Pacific/Guadalcanal",
12859			c: [
12860				"FM"
12861			],
12862			r: 1
12863		},
12864		"Pacific/Ponape": {
12865			a: "Pacific/Guadalcanal",
12866			c: [
12867				"FM"
12868			],
12869			r: 1
12870		},
12871		"Pacific/Port_Moresby": {
12872			u: 600,
12873			c: [
12874				"PG",
12875				"AQ",
12876				"FM"
12877			]
12878		},
12879		"Pacific/Rarotonga": {
12880			u: -600,
12881			c: [
12882				"CK"
12883			]
12884		},
12885		"Pacific/Saipan": {
12886			a: "Pacific/Guam",
12887			c: [
12888				"MP"
12889			],
12890			r: 1
12891		},
12892		"Pacific/Samoa": {
12893			a: "Pacific/Pago_Pago",
12894			c: [
12895				"AS"
12896			],
12897			r: 1
12898		},
12899		"Pacific/Tahiti": {
12900			u: -600,
12901			c: [
12902				"PF"
12903			]
12904		},
12905		"Pacific/Tarawa": {
12906			u: 720,
12907			c: [
12908				"KI",
12909				"MH",
12910				"TV",
12911				"UM",
12912				"WF"
12913			]
12914		},
12915		"Pacific/Tongatapu": {
12916			u: 780,
12917			c: [
12918				"TO"
12919			]
12920		},
12921		"Pacific/Truk": {
12922			a: "Pacific/Port_Moresby",
12923			c: [
12924				"FM"
12925			],
12926			r: 1
12927		},
12928		"Pacific/Wake": {
12929			a: "Pacific/Tarawa",
12930			c: [
12931				"UM"
12932			],
12933			r: 1
12934		},
12935		"Pacific/Wallis": {
12936			a: "Pacific/Tarawa",
12937			c: [
12938				"WF"
12939			],
12940			r: 1
12941		},
12942		"Pacific/Yap": {
12943			a: "Pacific/Port_Moresby",
12944			c: [
12945				"FM"
12946			],
12947			r: 1
12948		},
12949		Poland: {
12950			a: "Europe/Warsaw",
12951			r: 1
12952		},
12953		Portugal: {
12954			a: "Europe/Lisbon",
12955			r: 1
12956		},
12957		ROC: {
12958			a: "Asia/Taipei",
12959			r: 1
12960		},
12961		ROK: {
12962			a: "Asia/Seoul",
12963			r: 1
12964		},
12965		Singapore: {
12966			a: "Asia/Singapore",
12967			c: [
12968				"SG"
12969			],
12970			r: 1
12971		},
12972		Turkey: {
12973			a: "Europe/Istanbul",
12974			r: 1
12975		},
12976		UCT: {
12977			a: "Etc/UTC",
12978			r: 1
12979		},
12980		"US/Alaska": {
12981			a: "America/Anchorage",
12982			r: 1
12983		},
12984		"US/Aleutian": {
12985			a: "America/Adak",
12986			r: 1
12987		},
12988		"US/Arizona": {
12989			a: "America/Phoenix",
12990			c: [
12991				"US"
12992			],
12993			r: 1
12994		},
12995		"US/Central": {
12996			a: "America/Chicago",
12997			r: 1
12998		},
12999		"US/East-Indiana": {
13000			a: "America/Indiana/Indianapolis",
13001			r: 1
13002		},
13003		"US/Eastern": {
13004			a: "America/New_York",
13005			r: 1
13006		},
13007		"US/Hawaii": {
13008			a: "Pacific/Honolulu",
13009			r: 1
13010		},
13011		"US/Indiana-Starke": {
13012			a: "America/Indiana/Knox",
13013			r: 1
13014		},
13015		"US/Michigan": {
13016			a: "America/Detroit",
13017			r: 1
13018		},
13019		"US/Mountain": {
13020			a: "America/Denver",
13021			r: 1
13022		},
13023		"US/Pacific": {
13024			a: "America/Los_Angeles",
13025			r: 1
13026		},
13027		"US/Samoa": {
13028			a: "Pacific/Pago_Pago",
13029			c: [
13030				"AS"
13031			],
13032			r: 1
13033		},
13034		UTC: {
13035			a: "Etc/UTC",
13036			r: 1
13037		},
13038		Universal: {
13039			a: "Etc/UTC",
13040			r: 1
13041		},
13042		"W-SU": {
13043			a: "Europe/Moscow",
13044			r: 1
13045		},
13046		WET: {
13047			u: 0,
13048			d: 60
13049		},
13050		Zulu: {
13051			a: "Etc/UTC",
13052			r: 1
13053		}
13054	};
13055	var data = {
13056		countries: countries$1,
13057		timezones: timezones$1
13058	};
13059
13060	var timezonesMap;
13061	function buildCountry(data, id) {
13062	  var name = data.countries[id];
13063	  if (!name) return null;
13064	  var tzMap = getTimezonesMap(data)[id] || {};
13065	  return {
13066	    id: id,
13067	    name: name,
13068	    timezones: tzMap.current || [],
13069	    allTimezones: tzMap.all || []
13070	  };
13071	}
13072	function getTimezonesMap(data) {
13073	  if (!timezonesMap) timezonesMap = buildTimezonesMap(data);
13074	  return timezonesMap;
13075	}
13076	function buildTimezonesMap(data) {
13077	  return Object.keys(data.timezones).reduce(function (result, id) {
13078	    var tz = data.timezones[id];
13079	    var c = tz.c,
13080	      a = tz.a;
13081	    var aliasTz = data.timezones[a] || {};
13082	    var countries = c || aliasTz.c;
13083	    if (!countries) return result;
13084	    countries.forEach(function (country) {
13085	      if (!result[country]) Object.assign(result, _defineProperty({}, country, {
13086	        current: [],
13087	        all: []
13088	      }));
13089	      if (tz.r === undefined) result[country].current.push(id);
13090	      result[country].all.push(id);
13091	    });
13092	    return result;
13093	  }, {});
13094	}
13095
13096	function buildTimezone(data, name) {
13097	  var timezone = data.timezones[name];
13098	  if (!timezone) return null;
13099	  var _timezone$a = timezone.a,
13100	    aliasOf = _timezone$a === void 0 ? null : _timezone$a;
13101	  var aliasTz = aliasOf ? data.timezones[aliasOf] : {};
13102	  var tz = _objectSpread2(_objectSpread2({}, aliasTz), data.timezones[name]);
13103	  var countries = tz.c || [];
13104	  var utcOffset = tz.u;
13105	  var dstOffset = Number.isInteger(tz.d) ? tz.d : utcOffset;
13106	  var result = {
13107	    name: name,
13108	    countries: countries,
13109	    utcOffset: utcOffset,
13110	    utcOffsetStr: getOffsetStr(utcOffset),
13111	    dstOffset: dstOffset,
13112	    dstOffsetStr: getOffsetStr(dstOffset),
13113	    aliasOf: aliasOf
13114	  };
13115	  if (timezone.r) result.deprecated = true;
13116	  return result;
13117	}
13118	function getOffsetStr(offset) {
13119	  var hours = Math.floor(Math.abs(offset) / 60);
13120	  var min = offset % 60;
13121	  var sign = offset < 0 ? '-' : '+';
13122	  return "".concat(sign).concat(getNumStr(hours), ":").concat(getNumStr(min));
13123	}
13124	function getNumStr(input) {
13125	  var num = Math.abs(input);
13126	  var prefix = num < 10 ? '0' : '';
13127	  return "".concat(prefix).concat(num);
13128	}
13129
13130	var _excluded = ["allTimezones"];
13131	Object.keys(data.timezones).length;
13132	var countries$2 = {};
13133	var timezones = {};
13134	function getCountry(id) {
13135	  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
13136	  if (!countries$2[id]) memoizeCountry(buildCountry(data, id));
13137	  return deliverCountry(countries$2[id], options);
13138	}
13139	function memoizeCountry(country) {
13140	  if (!country) return;
13141	  countries$2[country.id] = country;
13142	}
13143	function getTimezone(name) {
13144	  if (!timezones[name]) memoizeTimezone(buildTimezone(data, name));
13145	  return timezones[name] ? _objectSpread2({}, timezones[name]) : null;
13146	}
13147	function memoizeTimezone(timezone) {
13148	  if (!timezone) return;
13149	  timezones[timezone.name] = timezone;
13150	  Object.keys(timezone).length;
13151	}
13152	function getCountriesForTimezone(tzName) {
13153	  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
13154	  var timezone = getTimezone(tzName) || {};
13155	  var values = timezone.countries || [];
13156	  return values.map(function (c) {
13157	    return getCountry(c, options);
13158	  });
13159	}
13160	function deliverCountry(country, options) {
13161	  if (!country) return null;
13162	  var _ref2 = options || {},
13163	    deprecated = _ref2.deprecated;
13164	  country.allTimezones;
13165	    var other = _objectWithoutProperties(country, _excluded);
13166	  var tz = deprecated ? country.allTimezones : country.timezones;
13167	  return _objectSpread2(_objectSpread2({}, other), {}, {
13168	    timezones: tz
13169	  });
13170	}
13171
13172	const timezoneCountryId = () => {
13173	    const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
13174	    return getCountriesForTimezone(timezone)[0]?.id ?? '';
13175	};
13176
13177	function buildPreviewPayload(form, formState) {
13178	    const terms = formState.paymentOption.terms;
13179	    return {
13180	        account: {
13181	            city: unknownToEmpty(formConfigAs(form).requestCity),
13182	            country: unknownToEmpty(formConfigAs(form).requestCountry) || timezoneCountryId(),
13183	            county: '',
13184	            state: unknownToEmpty(formConfigAs(form).requestState),
13185	            zipCode: unknownToEmpty(formConfigAs(form).requestZipCode)
13186	        },
13187	        currency: getRelevantCurrency(form, formState),
13188	        ratePlanIds: [formState.paymentOption.slug],
13189	        ...(terms ? {
13190	            termType: terms.initialTerm.termType,
13191	            ...(terms.initialTerm.termType === 'TERMED' ? {
13192	                initialTerm: terms.initialTerm.period,
13193	                initialTermPeriodType: terms.initialTerm.periodType,
13194	            } : {}),
13195	        } : {
13196	            termType: "EVERGREEN",
13197	        }),
13198	        ...(formState.dynamicOfferResult ? {
13199	            dynamicOfferResult: JSON.stringify(formState.dynamicOfferResult),
13200	            productId: formState.paymentOption.productId
13201	        } : {}),
13202	    };
13203	}
13204	const calculateZuoraPrice = (form, formState, formActions) => {
13205	    return loadZuora()
13206	        .then(() => getPreview(form, formState, formActions))
13207	        .then((previewResponse) => {
13208	        if (previewResponse.pfToken) {
13209	            formActions.updateFormState({
13210	                pfToken: previewResponse.pfToken
13211	            });
13212	        }
13213	        return {
13214	            slug: formState.paymentOption.slug,
13215	            productId: formState.paymentOption.productId,
13216	            promoCode: formState.promoCode,
13217	            addonPrices: [],
13218	            totalPrice: previewResponse.amount,
13219	            totalPriceFormattedString: formatCurrency(previewResponse.amount, getRelevantCurrency(form, formState)),
13220	            netPrice: previewResponse.amountWithoutTax,
13221	            netPriceFormattedString: formatCurrency(previewResponse.amountWithoutTax, getRelevantCurrency(form, formState)),
13222	            taxPrice: previewResponse.taxAmount || null,
13223	            taxPriceFormattedString: previewResponse.taxAmount ? formatCurrency(previewResponse.taxAmount, getRelevantCurrency(form, formState)) : null,
13224	            discountPrice: 0,
13225	            discountPriceFormattedPrice: formatCurrency(0, getRelevantCurrency(form, formState)),
13226	            chargeItems: [...Object.values(previewResponse.invoiceItems)]
13227	                .filter((invoiceItem) => invoiceItem.chargeAmount)
13228	                .map((invoiceItem) => ({
13229	                label: invoiceItem.chargeName,
13230	                priceFormattedString: formatCurrency(invoiceItem.chargeAmount, getRelevantCurrency(form, formState))
13231	            })),
13232	            billingAddress: formState.billingAddress
13233	        };
13234	    });
13235	};
13236	const unknownToEmpty = (location) => location?.toLowerCase() === 'unknown' ? '' : location;
13237	const getPreview = (form, formState, formActions) => {
13238	    if (form.environment.previewMode) {
13239	        return mockBillingPreviewResponse(formConfigAs(form).dynamicOfferPreview ?? {});
13240	    }
13241	    const previewBody = buildPreviewPayload(form, formState);
13242	    return request("zephr/public/payment/v1/billing/preview-subscription", {
13243	        method: "POST",
13244	        bodyObject: previewBody
13245	    }, formActions).then(response => response.json());
13246	};
13247
13248	const formattedDateWord = (date, locale = 'en-UK') => {
13249	    if (!date)
13250	        return '';
13251	    const d = new Date(date);
13252	    if (Number.isNaN(d.getDate()))
13253	        return 'Unknown';
13254	    return d.toLocaleDateString(locale, { day: 'numeric', month: 'short', year: 'numeric' });
13255	};
13256
13257	// Example key: "<<<example.key|Default value>>>"
13258	const keyDefaultRegex = /^<<<([a-z0-9\-.]+)\|(.*)>>>$/;
13259	const resolveErrorLanguagePackKey = (form, serverError) => {
13260	    if (serverError == null) {
13261	        return '';
13262	    }
13263	    const packEntries = form.languagePack?.entries ?? {};
13264	    const error = ServerErrors[serverError];
13265	    return packEntries[error.languagePackKey] ?? error.fallbackMessage;
13266	};
13267	const resolveLanguagePackKey = (languagePack, string) => {
13268	    if (!string) {
13269	        return string;
13270	    }
13271	    try {
13272	        const match = keyDefaultRegex.exec(string);
13273	        if (!match || !match[1]) {
13274	            return string;
13275	        }
13276	        const packEntries = languagePack?.entries ?? {};
13277	        return packEntries[match[1]] ?? match[2];
13278	    }
13279	    catch (e) {
13280	        console.warn(`error resolving language pack key in string ${string}`, e);
13281	        return string;
13282	    }
13283	};
13284	const resolveLanguagePackKeyTyped = (form, key, fallback) => {
13285	    try {
13286	        const packEntries = form.languagePack?.entries ?? {};
13287	        return packEntries[key] ?? fallback;
13288	    }
13289	    catch (e) {
13290	        console.warn(`error resolving language pack key in string ${key}`, e);
13291	        return fallback;
13292	    }
13293	};
13294	const resolveLanguagePackLocale = (form) => resolveLanguagePackKeyTyped(form, 'pages.common.date-time-format-locale', 'en-US');
13295	const resolveLanguagePackKeys = (languagePack, object) => {
13296	    try {
13297	        if (object == null) {
13298	            return object;
13299	        }
13300	        if (typeof object !== 'object' && !Array.isArray(object)) {
13301	            if (typeof object === 'string' || object instanceof String) {
13302	                return resolveLanguagePackKey(languagePack, object);
13303	            }
13304	            return object;
13305	        }
13306	        if (Array.isArray(object)) {
13307	            return object.map(e => resolveLanguagePackKeys(languagePack, e));
13308	        }
13309	        return Object.entries(object).reduce((acc, [key, value]) => {
13310	            return {
13311	                ...acc,
13312	                [key]: resolveLanguagePackKeys(languagePack, value)
13313	            };
13314	        }, {});
13315	    }
13316	    catch (e) {
13317	        console.warn(`error resolving language pack entries`, e);
13318	        return object;
13319	    }
13320	};
13321
13322	const getSubscriptionAmount = (form, subscription) => {
13323	    try {
13324	        if (subscription.isOneOff) {
13325	            return '';
13326	        }
13327	        const everyLabel = resolveLanguagePackKeyTyped(form, 'forms.billing.history.every', 'every');
13328	        const firstPayment = subscription['transaction-history']?.[0] ?? subscription['next-billing-time'];
13329	        const str = firstPayment?.['human-readable-amount'];
13330	        if (!str)
13331	            return '';
13332	        const currency = subscription.currency_code?.toUpperCase() ?? str.replace(/[0-9,.]/g, '');
13333	        const { discounts_applied: discountApplied, pre_discount_price: price, billing_frequency: freq, billing_frequency_unit: freqUnit, } = subscription ?? {};
13334	        if (!discountApplied && price && freq && freqUnit) {
13335	            if (freq === 1) {
13336	                return `${currency} ${price}/${freqUnit.toLowerCase()}`;
13337	            }
13338	            return `${currency} ${price} ${everyLabel} ${freq} ${freqUnit.toLowerCase()}s`;
13339	        }
13340	        const num = Number(str.replace(/[^\d.-]/g, ''));
13341	        const amount = Number.isInteger(num) ? num.toFixed(0) : num;
13342	        if (firstPayment.cycleCount === 1) {
13343	            return `${currency}${amount}/${firstPayment.cycle}`;
13344	        }
13345	        return `${currency} ${amount} ${everyLabel} ${firstPayment.cycleCount} ${firstPayment.cycle}s`;
13346	    }
13347	    catch {
13348	        console.error('Failed to get subscription amount');
13349	        return '';
13350	    }
13351	};
13352	const getPeriod = (time, cycle, cycleCount, locale) => {
13353	    try {
13354	        const d = new Date(time);
13355	        const addCycles = (() => {
13356	            switch (cycle) {
13357	                case 'day': return d.setDate(d.getDate() + cycleCount);
13358	                case 'week': return d.setDate(d.getDate() + cycleCount * 7);
13359	                case 'month': return d.setMonth(d.getMonth() + cycleCount);
13360	                case 'year': return d.setFullYear(d.getFullYear() + cycleCount);
13361	                default: return null;
13362	            }
13363	        })();
13364	        const start = formattedDateWord(time, locale);
13365	        const end = formattedDateWord(addCycles, locale);
13366	        return `${start} - ${end}`;
13367	    }
13368	    catch {
13369	        console.error('Failed to get subscription period');
13370	        return '';
13371	    }
13372	};
13373	const buildTaxString = (inclusive, cents, name) => (`${inclusive ? '' : '+'}`
13374	    + `${(cents / 100).toFixed(2)} ${name}`
13375	    + `${inclusive ? ' incl.' : ''}`);
13376	const getSpecificTax = (cents, displayName, taxInclusive, taxPercent) => {
13377	    try {
13378	        const taxAmount = taxPercent * (cents / 100);
13379	        const totalCents = cents + (taxInclusive ? 0 : taxAmount);
13380	        const total = (totalCents / 100).toFixed(2);
13381	        const taxes = `(${buildTaxString(taxInclusive, taxAmount, displayName)})`;
13382	        return { taxes, total };
13383	    }
13384	    catch {
13385	        console.error('Failed to get subscription tax');
13386	        return { taxes: '', total: 0 };
13387	    }
13388	};
13389	const getDefaultTaxes = (cents, defaultTax) => {
13390	    try {
13391	        const taxes = [];
13392	        let totalCents = cents;
13393	        defaultTax.forEach((e) => {
13394	            const taxCents = e.taxPercent * (cents / 100);
13395	            const tax = buildTaxString(e.taxInclusive, taxCents, e.displayName);
13396	            taxes.push(tax);
13397	            totalCents += e.taxInclusive ? 0 : taxCents;
13398	        });
13399	        const total = (totalCents / 100).toFixed(2);
13400	        return { taxes: `(${taxes.join(', ')})`, total };
13401	    }
13402	    catch {
13403	        console.error('Failed to get subscription default tax');
13404	        return { taxes: '', total: 0 };
13405	    }
13406	};
13407	const getBillingHistory = (form, subscription) => {
13408	    try {
13409	        const defaultTax = subscription['default-tax-rates'];
13410	        const managedBy = subscription['managed-by'].toLowerCase();
13411	        const isCanceled = subscription['subscription-state'].toLowerCase() === 'canceled';
13412	        const cancelDate = formattedDateWord(managedBy === 'stripe' ? subscription.ended : subscription.ends);
13413	        const locale = resolveLanguagePackLocale(form);
13414	        let newArr = subscription['transaction-history'].reduce((acc, e) => {
13415	            const date = formattedDateWord(e.time, locale);
13416	            const period = getPeriod(e.time, e.cycle, e.cycleCount, locale);
13417	            const { cents, currency, taxRate, } = e;
13418	            let total;
13419	            let taxes;
13420	            if (taxRate) {
13421	                const { displayName, taxInclusive, taxPercent } = taxRate;
13422	                ({ taxes, total } = getSpecificTax(cents, displayName, taxInclusive, taxPercent));
13423	            }
13424	            else if (defaultTax?.length) {
13425	                ({ taxes, total } = getDefaultTaxes(cents, defaultTax));
13426	            }
13427	            else {
13428	                total = (cents / 100).toFixed(2);
13429	                taxes = null;
13430	            }
13431	            const subtotal = managedBy === 'stripe'
13432	                ? (e.cents / 100).toFixed(2)
13433	                : null;
13434	            return [...acc, {
13435	                    date, period, subtotal, currency, taxes, total,
13436	                }];
13437	        }, []);
13438	        if (isCanceled) {
13439	            newArr = [{
13440	                    date: cancelDate,
13441	                    period: 'canceled',
13442	                }, ...newArr];
13443	        }
13444	        return newArr;
13445	    }
13446	    catch {
13447	        console.error('Failed to get subscription billing history');
13448	        return null;
13449	    }
13450	};
13451
13452	const loadBraintreeStripeSubscriptions = (form, _, formActions, activeOnly) => {
13453	    return request(`blaize/payment/${form.organisationConfiguration.paymentProvider}/subscriptions`, {
13454	        method: "GET"
13455	    }, formActions, null, true)
13456	        .then(response => response.ok ? response.json() : [])
13457	        .then(subscriptions => subscriptions
13458	        .filter(subscription => !activeOnly || subscription['subscription-state']?.toLowerCase() === 'active')
13459	        .map(subscription => {
13460	        const locale = resolveLanguagePackLocale(form);
13461	        const multiphasePlanMappings = getMultiphasePlanMappings(subscription);
13462	        return {
13463	            externalId: subscription['external-id'],
13464	            productId: subscription['blaize-product'].id,
13465	            productLabel: subscription['blaize-product'].label ?? subscription['blaize-product'].id,
13466	            planId: subscription['plan_id'],
13467	            planLabel: subscription['plan_name'],
13468	            currency: subscription['currency_code'],
13469	            status: subscription['subscription-state']?.toLowerCase() === 'active' ? 'active' : 'inactive',
13470	            nextBillingTime: formattedDateWord(subscription['next-billing-time'], locale),
13471	            amount: getSubscriptionAmount(form, subscription),
13472	            transactionHistory: getBillingHistory(form, subscription),
13473	            ...(subscription['multiphase_plan'] && { multiphasePlan: subscription['multiphase_plan'] }),
13474	            ...(Object.keys(multiphasePlanMappings).length > 0 && { multiphasePlanMappings })
13475	        };
13476	    }));
13477	};
13478	const getMultiphasePlanMappings = (subscription) => {
13479	    const multiPhasedPlans = subscription['blaize-product'].mapping?.recurring?.multiPhasedPlans || [];
13480	    return multiPhasedPlans.reduce((acc, plan) => {
13481	        acc[plan.id] = plan;
13482	        return acc;
13483	    }, {});
13484	};
13485
13486	const calculateStripeSubscriptionProrate = (form, formState, formActions) => {
13487	    const changingFromSubscription = formState
13488	        .validChangeFromPlans
13489	        .find(plan => formState.paymentOption.slug === plan.planSlug && formState.paymentOption.productId === plan.productId)
13490	        ?.changesFromSubscription;
13491	    if (!changingFromSubscription) {
13492	        console.error("No valid change from subscription");
13493	        return;
13494	    }
13495	    return request(`zephr/payment/stripe/subscriptions/${changingFromSubscription.externalId}/change-previews`, {
13496	        method: 'POST',
13497	        bodyObject: {
13498	            plan_id: formState.paymentOption.slug
13499	        }
13500	    }, formActions)
13501	        .then(response => response.json())
13502	        .then(preview => {
13503	        const currencyMultiplier = isZeroDecimalCurrency(formState.paymentOption.currencyCode.toUpperCase()) ? 1 : 0.01;
13504	        return {
13505	            totalPrice: preview.total * currencyMultiplier,
13506	            totalPriceFormattedString: formatCurrency(preview.total * currencyMultiplier, formState.paymentOption.currencyCode),
13507	            subTotalPrice: preview.sub_total * currencyMultiplier,
13508	            subTotalPriceFormattedString: formatCurrency(preview.sub_total * currencyMultiplier, formState.paymentOption.currencyCode),
13509	        };
13510	    });
13511	};
13512
13513	// Standalone service to load gift subscriptions without importing paymentProviderConfigurations
13514	const loadGiftSubscriptions = async (form, formState, formActions) => {
13515	    try {
13516	        const response = await request("zephr/public/gifts/v1/gifts", {
13517	            method: "GET"
13518	        }, formActions, null, true);
13519	        if (response.ok) {
13520	            const json = await response.json();
13521	            const rawGiftSubscriptions = json || [];
13522	            // Map API response fields from camelCase to the structure consumers expect
13523	            const giftSubscriptions = rawGiftSubscriptions
13524	                .filter((gift) => gift.subscriptionDetails)
13525	                .map((gift) => ({
13526	                gift_code: gift.giftCode,
13527	                subscription_number: gift.subscriptionNumber,
13528	                status: gift.status,
13529	                is_purchaser: gift.isPurchaser,
13530	                is_recipient: gift.isRecipient,
13531	                error_reason: gift.errorReason,
13532	                host: gift.host,
13533	                externalId: gift.subscriptionDetails?.id,
13534	                recipientFirstName: gift.subscriptionDetails?.soldToContact?.firstName,
13535	                recipientLastName: gift.subscriptionDetails?.soldToContact?.lastName,
13536	                subscriptionStartDate: gift.subscriptionDetails?.subscriptionStartDate,
13537	                subscriptionEndDate: gift.subscriptionDetails?.termEndDate,
13538	                subscriptionType: gift.subscriptionDetails?.ratePlans?.[0]?.productName,
13539	                currency: gift.subscriptionDetails?.currency,
13540	            }));
13541	            formActions.updateFormState({
13542	                giftSubscriptions: giftSubscriptions,
13543	                formPrerequisiteLoaded: true
13544	            });
13545	        }
13546	        else {
13547	            formActions.updateFormState({
13548	                serverErrors: [ServerError.PAYMENT_PROCESSING_ERROR]
13549	            });
13550	        }
13551	    }
13552	    catch (error) {
13553	        formActions.updateFormState({
13554	            serverErrors: [ServerError.PAYMENT_PROCESSING_ERROR]
13555	        });
13556	    }
13557	};
13558
13559	const formatChargeCadence = (form, charge) => {
13560	    // Early return if we don't have the required charge data
13561	    if (!charge.price || !charge.currency) {
13562	        return null;
13563	    }
13564	    const price = formatCurrency(charge.price, charge.currency);
13565	    // Use listPriceBase as the primary display denominator
13566	    if (charge.listPriceBase && charge.listPriceBase !== 'Per_Billing_Perio
13566d') {
13567	        // Convert "Per_Month" -> "month", "Per_Year" -> "year", etc.
13568	        const unit = charge.listPriceBase.replace('Per_', '').toLowerCase();
13569	        return `${price}/${unit}`;
13570	    }
13571	    // Fall back to billingPeriod for "Per_Billing_Period" or missing listPriceBase
13572	    if (charge.billingPeriod) {
13573	        const period = charge.billingPeriod.toLowerCase();
13574	        // Handle special cases
13575	        if (period === 'specificmonths') {
13576	            return `${price}/month`; // Default to month for specific months
13577	        }
13578	        return `${price}/${period}`;
13579	    }
13580	    // Final fallback - assume monthly
13581	    return `${price}/month`;
13582	};
13583	// Helper function to format Zuora subscription amount based on billing period
13584	const formatZuoraSubscriptionAmount = (form, subscription) => {
13585	    // Early return for completely invalid inputs
13586	    if (!subscription.contractedMrr || !subscription.currency) {
13587	        return '';
13588	    }
13589	    // Get the first active rate plan charge for accurate pricing
13590	    const ratePlanList = [...Object.values(subscription.ratePlans)];
13591	    const activeRatePlans = ratePlanList.length === 1
13592	        ? ratePlanList
13593	        : ratePlanList.filter(ratePlan => ratePlan.lastChangeType === 'Add');
13594	    // Try to use accurate charge-level data first
13595	    if (activeRatePlans[0]?.ratePlanCharges?.[0]) {
13596	        const firstCharge = activeRatePlans[0].ratePlanCharges[0];
13597	        const accurateAmount = formatChargeCadence(form, firstCharge);
13598	        if (accurateAmount) {
13599	            return accurateAmount;
13600	        }
13601	    }
13602	    // Fallback: display MRR per month if we don't have the required charge data
13603	    const fallbackAmount = formatCurrency(subscription.contractedMrr, subscription.currency);
13604	    return `${fallbackAmount}/month`;
13605	};
13606	// Helper function to extract only custom fields (those ending with "__c")
13607	const extractCustomFields = (subscription) => {
13608	    const customFields = {};
13609	    for (const [key, value] of Object.entries(subscription)) {
13610	        if (key.endsWith('__c')) {
13611	            customFields[key] = value;
13612	        }
13613	    }
13614	    return customFields;
13615	};
13616	const zuoraStatusMap = {
13617	    'draft': 'pending',
13618	    'pending activation': 'pending',
13619	    'pending acceptance': 'pending',
13620	    'active': 'active',
13621	    'cancelled': 'inactive',
13622	    'expired': 'inactive',
13623	    'suspended': 'inactive'
13624	};
13625	const loadZuoraSubscriptions = async (form, formState, formActions, activeOnly, isGiftSubscriptions = false) => {
13626	    // Load gift subscriptions first via standalone service (no circular deps)
13627	    let giftSubscriptions = [];
13628	    try {
13629	        await loadGiftSubscriptions(form, formState, formActions);
13630	        const updatedFormState = formActions.getFormState();
13631	        giftSubscriptions = (updatedFormState.giftSubscriptions || []).map((giftSub) => ({
13632	            externalId: giftSub.externalId,
13633	            accountId: '',
13634	            productId: giftSub.subscriptionType || '',
13635	            productLabel: giftSub.subscriptionType || '',
13636	            planId: '',
13637	            planLabel: null,
13638	            currency: giftSub.currency,
13639	            status: giftSub.status,
13640	            amount: '',
13641	            isGift: true,
13642	            recipientFirstName: giftSub.recipientFirstName,
13643	            recipientLastName: giftSub.recipientLastName,
13644	            subscriptionStartDate: giftSub.subscriptionStartDate,
13645	            subscriptionEndDate: giftSub.subscriptionEndDate,
13646	            subscriptionType: giftSub.subscriptionType,
13647	            subscriptionNumber: giftSub.subscriptionNumber,
13648	        }));
13649	    }
13650	    catch (error) {
13651	        console.error('Error loading gift subscriptions:', error);
13652	        // Continue without gift subscriptions
13653	    }
13654	    // Load regular Zuora subscriptions
13655	    const regularSubscriptions = await request('plugins/public/zuora-billing/subscriptions', {
13656	        method: "GET"
13657	    }, formActions, null, true)
13658	        .then(response => response.json())
13659	        .then(subscriptionsResponse => [...Object.values(subscriptionsResponse.subscriptions || {})])
13660	        .then(subscriptions => subscriptions
13661	        .filter(subscription => !activeOnly || subscription.status?.toLowerCase() === 'active')
13662	        .map(subscription => {
13663	        // Assuming that Zephr created Zuora subscriptions only have 1 active rate plan
13664	        const ratePlanList = [...Object.values(subscription.ratePlans)];
13665	        const activeRatePlans = ratePlanList.length === 1
13666	            ? ratePlanList
13667	            : ratePlanList.filter(ratePlan => ratePlan.lastChangeType === 'Add');
13668	        if (activeRatePlans.length !== 1) {
13669	            console.warn(`Subscription ${subscription.id} has ${activeRatePlans.length} active rate plans`, ratePlanList);
13670	        }
13671	        // Verify currency
13672	        if (activeRatePlans[0]
13673	            && !formConfigAs(form).dynamicOffer?.id
13674	            && getRelevantCurrency(form, formState)
13675	            && ![...Object.values(activeRatePlans[0].ratePlanCharges ?? {})]
13676	                .every(charge => charge?.currency === getRelevantCurrency(form, formState))) {
13677	            console.log(`Subscription ${subscription.id} is not in the form currency`);
13678	            return null;
13679	        }
13680	        const amount = formatZuoraSubscriptionAmount(form, subscription);
13681	        return {
13682	            // Start with only custom fields from the raw subscription (those ending with "__c")
13683	            ...extractCustomFields(subscription),
13684	            // Override with our specific mappings
13685	            externalId: subscription.id,
13686	            accountId: subscription.accountId,
13687	            productId: subscription['SubscriptionExperienceProductID__c'],
13688	            productLabel: activeRatePlans[0]?.productName,
13689	            planId: activeRatePlans[0]?.productRatePlanId,
13690	            planLabel: null,
13691	            currency: activeRatePlans[0]?.ratePlanCharges[0]?.currency,
13692	            status: zuoraStatusMap[subscription.status?.toLowerCase()] ?? 'inactive',
13693	            amount,
13694	            autoRenew: subscription?.autoRenew,
13695	            billToContact: subscription.billToContact,
13696	            termType: subscription.termType,
13697	            ...(isGiftSubscriptions ? {
13698	                recipientFirstName: subscription.soldToContact?.firstName,
13699	                recipientLastName: subscription.soldToContact?.lastName,
13700	                recipientEmail: subscription.soldToContact?.personalEmail,
13701	                subscriptionStartDate: subscription.subscriptionStartDate,
13702	                subscriptionEndDate: subscription.termEndDate,
13703	                subscriptionType: subscription?.ratePlans[0]?.productName,
13704	                subscriptionNumber: subscription.subscriptionNumber,
13705	            } : {})
13706	        };
13707	    })
13708	        .filter(existingSubscription => existingSubscription && existingSubscription.planId != null && existingSubscription.productId != null));
13709	    // Combine both lists and return
13710	    return [...regularSubscriptions, ...giftSubscriptions];
13711	};
13712
13713	const calculateZuoraSubscriptionProrate = (form, formState, formActions) => {
13714	    const changingFromSubscription = formState
13715	        .validChangeFromPlans
13716	        .find(plan => formState.paymentOption.slug === plan.planSlug && formState.paymentOption.productId === plan.productId)
13717	        ?.changesFromSubscription;
13718	    if (!changingFromSubscription) {
13719	        console.error("No valid change from subscription");
13720	        return;
13721	    }
13722	    return request(`plugins/public/zuora-billing/subscription-change-preview`, {
13723	        method: 'POST',
13724	        bodyObject: {
13725	            subscriptionId: changingFromSubscription.externalId,
13726	            newProductRatePlanId: formState.paymentOption.slug,
13727	            currency: getRelevantCurrency(form, formState),
13728	            ...(formState.dynamicOfferResult ? {
13729	                dynamicOfferResult: JSON.stringify(formState.dynamicOfferResult),
13730	                productId: formState.paymentOption.productId
13731	            } : {}),
13732	        }
13733	    }, formActions)
13734	        .then(response => response.json())
13735	        .then(preview => {
13736	        return {
13737	            totalPrice: preview.amount,
13738	            totalPriceFormattedString: formatCurrency(preview.amount, getRelevantCurrency(form, formState)),
13739	            subTotalPrice: preview.amountWithoutTax,
13740	            subTotalPriceFormattedString: formatCurrency(preview.amountWithoutTax, getRelevantCurrency(form, formState)),
13741	        };
13742	    });
13743	};
13744
13745	const stripePriceCalculator = (form, formState, formActions) => {
13746	    // Fallback to the generic price calculator if there is no billing address
13747	    if (!form.organisationConfiguration.stripeAutomaticTaxEnabled
13748	        || formState.billingAddress.country == null) {
13749	        return calculateBraintreeStripePrice(form, formState);
13750	    }
13751	    return fetchStripeTaxPreview(formState, formActions)
13752	        .then((taxPreview) => {
13753	        if (!taxPreview.total) {
13754	            return calculateBraintreeStripePrice(form, formState);
13755	        }
13756	        const currencyMultiplier = isZeroDecimalCurrency(formState.paymentOption.currencyCode.toUpperCase())
13757	            ? 1
13758	            : 0.01;
13759	        const currencyFormatter = (value) => formatCurrency(value * currencyMultiplier, formState.paymentOption.currencyCode);
13760	        return {
13761	            slug: formState.paymentOption.slug,
13762	            productId: formState.paymentOption.productId,
13763	            promoCode: formState.promoCode,
13764	            billingAddress: formState.billingAddress,
13765	            addonPrices: [],
13766	            totalPrice: taxPreview.total * currencyMultiplier,
13767	            totalPriceFormattedString: currencyFormatter(taxPreview.total),
13768	            netPrice: taxPreview.sub_total * currencyMultiplier,
13769	            netPriceFormattedString: currencyFormatter(taxPreview.sub_total),
13770	            taxPrice: taxPreview.tax ? taxPreview.tax * currencyMultiplier : null,
13771	            taxPriceFormattedString: taxPreview.tax ? currencyFormatter(taxPreview.tax) : null,
13772	            discountPrice: taxPreview.discount ? taxPreview.discount * currencyMultiplier : null,
13773	            discountPriceFormattedPrice: taxPreview.discount ? currencyFormatter(taxPreview.discount) : null,
13774	            chargeItems: [],
13775	        };
13776	    })
13777	        .catch((error) => {
13778	        console.error(`Error calculating stripe tax preview ${JSON.stringify(error)}`);
13779	        return calculateBraintreeStripePrice(form, formState);
13780	    });
13781	};
13782	const fetchStripeTaxPreview = (formState, formActions) => {
13783	    return request('zephr/payment/stripe/create-subscription-previews', {
13784	        method: 'POST',
13785	        bodyObject: {
13786	            product_id: formState.paymentOption.productId,
13787	            plan_id: formState.paymentOption.slug,
13788	            billing_country: formState.billingAddress.country,
13789	            billing_post_code: formState.billingAddress.postalCode,
13790	            promo_code: formState.promoCodeValid ? formState.promoCode : undefined,
13791	        },
13792	    }, formActions, null, true).then((response) => response.json());
13793	};
13794
13795	const verifyingPromoCodeBusyKey$1 = "promo-code";
13796	const checkDoPromoCode = async (form, formState, formActions) => {
13797	    if (form.environment.previewMode) {
13798	        return;
13799	    }
13800	    const dynamicOfferId = formConfigAs(form).dynamicOffer?.id;
13801	    if (!dynamicOfferId) {
13802	        throw Error('Missing Dynamic Offer id');
13803	    }
13804	    let session;
13805	    try {
13806	        session = document.cookie.match(/blaize_session=[0-9a-z-]+/)[0].substring(15);
13807	    }
13808	    catch {
13809	        session = null;
13810	    }
13811	    const doProducts = formState?.dynamicOfferResult?.products ?? [];
13812	    const promoProducts = doProducts.flatMap(p =>
13812 p.paymentPlans.map(plan => ({
13813	        id: p.id,
13814	        payment_plan: {
13815	            "provider": "zuora-billing",
13816	            "plan_id": plan.planId,
13817	            charges: plan.charges.map(c => ({
13818	                "charge_definition_id": c.chargeDefinitionData.productChargeDefinitionId,
13819	                "currency": c.prices[0]?.currency,
13820	                "price": c.prices[0].price
13821	            }))
13822	        }
13823	    })));
13824	    const response = await request('zephr/public/decisions/v1/promo-codes', {
13825	        method: "POST",
13826	        bodyObject: {
13827	            "promo_code": formState.promoCode,
13828	            "session": session,
13829	            "selected_products": promoProducts
13830	        },
13831	    }, formActions, verifyingPromoCodeBusyKey$1);
13832	    if (!response.ok) {
13833	        logDataLayerEvent(form, 'zephr_form_error', {
13834	            error: ServerError[ServerError.PROMO_CODE_INVALID_ERROR],
13835	        });
13836	        return Promise.resolve(formActions.updateFormState({
13837	            promoCodeValid: false,
13838	            serverErrors: [ServerError.PROMO_CODE_INVALID_ERROR],
13839	            discountedPlanPrices: []
13840	        }));
13841	    }
13842	    const json = await response.json();
13843	    const matchingProduct = json?.products?.find(p => p.id === formState.paymentOption.productId && p.paymentPlans.some(plan => plan.planId === formState.paymentOption.slug));
13844	    if (!matchingProduct) {
13845	        logDataLayerEvent(form, 'zephr_form_error', {
13846	            error: ServerError[ServerError.PROMO_CODE_INVALID_ERROR],
13847	        });
13848	        return Promise.resolve(formActions.updateFormState({
13849	            promoCodeValid: false,
13850	            serverErrors: [ServerError.PROMO_CODE_INVALID_ERROR],
13851	            discountedPlanPrices: []
13852	        }));
13853	    }
13854	    const updatedState = formActions.updateFormState({
13855	        promoCodeValid: true,
13856	        serverErrors: [],
13857	        discountedPlanPrices: [],
13858	        originalDynamicOfferResult: formState.dynamicOfferResult,
13859	        dynamicOfferResult: {
13860	            ...formState.dynamicOfferResult,
13861	            ...json
13862	        }
13863	    });
13864	    await calculatePrices(form, updatedState, formActions);
13865	};
13866	const zuoraDoPromoCodeService = async (form, formState, formActions) => checkDoPromoCode(form, formState, formActions);
13867
13868	/* src/components/elements/payment/zuora/ZuoraDynamicFormPreLoader.svelte generated by Svelte v4.2.12 */
13869
13870	function create_fragment$V(ctx) {
13871		let script;
13872		let script_src_value;
13873
13874		return {
13875			c() {
13876				script = element("script");
13877				script.innerHTML = ``;
13878				attr(script, "type", "text/javascript");
13879				if (!src_url_equal(script.src, script_src_value = "https://js.zuora.com/payment/v3/zuora.js")) attr(script, "src", script_src_value);
13880				attr(script, "onload", "window.zuoraLoadCallback()");
13881			},
13882			m(target, anchor) {
13883				append(document.head, script);
13884			},
13885			p: noop,
13886			i: noop,
13887			o: noop,
13888			d(detaching) {
13889				detach(script);
13890			}
13891		};
13892	}
13893
13894	function instance$U($$self, $$props, $$invalidate) {
13895		let { onMountCallback } = $$props;
13896		onMount(onMountCallback);
13897
13898		$$self.$$set = $$props => {
13899			if ('onMountCallback' in $$props) $$invalidate(0, onMountCallback = $$props.onMountCallback);
13900		};
13901
13902		return [onMountCallback];
13903	}
13904
13905	class ZuoraDynamicFormPreLoader extends SvelteComponent {
13906		constructor(options) {
13907			super();
13908			init(this, options, instance$U, create_fragment$V, safe_not_equal, { onMountCallback: 0 });
13909		}
13910	}
13911
13912	const paymentProviderConfigurations = {
13913	    [paymentProviders.BRAINTREE]: {
13914	        loader: loadBraintreeUi,
13915	        preLoader: null,
13916	        completer: braintreePay,
13917	        changePaymentCompleter: braintreeChangePayment,
13918	        component: BraintreePayment,
13919	        preLoaderComponent: null,
13920	        promoCodeCheckPath: 'blaize/payment/braintree/promo-code-check',
13921	        productAddonPath: 'blaize/payment/braintree/addons-check',
13922	        existingSubscriptionLoader: loadBraintreeStripeSubscriptions,
13923	        priceCalculator: calculateBraintreeStripePrice,
13924	        hasProductAddons: true,
13925	        hasPromoCodes: () => true,
13926	        internalSubmit: () => false,
13927	        noPaymentForm: (form, formState) => false,
13928	        canAttemptIncompletePaymentFormSubmission: false,
13929	    },
13930	    [paymentProviders.STRIPE]: {
13931	        loader: loadStripeUi,
13932	        preLoader: null,
13933	        completer: stripePay,
13934	        changePaymentCompleter: stripeChangePayment,
13935	        component: StripePayment,
13936	        preLoaderComponent: null,
13937	        promoCodeCheckPath: 'zephr/payment/stripe/promo-code-check',
13938	        existingSubscriptionLoader: loadBraintreeStripeSubscriptions,
13939	        priceCalculator: stripePriceCalculator,
13940	        changeSubscriptionProrateCalculator: calculateStripeSubscriptionProrate,
13941	        hasProductAddons: false,
13942	        hasPromoCodes: () => true,
13943	        internalSubmit: () => false,
13944	        noPaymentForm: (form, formState) => false,
13945	        canAttemptIncompletePaymentFormSubmission: true,
13946	    },
13947	    [paymentProviders.ZUORA]: {
13948	        loader: loadZuoraUi,
13949	        preLoader: loadZuora,
13950	        completer: zuoraComplete,
13951	        changePaymentCompleter: zuoraChangePayment,
13952	        component: ZuoraPayment,
13953	        preLoaderComponent: (config) => config?.useDynamicForm ? ZuoraDynamicFormPreLoader : ZuoraPreLoader,
13954	        promoCodeCheckPath: '',
13955	        promoCodeServiceOverride: zuoraDoPromoCodeService,
13956	        priceCalculator: calculateZuoraPrice,
13957	        existingSubscriptionLoader: loadZuoraSubscriptions,
13958	        changeSubscriptionProrateCalculator: calculateZuoraSubscriptionProrate,
13959	        hasProductAddons: false,
13960	        hasPromoCodes: (form) => formConfigAs(form).dynamicOffer && !formConfigAs(form).changeSubscriptionMode,
13961	        internalSubmit: (form) => !formConfigAs(form).changeSubscriptionMode,
13962	        noPaymentForm: (form, formState) => {
13963	            const config = formConfigAs(form);
13964	            const isChangeSubscriptionMode = config.changeSubscriptionMode;
13965	            const requiresPaymentMethodSetup = formState?.requiresPaymentMethodSetup;
13966	            // Show payment form if we're in payment method setup mode, even during change subscription
13967	            return isChangeSubscriptionMode && !requiresPaymentMethodSetup;
13968	        },
13969	        canAttemptIncompletePaymentFormSubmission: false,
13970	    }
13971	};
13972	const mobilePaymentServiceConfigurations = {
13973	    [paymentProviders.BRAINTREE]: {
13974	        loader: configureBraintreeMobilePayments,
13975	        completer: braintreePayWithMobile,
13976	        component: BraintreeMobilePayment,
13977	        previewMode: (form) => form.environment.previewMode,
13978	    },
13979	    [paymentProviders.STRIPE]: {
13980	        loader: configureStripeMobilePay,
13981	        completer: stripePay,
13982	        component: StripeMobilePayment,
13983	        previewMode: (form) => form.environment.previewMode,
13984	    },
13985	};
13986	const paymentProviderFor = (providerName) => {
13987	    const configuration = paymentProviderConfigurations[providerName];
13988	    if (!configuration) {
13989	        throw `Payment provider ${providerName} not configured.`;
13990	    }
13991	    return configuration;
13992	};
13993	const supportsMobilePayments = (providerName) => {
13994	    return !!mobilePaymentServiceConfigurations[providerName];
13995	};
13996	const mobilePaymentServiceFor = (providerName) => {
13997	    const configuration = mobilePaymentServiceConfigurations[providerName];
13998	    if (!configuration) {
13999	        throw `Mobile payment provider ${providerName} not configured.`;
14000	    }
14001	    return configuration;
14002	};
14003
14004	const factory$q = {
14005	    matches: (sectionElement) => sectionElement.type === elementTypes.BUTTON && !sectionElement.config.isLogin && !sectionElement.config.isCancel,
14006	    create: (form, formState, formActions, elementConfig) => {
14007	        const isSubmitButton = elementConfig.isSubmit === true;
14008	        const inChangePaymentSection = formState.currentSection?.type === sectionTypes.CHANGE_PAYMENT.type;
14009	        const providerHandlesSubmit = inChangePaymentSection && isSubmitButton
14010	            ? paymentProviderFor(form.organisationConfiguration.paymentProvider).internalSubmit(form)
14011	            : false;
14012	        const handleClick = () => {
14013	            if (providerHandlesSubmit) {
14014	                return;
14015	            }
14016	            logDataLayerEvent(form, 'zephr_form_button_press', {
14017	                sectionId: formState.currentSection.type,
14018	                buttonType: 'SUBMIT'
14019	            });
14020	            formActions.attemptCompleteSection();
14021	        };
14022	        return {
14023	            component: Button,
14024	            props: {
14025	                disabled: formState.isBusy || !formState.canAttemptSectionCompletion || providerHandlesSubmit,
14026	                text: elementConfig.text,
14027	                onClick: handleClick,
14028	                isPaymentForm: form.formType === FormType.PAYMENT,
14029	                hidden: providerHandlesSubmit,
14030	            }
14031	        };
14032	    }
14033	};
14034
14035	/**
14036	 * Permissive email check: requires exactly one '@' with at least one non-space character
14037	 * on each side. Does not validate full email syntax (e.g., dots, domain rules),
14038	 * just catches obvious typos like spaces or missing parts.
14039	 * Front-end email validation should be lightweight.
14040	 * @param email
14041	 */
14042	const isValidEmail = (email) => {
14043	    if (!email)
14044	        return false;
14045	    return /^[^\s@]+@[^\s@]+$/.test(email);
14046	};
14047	const updateElementValidity = (component, formState, sectionElement, formActions) => {
14048	    if (component?.isValid !== undefined) {
14049	        const validity = {
14050	            partType: formState.currentPart.type,
14051	            sectionType: formState.currentSection.type,
14052	            sectionOrder: formState.currentSection.order,
14053	            elementType: sectionElement.type,
14054	            elementOrder: sectionElement.order,
14055	            isValid: component.isValid,
14056	            elementId: sectionElement.config?.slug,
14057	        };
14058	        const existingValidity = formState.elementValidity.find((other) => other.partType === validity.partType &&
14059	            other.sectionType === validity.sectionType &&
14060	            other.sectionOrder === validity.sectionOrder &&
14061	            other.elementType === validity.elementType &&
14062	            other.elementOrder === validity.elementOrder);
14063	        if (existingValidity?.isValid !== validity.isValid) {
14064	            formActions.updateFormState({
14065	                elementValidity: [
14066	                    ...formState.elementValidity.filter((v) => v != existingValidity),
14067	                    validity,
14068	                ],
14069	            });
14070	        }
14071	    }
14072	};
14073
14074	/* src/components/elements/email/EmailAddress.svelte generated by Svelte v4.2.12 */
14075
14076	function create_fragment$U(ctx) {
14077		let label_1;
14078		let t;
14079		let div;
14080		let input;
14081		let current;
14082
14083		label_1 = new Label({
14084				props: {
14085					forInput: /*id*/ ctx[11],
14086					label: /*label*/ ctx[2],
14087					isPaymentForm: /*isPaymentForm*/ ctx[6]
14088				}
14089			});
14090
14091		input = new Input({
14092				props: {
14093					id: /*id*/ ctx[11],
14094					autocomplete: "email",
14095					type: "email",
14096					name: "email",
14097					disabled: /*disabled*/ ctx[1],
14098					value: /*emailAddress*/ ctx[0],
14099					placeholder: /*placeholder*/ ctx[3],
14100					errorMessage: /*error*/ ctx[5],
14101					innerTextOnClick: /*onEdit*/ ctx[7],
14102					innerText: /*onEdit*/ ctx[7] && (/*editText*/ ctx[4] || 'Edit'),
14103					isPaymentForm: /*isPaymentForm*/ ctx[6],
14104					onFocus: /*onFocus*/ ctx[9],
14105					onBlur: /*onBlur*/ ctx[10]
14106				}
14107			});
14108
14109		input.$on("change", /*change_handler*/ ctx[13]);
14110
14111		return {
14112			c() {
14113				create_component(label_1.$$.fragment);
14114				t = space();
14115				div = element("div");
14116				create_component(input.$$.fragment);
14117				attr(div, "class", "zephr-form-relative-container");
14118				toggle_class(div, "zephr-payment-form-relative-container", /*isPaymentForm*/ ctx[6]);
14119			},
14120			m(target, anchor) {
14121				mount_component(label_1, target, anchor);
14122				insert(target, t, anchor);
14123				insert(target, div, anchor);
14124				mount_component(input, div, null);
14125				current = true;
14126			},
14127			p(ctx, [dirty]) {
14128				const label_1_changes = {};
14129				if (dirty & /*label*/ 4) label_1_changes.label = /*label*/ ctx[2];
14130				if (dirty & /*isPaymentForm*/ 64) label_1_changes.isPaymentForm = /*isPaymentForm*/ ctx[6];
14131				label_1.$set(label_1_changes);
14132				const input_changes = {};
14133				if (dirty & /*disabled*/ 2) input_changes.disabled = /*disabled*/ ctx[1];
14134				if (dirty & /*emailAddress*/ 1) input_changes.value = /*emailAddress*/ ctx[0];
14135				if (dirty & /*placeholder*/ 8) input_changes.placeholder = /*placeholder*/ ctx[3];
14136				if (dirty & /*error*/ 32) input_changes.errorMessage = /*error*/ ctx[5];
14137				if (dirty & /*onEdit*/ 128) input_changes.innerTextOnClick = /*onEdit*/ ctx[7];
14138				if (dirty & /*onEdit, editText*/ 144) input_changes.innerText = /*onEdit*/ ctx[7] && (/*editText*/ ctx[4] || 'Edit');
14139				if (dirty & /*isPaymentForm*/ 64) input_changes.isPaymentForm = /*isPaymentForm*/ ctx[6];
14140				if (dirty & /*onFocus*/ 512) input_changes.onFocus = /*onFocus*/ ctx[9];
14141				if (dirty & /*onBlur*/ 1024) input_changes.onBlur = /*onBlur*/ ctx[10];
14142				input.$set(input_changes);
14143
14144				if (!current || dirty & /*isPaymentForm*/ 64) {
14145					toggle_class(div, "zephr-payment-form-relative-container", /*isPaymentForm*/ ctx[6]);
14146				}
14147			},
14148			i(local) {
14149				if (current) return;
14150				transition_in(label_1.$$.fragment, local);
14151				transition_in(input.$$.fragment, local);
14152				current = true;
14153			},
14154			o(local) {
14155				transition_out(label_1.$$.fragment, local);
14156				transition_out(input.$$.fragment, local);
14157				current = false;
14158			},
14159			d(detaching) {
14160				if (detaching) {
14161					detach(t);
14162					detach(div);
14163				}
14164
14165				destroy_component(label_1, detaching);
14166				destroy_component(input);
14167			}
14168		};
14169	}
14170
14171	function instance$T($$self, $$props, $$invalidate) {
14172		let { formKey } = $$props;
14173		let { emailAddress } = $$props;
14174		let { disabled } = $$props;
14175		let { label } = $$props;
14176		let { placeholder } = $$props;
14177		let { editText } = $$props;
14178		let { error = null } = $$props;
14179		let { isPaymentForm = false } = $$props;
14180		let { onEdit } = $$props;
14181		let { onChange } = $$props;
14182		let { onFocus } = $$props;
14183		let { onBlur } = $$props;
14184		const id = `zephr-form-identifier-${formKey}`;
14185		const change_handler = ({ detail }) => onChange(detail);
14186
14187		$$self.$$set = $$props => {
14188			if ('formKey' in $$props) $$invalidate(12, formKey = $$props.formKey);
14189			if ('emailAddress' in $$props) $$invalidate(0, emailAddress = $$props.emailAddress);
14190			if ('disabled' in $$props) $$invalidate(1, disabled = $$props.disabled);
14191			if ('label' in $$props) $$invalidate(2, label = $$props.label);
14192			if ('placeholder' in $$props) $$invalidate(3, placeholder = $$props.placeholder);
14193			if ('editText' in $$props) $$invalidate(4, editText = $$props.editText);
14194			if ('error' in $$props) $$invalidate(5, error = $$props.error);
14195			if ('isPaymentForm' in $$props) $$invalidate(6, isPaymentForm = $$props.isPaymentForm);
14196			if ('onEdit' in $$props) $$invalidate(7, onEdit = $$props.onEdit);
14197			if ('onChange' in $$props) $$invalidate(8, onChange = $$props.onChange);
14198			if ('onFocus' in $$props) $$invalidate(9, onFocus = $$props.onFocus);
14199			if ('onBlur' in $$props) $$invalidate(10, onBlur = $$props.onBlur);
14200		};
14201
14202		return [
14203			emailAddress,
14204			disabled,
14205			label,
14206			placeholder,
14207			editText,
14208			error,
14209			isPaymentForm,
14210			onEdit,
14211			onChange,
14212			onFocus,
14213			onBlur,
14214			id,
14215			formKey,
14216			change_handler
14217		];
14218	}
14219
14220	class EmailAddress extends SvelteComponent {
14221		constructor(options) {
14222			super();
14223
14224			init(this, options, instance$T, create_fragment$U, safe_not_equal, {
14225				formKey: 12,
14226				emailAddress: 0,
14227				disabled: 1,
14228				label: 2,
14229				placeholder: 3,
14230				editText: 4,
14231				error: 5,
14232				isPaymentForm: 6,
14233				onEdit: 7,
14234				onChange: 8,
14235				onFocus: 9,
14236				onBlur: 10
14237			});
14238		}
14239	}
14240
14241	const factory$p = {
14242	    matches: (sectionElement) => sectionElement.type === elementTypes.EMAIL_ADDRESS,
14243	    create: (form, formState, formActions, elementConfig) => {
14244	        const disabled = elementConfig.disabled || formState.isBusy;
14245	        return ({
14246	            component: EmailAddress,
14247	            props: {
14248	                formKey: form.uniqueKey,
14249	                disabled,
14250	                emailAddress: formState.emailAddress,
14251	                label: elementConfig.label,
14252	                placeholder: elementConfig.placeholder,
14253	                editText: elementConfig.editText,
14254	                onChange: (value) => {
14255	                    !disabled && formActions.updateFormState({
14256	                        userExists: undefined,
14257	                        emailIsContact: undefined,
14258	                        emailAddress: value,
14259	                        verificationCode: "",
14260	                        verificationCodeValid: undefined,
14261	                        serverErrors: []
14262	                    });
14263	                    logDataLayerEvent(form, 'zephr_form_input_change', {
14264	                        inputName: `zephr-form-identifier-${form.uniqueKey}`,
14265	                        sectionId: formState.currentSection.type,
14266	                        field: 'email'
14267	                    });
14268	                },
14269	                onFocus: () => logDataLayerEvent(form, 'zephr_form_input_focus', {
14270	                    inputName: `zephr-form-identifier-${form.uniqueKey}`,
14271	                    sectionId: formState.currentSection.type,
14272	                    field: 'email'
14273	                }),
14274	                onBlur: () => logDataLayerEvent(form, 'zephr_form_input_blur', {
14275	                    inputName: `zephr-form-identifier-${form.uniqueKey}`,
14276	                    sectionId: formState.currentSection.type,
14277	                    field: 'email'
14278	                }),
14279	                onEdit: elementConfig.disabled && (() => {
14280	                    formActions.jumpToPartStart(partTypes.ACCOUNT_VERIFICATION.type);
14281	                }),
14282	                isPaymentForm: form.formType === FormType.PAYMENT,
14283	            },
14284	            isValid: isValidEmail(formState.emailAddress)
14285	        });
14286	    }
14287	};
14288
14289	/* src/components/elements/payment/EmptyPayment.svelte generated by Svelte v4.2.12 */
14290
14291	function create_fragment$T(ctx) {
14292		let errormessage;
14293		let current;
14294
14295		errormessage = new ErrorMessage({
14296				props: {
14297					error: /*providerError*/ ctx[0]?.message ?? /*error*/ ctx[1] ?? "",
14298					isPaymentForm: true
14299				}
14300			});
14301
14302		return {
14303			c() {
14304				create_component(errormessage.$$.fragment);
14305			},
14306			m(target, anchor) {
14307				mount_component(errormessage, target, anchor);
14308				current = true;
14309			},
14310			p(ctx, [dirty]) {
14311				const errormessage_changes = {};
14312				if (dirty & /*providerError, error*/ 3) errormessage_changes.error = /*providerError*/ ctx[0]?.message ?? /*error*/ ctx[1] ?? "";
14313				errormessage.$set(errormessage_changes);
14314			},
14315			i(local) {
14316				if (current) return;
14317				transition_in(errormessage.$$.fragment, local);
14318				current = true;
14319			},
14320			o(local) {
14321				transition_out(errormessage.$$.fragment, local);
14322				current = false;
14323			},
14324			d(detaching) {
14325				destroy_component(errormessage, detaching);
14326			}
14327		};
14328	}
14329
14330	function instance$S($$self, $$props, $$invalidate) {
14331		let { providerError } = $$props;
14332		let { error = null } = $$props;
14333
14334		$$self.$$set = $$props => {
14335			if ('providerError' in $$props) $$invalidate(0, providerError = $$props.providerError);
14336			if ('error' in $$props) $$invalidate(1, error = $$props.error);
14337		};
14338
14339		return [providerError, error];
14340	}
14341
14342	class EmptyPayment extends SvelteComponent {
14343		constructor(options) {
14344			super();
14345			init(this, options, instance$S, create_fragment$T, safe_not_equal, { providerError: 0, error: 1 });
14346		}
14347	}
14348
14349	const factory$o = {
14350	    matches: (sectionElement) => sectionElement.type === elementTypes.PAYMENT || sectionElement.type === elementTypes.CHNAGE_PAYMENT_METHOD,
14351	    create: (form, formState, formActions) => {
14352	        const paymentProvider = paymentProviderFor(form.organisationConfiguration.paymentProvider);
14353	        if (paymentProvider.noPaymentForm(form, formState)) {
14354	            return {
14355	                component: EmptyPayment,
14356	                props: {
14357	                    providerError: formState.paymentProviderError,
14358	                },
14359	                isValid: true
14360	            };
14361	        }
14362	        return {
14363	            component: paymentProvider.component,
14364	            props: {
14365	                isLoaded: formState.paymentProviderFormLoaded,
14366	                isBusy: formState.paymentProviderFormBusy,
14367	                providerError: formState.paymentProviderError,
14368	                isComplete: formState.paymentFormComplete,
14369	                isDisabled: paymentProvider.internalSubmit(form)
14370	                    ? !formState.canAttemptSectionCompletion
14371	                    : (formState.isBusy || formState.mobilePaymentService != null),
14372	                formKey: form.uniqueKey,
14373	                onMountCallback: () => {
14374	                    formActions.updateFormState({
14375	                        paymentProviderFormLoaded: false
14376	                    });
14377	                    void paymentProvider.loader(form, formState, formActions);
14378	                }
14379	            },
14380	            isValid: paymentProvider.internalSubmit(form) ? undefined : formState.paymentFormComplete && !formState.paymentProviderError
14381	        };
14382	    }
14383	};
14384
14385	const regularPaymentElementIsPresent = form => form.parts.flatMap(part => part.sections)
14386	    .flatMap(section => section.elements)
14387	    .some(element => element.type === elementTypes.PAYMENT && element.config?.enabled !== false);
14388	const factory$n = {
14389	    matches: (sectionElement) => sectionElement.type === elementTypes.MOBILE_PAYMENT,
14390	    create: (form, formState, formActions) => {
14391	        if (form.environment.previewMode) {
14392	            return null;
14393	        }
14394	        // Check if the payment provider supports mobile payments
14395	        if (!supportsMobilePayments(form.organisationConfiguration.paymentProvider)) {
14396	            return null;
14397	        }
14398	        const paymentProvider = mobilePaymentServiceFor(form.organisationConfiguration.paymentProvider);
14399	        return {
14400	            component: paymentProvider.component,
14401	            props: {
14402	                isDisabled: formState.isBusy || formState.mobilePaymentService != null,
14403	                onMountCallback: () => paymentProvider.loader(form, formState, formActions),
14404	                // Minor-hack to prevent injecting the payment provider lib twice
14405	                disableCoreDependencyHeader: regularPaymentElementIsPresent(form)
14406	            }
14407	        };
14408	    }
14409	};
14410
14411	/* src/components/elements/Checkbox.svelte generated by Svelte v4.2.12 */
14412
14413	function create_fragment$S(ctx) {
14414		let input;
14415		let t0;
14416		let label_1;
14417		let div;
14418		let t1;
14419		let t2;
14420		let mounted;
14421		let dispose;
14422
14423		let input_levels = [
14424			{ id: /*id*/ ctx[0] },
14425			{ name: /*name*/ ctx[1] },
14426			{ required: /*required*/ ctx[2] },
14427			{ disabled: /*disabled*/ ctx[3] },
14428			/*conditionalProps*/ ctx[8],
14429			{ type: "checkbox" },
14430			{ class: "zephr-form-checkbox" }
14431		];
14432
14433		let input_data = {};
14434
14435		for (let i = 0; i < input_levels.length; i += 1) {
14436			input_data = assign(input_data, input_levels[i]);
14437		}
14438
14439		return {
14440			c() {
14441				input = element("input");
14442				t0 = space();
14443				label_1 = element("label");
14444				div = element("div");
14445				t1 = space();
14446				t2 = text(/*label*/ ctx[6]);
14447				set_attributes(input, input_data);
14448				toggle_class(input, "disabled", /*disabled*/ ctx[3]);
14449				toggle_class(input, "error", /*hasError*/ ctx[4]);
14450				toggle_class(input, "zephr-payment-form-checkbox", /*isPaymentForm*/ ctx[5]);
14451				toggle_class(input, "svelte-ud4i0a", true);
14452				attr(div, "class", "zephr-form-checkmark svelte-ud4i0a");
14453				toggle_class(div, "zephr-payment-form-checkmark", /*isPaymentForm*/ ctx[5]);
14454				toggle_class(div, "disabled", /*disabled*/ ctx[3]);
14455				toggle_class(div, "checked", /*checked*/ ctx[7]);
14456				toggle_class(div, "error", /*hasError*/ ctx[4]);
14457				attr(label_1, "for", /*id*/ ctx[0]);
14458				attr(label_1, "class", "zephr-form-checkbox-label svelte-ud4i0a");
14459				toggle_class(label_1, "zephr-payment-form-checkbox-label", /*isPaymentForm*/ ctx[5]);
14460			},
14461			m(target, anchor) {
14462				insert(target, input, anchor);
14463				if (input.autofocus) input.focus();
14464				insert(target, t0, anchor);
14465				insert(target, label_1, anchor);
14466				append(label_1, div);
14467				append(label_1, t1);
14468				append(label_1, t2);
14469
14470				if (!mounted) {
14471					dispose = listen(input, "input", /*handleInputChange*/ ctx[9]);
14472					mounted = true;
14473				}
14474			},
14475			p(ctx, [dirty]) {
14476				set_attributes(input, input_data = get_spread_update(input_levels, [
14477					dirty & /*id*/ 1 && { id: /*id*/ ctx[0] },
14478					dirty & /*name*/ 2 && { name: /*name*/ ctx[1] },
14479					dirty & /*required*/ 4 && { required: /*required*/ ctx[2] },
14480					dirty & /*disabled*/ 8 && { disabled: /*disabled*/ ctx[3] },
14481					dirty & /*conditionalProps*/ 256 && /*conditionalProps*/ ctx[8],
14482					{ type: "checkbox" },
14483					{ class: "zephr-form-checkbox" }
14484				]));
14485
14486				toggle_class(input, "disabled", /*disabled*/ ctx[3]);
14487				toggle_class(input, "error", /*hasError*/ ctx[4]);
14488				toggle_class(input, "zephr-payment-form-checkbox", /*isPaymentForm*/ ctx[5]);
14489				toggle_class(input, "svelte-ud4i0a", true);
14490
14491				if (dirty & /*isPaymentForm*/ 32) {
14492					toggle_class(div, "zephr-payment-form-checkmark", /*isPaymentForm*/ ctx[5]);
14493				}
14494
14495				if (dirty & /*disabled*/ 8) {
14496					toggle_class(div, "disabled", /*disabled*/ ctx[3]);
14497				}
14498
14499				if (dirty & /*checked*/ 128) {
14500					toggle_class(div, "checked", /*checked*/ ctx[7]);
14501				}
14502
14503				if (dirty & /*hasError*/ 16) {
14504					toggle_class(div, "error", /*hasError*/ ctx[4]);
14505				}
14506
14507				if (dirty & /*label*/ 64) set_data(t2, /*label*/ ctx[6]);
14508
14509				if (dirty & /*id*/ 1) {
14510					attr(label_1, "for", /*id*/ ctx[0]);
14511				}
14512
14513				if (dirty & /*isPaymentForm*/ 32) {
14514					toggle_class(label_1, "zephr-payment-form-checkbox-label", /*isPaymentForm*/ ctx[5]);
14515				}
14516			},
14517			i: noop,
14518			o: noop,
14519			d(detaching) {
14520				if (detaching) {
14521					detach(input);
14522					detach(t0);
14523					detach(label_1);
14524				}
14525
14526				mounted = false;
14527				dispose();
14528			}
14529		};
14530	}
14531
14532	function instance$R($$self, $$props, $$invalidate) {
14533		const dispatch = createEventDispatcher();
14534		let { id } = $$props;
14535		let { name = id } = $$props;
14536		let { required = true } = $$props;
14537		let { disabled = false } = $$props;
14538		let { hasError = false } = $$props;
14539		let { isPaymentForm = false } = $$props;
14540		let { label = "" } = $$props;
14541		let { value } = $$props;
14542		let { placeholder = "" } = $$props;
14543		let { checked = false } = $$props;
14544		let { pattern = "" } = $$props;
14545		let conditionalProps = {};
14546		if (checked) conditionalProps.checked = checked;
14547		if (placeholder) conditionalProps.placeholder = placeholder;
14548		if (pattern) conditionalProps.pattern = pattern;
14549		if (value) conditionalProps.value = value;
14550
14551		const handleInputChange = e => {
14552			dispatch("change", e.target.checked);
14553		};
14554
14555		$$self.$$set = $$props => {
14556			if ('id' in $$props) $$invalidate(0, id = $$props.id);
14557			if ('name' in $$props) $$invalidate(1, name = $$props.name);
14558			if ('required' in $$props) $$invalidate(2, required = $$props.required);
14559			if ('disabled' in $$props) $$invalidate(3, disabled = $$props.disabled);
14560			if ('hasError' in $$props) $$invalidate(4, hasError = $$props.hasError);
14561			if ('isPaymentForm' in $$props) $$invalidate(5, isPaymentForm = $$props.isPaymentForm);
14562			if ('label' in $$props) $$invalidate(6, label = $$props.label);
14563			if ('value' in $$props) $$invalidate(10, value = $$props.value);
14564			if ('placeholder' in $$props) $$invalidate(11, placeholder = $$props.placeholder);
14565			if ('checked' in $$props) $$invalidate(7, checked = $$props.checked);
14566			if ('pattern' in $$props) $$invalidate(12, pattern = $$props.pattern);
14567		};
14568
14569		return [
14570			id,
14571			name,
14572			required,
14573			disabled,
14574			hasError,
14575			isPaymentForm,
14576			label,
14577			checked,
14578			conditionalProps,
14579			handleInputChange,
14580			value,
14581			placeholder,
14582			pattern
14583		];
14584	}
14585
14586	class Checkbox extends SvelteComponent {
14587		constructor(options) {
14588			super();
14589
14590			init(this, options, instance$R, create_fragment$S, safe_not_equal, {
14591				id: 0,
14592				name: 1,
14593				required: 2,
14594				disabled: 3,
14595				hasError: 4,
14596				isPaymentForm: 5,
14597				label: 6,
14598				value: 10,
14599				placeholder: 11,
14600				checked: 7,
14601				pattern: 12
14602			});
14603		}
14604	}
14605
14606	/* src/components/elements/payment/PaymentAutoRenewToggle.svelte generated by Svelte v4.2.12 */
14607
14608	function create_if_block$C(ctx) {
14609		let div;
14610		let checkbox;
14611		let current;
14612
14613		checkbox = new Checkbox({
14614				props: {
14615					id: "payment-auto-renew-toggle-" + /*paymentOption*/ ctx[0].productId + "-" + /*paymentOption*/ ctx[0].slug,
14616					name: "payment-auto-renew-toggle",
14617					label: /*toggleLabel*/ ctx[3],
14618					value: "true",
14619					checked: /*checked*/ ctx[1],
14620					disabled: /*disabled*/ ctx[2],
14621					required: false
14622				}
14623			});
14624
14625		checkbox.$on("change", /*handleChange*/ ctx[5]);
14626
14627		return {
14628			c() {
14629				div = element("div");
14630				create_component(checkbox.$$.fragment);
14631				attr(div, "class", "zephr-form-payment-auto-renew-toggle svelte-1yfwddr");
14632			},
14633			m(target, anchor) {
14634				insert(target, div, anchor);
14635				mount_component(checkbox, div, null);
14636				current = true;
14637			},
14638			p(ctx, dirty) {
14639				const checkbox_changes = {};
14640				if (dirty & /*paymentOption*/ 1) checkbox_changes.id = "payment-auto-renew-toggle-" + /*paymentOption*/ ctx[0].productId + "-" + /*paymentOption*/ ctx[0].slug;
14641				if (dirty & /*toggleLabel*/ 8) checkbox_changes.label = /*toggleLabel*/ ctx[3];
14642				if (dirty & /*checked*/ 2) checkbox_changes.checked = /*checked*/ ctx[1];
14643				if (dirty & /*disabled*/ 4) checkbox_changes.disabled = /*disabled*/ ctx[2];
14644				checkbox.$set(checkbox_changes);
14645			},
14646			i(local) {
14647				if (current) return;
14648				transition_in(checkbox.$$.fragment, local);
14649				current = true;
14650			},
14651			o(local) {
14652				transition_out(checkbox.$$.fragment, local);
14653				current = false;
14654			},
14655			d(detaching) {
14656				if (detaching) {
14657					detach(div);
14658				}
14659
14660				destroy_component(checkbox);
14661			}
14662		};
14663	}
14664
14665	function create_fragment$R(ctx) {
14666		let if_block_anchor;
14667		let current;
14668		let if_block = /*shouldShow*/ ctx[4] && create_if_block$C(ctx);
14669
14670		return {
14671			c() {
14672				if (if_block) if_block.c();
14673				if_block_anchor = empty();
14674			},
14675			m(target, anchor) {
14676				if (if_block) if_block.m(target, anchor);
14677				insert(target, if_block_anchor, anchor);
14678				current = true;
14679			},
14680			p(ctx, [dirty]) {
14681				if (/*shouldShow*/ ctx[4]) {
14682					if (if_block) {
14683						if_block.p(ctx, dirty);
14684
14685						if (dirty & /*shouldShow*/ 16) {
14686							transition_in(if_block, 1);
14687						}
14688					} else {
14689						if_block = create_if_block$C(ctx);
14690						if_block.c();
14691						transition_in(if_block, 1);
14692						if_block.m(if_block_anchor.parentNode, if_block_anchor);
14693					}
14694				} else if (if_block) {
14695					group_outros();
14696
14697					transition_out(if_block, 1, 1, () => {
14698						if_block = null;
14699					});
14700
14701					check_outros();
14702				}
14703			},
14704			i(local) {
14705				if (current) return;
14706				transition_in(if_block);
14707				current = true;
14708			},
14709			o(local) {
14710				transition_out(if_block);
14711				current = false;
14712			},
14713			d(detaching) {
14714				if (detaching) {
14715					detach(if_block_anchor);
14716				}
14717
14718				if (if_block) if_block.d(detaching);
14719			}
14720		};
14721	}
14722
14723	function instance$Q($$self, $$props, $$invalidate) {
14724		let shouldShow;
14725		let toggleLabel;
14726		let { paymentOption } = $$props;
14727		let { checked = false } = $$props;
14728		let { disabled = false } = $$props;
14729		let { onChange } = $$props;
14730
14731		const handleChange = event => {
14732			const isChecked = event.detail;
14733			onChange(isChecked);
14734		};
14735
14736		$$self.$$set = $$props => {
14737			if ('paymentOption' in $$props) $$invalidate(0, paymentOption = $$props.paymentOption);
14738			if ('checked' in $$props) $$invalidate(1, checked = $$props.checked);
14739			if ('disabled' in $$props) $$invalidate(2, disabled = $$props.disabled);
14740			if ('onChange' in $$props) $$invalidate(6, onChange = $$props.onChange);
14741		};
14742
14743		$$self.$$.update = () => {
14744			if ($$self.$$.dirty & /*paymentOption*/ 1) {
14745				// Only show if the payment option is configured for custom toggle
14746				$$invalidate(4, shouldShow = paymentOption?.autoRenewConfig === 'custom_toggle' && paymentOption.type !== 'ONE_OFF');
14747			}
14748
14749			if ($$self.$$.dirty & /*paymentOption*/ 1) {
14750				$$invalidate(3, toggleLabel = paymentOption?.autoRenewToggleLabel || 'Auto-renew subscription');
14751			}
14752		};
14753
14754		return [
14755			paymentOption,
14756			checked,
14757			disabled,
14758			toggleLabel,
14759			shouldShow,
14760			handleChange,
14761			onChange
14762		];
14763	}
14764
14765	class PaymentAutoRenewToggle extends SvelteComponent {
14766		constructor(options) {
14767			super();
14768
14769			init(this, options, instance$Q, create_fragment$R, safe_not_equal, {
14770				paymentOption: 0,
14771				checked: 1,
14772				disabled: 2,
14773				onChange: 6
14774			});
14775		}
14776	}
14777
14778	const paymentAutoRenewToggleFactory = {
14779	    matches: (sectionElement) => sectionElement.type === elementTypes.PAYMENT_AUTO_RENEW_TOGGLE,
14780	    create: (form, formState, formActions) => {
14781	        // Only show for Zuora billing payment forms
14782	        if (form.organisationConfiguration.paymentProvider !== 'zuora-billing') {
14783	            return null;
14784	        }
14785	        // Only show if there's a selected payment option
14786	        if (!formState.paymentOption) {
14787	            return null;
14788	        }
14789	        // Only show if the payment option is configured for custom toggle
14790	        if (formState.paymentOption.autoRenewConfig !== 'custom_toggle') {
14791	            return null;
14792	        }
14793	        // Don't show for one-off purchases
14794	        if (formState.paymentOption.type === 'ONE_OFF') {
14795	            return null;
14796	        }
14797	        const paymentOptionKey = `${formState.paymentOption.productId}-${formState.paymentOption.slug}`;
14798	        const handleToggleChange = (isChecked) => {
14799	            // Update the payment option specific autoRenew state
14800	            const updatedAutoRenewState = {
14801	                ...formState.paymentOptionAutoRenew,
14802	                [paymentOptionKey]: isChecked
14803	            };
14804	            formActions.updateFormState({
14805	                paymentOptionAutoRenew: updatedAutoRenewState
14806	            });
14807	            logDataLayerEvent(form, 'zephr_form_input_change', {
14808	                field: 'payment-auto-renew-toggle',
14809	                inputName: `payment-auto-renew-toggle-${formState.paymentOption.productId}-${formState.paymentOption.slug}`,
14810	                sectionId: formState.currentSection.type,
14811	            });
14812	        };
14813	        // Get the current checked state for this payment option
14814	        // State is now properly initialized when payment option is selected
14815	        const checkedState = formState.paymentOptionAutoRenew?.[paymentOptionKey] ?? false;
14816	        return {
14817	            component: PaymentAutoRenewToggle,
14818	            props: {
14819	                paymentOption: formState.paymentOption,
14820	                checked: checkedState,
14821	                disabled: formState.isBusy || formState.paymentProviderFormBusy || false,
14822	                onChange: handleToggleChange,
14823	            },
14824	            isValid: true,
14825	        };
14826	    },
14827	};
14828
14829	var checkMarkImageBase64 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGEAAABiCAYAAABAkr0NAAAJa0lEQVR4Xu2dT28TRxTA39oGUsHBiC/giKT/LiRHpBYIUPWQEmfVD9BwrQoJpZW4JbkhtRUO9E74AO3GQTkVCLSVOGIurVRCky/QkgNIodjezoxjsrZ3Zt7Mzu7OOraEkOLZ9Zv3m3lv/rx540BWPtc2S1Cvl6DplJjITb/1f/CTc7bAgW1w/G0oFLbg+vBWFqrnWCfkwmYRXtbH4HVuDPJwwp24MBNFRu9BtUbAERjOIzjUrMH3ow+jvC+OZ+2AQFv5q+Y0gF92z0+diaOiwXd691YJCKcKh3MrNvSW9CDQFv9Pk7TyZBTPA8t6iuMswVD+YVpAkofwzbMzUPdn3InpL+Ju8arv99bvLsNQbjFpGMlBoMp/7cwnYW5Uld9dnpmrQ/5iUv4jfgjfbo7BTuOGKeUzBeWpow35NPwi+WsRcn7RPVseiwwjoZ4RHwRq87fr8+5EeU5HGS1lw1PIE1t9AGpaJoI2gCaUoEFGWw3ntG5D8NarFRgqLGnJgKh8PBCI6XE/Lq8jfr+jiLe+ugQFfwWOFGqwMLyt+jyqfASfROS7CJWRZdTvKBQyC0Gj9Sdtfzt0c3VzGhpvplUGCaxXFAuLJhuJOQhkrO+enNzENgBSmUVSmYrJymB/u6fctT9LsJNfUILxeG3YlHkyA+HqxrR7asrDKMEq5XcLrAjD+3XVhR9GVjD1FpWJDuHy83n33IUFmSDM7Bx+cxGufxA+spG9IMnvFWB49+8uwM3ji1HEiwYBC8BQi4lSUa1nv96YcU9P3ZY9GxWEPgQEANb6j+VdK+y+TJO875G9IgoIPQgoAHevwK3jFd26W/fc3DPiuMvzIrl0Qah
14829DwAD4rTqR1JQ/UViI+Y8OCDUIlzdn3XOTwtbtPf6JDN0y4Hx16RHz5J78XDgU9+79TKzA+2grgIdAlgDcjyafCLtjvwNoVx4D4ve1cfhuuIZhjYOAmIj1fQ8ImVNIewRyQoeDcGljXbT4te8AIHsEGx3eGpmQ9QY5BIkj9hS6nUyYTH4vMdMY/yCGIDFD3r0+G4bqtgLJpM6TmCUxhNlnT3ibI2wNqDIqXa7QrVfmnpt7XiGRIbNhcsvMEh+CjG75D7kpy5wmIwhMl/Ff1Nf5jZa/F8FVpFv90OeJtG8dsYyRzD88WTsatoQTDkHgjAdmSEJCsLzB010vBJkzHpghMQViltzxyRdcKxLSG3ohCHxBXHussl6eue/Jtql7ajJ0kyusN/RAEPqCQS/AtwfBBNfr0mMnhEEvwCtZVlKw4ur9QrZFf9zbFu2EoEBPJsPge6IBjj675w17EAQOeeALNJvUpedz7vkLN0IncAEHvQdB9MB+8AU0PH+IHDAxGXQmGCkFHfQehNm/yRLFZz3xmyxSuXL8omZbsP+xrgmWzs6YsJKc5YygSWpBEJmift2qpPXmzHCNml+Rg941SS0IolFRv5oiwRKDd9+rws33yMkhMx/esL8NuwVh7q/lsBDAvjVFsjUewxBk+m1B4PqDeKKQzbQvzbdg9spNb1RJLI0DIg/ebxv3GADrayT8fXhZE3H4Y4LAAI/4BQdEjqOf/EFaAHaxcP0CGfg4wJkfyHaDjLaUuF+WMgBWvcsbK+65qXJ3VekWsQO8cSw9NVMZ0TrqFLdOld5vAwA2+Anf/qSnkxwRoczHktoCgELgWRwyEiPmKDymyMv6JM0mABTCV2SP4ZPePQbvwUrNETmMzAb12gaAQviShJF+Gh5GyocQ1/A0EFTMUhq8U3BNnf1ivsJGAFQuwTA1WQicSYssOArtiG0FYBUEzjCNyhgZhM0AsgIhEgjbAVgFAXPSBRlO/tZEZQGAVRDYpAVx9gsLIisAtCGYXkkMelcTILIEgNZdYAUc7jJ2V1gGeoSCLRgFRNYACCDQNbp0ly10QGQRgHTZIu0FPBUQWQUgXcATLCyZ3GcVWikMCJKaQZbExItjQwZrXmXluIFgdCnblk0dBAhRPa0GQAQXb+rYtL2pCcJ2AMKQIra9KaIUU7qxqKYp+Lz1AKiwvDUzsowNS++O2xnyguwRmQDAnLI4pMje4C8JiMwAQFiaFgSRX0hzh40DIksAhAOf3T2bQFQ2Z5sz7Q3/LhCZAiAyRbv+gBbZgyA6dcg5+ikbGhv7np4R3iGZf02HrhsTkP8i7tA0kA1hD4LIJA3SJ+jhEoU/BraPUcel+ioQTE+dWk/xe0Fn9pdOCJywDCpB5kNgtNQY4SGFQ5joI7SD3qAGROUocu9hcpGDzmp+UzX9RS+t0As6R0ftn9ZICxBd6v56g2pylvAEIxpJMvpLjRFqo5GcJRyCrDfEuf8cof6pP6qZnEUr6RQLXzxamDB65jd1DUYXQGiGBCvS4uxdojQL9DKHyuiV6KL3yRtEZog22qXRcV5NxRAkSVi9+6szcHPkTp+oUb8akszJskxpYghULEG6BTaJ2+/+QXYcF5GwUQ6BgZAlpzV3tYl+c0zhSZkjNpacltYNkxsaG7qYgq5i+UmDqatxPYHWAhPzs19AYAAomGk8BIR/YD6i30FgACgu/atBoFpGbML37YorJrQf4Yi7zaM6BCwIA7cuxWLLdV+KucBDAwAVRw8CFkRCF4jq6hX1HLs3uuHJ7u2MkrRXHwISBPMTaQSRoTQsKYS8xC8KgGg9oS0/wke0QKRz4bQWC3ZdfeO2rPW36hU9e360ntCuoSAjbrcSrIZBTc+/TXJ5k/wGRQbA0CaXGQhUIsSELgjEKhiKym8Nxc3domUOApWMXQXcJJfChV/mEGYaGIy8XzVxkaiy6dG4sp7dGV3ML5hcxjcLoa0F5J2Voaaq0LwTW04N2kheklvK6w65g3kq9NYPEci45j/xQNg1T7BzcE6lV3SYK3Y9vP8I8k4Ncvkt7J1lHUqkDvZNg1wND2fIvxMYRxveW823/uDvxAeh/SvIC0QxpoTt6DUdem38NoETfn18wy/pKrunZ9KGMJS/otUAMBXaLRM/hLYwGvZXoR5GiyZ9ZX1yEGLoGUY1T0c8dJAQp0/iCJw8hCCM/w4QW+3P8m5kMq3kUHtPTQ44VTiWWzY54lGRPT0IQSmp33h1kKRF9sum7LlwlNNW/OHcitGEVyqaD5S1A0K38Mx/5EgGe/805IijPVvuyWavUl9mZhrwFA41a3CkUEurxfNkthNCmLR0uFmvl8AvFMFvFKHpl3qK5Zwt9recvwWFwpYNrRzTWP4HK7laSxb9gaIAAAAASUVORK5CYII=";
14830
14831	/* src/components/elements/successMessage/SuccessMessage.svelte generated by Svelte v4.2.12 */
14832
14833	function create_fragment$Q(ctx) {
14834		let div1;
14835		let img;
14836		let img_src_value;
14837		let t0;
14838		let div0;
14839		let t1;
14840
14841		return {
14842			c() {
14843				div1 = element("div");
14844				img = element("img");
14845				t0 = space();
14846				div0 = element("div");
14847				t1 = text(/*text*/ ctx[0]);
14848				attr(img, "class", "check-image svelte-w5z6iw");
14849				if (!src_url_equal(img.src, img_src_value = checkMarkImageBase64)) attr(img, "src", img_src_value);
14850				attr(img, "alt", "Success indicator");
14851				attr(div0, "class", "zephr-form-success-message svelte-w5z6iw");
14852				toggle_class(div0, "zephr-payment-form-success-message", /*isPaymentForm*/ ctx[1]);
14853			},
14854			m(target, anchor) {
14855				insert(target, div1, anchor);
14856				append(div1, img);
14857				append(div1, t0);
14858				append(div1, div0);
14859				append(div0, t1);
14860			},
14861			p(ctx, [dirty]) {
14862				if (dirty & /*text*/ 1) set_data(t1, /*text*/ ctx[0]);
14863
14864				if (dirty & /*isPaymentForm*/ 2) {
14865					toggle_class(div0, "zephr-payment-form-success-message", /*isPaymentForm*/ ctx[1]);
14866				}
14867			},
14868			i: noop,
14869			o: noop,
14870			d(detaching) {
14871				if (detaching) {
14872					detach(div1);
14873				}
14874			}
14875		};
14876	}
14877
14878	function instance$P($$self, $$props, $$invalidate) {
14879		let { text } = $$props;
14880		let { isPaymentForm = false } = $$props;
14881
14882		$$self.$$set = $$props => {
14883			if ('text' in $$props) $$invalidate(0, text = $$props.text);
14884			if ('isPaymentForm' in $$props) $$invalidate(1, isPaymentForm = $$props.isPaymentForm);
14885		};
14886
14887		return [text, isPaymentForm];
14888	}
14889
14890	class SuccessMessage extends SvelteComponent {
14891		constructor(options) {
14892			super();
14893			init(this, options, instance$P, create_fragment$Q, safe_not_equal, { text: 0, isPaymentForm: 1 });
14894		}
14895	}
14896
14897	const factory$m = {
14898	    matches: (sectionElement) => sectionElement.type === elementTypes.SUCCESS_MESSAGE,
14899	    create: (form, formState, formActions, elementConfig) => ({
14900	        component: SuccessMessage,
14901	        props: {
14902	            text: elementConfig?.text,
14903	            isPaymentForm: form.formType === FormType.PAYMENT,
14904	        }
14905	    })
14906	};
14907
14908	const createTokenExchangePayload = (action, emailAddress) => {
14909	    return {
14910	        identifiers: {
14911	            email_address: emailAddress,
14912	        },
14913	        delivery: {
14914	            method: 'email',
14915	            destination: emailAddress,
14916	            action,
14917	            redirect: window.location.href.replace(window.location.origin, ''),
14918	        },
14919	    };
14920	};
14921	const sendLink = async (form, action, emailAddress, formActions) => {
14922	    try {
14923	        const response = await request('blaize/token-exchange', {
14924	            method: 'POST',
14925	            bodyObject: createTokenExchangePayload(action, emailAddress),
14926	        }, formActions);
14927	        if (!response.ok) {
14928	            formActions.updateFormState({
14929	                serverErrors: [ServerError.UNKNOWN],
14930	            });
14931	            logDataLayerEvent(form, 'zephr_form_error', {
14932	                error: ServerError[ServerError.UNKNOWN],
14933	            });
14934	        }
14935	    }
14936	    catch (err) {
14937	        formActions.updateFormState({
14938	            serverErrors: [ServerError.UNKNOWN],
14939	        });
14940	        logDataLayerEvent(form, 'zephr_form_error', {
14941	            error: ServerError[ServerError.UNKNOWN],
14942	        });
14943	    }
14944	};
14945
14946	const getFormIsPasswordless = (form) => {
14947	    return (form.formType === FormType.REGISTRATION &&
14948	        formConfigAs(form).usePassword === false &&
14949	        form.organisationConfiguration.requireEmailVerfication === true &&
14950	        formConfigAs(form).useVerificationCodes === false);
14951	};
14952
14953	const onEmailEntered = async (form, formState, formActions) => {
14954	    return getUserInfo(formState, formActions)
14955	        .then(async (response) => {
14956	        if (response.redirected) {
14957	            window.location.replace(response.url);
14958	            return;
14959	        }
14960	        else {
14961	            const existsInAnyState = response.status === 200;
14962	            const formCanOtp = form.parts.flatMap(p => p.sections)
14963	                .some(s => s.type === sectionTypes.VERIFICATION_CODE_REGISTRATION.type);
14964	            const isContact = existsInAnyState ? ((await response.json()).contact) && formCanOtp : false;
14965	            const exists = existsInAnyState && !isContact;
14966	            formActions.updateFormState({
14967	                userExists: exists,
14968	                emailIsContact: isContact,
14969	            });
14970	            const isPasswordless = getFormIsPasswordless(form);
14971	            if (isPasswordless) {
14972	                if (exists) {
14973	                    void sendLink(form, 'login', formState.emailAddress, formActions);
14974	                    return jumpToSection(sectionTypes.PASSWORDLESS_VIA_LOGIN_LINK.type, form, formActions);
14975	                }
14976	                else {
14977	                    return moveToNextSection(form, formState, formActions);
14978	                }
14979	            }
14980	            if (isContact
14981	                || formConfigAs(form).useVerificationCodes
14982	                || form.organisationConfiguration.twoFactorEmailAuthenticationEnabled) {
14983	                void send2FaCode(form, formState, formActions);
14984	                return jumpToSection(exists ?
14985	                    sectionTypes.VERIFICATION_CODE_LOGIN.type : sectionTypes.VERIFICATION_CODE_REGISTRATION.type, form, formActions);
14986	            }
14987	            return jumpToSection(exists ?
14988	                sectionTypes.LOGIN_PASSWORD.type : sectionTypes.PASSWORD_SETUP.type, form, formActions);
14989	        }
14990	    });
14991	};
14992	const twoFactorPayload = (formState) => ({
14993	    identifiers: {
14994	        email_address: formState.emailAddress
14995	    },
14996	    delivery: {
14997	        method: "email",
14998	        destination: formState.emailAddress,
14999	        action: formState.userExists ? "login" : "register",
15000	        redirect: window.location.href.replace(window.location.origin, ""),
15001	    }
15002	});
15003	const send2FaCode = async (form, formState, formActions) => {
15004	    formActions.updateFormState({
15005	        verificationCode: "",
15006	        verificationCodeValid: undefined
15007	    });
15008	    const response = await request('blaize/two-factor-authentication', {
15009	        method: "POST",
15010	        bodyObject: twoFactorPayload(formState)
15011	    }, formActions);
15012	    if (!response.ok) {
15013	        formActions.updateFormState({
15014	            serverErrors: [ServerError.VERIFICATION_CODE_SEND_ERROR]
15015	        });
15016	        logDataLayerEvent(form, 'zephr_form_error', {
15017	            error: ServerError[ServerError.MOBILE_PAYMENT_PROCESSING_ERROR],
15018	        });
15019	    }
15020	    return response.ok;
15021	};
15022	const getUserInfo = async (formState, formActions) => {
15023	    formActions.updateFormState({
15024	        password: "",
15025	        verificationCode: undefined,
15026	        verificationCodeValid: undefined,
15027	        forgotPassword: false
15028	    });
15029	    return await request('zephr/media/user/info', {
15030	        method: "POST",
15031	        bodyObject: { identifiers: { email_address: formState.emailAddress } }
15032	    }, formActions);
15033	};
15034
15035	const verifyOtp = async (form, formState, formActions) => {
15036	    const response = await request('zephr/media/user/otp-check', {
15037	        method: "POST",
15038	        bodyObject: {
15039	            code: formState.verificationCode,
15040	            email: formState.emailAddress
15041	        }
15042	    }, formActions);
15043	    if (!response.ok) {
15044	        formActions.updateFormState({
15045	            verificationCodeValid: false,
15046	            serverErrors: [ServerError.VERIFICATION_CODE_INCORRECT]
15047	        });
15048	        logDataLayerEvent(form, 'zephr_form_error', {
15049	            error: ServerError[ServerError.VERIFICATION_CODE_INCORRECT],
15050	        });
15051	        return;
15052	    }
15053	    formActions.updateFormState({
15054	        verificationCodeValid: false,
15055	        serverErrors: []
15056	    });
15057	    formActions.completeSection();
15058	};
15059
15060	const postVerificationCodeDelaySeconds = 1.5;
15061	const waitAfterCode = async (form) => await new Promise(r => setTimeout(r, form.environment.reduceDelays ? 1 : (postVerificationCodeDelaySeconds * 1000)));
15062
15063	const verifiyPasswordResetCode = async (form, formState, formActions) => {
15064	    formActions.incrementRequestCount();
15065	    formActions.updateFormState({
15066	        verificationCodeValid: undefined
15067	    });
15068	    const response = await request(`zephr/users/reset/${formState.verificationCode}`, {
15069	        method: "POST",
15070	        bodyObject: {
15071	            identifiers: {
15072	                email_address: formState.emailAddress,
15073	            },
15074	        }
15075	    }, formActions);
15076	    logDataLayerEvent(form, 'zephr_form_password_reset_code_validate', {
15077	        success: response?.ok
15078	    });
15079	    if (!response.ok) {
15080	        formActions.updateFormState({
15081	            serverErrors: [ServerError.VERIFICATION_CODE_INCORRECT]
15082	        });
15083	        logDataLayerEvent(form, 'zephr_form_error', {
15084	            error: ServerError[ServerError.VERIFICATION_CODE_INCORRECT],
15085	        });
15086	        formActions.decrementRequestCount();
15087	        return Promise.resolve();
15088	    }
15089	    return waitAfterCode(form)
15090	        .then(() => {
15091	        formActions.decrementRequestCount();
15092	        formActions.jumpToSection(sectionTypes.PASSWORD_RESET.type);
15093	    });
15094	};
15095	const sendPasswordResetCode = async (form, formState, formActions) => {
15096	    formActions.updateFormState({
15097	        createPassword: "",
15098	        confirmCreatePassword: "",
15099	        forgotPassword: true,
15100	        verificationCode: "",
15101	    });
15102	    formActions.incrementRequestCount();
15103	    const response = await request('zephr/users/reset', {
15104	        method: "POST",
15105	        bodyObject: {
15106	            identifiers: {
15107	                email_address: formState.emailAddress,
15108	            },
15109	        }
15110	    }, formActions);
15111	    logDataLayerEvent(form, 'zephr_form_password_reset_code_sent', {
15112	        success: response?.ok
15113	    });
15114	    if (!response.ok) {
15115	        formActions.updateFormState({
15116	            serverErrors: [ServerError.PASSWORD_RESET_LINK_SEND_ERROR]
15117	        });
15118	        formActions.decrementRequestCount();
15119	        logDataLayerEvent(form, 'zephr_form_error', {
15120	            error: ServerError[ServerError.PASSWORD_RESET_LINK_SEND_ERROR],
15121	        });
15122	        return Promise.resolve();
15123	    }
15124	    return waitAfterCode(form)
15125	        .then(() => {
15126	        formActions.decrementRequestCount();
15127	        formActions.jumpToSection(sectionTypes.FORGOT_PASSWORD.type);
15128	    });
15129	};
15130	const resetPassword = async (form, formState, formActions) => {
15131	    const response = await request(`zephr/users/reset/${formState.verificationCode}`, {
15132	        method: "POST",
15133	        bodyObject: {
15134	            identifiers: {
15135	                email_address: formState.emailAddress,
15136	            },
15137	            validators: {
15138	                password: formState.createPassword
15139	            }
15140	        }
15141	    }, formActions);
15142	    logDataLayerEvent(form, 'zephr_form_password_reset', {
15143	        success: response?.ok
15144	    });
15145	    if (!response.ok) {
15146	        formActions.updateFormState({
15147	            serverErrors: [ServerError.PASSWORD_RESET_ERROR]
15148	        });
15149	        logDataLayerEvent(form, 'zephr_form_error', {
15150	            error: ServerError[ServerError.MOBILE_PAYMENT_PROCESSING_ERROR],
15151	        });
15152	        return Promise.resolve();
15153	    }
15154	    formActions.updateFormState({
15155	        verificationCode: "",
15156	        forgotPassword: false
15157	    });
15158	    return formActions.jumpToPartStart(partTypes.ACCOUNT_VERIFICATION.type);
15159	};
15160
15161	/* src/components/elements/verificationCode/VerificationCode.svelte generated by Svelte v4.2.12 */
15162
15163	function create_if_block_2$h(ctx) {
15164		let if_block_anchor;
15165
15166		function select_block_type(ctx, dirty) {
15167			if (/*showMessage*/ ctx[14] && !/*error*/ ctx[5]) return create_if_block_3$c;
15168			return create_else_block$9;
15169		}
15170
15171		let current_block_type = select_block_type(ctx);
15172		let if_block = current_block_type(ctx);
15173
15174		return {
15175			c() {
15176				if_block.c();
15177				if_block_anchor = empty();
15178			},
15179			m(target, anchor) {
15180				if_block.m(target, anchor);
15181				insert(target, if_block_anchor, anchor);
15182			},
15183			p(ctx, dirty) {
15184				if (current_block_type === (current_block_type = select_block_type(ctx)) && if_block) {
15185					if_block.p(ctx, dirty);
15186				} else {
15187					if_block.d(1);
15188					if_block = current_block_type(ctx);
15189
15190					if (if_block) {
15191						if_block.c();
15192						if_block.m(if_block_anchor.parentNode, if_block_anchor);
15193					}
15194				}
15195			},
15196			d(detaching) {
15197				if (detaching) {
15198					detach(if_block_anchor);
15199				}
15200
15201				if_block.d(detaching);
15202			}
15203		};
15204	}
15205
15206	// (53:6) {:else}
15207	function create_else_block$9(ctx) {
15208		let button;
15209		let t;
15210		let mounted;
15211		let dispose;
15212
15213		return {
15214			c() {
15215				button = element("button");
15216				t = text(/*resendText*/ ctx[3]);
15217				attr(button, "class", "zephr-form-verification-resend-link svelte-1yj9ceh");
15218				toggle_class(button, "zephr-payment-form-verification-resend-link", /*isPaymentForm*/ ctx[9]);
15219			},
15220			m(target, anchor) {
15221				insert(target, button, anchor);
15222				append(button, t);
15223
15224				if (!mounted) {
15225					dispose = listen(button, "click", /*click_handler*/ ctx[15]);
15226					mounted = true;
15227				}
15228			},
15229			p(ctx, dirty) {
15230				if (dirty & /*resendText*/ 8) set_data(t, /*resendText*/ ctx[3]);
15231
15232				if (dirty & /*isPaymentForm*/ 512) {
15233					toggle_class(button, "zephr-payment-form-verification-resend-link", /*isPaymentForm*/ ctx[9]);
15234				}
15235			},
15236			d(detaching) {
15237				if (detaching) {
15238					detach(button);
15239				}
15240
15241				mounted = false;
15242				dispose();
15243			}
15244		};
15245	}
15246
15247	// (46:6) {#if showMessage && !error}
15248	function create_if_block_3$c(ctx) {
15249		let div;
15250		let t;
15251
15252		return {
15253			c() {
15254				div = element("div");
15255				t = text(/*resendMessage*/ ctx[2]);
15256				attr(div, "class", "zephr-form-verification-resend-text svelte-1yj9ceh");
15257				toggle_class(div, "zephr-payment-form-verification-resend-text", /*isPaymentForm*/ ctx[9]);
15258			},
15259			m(target, anchor) {
15260				insert(target, div, anchor);
15261				append(div, t);
15262			},
15263			p(ctx, dirty) {
15264				if (dirty & /*resendMessage*/ 4) set_data(t, /*resendMessage*/ ctx[2]);
15265
15266				if (dirty & /*isPaymentForm*/ 512) {
15267					toggle_class(div, "zephr-payment-form-verification-resend-text", /*isPaymentForm*/ ctx[9]);
15268				}
15269			},
15270			d(detaching) {
15271				if (detaching) {
15272					detach(div);
15273				}
15274			}
15275		};
15276	}
15277
15278	// (32:2) <Input     id="zephr-form-verification-code"     value={code}     {placeholder}     maxlength={6}     hasError={error != null}     errorMessage={error}     {isPaymentForm}     {disabled}     on:change={({ detail }) => !disabled && onChange(detail)}     onFocus={onFocus}     onBlur={onBlur}   >
15279	function create_default_slot$6(ctx) {
15280		let if_block_anchor;
15281		let if_block = /*resendText*/ ctx[3] && create_if_block_2$h(ctx);
15282
15283		return {
15284			c() {
15285				if (if_block) if_block.c();
15286				if_block_anchor = empty();
15287			},
15288			m(target, anchor) {
15289				if (if_block) if_block.m(target, anchor);
15290				insert(target, if_block_anchor, anchor);
15291			},
15292			p(ctx, dirty) {
15293				if (/*resendText*/ ctx[3]) {
15294					if (if_block) {
15295						if_block.p(ctx, dirty);
15296					} else {
15297						if_block = create_if_block_2$h(ctx);
15298						if_block.c();
15299						if_block.m(if_block_anchor.parentNode, if_block_anchor);
15300					}
15301				} else if (if_block) {
15302					if_block.d(1);
15303					if_block = null;
15304				}
15305			},
15306			d(detaching) {
15307				if (detaching) {
15308					detach(if_block_anchor);
15309				}
15310
15311				if (if_block) if_block.d(detaching);
15312			}
15313		};
15314	}
15315
15316	// (74:4) {#if codeValid}
15317	function create_if_block_1$r(ctx) {
15318		let fa;
15319		let current;
15320		fa = new Fa({ props: { icon: faCheck } });
15321
15322		return {
15323			c() {
15324				create_component(fa.$$.fragment);
15325			},
15326			m(target, anchor) {
15327				mount_component(fa, target, anchor);
15328				current = true;
15329			},
15330			i(local) {
15331				if (current) return;
15332				transition_in(fa.$$.fragment, local);
15333				current = true;
15334			},
15335			o(local) {
15336				transition_out(fa.$$.fragment, local);
15337				current = false;
15338			},
15339			d(detaching) {
15340				destroy_component(fa, detaching);
15341			}
15342		};
15343	}
15344
15345	// (77:4) {#if code && !codeValid && formBusy}
15346	function create_if_block$B(ctx) {
15347		let fa;
15348		let current;
15349		fa = new Fa({ props: { icon: faSpinner, spin: true } });
15350
15351		return {
15352			c() {
15353				create_component(fa.$$.fragment);
15354			},
15355			m(target, anchor) {
15356				mount_component(fa, target, anchor);
15357				current = true;
15358			},
15359			i(local) {
15360				if (current) return;
15361				transition_in(fa.$$.fragment, local);
15362				current = true;
15363			},
15364			o(local) {
15365				transition_out(fa.$$.fragment, local);
15366				current = false;
15367			},
15368			d(detaching) {
15369				destroy_component(fa, detaching);
15370			}
15371		};
15372	}
15373
15374	function create_fragment$P(ctx) {
15375		let label_1;
15376		let t0;
15377		let div1;
15378		let input;
15379		let t1;
15380		let div0;
15381		let t2;
15382		let current;
15383
15384		label_1 = new Label({
15385				props: {
15386					forInput: "zephr-form-verification-code",
15387					label: /*label*/ ctx[0],
15388					isPaymentForm: /*isPaymentForm*/ ctx[9]
15389				}
15390			});
15391
15392		input = new Input({
15393				props: {
15394					id: "zephr-form-verification-code",
15395					value: /*code*/ ctx[8],
15396					placeholder: /*placeholder*/ ctx[1],
15397					maxlength: 6,
15398					hasError: /*error*/ ctx[5] != null,
15399					errorMessage: /*error*/ ctx[5],
15400					isPaymentForm: /*isPaymentForm*/ ctx[9],
15401					disabled: /*disabled*/ ctx[4],
15402					onFocus: /*onFocus*/ ctx[12],
15403					onBlur: /*onBlur*/ ctx[13],
15404					$$slots: { default: [create_default_slot$6] },
15405					$$scope: { ctx }
15406				}
15407			});
15408
15409		input.$on("change", /*change_handler*/ ctx[16]);
15410		let if_block0 = /*codeValid*/ ctx[6] && create_if_block_1$r();
15411		let if_block1 = /*code*/ ctx[8] && !/*codeValid*/ ctx[6] && /*formBusy*/ ctx[7] && create_if_block$B();
15412
15413		return {
15414			c() {
15415				create_component(label_1.$$.fragment);
15416				t0 = space();
15417				div1 = element("div");
15418				create_component(input.$$.fragment);
15419				t1 = space();
15420				div0 = element("div");
15421				if (if_block0) if_block0.c();
15422				t2 = space();
15423				if (if_block1) if_block1.c();
15424				attr(div0, "class", "zephr-form-input-inner-text");
15425				toggle_class(div0, "zephr-payment-form-input-inner-text", /*isPaymentForm*/ ctx[9]);
15426				attr(div1, "class", "zephr-form-relative-container zephr-form-verification-resend-link-container svelte-1yj9ceh");
15427				toggle_class(div1, "zephr-payment-form-relative-container", /*isPaymentForm*/ ctx[9]);
15428				toggle_class(div1, "zephr-payment-form-verification-resend-link-container", /*isPaymentForm*/ ctx[9]);
15429			},
15430			m(target, anchor) {
15431				mount_component(label_1, target, anchor);
15432				insert(target, t0, anchor);
15433				insert(target, div1, anchor);
15434				mount_component(input, div1, null);
15435				append(div1, t1);
15436				append(div1, div0);
15437				if (if_block0) if_block0.m(div0, null);
15438				append(div0, t2);
15439				if (if_block1) if_block1.m(div0, null);
15440				current = true;
15441			},
15442			p(ctx, [dirty]) {
15443				const label_1_changes = {};
15444				if (dirty & /*label*/ 1) label_1_changes.label = /*label*/ ctx[0];
15445				if (dirty & /*isPaymentForm*/ 512) label_1_changes.isPaymentForm = /*isPaymentForm*/ ctx[9];
15446				label_1.$set(label_1_changes);
15447				const input_changes = {};
15448				if (dirty & /*code*/ 256) input_changes.value = /*code*/ ctx[8];
15449				if (dirty & /*placeholder*/ 2) input_changes.placeholder = /*placeholder*/ ctx[1];
15450				if (dirty & /*error*/ 32) input_changes.hasError = /*error*/ ctx[5] != null;
15451				if (dirty & /*error*/ 32) input_changes.errorMessage = /*error*/ ctx[5];
15452				if (dirty & /*isPaymentForm*/ 512) input_changes.isPaymentForm = /*isPaymentForm*/ ctx[9];
15453				if (dirty & /*disabled*/ 16) input_changes.disabled = /*disabled*/ ctx[4];
15454				if (dirty & /*onFocus*/ 4096) input_changes.onFocus = /*onFocus*/ ctx[12];
15455				if (dirty & /*onBlur*/ 8192) input_changes.onBlur = /*onBlur*/ ctx[13];
15456
15457				if (dirty & /*$$scope, isPaymentForm, resendMessage, showMessage, error, onResendVerificationCode, resendText*/ 150060) {
15458					input_changes.$$scope = { dirty, ctx };
15459				}
15460
15461				input.$set(input_changes);
15462
15463				if (/*codeValid*/ ctx[6]) {
15464					if (if_block0) {
15465						if (dirty & /*codeValid*/ 64) {
15466							transition_in(if_block0, 1);
15467						}
15468					} else {
15469						if_block0 = create_if_block_1$r();
15470						if_block0.c();
15471						transition_in(if_block0, 1);
15472						if_block0.m(div0, t2);
15473					}
15474				} else if (if_block0) {
15475					group_outros();
15476
15477					transition_out(if_block0, 1, 1, () => {
15478						if_block0 = null;
15479					});
15480
15481					check_outros();
15482				}
15483
15484				if (/*code*/ ctx[8] && !/*codeValid*/ ctx[6] && /*formBusy*/ ctx[7]) {
15485					if (if_block1) {
15486						if (dirty & /*code, codeValid, formBusy*/ 448) {
15487							transition_in(if_block1, 1);
15488						}
15489					} else {
15490						if_block1 = create_if_block$B();
15491						if_block1.c();
15492						transition_in(if_block1, 1);
15493						if_block1.m(div0, null);
15494					}
15495				} else if (if_block1) {
15496					group_outros();
15497
15498					transition_out(if_block1, 1, 1, () => {
15499						if_block1 = null;
15500					});
15501
15502					check_outros();
15503				}
15504
15505				if (!current || dirty & /*isPaymentForm*/ 512) {
15506					toggle_class(div0, "zephr-payment-form-input-inner-text", /*isPaymentForm*/ ctx[9]);
15507				}
15508
15509				if (!current || dirty & /*isPaymentForm*/ 512) {
15510					toggle_class(div1, "zephr-payment-form-relative-container", /*isPaymentForm*/ ctx[9]);
15511				}
15512
15513				if (!current || dirty & /*isPaymentForm*/ 512) {
15514					toggle_class(div1, "zephr-payment-form-verification-resend-link-container", /*isPaymentForm*/ ctx[9]);
15515				}
15516			},
15517			i(local) {
15518				if (current) return;
15519				transition_in(label_1.$$.fragment, local);
15520				transition_in(input.$$.fragment, local);
15521				transition_in(if_block0);
15522				transition_in(if_block1);
15523				current = true;
15524			},
15525			o(local) {
15526				transition_out(label_1.$$.fragment, local);
15527				transition_out(input.$$.fragment, local);
15528				transition_out(if_block0);
15529				transition_out(if_block1);
15530				current = false;
15531			},
15532			d(detaching) {
15533				if (detaching) {
15534					detach(t0);
15535					detach(div1);
15536				}
15537
15538				destroy_component(label_1, detaching);
15539				destroy_component(input);
15540				if (if_block0) if_block0.d();
15541				if (if_block1) if_block1.d();
15542			}
15543		};
15544	}
15545
15546	function instance$O($$self, $$props, $$invalidate) {
15547		let { label } = $$props;
15548		let { placeholder } = $$props;
15549		let { resendMessage = null } = $$props;
15550		let { resendText = null } = $$props;
15551		let { disabled } = $$props;
15552		let { error = null } = $$props;
15553		let { codeValid } = $$props;
15554		let { formBusy } = $$props;
15555		let { code } = $$props;
15556		let { isPaymentForm = false } = $$props;
15557		let { onChange } = $$props;
15558		let { onResendVerificationCode } = $$props;
15559		let { onFocus } = $$props;
15560		let { onBlur } = $$props;
15561		let showMessage = false;
15562
15563		const click_handler = () => {
15564			if (resendMessage) {
15565				$$invalidate(14, showMessage = true);
15566				setTimeout(() =>
15566 $$invalidate(14, showMessage = false), 2000);
15567			}
15568
15569			onResendVerificationCode();
15570		};
15571
15572		const change_handler = ({ detail }) => !disabled && onChange(detail);
15573
15574		$$self.$$set = $$props => {
15575			if ('label' in $$props) $$invalidate(0, label = $$props.label);
15576			if ('placeholder' in $$props) $$invalidate(1, placeholder = $$props.placeholder);
15577			if ('resendMessage' in $$props) $$invalidate(2, resendMessage = $$props.resendMessage);
15578			if ('resendText' in $$props) $$invalidate(3, resendText = $$props.resendText);
15579			if ('disabled' in $$props) $$invalidate(4, disabled = $$props.disabled);
15580			if ('error' in $$props) $$invalidate(5, error = $$props.error);
15581			if ('codeValid' in $$props) $$invalidate(6, codeValid = $$props.codeValid);
15582			if ('formBusy' in $$props) $$invalidate(7, formBusy = $$props.formBusy);
15583			if ('code' in $$props) $$invalidate(8, code = $$props.code);
15584			if ('isPaymentForm' in $$props) $$invalidate(9, isPaymentForm = $$props.isPaymentForm);
15585			if ('onChange' in $$props) $$invalidate(10, onChange = $$props.onChange);
15586			if ('onResendVerificationCode' in $$props) $$invalidate(11, onResendVerificationCode = $$props.onResendVerificationCode);
15587			if ('onFocus' in $$props) $$invalidate(12, onFocus = $$props.onFocus);
15588			if ('onBlur' in $$props) $$invalidate(13, onBlur = $$props.onBlur);
15589		};
15590
15591		return [
15592			label,
15593			placeholder,
15594			resendMessage,
15595			resendText,
15596			disabled,
15597			error,
15598			codeValid,
15599			formBusy,
15600			code,
15601			isPaymentForm,
15602			onChange,
15603			onResendVerificationCode,
15604			onFocus,
15605			onBlur,
15606			showMessage,
15607			click_handler,
15608			change_handler
15609		];
15610	}
15611
15612	class VerificationCode extends SvelteComponent {
15613		constructor(options) {
15614			super();
15615
15616			init(this, options, instance$O, create_fragment$P, safe_not_equal, {
15617				label: 0,
15618				placeholder: 1,
15619				resendMessage: 2,
15620				resendText: 3,
15621				disabled: 4,
15622				error: 5,
15623				codeValid: 6,
15624				formBusy: 7,
15625				code: 8,
15626				isPaymentForm: 9,
15627				onChange: 10,
15628				onResendVerificationCode: 11,
15629				onFocus: 12,
15630				onBlur: 13
15631			});
15632		}
15633	}
15634
15635	const verificationCodeLength = 6;
15636	const isPossiblyValidCode = code => code?.length === verificationCodeLength;
15637	const checkUserAttributesValid = (formState) => {
15638	    return !formState.elementValidity
15639	        .filter((e) => e.partType === formState.currentPart.type &&
15640	        e.sectionType === formState.currentSection.type &&
15641	        e.sectionOrder === formState.currentSection.order &&
15642	        e.elementType === 'user_attribute')
15643	        .some((e) => !e.isValid);
15644	};
15645	const factory$l = {
15646	    matches: (sectionElement) => sectionElement.type === elementTypes.VERIFICATION_CODE,
15647	    create: (form, formState, formActions, elementConfig) => ({
15648	        component: VerificationCode,
15649	        props: {
15650	            code: formState.verificationCode,
15651	            label: elementConfig.label,
15652	            placeholder: elementConfig.placeholder,
15653	            resendMessage: elementConfig.message,
15654	            resendText: elementConfig.resendText,
15655	            disabled: formState.isBusy || formState.verificationCodeValid || !checkUserAttributesValid(formState),
15656	            codeValid: formState.verificationCodeValid,
15657	            formBusy: formState.isBusy,
15658	            isPaymentForm: form.formType === FormType.PAYMENT,
15659	            onResendVerificationCode: () => {
15660	                void (formState.currentSection.type === sectionTypes.FORGOT_PASSWORD.type ? sendPasswordResetCode : send2FaCode)(form, formState, formActions);
15661	            },
15662	            onChange: (value) => {
15663	                const updatedState = formActions.updateFormState({
15664	                    verificationCodeValid: undefined,
15665	                    verificationCode: value,
15666	                    serverErrors: []
15667	                });
15668	                const userAttributesValid = checkUserAttributesValid(formState);
15669	                formActions.updateFormState({
15670	                    showFieldErrors: !userAttributesValid
15671	                });
15672	                if (isPossiblyValidCode(value)) {
15673	                    if (elementConfig.verificationEvent) {
15674	                        formActions.onEvent(elementConfig.verificationEvent);
15675	                        return;
15676	                    }
15677	                    if (formState.currentSection.type === sectionTypes.FORGOT_PASSWORD.type) {
15678	                        formActions.completeSection();
15679	                    }
15680	                    else if (userAttributesValid) {
15681	                        void verifyOtp(form, updatedState, formActions);
15682	                    }
15683	                }
15684	                logDataLayerEvent(form, 'zephr_form_input_change', {
15685	                    inputName: 'zephr-form-verification-code',
15686	                    sectionId: formState.currentSection.type,
15687	                    field: 'verification-code'
15688	                });
15689	            },
15690	            onFocus: () => logDataLayerEvent(form, 'zephr_form_input_focus', {
15691	                inputName: 'zephr-form-verification-code',
15692	                sectionId: formState.currentSection.type,
15693	                field: 'verification-code'
15694	            }),
15695	            onBlur: () => logDataLayerEvent(form, 'zephr_form_input_blur', {
15696	                inputName: 'zephr-form-verification-code',
15697	                sectionId: formState.currentSection.type,
15698	                field: 'verification-code'
15699	            }),
15700	        },
15701	        isValid: isPossiblyValidCode(formState.verificationCode)
15702	    })
15703	};
15704
15705	/* src/components/elements/text/Text.svelte generated by Svelte v4.2.12 */
15706
15707	function create_fragment$O(ctx) {
15708		let div;
15709
15710		return {
15711			c() {
15712				div = element("div");
15713				attr(div, "class", "zephr-form-custom-text svelte-3sd7s2");
15714				set_style(div, "text-align", /*centerText*/ ctx[1] ? 'center' : 'initial');
15715				toggle_class(div, "zephr-payment-form-custom-text", /*isPaymentForm*/ ctx[2]);
15716			},
15717			m(target, anchor) {
15718				insert(target, div, anchor);
15719				div.innerHTML = /*text*/ ctx[0];
15720			},
15721			p(ctx, [dirty]) {
15722				if (dirty & /*text*/ 1) div.innerHTML = /*text*/ ctx[0];
15723				if (dirty & /*centerText*/ 2) {
15724					set_style(div, "text-align", /*centerText*/ ctx[1] ? 'center' : 'initial');
15725				}
15726
15727				if (dirty & /*isPaymentForm*/ 4) {
15728					toggle_class(div, "zephr-payment-form-custom-text", /*isPaymentForm*/ ctx[2]);
15729				}
15730			},
15731			i: noop,
15732			o: noop,
15733			d(detaching) {
15734				if (detaching) {
15735					detach(div);
15736				}
15737			}
15738		};
15739	}
15740
15741	function instance$N($$self, $$props, $$invalidate) {
15742		let { text } = $$props;
15743		let { centerText = false } = $$props;
15744		let { isPaymentForm = false } = $$props;
15745
15746		$$self.$$set = $$props => {
15747			if ('text' in $$props) $$invalidate(0, text = $$props.text);
15748			if ('centerText' in $$props) $$invalidate(1, centerText = $$props.centerText);
15749			if ('isPaymentForm' in $$props) $$invalidate(2, isPaymentForm = $$props.isPaymentForm);
15750		};
15751
15752		return [text, centerText, isPaymentForm];
15753	}
15754
15755	class Text extends SvelteComponent {
15756		constructor(options) {
15757			super();
15758			init(this, options, instance$N, create_fragment$O, safe_not_equal, { text: 0, centerText: 1, isPaymentForm: 2 });
15759		}
15760	}
15761
15762	const factory$k = {
15763	    matches: (sectionElement) => sectionElement.type === elementTypes.TEXT,
15764	    create: (form, formState, formActions, elementConfig) => ({
15765	        component: Text,
15766	        props: {
15767	            text: elementConfig.text,
15768	            centerText: elementConfig.centerText,
15769	            isPaymentForm: form.formType === FormType.PAYMENT,
15770	        }
15771	    })
15772	};
15773
15774	/* src/components/elements/Radio.svelte generated by Svelte v4.2.12 */
15775
15776	function create_fragment$N(ctx) {
15777		let input;
15778		let t0;
15779		let label_1;
15780		let span;
15781		let t1;
15782		let t2;
15783		let mounted;
15784		let dispose;
15785
15786		let input_levels = [
15787			{ id: /*id*/ ctx[0] },
15788			{ name: /*name*/ ctx[1] },
15789			{ required: /*required*/ ctx[2] },
15790			{ disabled: /*disabled*/ ctx[3] },
15791			/*conditionalProps*/ ctx[8],
15792			{ type: "radio" },
15793			{ class: "zephr-form-input-radio" }
15794		];
15795
15796		let input_data = {};
15797
15798		for (let i = 0; i < input_levels.length; i += 1) {
15799			input_data = assign(input_data, input_levels[i]);
15800		}
15801
15802		return {
15803			c() {
15804				input = element("input");
15805				t0 = space();
15806				label_1 = element("label");
15807				span = element("span");
15808				t1 = space();
15809				t2 = text(/*label*/ ctx[6]);
15810				set_attributes(input, input_data);
15811				toggle_class(input, "zephr-payment-form-input-radio", /*isPaymentForm*/ ctx[5]);
15812				toggle_class(input, "disabled", /*disabled*/ ctx[3]);
15813				toggle_class(input, "error", /*hasError*/ ctx[4]);
15814				toggle_class(input, "svelte-1cbmaif", true);
15815				attr(span, "class", "zephr-form-radio-dot svelte-1cbmaif");
15816				toggle_class(span, "zephr-payment-form-radio-dot", /*isPaymentForm*/ ctx[5]);
15817				toggle_class(span, "disabled", /*disabled*/ ctx[3]);
15818				toggle_class(span, "checked", /*checked*/ ctx[7]);
15819				toggle_class(span, "error", /*hasError*/ ctx[4]);
15820				attr(label_1, "for", /*id*/ ctx[0]);
15821				attr(label_1, "class", "zephr-form-radio-label svelte-1cbmaif");
15822				toggle_class(label_1, "zephr-payment-form-radio-label", /*isPaymentForm*/ ctx[5]);
15823			},
15824			m(target, anchor) {
15825				insert(target, input, anchor);
15826				if (input.autofocus) input.focus();
15827				insert(target, t0, anchor);
15828				insert(target, label_1, anchor);
15829				append(label_1, span);
15830				append(label_1, t1);
15831				append(label_1, t2);
15832
15833				if (!mounted) {
15834					dispose = listen(input, "input", /*handleInputChange*/ ctx[9]);
15835					mounted = true;
15836				}
15837			},
15838			p(ctx, [dirty]) {
15839				set_attributes(input, input_data = get_spread_update(input_levels, [
15840					dirty & /*id*/ 1 && { id: /*id*/ ctx[0] },
15841					dirty & /*name*/ 2 && { name: /*name*/ ctx[1] },
15842					dirty & /*required*/ 4 && { required: /*required*/ ctx[2] },
15843					dirty & /*disabled*/ 8 && { disabled: /*disabled*/ ctx[3] },
15844					dirty & /*conditionalProps*/ 256 && /*conditionalProps*/ ctx[8],
15845					{ type: "radio" },
15846					{ class: "zephr-form-input-radio" }
15847				]));
15848
15849				toggle_class(input, "zephr-payment-form-input-radio", /*isPaymentForm*/ ctx[5]);
15850				toggle_class(input, "disabled", /*disabled*/ ctx[3]);
15851				toggle_class(input, "error", /*hasError*/ ctx[4]);
15852				toggle_class(input, "svelte-1cbmaif", true);
15853
15854				if (dirty & /*isPaymentForm*/ 32) {
15855					toggle_class(span, "zephr-payment-form-radio-dot", /*isPaymentForm*/ ctx[5]);
15856				}
15857
15858				if (dirty & /*disabled*/ 8) {
15859					toggle_class(span, "disabled", /*disabled*/ ctx[3]);
15860				}
15861
15862				if (dirty & /*checked*/ 128) {
15863					toggle_class(span, "checked", /*checked*/ ctx[7]);
15864				}
15865
15866				if (dirty & /*hasError*/ 16) {
15867					toggle_class(span, "error", /*hasError*/ ctx[4]);
15868				}
15869
15870				if (dirty & /*label*/ 64) set_data(t2, /*label*/ ctx[6]);
15871
15872				if (dirty & /*id*/ 1) {
15873					attr(label_1, "for", /*id*/ ctx[0]);
15874				}
15875
15876				if (dirty & /*isPaymentForm*/ 32) {
15877					toggle_class(label_1, "zephr-payment-form-radio-label", /*isPaymentForm*/ ctx[5]);
15878				}
15879			},
15880			i: noop,
15881			o: noop,
15882			d(detaching) {
15883				if (detaching) {
15884					detach(input);
15885					detach(t0);
15886					detach(label_1);
15887				}
15888
15889				mounted = false;
15890				dispose();
15891			}
15892		};
15893	}
15894
15895	function instance$M($$self, $$props, $$invalidate) {
15896		const dispatch = createEventDispatcher();
15897		let { id } = $$props;
15898		let { name = id } = $$props;
15899		let { required = true } = $$props;
15900		let { disabled = false } = $$props;
15901		let { hasError = false } = $$props;
15902		let { isPaymentForm = false } = $$props;
15903		let { label = "" } = $$props;
15904		let { value } = $$props;
15905		let { placeholder = "" } = $$props;
15906		let { checked = false } = $$props;
15907		let { pattern = "" } = $$props;
15908		let conditionalProps = {};
15909		if (checked) conditionalProps.checked = checked;
15910		if (placeholder) conditionalProps.placeholder = placeholder;
15911		if (pattern) conditionalProps.pattern = pattern;
15912		if (value) conditionalProps.value = value;
15913
15914		const handleInputChange = e => {
15915			dispatch("change", e.target.value);
15916		};
15917
15918		$$self.$$set = $$props => {
15919			if ('id' in $$props) $$invalidate(0, id = $$props.id);
15920			if ('name' in $$props) $$invalidate(1, name = $$props.name);
15921			if ('required' in $$props) $$invalidate(2, required = $$props.required);
15922			if ('disabled' in $$props) $$invalidate(3, disabled = $$props.disabled);
15923			if ('hasError' in $$props) $$invalidate(4, hasError = $$props.hasError);
15924			if ('isPaymentForm' in $$props) $$invalidate(5, isPaymentForm = $$props.isPaymentForm);
15925			if ('label' in $$props) $$invalidate(6, label = $$props.label);
15926			if ('value' in $$props) $$invalidate(10, value = $$props.value);
15927			if ('placeholder' in $$props) $$invalidate(11, placeholder = $$props.placeholder);
15928			if ('checked' in $$props) $$invalidate(7, checked = $$props.checked);
15929			if ('pattern' in $$props) $$invalidate(12, pattern = $$props.pattern);
15930		};
15931
15932		return [
15933			id,
15934			name,
15935			required,
15936			disabled,
15937			hasError,
15938			isPaymentForm,
15939			label,
15940			checked,
15941			conditionalProps,
15942			handleInputChange,
15943			value,
15944			placeholder,
15945			pattern
15946		];
15947	}
15948
15949	class Radio extends SvelteComponent {
15950		constructor(options) {
15951			super();
15952
15953			init(this, options, instance$M, create_fragment$N, safe_not_equal, {
15954				id: 0,
15955				name: 1,
15956				required: 2,
15957				disabled: 3,
15958				hasError: 4,
15959				isPaymentForm: 5,
15960				label: 6,
15961				value: 10,
15962				placeholder: 11,
15963				checked: 7,
15964				pattern: 12
15965			});
15966		}
15967	}
15968
15969	/* src/components/elements/userAttribute/UserAttribute.svelte generated by Svelte v4.2.12 */
15970
15971	function get_each_context_1$4(ctx, list, i) {
15972		const child_ctx = ctx.slice();
15973		child_ctx[19] = list[i];
15974		return child_ctx;
15975	}
15976
15977	function get_each_context$e(ctx, list, i) {
15978		const child_ctx = ctx.slice();
15979		child_ctx[19] = list[i];
15980		return child_ctx;
15981	}
15982
15983	// (120:2) {:else}
15984	function create_else_block$8(ctx) {
15985		let input;
15986		let current;
15987
15988		input = new Input({
15989				props: {
15990					id: /*id*/ ctx[10],
15991					name: /*config*/ ctx[0].slug,
15992					required: /*config*/ ctx[0].required || /*attributeSchema*/ ctx[1]?.required,
15993					type: /*attributeSchema*/ ctx[1]?.["input-type"],
15994					value: /*value*/ ctx[2],
15995					checked: /*attributeSchema*/ ctx[1]?.["input-type"] === "checkbox" && /*value*/ ctx[2],
15996					pattern: /*attributeSchema*/ ctx[1]?.["validation-expression"],
15997					placeholder: /*config*/ ctx[0].placeholder,
15998					hasError: /*hasError*/ ctx[8],
15999					isPaymentForm: /*isPaymentForm*/ ctx[3],
16000					onFocus: /*onFocus*/ ctx[5],
16001					onBlur: /*onBlur*/ ctx[6]
16002				}
16003			});
16004
16005		input.$on("change", /*change_handler_4*/ ctx[18]);
16006
16007		return {
16008			c() {
16009				create_component(input.$$.fragment);
16010			},
16011			m(target, anchor) {
16012				mount_component(input, target, anchor);
16013				current = true;
16014			},
16015			p(ctx, dirty) {
16016				const input_changes = {};
16017				if (dirty & /*config*/ 1) input_changes.name = /*config*/ ctx[0].slug;
16018				if (dirty & /*config, attributeSchema*/ 3) input_changes.required = /*config*/ ctx[0].required || /*attributeSchema*/ ctx[1]?.required;
16019				if (dirty & /*attributeSchema*/ 2) input_changes.type = /*attributeSchema*/ ctx[1]?.["input-type"];
16020				if (dirty & /*value*/ 4) input_changes.value = /*value*/ ctx[2];
16021				if (dirty & /*attributeSchema, value*/ 6) input_changes.checked = /*attributeSchema*/ ctx[1]?.["input-type"] === "checkbox" && /*value*/ ctx[2];
16022				if (dirty & /*attributeSchema*/ 2) input_changes.pattern = /*attributeSchema*/ ctx[1]?.["validation-expression"];
16023				if (dirty & /*config*/ 1) input_changes.placeholder = /*config*/ ctx[0].placeholder;
16024				if (dirty & /*hasError*/ 256) input_changes.hasError = /*hasError*/ ctx[8];
16025				if (dirty & /*isPaymentForm*/ 8) input_changes.isPaymentForm = /*isPaymentForm*/ ctx[3];
16026				if (dirty & /*onFocus*/ 32) input_changes.onFocus = /*onFocus*/ ctx[5];
16027				if (dirty & /*onBlur*/ 64) input_changes.onBlur = /*onBlur*/ ctx[6];
16028				input.$set(input_changes);
16029			},
16030			i(local) {
16031				if (current) return;
16032				transition_in(input.$$.fragment, local);
16033				current = true;
16034			},
16035			o(local) {
16036				transition_out(input.$$.fragment, local);
16037				current = false;
16038			},
16039			d(detaching) {
16040				destroy_component(input, detaching);
16041			}
16042		};
16043	}
16044
16045	// (93:56) 
16046	function create_if_block_5$7(ctx) {
16047		let div;
16048		let input;
16049		let t;
16050		let current;
16051
16052		input = new Input({
16053				props: {
16054					id: /*id*/ ctx[10],
16055					required: /*config*/ ctx[0].required || /*attributeSchema*/ ctx[1]?.required,
16056					type: /*attributeSchema*/ ctx[1]["input-type"],
16057					value: /*value*/ ctx[2],
16058					min: /*attributeSchema*/ ctx[1]["range-start"],
16059					max: /*attributeSchema*/ ctx[1]["range-end"],
16060					step: /*attributeSchema*/ ctx[1]["range-start"],
16061					isPaymentForm: /*isPaymentForm*/ ctx[3],
16062					onFocus: /*onFocus*/ ctx[5],
16063					onBlur: /*onBlur*/ ctx[6]
16064				}
16065			});
16066
16067		input.$on("change", /*change_handler_3*/ ctx[17]);
16068		let if_block = /*attributeSchema*/ ctx[1]["input-type"] === "range" && /*value*/ ctx[2] != null && create_if_block_6$7(ctx);
16069
16070		return {
16071			c() {
16072				div = element("div");
16073				create_component(input.$$.fragment);
16074				t = space();
16075				if (if_block) if_block.c();
16076				attr(div, "class", "zephr-form-flex-container");
16077				toggle_class(div, "zephr-payment-form-flex-container", /*isPaymentForm*/ ctx[3]);
16078			},
16079			m(target, anchor) {
16080				insert(target, div, anchor);
16081				mount_component(input, div, null);
16082				append(div, t);
16083				if (if_block) if_block.m(div, null);
16084				current = true;
16085			},
16086			p(ctx, dirty) {
16087				const input_changes = {};
16088				if (dirty & /*config, attributeSchema*/ 3) input_changes.required = /*config*/ ctx[0].required || /*attributeSchema*/ ctx[1]?.required;
16089				if (dirty & /*attributeSchema*/ 2) input_changes.type = /*attributeSchema*/ ctx[1]["input-type"];
16090				if (dirty & /*value*/ 4) input_changes.value = /*value*/ ctx[2];
16091				if (dirty & /*attributeSchema*/ 2) input_changes.min = /*attributeSchema*/ ctx[1]["range-start"];
16092				if (dirty & /*attributeSchema*/ 2) input_changes.max = /*attributeSchema*/ ctx[1]["range-end"];
16093				if (dirty & /*attributeSchema*/ 2) input_changes.step = /*attributeSchema*/ ctx[1]["range-start"];
16094				if (dirty & /*isPaymentForm*/ 8) input_changes.isPaymentForm = /*isPaymentForm*/ ctx[3];
16095				if (dirty & /*onFocus*/ 32) input_changes.onFocus = /*onFocus*/ ctx[5];
16096				if (dirty & /*onBlur*/ 64) input_changes.onBlur = /*onBlur*/ ctx[6];
16097				input.$set(input_changes);
16098
16099				if (/*attributeSchema*/ ctx[1]["input-type"] === "range" && /*value*/ ctx[2] != null) {
16100					if (if_block) {
16101						if_block.p(ctx, dirty);
16102					} else {
16103						if_block = create_if_block_6$7(ctx);
16104						if_block.c();
16105						if_block.m(div, null);
16106					}
16107				} else if (if_block) {
16108					if_block.d(1);
16109					if_block = null;
16110				}
16111
16112				if (!current || dirty & /*isPaymentForm*/ 8) {
16113					toggle_class(div, "zephr-payment-form-flex-container", /*isPaymentForm*/ ctx[3]);
16114				}
16115			},
16116			i(local) {
16117				if (current) return;
16118				transition_in(input.$$.fragment, local);
16119				current = true;
16120			},
16121			o(local) {
16122				transition_out(input.$$.fragment, local);
16123				current = false;
16124			},
16125			d(detaching) {
16126				if (detaching) {
16127					detach(div);
16128				}
16129
16130				destroy_component(input);
16131				if (if_block) if_block.d();
16132			}
16133		};
16134	}
16135
16136	// (84:59) 
16137	function create_if_block_4$9(ctx) {
16138		let textarea;
16139		let textarea_required_value;
16140		let textarea_placeholder_value;
16141		let mounted;
16142		let dispose;
16143
16144		return {
16145			c() {
16146				textarea = element("textarea");
16147				attr(textarea, "id", /*id*/ ctx[10]);
16148				attr(textarea, "class", "zephr-form-input zephr-form-input-textarea svelte-wlae04");
16149				textarea.required = textarea_required_value = /*config*/ ctx[0].required || /*attributeSchema*/ ctx[1]?.required;
16150				attr(textarea, "placeholder", textarea_placeholder_value = /*config*/ ctx[0].placeholder);
16151				toggle_class(textarea, "zephr-payment-form-input", /*isPaymentForm*/ ctx[3]);
16152				toggle_class(textarea, "zephr-payment-form-input-textarea", /*isPaymentForm*/ ctx[3]);
16153			},
16154			m(target, anchor) {
16155				insert(target, textarea, anchor);
16156				set_input_value(textarea, /*currentValue*/ ctx[7]);
16157
16158				if (!mounted) {
16159					dispose = listen(textarea, "input", /*textarea_input_handler*/ ctx[16]);
16160					mounted = true;
16161				}
16162			},
16163			p(ctx, dirty) {
16164				if (dirty & /*config, attributeSchema*/ 3 && textarea_required_value !== (textarea_required_value = /*config*/ ctx[0].required || /*attributeSchema*/ ctx[1]?.required)) {
16165					textarea.required = textarea_required_value;
16166				}
16167
16168				if (dirty & /*config*/ 1 && textarea_placeholder_value !== (textarea_placeholder_value = /*config*/ ctx[0].placeholder)) {
16169					attr(textarea, "placeholder", textarea_placeholder_value);
16170				}
16171
16172				if (dirty & /*currentValue*/ 128) {
16173					set_input_value(textarea, /*currentValue*/ ctx[7]);
16174				}
16175
16176				if (dirty & /*isPaymentForm*/ 8) {
16177					toggle_class(textarea, "zephr-payment-form-input", /*isPaymentForm*/ ctx[3]);
16178				}
16179
16180				if (dirty & /*isPaymentForm*/ 8) {
16181					toggle_class(textarea, "zephr-payment-form-input-textarea", /*isPaymentForm*/ ctx[3]);
16182				}
16183			},
16184			i: noop,
16185			o: noop,
16186			d(detaching) {
16187				if (detaching) {
16188					detach(textarea);
16189				}
16190
16191				mounted = false;
16192				dispose();
16193			}
16194		};
16195	}
16196
16197	// (64:57) 
16198	function create_if_block_3$b(ctx) {
16199		let select;
16200		let option_1;
16201		let t_value = (/*config*/ ctx[0].placeholder ?? "") + "";
16202		let t;
16203		let select_name_value;
16204		let select_required_value;
16205		let select_value_value;
16206		let mounted;
16207		let dispose;
16208		let each_value_1 = ensure_array_like(/*attributeSchema*/ ctx[1]?.["select-options"]);
16209		let each_blocks = [];
16210
16211		for (let i = 0; i < each_value_1.length; i += 1) {
16212			each_blocks[i] = create_each_block_1$4(get_each_context_1$4(ctx, each_value_1, i));
16213		}
16214
16215		return {
16216			c() {
16217				select = element("select");
16218				option_1 = element("option");
16219				t = text(t_value);
16220
16221				for (let i = 0; i < each_blocks.length; i += 1) {
16222					each_blocks[i].c();
16223				}
16224
16225				option_1.disabled = true;
16226				option_1.__value = "";
16227				set_input_value(option_1, option_1.__value);
16228				attr(select, "id", /*id*/ ctx[10]);
16229				attr(select, "name", select_name_value = /*config*/ ctx[0].slug);
16230				attr(select, "class", "zephr-form-input zephr-form-input-select svelte-wlae04");
16231				select.required = select_required_value = /*config*/ ctx[0].required || /*attributeSchema*/ ctx[1]?.required;
16232				toggle_class(select, "zephr-payment-form-input", /*isPaymentForm*/ ctx[3]);
16233				toggle_class(select, "zephr-payment-form-input-select", /*isPaymentForm*/ ctx[3]);
16234				toggle_class(select, "unselected", !/*value*/ ctx[2]);
16235				toggle_class(select, "error", /*hasError*/ ctx[8]);
16236			},
16237			m(target, anchor) {
16238				insert(target, select, anchor);
16239				append(select, option_1);
16240				append(option_1, t);
16241
16242				for (let i = 0; i < each_blocks.length; i += 1) {
16243					if (each_blocks[i]) {
16244						each_blocks[i].m(select, null);
16245					}
16246				}
16247
16248				select_option(select, /*value*/ ctx[2] ?? "");
16249
16250				if (!mounted) {
16251					dispose = listen(select, "change", /*change_handler_2*/ ctx[15]);
16252					mounted = true;
16253				}
16254			},
16255			p(ctx, dirty) {
16256				if (dirty & /*config*/ 1 && t_value !== (t_value = (/*config*/ ctx[0].placeholder ?? "") + "")) set_data(t, t_value);
16257
16258				if (dirty & /*attributeSchema, value*/ 6) {
16259					each_value_1 = ensure_array_like(/*attributeSchema*/ ctx[1]?.["select-options"]);
16260					let i;
16261
16262					for (i = 0; i < each_value_1.length; i += 1) {
16263						const child_ctx = get_each_context_1$4(ctx, each_value_1, i);
16264
16265						if (each_blocks[i]) {
16266							each_blocks[i].p(child_ctx, dirty);
16267						} else {
16268							each_blocks[i] = create_each_block_1$4(child_ctx);
16269							each_blocks[i].c();
16270							each_blocks[i].m(select, null);
16271						}
16272					}
16273
16274					for (; i < each_blocks.length; i += 1) {
16275						each_blocks[i].d(1);
16276					}
16277
16278					each_blocks.length = each_value_1.length;
16279				}
16280
16281				if (dirty & /*config*/ 1 && select_name_value !== (select_name_value = /*config*/ ctx[0].slug)) {
16282					attr(select, "name", select_name_value);
16283				}
16284
16285				if (dirty & /*config, attributeSchema*/ 3 && select_required_value !== (select_required_value = /*config*/ ctx[0].required || /*attributeSchema*/ ctx[1]?.required)) {
16286					select.required = select_required_value;
16287				}
16288
16289				if (dirty & /*value, attributeSchema*/ 6 && select_value_value !== (select_value_value = /*value*/ ctx[2] ?? "")) {
16290					select_option(select, /*value*/ ctx[2] ?? "");
16291				}
16292
16293				if (dirty & /*isPaymentForm*/ 8) {
16294					toggle_class(select, "zephr-payment-form-input", /*isPaymentForm*/ ctx[3]);
16295				}
16296
16297				if (dirty & /*isPaymentForm*/ 8) {
16298					toggle_class(select, "zephr-payment-form-input-select", /*isPaymentForm*/ ctx[3]);
16299				}
16300
16301				if (dirty & /*value*/ 4) {
16302					toggle_class(select, "unselected", !/*value*/ ctx[2]);
16303				}
16304
16305				if (dirty & /*hasError*/ 256) {
16306					toggle_class(select, "error", /*hasError*/ ctx[8]);
16307				}
16308			},
16309			i: noop,
16310			o: noop,
16311			d(detaching) {
16312				if (detaching) {
16313					detach(select);
16314				}
16315
16316				destroy_each(each_blocks, detaching);
16317				mounted = false;
16318				dispose();
16319			}
16320		};
16321	}
16322
16323	// (48:59) 
16324	function create_if_block_2$g(ctx) {
16325		let checkbox;
16326		let current;
16327
16328		checkbox = new Checkbox({
16329				props: {
16330					id: /*id*/ ctx[10],
16331					name: /*config*/ ctx[0].slug,
16332					label: `${/*config*/ ctx[0].label}${/*config*/ ctx[0].required || /*attributeSchema*/ ctx[1]?.required
16333				? "*"
16334				: ""}`,
16335					required: /*config*/ ctx[0].required || /*attributeSchema*/ ctx[1]?.required,
16336					value: /*value*/ ctx[2],
16337					checked: /*value*/ ctx[2],
16338					pattern: /*attributeSchema*/ ctx[1]?.["validation-expression"],
16339					placeholder: /*config*/ ctx[0].placeholder,
16340					hasError: /*hasError*/ ctx[8],
16341					isPaymentForm: /*isPaymentForm*/ ctx[3]
16342				}
16343			});
16344
16345		checkbox.$on("change", /*change_handler_1*/ ctx[14]);
16346
16347		return {
16348			c() {
16349				create_component(checkbox.$$.fragment);
16350			},
16351			m(target, anchor) {
16352				mount_component(checkbox, target, anchor);
16353				current = true;
16354			},
16355			p(ctx, dirty) {
16356				const checkbox_changes = {};
16357				if (dirty & /*config*/ 1) checkbox_changes.name = /*config*/ ctx[0].slug;
16358
16359				if (dirty & /*config, attributeSchema*/ 3) checkbox_changes.label = `${/*config*/ ctx[0].label}${/*config*/ ctx[0].required || /*attributeSchema*/ ctx[1]?.required
16360			? "*"
16361			: ""}`;
16362
16363				if (dirty & /*config, attributeSchema*/ 3) checkbox_changes.required = /*config*/ ctx[0].required || /*attributeSchema*/ ctx[1]?.required;
16364				if (dirty & /*value*/ 4) checkbox_changes.value = /*value*/ ctx[2];
16365				if (dirty & /*value*/ 4) checkbox_changes.checked = /*value*/ ctx[2];
16366				if (dirty & /*attributeSchema*/ 2) checkbox_changes.pattern = /*attributeSchema*/ ctx[1]?.["validation-expression"];
16367				if (dirty & /*config*/ 1) checkbox_changes.placeholder = /*config*/ ctx[0].placeholder;
16368				if (dirty & /*hasError*/ 256) checkbox_changes.hasError = /*hasError*/ ctx[8];
16369				if (dirty & /*isPaymentForm*/ 8) checkbox_changes.isPaymentForm = /*isPaymentForm*/ ctx[3];
16370				checkbox.$set(checkbox_changes);
16371			},
16372			i(local) {
16373				if (current) return;
16374				transition_in(checkbox.$$.fragment, local);
16375				current = true;
16376			},
16377			o(local) {
16378				transition_out(checkbox.$$.fragment, local);
16379				current = false;
16380			},
16381			d(detaching) {
16382				destroy_component(checkbox, detaching);
16383			}
16384		};
16385	}
16386
16387	// (34:2) {#if attributeSchema?.["input-type"] === "radio"}
16388	function create_if_block_1$q(ctx) {
16389		let each_1_anchor;
16390		let current;
16391		let each_value = ensure_array_like(/*attributeSchema*/ ctx[1]?.["select-options"]);
16392		let each_blocks = [];
16393
16394		for (let i = 0; i < each_value.length; i += 1) {
16395			each_blocks[i] = create_each_block$e(get_each_context$e(ctx, each_value, i));
16396		}
16397
16398		const out = i => transition_out(each_blocks[i], 1, 1, () => {
16399			each_blocks[i] = null;
16400		});
16401
16402		return {
16403			c() {
16404				for (let i = 0; i < each_blocks.length; i += 1) {
16405					each_blocks[i].c();
16406				}
16407
16408				each_1_anchor = empty();
16409			},
16410			m(target, anchor) {
16411				for (let i = 0; i < each_blocks.length; i += 1) {
16412					if (each_blocks[i]) {
16413						each_blocks[i].m(target, anchor);
16414					}
16415				}
16416
16417				insert(target, each_1_anchor, anchor);
16418				current = true;
16419			},
16420			p(ctx, dirty) {
16421				if (dirty & /*id, attributeSchema, config, value, hasError, isPaymentForm, onChange*/ 1311) {
16422					each_value = ensure_array_like(/*attributeSchema*/ ctx[1]?.["select-options"]);
16423					let i;
16424
16425					for (i = 0; i < each_value.length; i += 1) {
16426						const child_ctx = get_each_context$e(ctx, each_value, i);
16427
16428						if (each_blocks[i]) {
16429							each_blocks[i].p(child_ctx, dirty);
16430							transition_in(each_blocks[i], 1);
16431						} else {
16432							each_blocks[i] = create_each_block$e(child_ctx);
16433							each_blocks[i].c();
16434							transition_in(each_blocks[i], 1);
16435							each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor);
16436						}
16437					}
16438
16439					group_outros();
16440
16441					for (i = each_value.length; i < each_blocks.length; i += 1) {
16442						out(i);
16443					}
16444
16445					check_outros();
16446				}
16447			},
16448			i(local) {
16449				if (current) return;
16450
16451				for (let i = 0; i < each_value.length; i += 1) {
16452					transition_in(each_blocks[i]);
16453				}
16454
16455				current = true;
16456			},
16457			o(local) {
16458				each_blocks = each_blocks.filter(Boolean);
16459
16460				for (let i = 0; i < each_blocks.length; i += 1) {
16461					transition_out(each_blocks[i]);
16462				}
16463
16464				current = false;
16465			},
16466			d(detaching) {
16467				if (detaching) {
16468					detach(each_1_anchor);
16469				}
16470
16471				destroy_each(each_blocks, detaching);
16472			}
16473		};
16474	}
16475
16476	// (111:6) {#if attributeSchema["input-type"] === "range" && value != null}
16477	function create_if_block_6$7(ctx) {
16478		let output;
16479		let t;
16480
16481		return {
16482			c() {
16483				output = element("output");
16484				t = text(/*value*/ ctx[2]);
16485				attr(output, "class", "zephr-form-input-slider-output svelte-wlae04");
16486				toggle_class(output, "zephr-payment-form-input-slider-output", /*isPaymentForm*/ ctx[3]);
16487			},
16488			m(target, anchor) {
16489				insert(target, output, anchor);
16490				append(output, t);
16491			},
16492			p(ctx, dirty) {
16493				if (dirty & /*value*/ 4) set_data(t, /*value*/ ctx[2]);
16494
16495				if (dirty & /*isPaymentForm*/ 8) {
16496					toggle_class(output, "zephr-payment-form-input-slider-output", /*isPaymentForm*/ ctx[3]);
16497				}
16498			},
16499			d(detaching) {
16500				if (detaching) {
16501					detach(output);
16502				}
16503			}
16504		};
16505	}
16506
16507	// (78:6) {#each attributeSchema?.["select-options"] as option}
16508	function create_each_block_1$4(ctx) {
16509		let option_1;
16510		let t0_value = /*option*/ ctx[19].label + "";
16511		let t0;
16512		let t1;
16513		let option_1_value_value;
16514		let option_1_selected_value;
16515
16516		return {
16517			c() {
16518				option_1 = element("option");
16519				t0 = text(t0_value);
16520				t1 = space();
16521				option_1.__value = option_1_value_value = /*option*/ ctx[19].value;
16522				set_input_value(option_1, option_1.__value);
16523				option_1.selected = option_1_selected_value = /*value*/ ctx[2] === /*option*/ ctx[19].value;
16524			},
16525			m(target, anchor) {
16526				insert(target, option_1, anchor);
16527				append(option_1, t0);
16528				append(option_1, t1);
16529			},
16530			p(ctx, dirty) {
16531				if (dirty & /*attributeSchema*/ 2 && t0_value !== (t0_value = /*option*/ ctx[19].label + "")) set_data(t0, t0_value);
16532
16533				if (dirty & /*attributeSchema*/ 2 && option_1_value_value !== (option_1_value_value = /*option*/ ctx[19].value)) {
16534					option_1.__value = option_1_value_value;
16535					set_input_value(option_1, option_1.__value);
16536				}
16537
16538				if (dirty & /*value, attributeSchema*/ 6 && option_1_selected_value !== (option_1_selected_value = /*value*/ ctx[2] === /*option*/ ctx[19].value)) {
16539					option_1.selected = option_1_selected_value;
16540				}
16541			},
16542			d(detaching) {
16543				if (detaching) {
16544					detach(option_1);
16545				}
16546			}
16547		};
16548	}
16549
16550	// (35:4) {#each attributeSchema?.["select-options"] as option}
16551	function create_each_block$e(ctx) {
16552		let radio;
16553		let current;
16554
16555		radio = new Radio({
16556				props: {
16557					id: "" + (/*id*/ ctx[10] + "-" + /*option*/ ctx[19].value),
16558					name: /*config*/ ctx[0].slug,
16559					label: /*option*/ ctx[19].label,
16560					required: /*config*/ ctx[0].required || /*attributeSchema*/ ctx[1]?.required,
16561					value: /*option*/ ctx[19].value,
16562					checked: /*value*/ ctx[2] === /*option*/ ctx[19].value,
16563					hasError: /*hasError*/ ctx[8],
16564					isPaymentForm: /*isPaymentForm*/ ctx[3]
16565				}
16566			});
16567
16568		radio.$on("change", /*change_handler*/ ctx[13]);
16569
16570		return {
16571			c() {
16572				create_component(radio.$$.fragment);
16573			},
16574			m(target, anchor) {
16575				mount_component(radio, target, anchor);
16576				current = true;
16577			},
16578			p(ctx, dirty) {
16579				const radio_changes = {};
16580				if (dirty & /*attributeSchema*/ 2) radio_changes.id = "" + (/*id*/ ctx[10] + "-" + /*option*/ ctx[19].value);
16581				if (dirty & /*config*/ 1) radio_changes.name = /*config*/ ctx[0].slug;
16582				if (dirty & /*attributeSchema*/ 2) radio_changes.label = /*option*/ ctx[19].label;
16583				if (dirty & /*config, attributeSchema*/ 3) radio_changes.required = /*config*/ ctx[0].required || /*attributeSchema*/ ctx[1]?.required;
16584				if (dirty & /*attributeSchema*/ 2) radio_changes.value = /*option*/ ctx[19].value;
16585				if (dirty & /*value, attributeSchema*/ 6) radio_changes.checked = /*value*/ ctx[2] === /*option*/ ctx[19].value;
16586				if (dirty & /*hasError*/ 256) radio_changes.hasError = /*hasError*/ ctx[8];
16587				if (dirty & /*isPaymentForm*/ 8) radio_changes.isPaymentForm = /*isPaymentForm*/ ctx[3];
16588				radio.$set(radio_changes);
16589			},
16590			i(local) {
16591				if (current) return;
16592				transition_in(radio.$$.fragment, local);
16593				current = true;
16594			},
16595			o(local) {
16596				transition_out(radio.$$.fragment, local);
16597				current = false;
16598			},
16599			d(detaching) {
16600				destroy_component(radio, detaching);
16601			}
16602		};
16603	}
16604
16605	// (24:0) <Label   forInput={id}   sublabel={attributeSchema["public-description"]}   label={!/(hidden|checkbox)/.test(attributeSchema?.["input-type"] || "")     ? `${config.label}${         config.required || attributeSchema?.required ? "*" : ""       }`     : ""}   {isPaymentForm} >
16606	function create_default_slot$5(ctx) {
16607		let current_block_type_index;
16608		let if_block;
16609		let if_block_anchor;
16610		let current;
16611
16612		const if_block_creators = [
16613			create_if_block_1$q,
16614			create_if_block_2$g,
16615			create_if_block_3$b,
16616			create_if_block_4$9,
16617			create_if_block_5$7,
16618			create_else_block$8
16619		];
16620
16621		const if_blocks = [];
16622
16623		function select_block_type(ctx, dirty) {
16624			if (/*attributeSchema*/ ctx[1]?.["input-type"] === "radio") return 0;
16625			if (/*attributeSchema*/ ctx[1]?.["input-type"] === "checkbox") return 1;
16626			if (/*attributeSchema*/ ctx[1]?.["input-type"] === "select") return 2;
16627			if (/*attributeSchema*/ ctx[1]?.["input-type"] === "textarea") return 3;
16628			if (/*attributeSchema*/ ctx[1]?.["input-type"] === "range") return 4;
16629			return 5;
16630		}
16631
16632		current_block_type_index = select_block_type(ctx);
16633		if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
16634
16635		return {
16636			c() {
16637				if_block.c();
16638				if_block_anchor = empty();
16639			},
16640			m(target, anchor) {
16641				if_blocks[current_block_type_index].m(target, anchor);
16642				insert(target, if_block_anchor, anchor);
16643				current = true;
16644			},
16645			p(ctx, dirty) {
16646				let previous_block_index = current_block_type_index;
16647				current_block_type_index = select_block_type(ctx);
16648
16649				if (current_block_type_index === previous_block_index) {
16650					if_blocks[current_block_type_index].p(ctx, dirty);
16651				} else {
16652					group_outros();
16653
16654					transition_out(if_blocks[previous_block_index], 1, 1, () => {
16655						if_blocks[previous_block_index] = null;
16656					});
16657
16658					check_outros();
16659					if_block = if_blocks[current_block_type_index];
16660
16661					if (!if_block) {
16662						if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
16663						if_block.c();
16664					} else {
16665						if_block.p(ctx, dirty);
16666					}
16667
16668					transition_in(if_block, 1);
16669					if_block.m(if_block_anchor.parentNode, if_block_anchor);
16670				}
16671			},
16672			i(local) {
16673				if (current) return;
16674				transition_in(if_block);
16675				current = true;
16676			},
16677			o(local) {
16678				transition_out(if_block);
16679				current = false;
16680			},
16681			d(detaching) {
16682				if (detaching) {
16683					detach(if_block_anchor);
16684				}
16685
16686				if_blocks[current_block_type_index].d(detaching);
16687			}
16688		};
16689	}
16690
16691	// (138:0) {#if hasError}
16692	function create_if_block$A(ctx) {
16693		let div;
16694
16695		return {
16696			c() {
16697				div = element("div");
16698				div.textContent = "Mandatory information must be entered";
16699				attr(div, "class", "zephr-form-input-error-text svelte-wlae04");
16700				toggle_class(div, "zephr-payment-form-input-error-text", /*isPaymentForm*/ ctx[3]);
16701			},
16702			m(target, anchor) {
16703				insert(target, div, anchor);
16704			},
16705			p(ctx, dirty) {
16706				if (dirty & /*isPaymentForm*/ 8) {
16707					toggle_class(div, "zephr-payment-form-input-error-text", /*isPaymentForm*/ ctx[3]);
16708				}
16709			},
16710			d(detaching) {
16711				if (detaching) {
16712					detach(div);
16713				}
16714			}
16715		};
16716	}
16717
16718	function create_fragment$M(ctx) {
16719		let label;
16720		let t;
16721		let if_block_anchor;
16722		let current;
16723
16724		label = new Label({
16725				props: {
16726					forInput: /*id*/ ctx[10],
16727					sublabel: /*attributeSchema*/ ctx[1]["public-description"],
16728					label: !(/(hidden|checkbox)/).test(/*attributeSchema*/ ctx[1]?.["input-type"] || "")
16729					? `${/*config*/ ctx[0].label}${/*config*/ ctx[0].required || /*attributeSchema*/ ctx[1]?.required
16730					? "*"
16731					: ""}`
16732					: "",
16733					isPaymentForm: /*isPaymentForm*/ ctx[3],
16734					$$slots: { default: [create_default_slot$5] },
16735					$$scope: { ctx }
16736				}
16737			});
16738
16739		let if_block = /*hasError*/ ctx[8] && create_if_block$A(ctx);
16740
16741		return {
16742			c() {
16743				create_component(label.$$.fragment);
16744				t = space();
16745				if (if_block) if_block.c();
16746				if_block_anchor = empty();
16747			},
16748			m(target, anchor) {
16749				mount_component(label, target, anchor);
16750				insert(target, t, anchor);
16751				if (if_block) if_block.m(target, anchor);
16752				insert(target, if_block_anchor, anchor);
16753				current = true;
16754			},
16755			p(ctx, [dirty]) {
16756				const label_changes = {};
16757				if (dirty & /*attributeSchema*/ 2) label_changes.sublabel = /*attributeSchema*/ ctx[1]["public-description"];
16758
16759				if (dirty & /*attributeSchema, config*/ 3) label_changes.label = !(/(hidden|checkbox)/).test(/*attributeSchema*/ ctx[1]?.["input-type"] || "")
16760				? `${/*config*/ ctx[0].label}${/*config*/ ctx[0].required || /*attributeSchema*/ ctx[1]?.required
16761				? "*"
16762				: ""}`
16763				: "";
16764
16765				if (dirty & /*isPaymentForm*/ 8) label_changes.isPaymentForm = /*isPaymentForm*/ ctx[3];
16766
16767				if (dirty & /*$$scope, attributeSchema, config, value, hasError, isPaymentForm, onChange, currentValue, onFocus, onBlur*/ 16777727) {
16768					label_changes.$$scope = { dirty, ctx };
16769				}
16770
16771				label.$set(label_changes);
16772
16773				if (/*hasError*/ ctx[8]) {
16774					if (if_block) {
16775						if_block.p(ctx, dirty);
16776					} else {
16777						if_block = create_if_block$A(ctx);
16778						if_block.c();
16779						if_block.m(if_block_anchor.parentNode, if_block_anchor);
16780					}
16781				} else if (if_block) {
16782					if_block.d(1);
16783					if_block = null;
16784				}
16785			},
16786			i(local) {
16787				if (current) return;
16788				transition_in(label.$$.fragment, local);
16789				current = true;
16790			},
16791			o(local) {
16792				transition_out(label.$$.fragment, local);
16793				current = false;
16794			},
16795			d(detaching) {
16796				if (detaching) {
16797					detach(t);
16798					detach(if_block_anchor);
16799				}
16800
16801				destroy_component(label, detaching);
16802				if (if_block) if_block.d(detaching);
16803			}
16804		};
16805	}
16806
16807	function instance$L($$self, $$props, $$invalidate) {
16808		let hasError;
16809		let { formKey } = $$props;
16810		let { config } = $$props;
16811		let { attributeSchema } = $$props;
16812		let { value } = $$props;
16813		let { error } = $$props;
16814		let { isPaymentForm = false } = $$props;
16815		let { onChange } = $$props;
16816		let { onFocus } = $$props;
16817		let { onBlur } = $$props;
16818		let currentValue = value;
16819
16820		// Casting functions for typescript
16821		const asSelect = target => target;
16822
16823		const id = `zephr-form-${config.slug}-${formKey}`;
16824		const change_handler = ({ detail }) => onChange(detail);
16825		const change_handler_1 = ({ detail }) => onChange(detail);
16826		const change_handler_2 = e => onChange(asSelect(e.target).value);
16827
16828		function textarea_input_handler() {
16829			currentValue = this.value;
16830			$$invalidate(7, currentValue);
16831		}
16832
16833		const change_handler_3 = ({ detail }) => onChange(detail);
16834		const change_handler_4 = ({ detail }) => onChange(detail);
16835
16836		$$self.$$set = $$props => {
16837			if ('formKey' in $$props) $$invalidate(11, formKey = $$props.formKey);
16838			if ('config' in $$props) $$invalidate(0, config = $$props.config);
16839			if ('attributeSchema' in $$props) $$invalidate(1, attributeSchema = $$props.attributeSchema);
16840			if ('value' in $$props) $$invalidate(2, value = $$props.value);
16841			if ('error' in $$props) $$invalidate(12, error = $$props.error);
16842			if ('isPaymentForm' in $$props) $$invalidate(3, isPaymentForm = $$props.isPaymentForm);
16843			if ('onChange' in $$props) $$invalidate(4, onChange = $$props.onChange);
16844			if ('onFocus' in $$props) $$invalidate(5, onFocus = $$props.onFocus);
16845			if ('onBlur' in $$props) $$invalidate(6, onBlur = $$props.onBlur);
16846		};
16847
16848		$$self.$$.update = () => {
16849			if ($$self.$$.dirty & /*error*/ 4096) {
16850				$$invalidate(8, hasError = !!error);
16851			}
16852
16853			if ($$self.$$.dirty & /*attributeSchema, currentValue, value, onChange*/ 150) {
16854				if (attributeSchema?.["input-type"] === "textarea" && currentValue !== value) {
16855					onChange(currentValue);
16856				}
16857			}
16858		};
16859
16860		return [
16861			config,
16862			attributeSchema,
16863			value,
16864			isPaymentForm,
16865			onChange,
16866			onFocus,
16867			onBlur,
16868			currentValue,
16869			hasError,
16870			asSelect,
16871			id,
16872			formKey,
16873			error,
16874			change_handler,
16875			change_handler_1,
16876			change_handler_2,
16877			textarea_input_handler,
16878			change_handler_3,
16879			change_handler_4
16880		];
16881	}
16882
16883	class UserAttribute extends SvelteComponent {
16884		constructor(options) {
16885			super();
16886
16887			init(this, options, instance$L, create_fragment$M, safe_not_equal, {
16888				formKey: 11,
16889				config: 0,
16890				attributeSchema: 1,
16891				value: 2,
16892				error: 12,
16893				isPaymentForm: 3,
16894				onChange: 4,
16895				onFocus: 5,
16896				onBlur: 6
16897			});
16898		}
16899	}
16900
16901	const isEmpty = value => value == null || value === "";
16902	const factory$j = {
16903	    matches: (sectionElement) => sectionElement.type === elementTypes.USER_ATTRIBUTE,
16904	    create: (form, formState, formActions, elementConfig) => {
16905	        const attributeSchema = form.organisationConfiguration.schemaFields.find(s => s.slug === elementConfig.slug);
16906	        const hide = formState.hideIfSetAttributes?.includes(elementConfig.slug);
16907	        if (attributeSchema == undefined || hide) {
16908	            return undefined;
16909	        }
16910	        const required = attributeSchema.required || elementConfig.required;
16911	        const currentValue = (formState.userAttributes[elementConfig.slug] ?? (formState.readOnlyAttributeValues ?? {})[elementConfig.slug]);
16912	        return {
16913	            component: UserAttribute,
16914	            props: {
16915	                formKey: form.uniqueKey,
16916	                config: elementConfig,
16917	                value: currentValue,
16918	                attributeSchema,
16919	                isPaymentForm: form.formType === FormType.PAYMENT,
16920	                onChange: (value) => {
16921	                    formActions.updateFormState({
16922	                        userAttributes: {
16923	                            ...formState.userAttributes,
16924	                            [elementConfig.slug]: value
16925	                        }
16926	                    });
16927	                    logDataLayerEvent(form, 'zephr_form_input_change', {
16928	                        inputName: `zephr-form-${elementConfig.slug}-${form.uniqueKey}`,
16929	                        sectionId: formState.currentSection.type,
16930	                        field: elementConfig.slug
16931	                    });
16932	                },
16933	                onFocus: () => logDataLayerEvent(form, 'zephr_form_input_focus', {
16934	                    inputName: `zephr-form-${elementConfig.slug}-${form.uniqueKey}`,
16935	                    sectionId: formState.currentSection.type,
16936	                    field: elementConfig.slug
16937	                }),
16938	                onBlur: () => logDataLayerEvent(form, 'zephr_form_input_blur', {
16939	                    inputName: `zephr-form-${elementConfig.slug}-${form.uniqueKey}`,
16940	                    sectionId: formState.currentSection.type,
16941	                    field: elementConfig.slug
16942	                }),
16943	            },
16944	            isValid: !(required && isEmpty(currentValue))
16945	                && !(required && attributeSchema["input-type"] === 'checkbox' && !currentValue)
16946	                && !(attributeSchema["input-type"] === 'email' && !isEmpty(currentValue) && !isValidEmail(currentValue))
16947	        };
16948	    }
16949	};
16950
16951	/* src/components/elements/Link.svelte generated by Svelte v4.2.12 */
16952
16953	function create_fragment$L(ctx) {
16954		let button;
16955		let t;
16956		let mounted;
16957		let dispose;
16958
16959		return {
16960			c() {
16961				button = element("button");
16962				t = text(/*text*/ ctx[0]);
16963				attr(button, "type", "button");
16964				attr(button, "class", "zephr-form-link svelte-14vxk2u");
16965				toggle_class(button, "zephr-form-link-disabled", /*disabled*/ ctx[1]);
16966				toggle_class(button, "zephr-form-link-no-underline", /*noUnderline*/ ctx[3]);
16967			},
16968			m(target, anchor) {
16969				insert(target, button, anchor);
16970				append(button, t);
16971
16972				if (!mounted) {
16973					dispose = listen(button, "click", /*click_handler*/ ctx[5]);
16974					mounted = true;
16975				}
16976			},
16977			p(ctx, [dirty]) {
16978				if (dirty & /*text*/ 1) set_data(t, /*text*/ ctx[0]);
16979
16980				if (dirty & /*disabled*/ 2) {
16981					toggle_class(button, "zephr-form-link-disabled", /*disabled*/ ctx[1]);
16982				}
16983
16984				if (dirty & /*noUnderline*/ 8) {
16985					toggle_class(button, "zephr-form-link-no-underline", /*noUnderline*/ ctx[3]);
16986				}
16987			},
16988			i: noop,
16989			o: noop,
16990			d(detaching) {
16991				if (detaching) {
16992					detach(button);
16993				}
16994
16995				mounted = false;
16996				dispose();
16997			}
16998		};
16999	}
17000
17001	function instance$K($$self, $$props, $$invalidate) {
17002		let { text } = $$props;
17003		let { disabled = false } = $$props;
17004
17005		let { onClick = () => {
17006			
17007		} } = $$props;
17008
17009		let { noUnderline = false } = $$props;
17010		const dispatch = createEventDispatcher();
17011
17012		const click_handler = () => {
17013			onClick();
17014			dispatch('linkClick', null);
17015		};
17016
17017		$$self.$$set = $$props => {
17018			if ('text' in $$props) $$invalidate(0, text = $$props.text);
17019			if ('disabled' in $$props) $$invalidate(1, disabled = $$props.disabled);
17020			if ('onClick' in $$props) $$invalidate(2, onClick = $$props.onClick);
17021			if ('noUnderline' in $$props) $$invalidate(3, noUnderline = $$props.noUnderline);
17022		};
17023
17024		return [text, disabled, onClick, noUnderline, dispatch, click_handler];
17025	}
17026
17027	class Link extends SvelteComponent {
17028		constructor(options) {
17029			super();
17030
17031			init(this, options, instance$K, create_fragment$L, safe_not_equal, {
17032				text: 0,
17033				disabled: 1,
17034				onClick: 2,
17035				noUnderline: 3
17036			});
17037		}
17038	}
17039
17040	/* src/components/elements/resetPasswordLink/ResetPasswordLink.svelte generated by Svelte v4.2.12 */
17041
17042	function create_else_block$7(ctx) {
17043		let link;
17044		let current;
17045
17046		link = new Link({
17047				props: {
17048					text: /*text*/ ctx[0],
17049					onClick: /*onClick*/ ctx[2]
17050				}
17051			});
17052
17053		link.$on("linkClick", /*linkClick_handler*/ ctx[7]);
17054
17055		return {
17056			c() {
17057				create_component(link.$$.fragment);
17058			},
17059			m(target, anchor) {
17060				mount_component(link, target, anchor);
17061				current = true;
17062			},
17063			p(ctx, dirty) {
17064				const link_changes = {};
17065				if (dirty & /*text*/ 1) link_changes.text = /*text*/ ctx[0];
17066				if (dirty & /*onClick*/ 4) link_changes.onClick = /*onClick*/ ctx[2];
17067				link.$set(link_changes);
17068			},
17069			i(local) {
17070				if (current) return;
17071				transition_in(link.$$.fragment, local);
17072				current = true;
17073			},
17074			o(local) {
17075				transition_out(link.$$.fragment, local);
17076				current = false;
17077			},
17078			d(detaching) {
17079				destroy_component(link, detaching);
17080			}
17081		};
17082	}
17083
17084	// (16:2) {#if showMessage && !error}
17085	function create_if_block_1$p(ctx) {
17086		let div;
17087		let t;
17088
17089		return {
17090			c() {
17091				div = element("div");
17092				t = text(/*message*/ ctx[1]);
17093				attr(div, "class", "zephr-form-link-message svelte-49aomy");
17094			},
17095			m(target, anchor) {
17096				insert(target, div, anchor);
17097				append(div, t);
17098			},
17099			p(ctx, dirty) {
17100				if (dirty & /*message*/ 2) set_data(t, /*message*/ ctx[1]);
17101			},
17102			i: noop,
17103			o: noop,
17104			d(detaching) {
17105				if (detaching) {
17106					detach(div);
17107				}
17108			}
17109		};
17110	}
17111
17112	// (32:2) {#if error}
17113	function create_if_block$z(ctx) {
17114		let errormessage;
17115		let current;
17116
17117		errormessage = new ErrorMessage({
17118				props: {
17119					error: /*error*/ ctx[3],
17120					isPaymentForm: /*isPaymentForm*/ ctx[5]
17121				}
17122			});
17123
17124		return {
17125			c() {
17126				create_component(errormessage.$$.fragment);
17127			},
17128			m(target, anchor) {
17129				mount_component(errormessage, target, anchor);
17130				current = true;
17131			},
17132			p(ctx, dirty) {
17133				const errormessage_changes = {};
17134				if (dirty & /*error*/ 8) errormessage_changes.error = /*error*/ ctx[3];
17135				if (dirty & /*isPaymentForm*/ 32) errormessage_changes.isPaymentForm = /*isPaymentForm*/ ctx[5];
17136				errormessage.$set(errormessage_changes);
17137			},
17138			i(local) {
17139				if (current) return;
17140				transition_in(errormessage.$$.fragment, local);
17141				current = true;
17142			},
17143			o(local) {
17144				transition_out(errormessage.$$.fragment, local);
17145				current = false;
17146			},
17147			d(detaching) {
17148				destroy_component(errormessage, detaching);
17149			}
17150		};
17151	}
17152
17153	function create_fragment$K(ctx) {
17154		let div;
17155		let current_block_type_index;
17156		let if_block0;
17157		let t;
17158		let current;
17159		const if_block_creators = [create_if_block_1$p, create_else_block$7];
17160		const if_blocks = [];
17161
17162		function select_block_type(ctx, dirty) {
17163			if (/*showMessage*/ ctx[6] && !/*error*/ ctx[3]) return 0;
17164			return 1;
17165		}
17166
17167		current_block_type_index = select_block_type(ctx);
17168		if_block0 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
17169		let if_block1 = /*error*/ ctx[3] && create_if_block$z(ctx);
17170
17171		return {
17172			c() {
17173				div = element("div");
17174				if_block0.c();
17175				t = space();
17176				if (if_block1) if_block1.c();
17177				attr(div, "class", "zephr-form-flex-container zephr-form-reset-link-container svelte-49aomy");
17178				toggle_class(div, "zephr-payment-form-flex-container", /*isPaymentForm*/ ctx[5]);
17179			},
17180			m(target, anchor) {
17181				insert(target, div, anchor);
17182				if_blocks[current_block_type_index].m(div, null);
17183				append(div, t);
17184				if (if_block1) if_block1.m(div, null);
17185				current = true;
17186			},
17187			p(ctx, [dirty]) {
17188				let previous_block_index = current_block_type_index;
17189				current_block_type_index = select_block_type(ctx);
17190
17191				if (current_block_type_index === previous_block_index) {
17192					if_blocks[current_block_type_index].p(ctx, dirty);
17193				} else {
17194					group_outros();
17195
17196					transition_out(if_blocks[previous_block_index], 1, 1, () => {
17197						if_blocks[previous_block_index] = null;
17198					});
17199
17200					check_outros();
17201					if_block0 = if_blocks[current_block_type_index];
17202
17203					if (!if_block0) {
17204						if_block0 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
17205						if_block0.c();
17206					} else {
17207						if_block0.p(ctx, dirty);
17208					}
17209
17210					transition_in(if_block0, 1);
17211					if_block0.m(div, t);
17212				}
17213
17214				if (/*error*/ ctx[3]) {
17215					if (if_block1) {
17216						if_block1.p(ctx, dirty);
17217
17218						if (dirty & /*error*/ 8) {
17219							transition_in(if_block1, 1);
17220						}
17221					} else {
17222						if_block1 = create_if_block$z(ctx);
17223						if_block1.c();
17224						transition_in(if_block1, 1);
17225						if_block1.m(div, null);
17226					}
17227				} else if (if_block1) {
17228					group_outros();
17229
17230					transition_out(if_block1, 1, 1, () => {
17231						if_block1 = null;
17232					});
17233
17234					check_outros();
17235				}
17236
17237				if (!current || dirty & /*isPaymentForm*/ 32) {
17238					toggle_class(div, "zephr-payment-form-flex-container", /*isPaymentForm*/ ctx[5]);
17239				}
17240			},
17241			i(local) {
17242				if (current) return;
17243				transition_in(if_block0);
17244				transition_in(if_block1);
17245				current = true;
17246			},
17247			o(local) {
17248				transition_out(if_block0);
17249				transition_out(if_block1);
17250				current = false;
17251			},
17252			d(detaching) {
17253				if (detaching) {
17254					detach(div);
17255				}
17256
17257				if_blocks[current_block_type_index].d();
17258				if (if_block1) if_block1.d();
17259			}
17260		};
17261	}
17262
17263	function instance$J($$self, $$props, $$invalidate) {
17264		let { text } = $$props;
17265		let { message } = $$props;
17266		let { onClick } = $$props;
17267		let { error = null } = $$props;
17268		let { delayMs } = $$props;
17269		let { isPaymentForm = false } = $$props;
17270		let showMessage = false;
17271
17272		const linkClick_handler = () => {
17273			if (message) {
17274				$$invalidate(6, showMessage = true);
17275				setTimeout(() =>
17275 $$invalidate(6, showMessage = false), delayMs);
17276			}
17277		};
17278
17279		$$self.$$set = $$props => {
17280			if ('text' in $$props) $$invalidate(0, text = $$props.text);
17281			if ('message' in $$props) $$invalidate(1, message = $$props.message);
17282			if ('onClick' in $$props) $$invalidate(2, onClick = $$props.onClick);
17283			if ('error' in $$props) $$invalidate(3, error = $$props.error);
17284			if ('delayMs' in $$props) $$invalidate(4, delayMs = $$props.delayMs);
17285			if ('isPaymentForm' in $$props) $$invalidate(5, isPaymentForm = $$props.isPaymentForm);
17286		};
17287
17288		return [
17289			text,
17290			message,
17291			onClick,
17292			error,
17293			delayMs,
17294			isPaymentForm,
17295			showMessage,
17296			linkClick_handler
17297		];
17298	}
17299
17300	class ResetPasswordLink extends SvelteComponent {
17301		constructor(options) {
17302			super();
17303
17304			init(this, options, instance$J, create_fragment$K, safe_not_equal, {
17305				text: 0,
17306				message: 1,
17307				onClick: 2,
17308				error: 3,
17309				delayMs: 4,
17310				isPaymentForm: 5
17311			});
17312		}
17313	}
17314
17315	const factory$i = {
17316	    matches: (sectionElement) => sectionElement.type === elementTypes.RESET_PASSWORD_LINK,
17317	    create: (form, formState, formActions, elementConfig) => ({
17318	        component: ResetPasswordLink,
17319	        props: {
17320	            text: elementConfig.text,
17321	            message: elementConfig.message,
17322	            delayMs: form.environment.reduceDelays ? 1 : 3000,
17323	            isPaymentForm: form.formType === FormType.PAYMENT,
17324	            onClick: async () => {
17325	                logDataLayerEvent(form, 'zephr_form_button_press', {
17326	                    sectionId: formState.currentSection.type,
17327	                    buttonType: 'RESET_PASSWORD_LINK'
17328	                });
17329	                await sendPasswordResetCode(form, formState, formActions);
17330	            }
17331	        }
17332	    })
17333	};
17334
17335	/* src/components/elements/resendLoginLink/ResendLoginLink.svelte generated by Svelte v4.2.12 */
17336
17337	function create_else_block$6(ctx) {
17338		let link;
17339		let current;
17340
17341		link = new Link({
17342				props: {
17343					text: /*text*/ ctx[0],
17344					onClick: /*onClick*/ ctx[2]
17345				}
17346			});
17347
17348		link.$on("linkClick", /*linkClick_handler*/ ctx[7]);
17349
17350		return {
17351			c() {
17352				create_component(link.$$.fragment);
17353			},
17354			m(target, anchor) {
17355				mount_component(link, target, anchor);
17356				current = true;
17357			},
17358			p(ctx, dirty) {
17359				const link_changes = {};
17360				if (dirty & /*text*/ 1) link_changes.text = /*text*/ ctx[0];
17361				if (dirty & /*onClick*/ 4) link_changes.onClick = /*onClick*/ ctx[2];
17362				link.$set(link_changes);
17363			},
17364			i(local) {
17365				if (current) return;
17366				transition_in(link.$$.fragment, local);
17367				current = true;
17368			},
17369			o(local) {
17370				transition_out(link.$$.fragment, local);
17371				current = false;
17372			},
17373			d(detaching) {
17374				destroy_component(link, detaching);
17375			}
17376		};
17377	}
17378
17379	// (16:2) {#if showMessage && !error}
17380	function create_if_block_1$o(ctx) {
17381		let div;
17382		let t;
17383
17384		return {
17385			c() {
17386				div = element("div");
17387				t = text(/*message*/ ctx[1]);
17388				attr(div, "class", "zephr-form-link-message svelte-49aomy");
17389			},
17390			m(target, anchor) {
17391				insert(target, div, anchor);
17392				append(div, t);
17393			},
17394			p(ctx, dirty) {
17395				if (dirty & /*message*/ 2) set_data(t, /*message*/ ctx[1]);
17396			},
17397			i: noop,
17398			o: noop,
17399			d(detaching) {
17400				if (detaching) {
17401					detach(div);
17402				}
17403			}
17404		};
17405	}
17406
17407	// (32:2) {#if error}
17408	function create_if_block$y(ctx) {
17409		let errormessage;
17410		let current;
17411
17412		errormessage = new ErrorMessage({
17413				props: {
17414					error: /*error*/ ctx[3],
17415					isPaymentForm: /*isPaymentForm*/ ctx[5]
17416				}
17417			});
17418
17419		return {
17420			c() {
17421				create_component(errormessage.$$.fragment);
17422			},
17423			m(target, anchor) {
17424				mount_component(errormessage, target, anchor);
17425				current = true;
17426			},
17427			p(ctx, dirty) {
17428				const errormessage_changes = {};
17429				if (dirty & /*error*/ 8) errormessage_changes.error = /*error*/ ctx[3];
17430				if (dirty & /*isPaymentForm*/ 32) errormessage_changes.isPaymentForm = /*isPaymentForm*/ ctx[5];
17431				errormessage.$set(errormessage_changes);
17432			},
17433			i(local) {
17434				if (current) return;
17435				transition_in(errormessage.$$.fragment, local);
17436				current = true;
17437			},
17438			o(local) {
17439				transition_out(errormessage.$$.fragment, local);
17440				current = false;
17441			},
17442			d(detaching) {
17443				destroy_component(errormessage, detaching);
17444			}
17445		};
17446	}
17447
17448	function create_fragment$J(ctx) {
17449		let div;
17450		let current_block_type_index;
17451		let if_block0;
17452		let t;
17453		let current;
17454		const if_block_creators = [create_if_block_1$o, create_else_block$6];
17455		const if_blocks = [];
17456
17457		function select_block_type(ctx, dirty) {
17458			if (/*showMessage*/ ctx[6] && !/*error*/ ctx[3]) return 0;
17459			return 1;
17460		}
17461
17462		current_block_type_index = select_block_type(ctx);
17463		if_block0 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
17464		let if_block1 = /*error*/ ctx[3] && create_if_block$y(ctx);
17465
17466		return {
17467			c() {
17468				div = element("div");
17469				if_block0.c();
17470				t = space();
17471				if (if_block1) if_block1.c();
17472				attr(div, "class", "zephr-form-flex-container zephr-form-reset-link-container svelte-49aomy");
17473				toggle_class(div, "zephr-payment-form-flex-container", /*isPaymentForm*/ ctx[5]);
17474			},
17475			m(target, anchor) {
17476				insert(target, div, anchor);
17477				if_blocks[current_block_type_index].m(div, null);
17478				append(div, t);
17479				if (if_block1) if_block1.m(div, null);
17480				current = true;
17481			},
17482			p(ctx, [dirty]) {
17483				let previous_block_index = current_block_type_index;
17484				current_block_type_index = select_block_type(ctx);
17485
17486				if (current_block_type_index === previous_block_index) {
17487					if_blocks[current_block_type_index].p(ctx, dirty);
17488				} else {
17489					group_outros();
17490
17491					transition_out(if_blocks[previous_block_index], 1, 1, () => {
17492						if_blocks[previous_block_index] = null;
17493					});
17494
17495					check_outros();
17496					if_block0 = if_blocks[current_block_type_index];
17497
17498					if (!if_block0) {
17499						if_block0 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
17500						if_block0.c();
17501					} else {
17502						if_block0.p(ctx, dirty);
17503					}
17504
17505					transition_in(if_block0, 1);
17506					if_block0.m(div, t);
17507				}
17508
17509				if (/*error*/ ctx[3]) {
17510					if (if_block1) {
17511						if_block1.p(ctx, dirty);
17512
17513						if (dirty & /*error*/ 8) {
17514							transition_in(if_block1, 1);
17515						}
17516					} else {
17517						if_block1 = create_if_block$y(ctx);
17518						if_block1.c();
17519						transition_in(if_block1, 1);
17520						if_block1.m(div, null);
17521					}
17522				} else if (if_block1) {
17523					group_outros();
17524
17525					transition_out(if_block1, 1, 1, () => {
17526						if_block1 = null;
17527					});
17528
17529					check_outros();
17530				}
17531
17532				if (!current || dirty & /*isPaymentForm*/ 32) {
17533					toggle_class(div, "zephr-payment-form-flex-container", /*isPaymentForm*/ ctx[5]);
17534				}
17535			},
17536			i(local) {
17537				if (current) return;
17538				transition_in(if_block0);
17539				transition_in(if_block1);
17540				current = true;
17541			},
17542			o(local) {
17543				transition_out(if_block0);
17544				transition_out(if_block1);
17545				current = false;
17546			},
17547			d(detaching) {
17548				if (detaching) {
17549					detach(div);
17550				}
17551
17552				if_blocks[current_block_type_index].d();
17553				if (if_block1) if_block1.d();
17554			}
17555		};
17556	}
17557
17558	function instance$I($$self, $$props, $$invalidate) {
17559		let { text } = $$props;
17560		let { message } = $$props;
17561		let { onClick } = $$props;
17562		let { error = null } = $$props;
17563		let { delayMs } = $$props;
17564		let { isPaymentForm = false } = $$props;
17565		let showMessage = false;
17566
17567		const linkClick_handler = () => {
17568			if (message) {
17569				$$invalidate(6, showMessage = true);
17570				setTimeout(() =>
17570 $$invalidate(6, showMessage = false), delayMs);
17571			}
17572		};
17573
17574		$$self.$$set = $$props => {
17575			if ('text' in $$props) $$invalidate(0, text = $$props.text);
17576			if ('message' in $$props) $$invalidate(1, message = $$props.message);
17577			if ('onClick' in $$props) $$invalidate(2, onClick = $$props.onClick);
17578			if ('error' in $$props) $$invalidate(3, error = $$props.error);
17579			if ('delayMs' in $$props) $$invalidate(4, delayMs = $$props.delayMs);
17580			if ('isPaymentForm' in $$props) $$invalidate(5, isPaymentForm = $$props.isPaymentForm);
17581		};
17582
17583		return [
17584			text,
17585			message,
17586			onClick,
17587			error,
17588			delayMs,
17589			isPaymentForm,
17590			showMessage,
17591			linkClick_handler
17592		];
17593	}
17594
17595	class ResendLoginLink extends SvelteComponent {
17596		constructor(options) {
17597			super();
17598
17599			init(this, options, instance$I, create_fragment$J, safe_not_equal, {
17600				text: 0,
17601				message: 1,
17602				onClick: 2,
17603				error: 3,
17604				delayMs: 4,
17605				isPaymentForm: 5
17606			});
17607		}
17608	}
17609
17610	const factory$h = {
17611	    matches: (sectionElement) => sectionElement.type === elementTypes.RESEND_LOGIN_LINK,
17612	    create: (form, formState, formActions, elementConfig) => ({
17613	        component: ResendLoginLink,
17614	        props: {
17615	            text: elementConfig.text,
17616	            message: elementConfig.message,
17617	            delayMs: form.environment.reduceDelays ? 1 : 3000,
17618	            isPaymentForm: form.formType === FormType.PAYMENT,
17619	            onClick: async () => {
17620	                logDataLayerEvent(form, 'zephr_form_button_press', {
17621	                    sectionId: formState.currentSection.type,
17622	                    buttonType: 'RESEND_LOGIN_LINK'
17623	                });
17624	                await sendLink(form, 'login', formState.emailAddress, formActions);
17625	            }
17626	        }
17627	    })
17628	};
17629
17630	const oauthProviderWindowFeatures = "menubar=no,location=yes,resizable=no,scrollbars=no,status=no,width=500,height=600";
17631	const useOAuthProvider = (provider, form, formActions) => {
17632	    formActions.updateFormState({
17633	        socialSigninError: undefined
17634	    });
17635	    window.open(`${form.environment.apiUrlBase ?? ""}/blaize/oauth/${provider}`, provider + " sign-in", oauthProviderWindowFeatures);
17636	    const listener = messageAction(form, formActions);
17637	    window.zephrOAuthListener = listener;
17638	    window.addEventListener("message", listener);
17639	};
17640	const messageAction = (form, formActions) => (message) => {
17641	    if (!message?.data?.fromZephr) {
17642	        return;
17643	    }
17644	    window.removeEventListener("message", window.zephrOAuthListener);
17645	    form.environment.debugLogging && console.log("Social signin message:", message);
17646	    if (message.data.action === "register") {
17647	        // This is a fresh user who is registering, they may need to add some required attributes first.
17648	        // If not, register immediately.
17649	        const newFormState = formActions.updateFormState({
17650	            emailAddress: message.data.identifier,
17651	            socialSigninToken: message.data.stateKey,
17652	            userAttributes: message.data.userAttributes ?? {},
17653	            socialSignin: true,
17654	            userExists: false,
17655	            emailIsContact: undefined
17656	        });
17657	        if (formConfigAs(form).useVerificationCodes) {
17658	            void send2FaCode(form, newFormState, formActions);
17659	        }
17660	        void moveToNextSection(form, newFormState, formActions);
17661	    }
17662	    else if (message.data.action == "otp") {
17663	        // Already registered user and verification via OTP is needed
17664	        formActions.updateFormState({
17665	            emailAddress: message.data.identifier,
17666	            socialSigninToken: message.data.stateKey,
17667	            userAttributes: message.data.userAttributes ?? {},
17668	            socialSignin: true,
17669	            userExists: true,
17670	            emailIsContact: false
17671	        });
17672	        formActions.jumpToSection(sectionTypes.VERIFICATION_CODE_LOGIN.type);
17673	    }
17674	    else if (message.data.action === "login") {
17675	        // Already registered user who is now logged in.
17676	        document.cookie = message.data.cookie;
17677	        formActions.updateFormState({
17678	            socialSignin: true,
17679	            userExists: true,
17680	            loginRegistrationComplete: true,
17681	            emailIsContact: false
17682	        });
17683	        void formActions.onEvent(FormEvent.LOGIN_REGISTRATION_COMPLETE);
17684	    }
17685	    else {
17686	        // Failure
17687	        formActions.updateFormState({
17688	            socialSigninError: message.data.message ?? "Something went wrong. Please try again later!"
17689	        });
17690	    }
17691	};
17692
17693	var faMicrosoft = {
17694	  prefix: 'fab',
17695	  iconName: 'microsoft',
17696	  icon: [448, 512, [], "f3ca", "M0 32h214.6v214.6H0V32zm233.4 0H448v214.6H233.4V32zM0 265.4h214.6V480H0V265.4zm233.4 0H448V480H233.4V265.4z"]
17697	};
17698	var faApple = {
17699	  prefix: 'fab',
17700	  iconName: 'apple',
17701	  icon: [384, 512, [], "f179", "M318.7 268.7c-.2-36.7 16.4-64.4 50-84.8-18.8-26.9-47.2-41.7-84.7-44.6-35.5-2.8-74.3 20.7-88.5 20.7-15 0-49.4-19.7-76.4-19.7C63.3 141.2 4 184.8 4 273.5q0 39.3 14.4 81.2c12.8 36.7 59 126.7 107.2 125.2 25.2-.6 43-17.9 75.8-17.9 31.8 0 48.3 17.9 76.4 17.9 48.6-.7 90.4-82.5 102.6-119.3-65.2-30.7-61.7-90-61.7-91.9zm-56.6-164.2c27.3-32.4 24.8-61.9 24-72.5-24.1 1.4-52 16.4-67.9 34.9-17.5 19.8-27.8 44.3-25.6 71.9 26.1 2 49.9-11.4 69.5-34.3z"]
17702	};
17703	var faLinkedin = {
17704	  prefix: 'fab',
17705	  iconName: 'linkedin',
17706	  icon: [448, 512, [], "f08c", "M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"]
17707	};
17708	var faFacebook = {
17709	  prefix: 'fab',
17710	  iconName: 'facebook',
17711	  icon: [512, 512, [62000], "f09a", "M512 256C512 114.6 397.4 0 256 0S0 114.6 0 256C0 376 82.7 476.8 194.2 504.5V334.2H141.4V256h52.8V222.3c0-87.1 39.4-127.5 125-127.5c16.2 0 44.2 3.2 55.7 6.4V172c-6-.6-16.5-1-29.6-1c-42 0-58.2 15.9-58.2 57.2V256h83.6l-14.4 78.2H287V510.1C413.8 494.8 512 386.9 512 256h0z"]
17712	};
17713	var faTwitter = {
17714	  prefix: 'fab',
17715	  iconName: 'twitter',
17716	  icon: [512, 512, [], "f099", "M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"]
17717	};
17718
17719	/* src/components/elements/socialSignIn/GoogleLogo.svelte generated by Svelte v4.2.12 */
17720
17721	function create_fragment$I(ctx) {
17722		let svg;
17723		let path0;
17724		let path1;
17725		let path2;
17726		let path3;
17727
17728		return {
17729			c() {
17730				svg = svg_element("svg");
17731				path0 = svg_element("path");
17732				path1 = svg_element("path");
17733				path2 = svg_element("path");
17734				path3 = svg_element("path");
17735				attr(path0, "d", "M533.5 278.4c0-18.5-1.5-37.1-4.7-55.3H272.1v104.8h147c-6.1 33.8-25.7 63.7-54.4 82.7v68h87.7c51.5-47.4 81.1-117.4 81.1-200.2z");
17736				attr(path0, "fill", "#4285f4");
17737				attr(path1, "d", "M272.1 544.3c73.4 0 135.3-24.1 180.4-65.7l-87.7-68c-24.4 16.6-55.9 26-92.6 26-71 0-131.2-47.9-152.8-112.3H28.9v70.1c46.2 91.9 140.3 149.9 243.2 149.9z");
17738				attr(path1, "fill", "#34a853");
17739				attr(path2, "d", "M119.3 324.3c-11.4-33.8-11.4-70.4 0-104.2V150H28.9c-38.6 76.9-38.6 167.5 0 244.4l90.4-70.1z");
17740				attr(path2, "fill", "#fbbc04");
17741				attr(path3, "d", "M272.1 107.7c38.8-.6 76.3 14 104.4 40.8l77.7-77.7C405 24.6 339.7-.8 272.1 0 169.2 0 75.1 58 28.9 150l90.4 70.1c21.5-64.5 81.8-112.4 152.8-112.4z");
17742				attr(path3, "fill", "#ea4335");
17743				attr(svg, "class", "zephr-form-social-sign-in-icon zephr-form-google-icon svelte-aktnoc");
17744				attr(svg, "viewBox", "0 0 533.5 544.3");
17745				attr(svg, "xmlns", "http://www.w3.org/2000/svg");
17746			},
17747			m(target, anchor) {
17748				insert(target, svg, anchor);
17749				append(svg, path0);
17750				append(svg, path1);
17751				append(svg, path2);
17752				append(svg, path3);
17753			},
17754			p: noop,
17755			i: noop,
17756			o: noop,
17757			d(detaching) {
17758				if (detaching) {
17759					detach(svg);
17760				}
17761			}
17762		};
17763	}
17764
17765	class GoogleLogo extends SvelteComponent {
17766		constructor(options) {
17767			super();
17768			init(this, options, null, create_fragment$I, safe_not_equal, {});
17769		}
17770	}
17771
17772	/* src/components/elements/socialSignIn/SocialSignIn.svelte generated by Svelte v4.2.12 */
17773
17774	function get_each_context$d(ctx, list, i) {
17775		const child_ctx = ctx.slice();
17776		child_ctx[8] = list[i];
17777		return child_ctx;
17778	}
17779
17780	// (30:2) {#if config[option] === true && option !== 'labelText' && option !== 'allowEmptyLabel'}
17781	function create_if_block_1$n(ctx) {
17782		let button;
17783		let span1;
17784		let span0;
17785		let current_block_type_index;
17786		let if_block;
17787		let t0;
17788		let t1;
17789		let t2;
17790		let t3_value = /*option*/ ctx[8] + "";
17791		let t3;
17792		let current;
17793		let mounted;
17794		let dispose;
17795		const if_block_creators = [create_if_block_2$f, create_else_block$5];
17796		const if_blocks = [];
17797
17798		function select_block_type(ctx, dirty) {
17799			if (/*option*/ ctx[8] === "Google") return 0;
17800			return 1;
17801		}
17802
17803		current_block_type_index = select_block_type(ctx);
17804		if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
17805
17806		function click_handler() {
17807			return /*click_handler*/ ctx[6](/*option*/ ctx[8]);
17808		}
17809
17810		return {
17811			c() {
17812				button = element("button");
17813				span1 = element("span");
17814				span0 = element("span");
17815				if_block.c();
17816				t0 = space();
17817				t1 = text(/*labelText*/ ctx[4]);
17818				t2 = space();
17819				t3 = text(t3_value);
17820				attr(span0, "class", "zephr-form-social-sign-in-icon svelte-1e2xtn4");
17821				toggle_class(span0, "zephr-payment-form-social-sign-in-icon", /*isPaymentForm*/ ctx[3]);
17822				attr(span1, "class", "zephr-form-flex-container zephr-form-social-sign-in svelte-1e2xtn4");
17823				toggle_class(span1, "zephr-payment-form-flex-container", /*isPaymentForm*/ ctx[3]);
17824				toggle_class(span1, "zephr-payment-form-social-sign-in", /*isPaymentForm*/ ctx[3]);
17825				attr(button, "type", "button");
17826				attr(button, "class", "zephr-form-button zephr-form-social-sign-in-button svelte-1e2xtn4");
17827				toggle_class(button, "zephr-payment-form-button", /*isPaymentForm*/ ctx[3]);
17828				toggle_class(button, "zephr-payment-form-social-sign-in-button", /*isPaymentForm*/ ctx[3]);
17829			},
17830			m(target, anchor) {
17831				insert(target, button, anchor);
17832				append(button, span1);
17833				append(span1, span0);
17834				if_blocks[current_block_type_index].m(span0, null);
17835				append(span1, t0);
17836				append(span1, t1);
17837				append(span1, t2);
17838				append(span1, t3);
17839				current = true;
17840
17841				if (!mounted) {
17842					dispose = listen(button, "click", prevent_default(click_handler));
17843					mounted = true;
17844				}
17845			},
17846			p(new_ctx, dirty) {
17847				ctx = new_ctx;
17848				let previous_block_index = current_block_type_index;
17849				current_block_type_index = select_block_type(ctx);
17850
17851				if (current_block_type_index === previous_block_index) {
17852					if_blocks[current_block_type_index].p(ctx, dirty);
17853				} else {
17854					group_outros();
17855
17856					transition_out(if_blocks[previous_block_index], 1, 1, () => {
17857						if_blocks[previous_block_index] = null;
17858					});
17859
17860					check_outros();
17861					if_block = if_blocks[current_block_type_index];
17862
17863					if (!if_block) {
17864						if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
17865						if_block.c();
17866					} else {
17867						if_block.p(ctx, dirty);
17868					}
17869
17870					transition_in(if_block, 1);
17871					if_block.m(span0, null);
17872				}
17873
17874				if (!current || dirty & /*isPaymentForm*/ 8) {
17875					toggle_class(span0, "zephr-payment-form-social-sign-in-icon", /*isPaymentForm*/ ctx[3]);
17876				}
17877
17878				if ((!current || dirty & /*config*/ 1) && t3_value !== (t3_value = /*option*/ ctx[8] + "")) set_data(t3, t3_value);
17879
17880				if (!current || dirty & /*isPaymentForm*/ 8) {
17881					toggle_class(span1, "zephr-payment-form-flex-container", /*isPaymentForm*/ ctx[3]);
17882				}
17883
17884				if (!current || dirty & /*isPaymentForm*/ 8) {
17885					toggle_class(span1, "zephr-payment-form-social-sign-in", /*isPaymentForm*/ ctx[3]);
17886				}
17887
17888				if (!current || dirty & /*isPaymentForm*/ 8) {
17889					toggle_class(button, "zephr-payment-form-button", /*isPaymentForm*/ ctx[3]);
17890				}
17891
17892				if (!current || dirty & /*isPaymentForm*/ 8) {
17893					toggle_class(button, "zephr-payment-form-social-sign-in-button", /*isPaymentForm*/ ctx[3]);
17894				}
17895			},
17896			i(local) {
17897				if (current) return;
17898				transition_in(if_block);
17899				current = true;
17900			},
17901			o(local) {
17902				transition_out(if_block);
17903				current = false;
17904			},
17905			d(detaching) {
17906				if (detaching) {
17907					detach(button);
17908				}
17909
17910				if_blocks[current_block_type_index].d();
17911				mounted = false;
17912				dispose();
17913			}
17914		};
17915	}
17916
17917	// (49:10) {:else}
17918	function create_else_block$5(ctx) {
17919		let fa;
17920		let current;
17921		const fa_spread_levels = [/*getProviderIcon*/ ctx[5](/*option*/ ctx[8])];
17922		let fa_props = {};
17923
17924		for (let i = 0; i < fa_spread_levels.length; i += 1) {
17925			fa_props = assign(fa_props, fa_spread_levels[i]);
17926		}
17927
17928		fa = new Fa({ props: fa_props });
17929
17930		return {
17931			c() {
17932				create_component(fa.$$.fragment);
17933			},
17934			m(target, anchor) {
17935				mount_component(fa, target, anchor);
17936				current = true;
17937			},
17938			p(ctx, dirty) {
17939				const fa_changes = (dirty & /*getProviderIcon, Object, config*/ 33)
17940				? get_spread_update(fa_spread_levels, [get_spread_object(/*getProviderIcon*/ ctx[5](/*option*/ ctx[8]))])
17941				: {};
17942
17943				fa.$set(fa_changes);
17944			},
17945			i(local) {
17946				if (current) return;
17947				transition_in(fa.$$.fragment, local);
17948				current = true;
17949			},
17950			o(local) {
17951				transition_out(fa.$$.fragment, local);
17952				current = false;
17953			},
17954			d(detaching) {
17955				destroy_component(fa, detaching);
17956			}
17957		};
17958	}
17959
17960	// (47:10) {#if option === "Google"}
17961	function create_if_block_2$f(ctx) {
17962		let googlelogo;
17963		let current;
17964		googlelogo = new GoogleLogo({});
17965
17966		return {
17967			c() {
17968				create_component(googlelogo.$$.fragment);
17969			},
17970			m(target, anchor) {
17971				mount_component(googlelogo, target, anchor);
17972				current = true;
17973			},
17974			p: noop,
17975			i(local) {
17976				if (current) return;
17977				transition_in(googlelogo.$$.fragment, local);
17978				current = true;
17979			},
17980			o(local) {
17981				transition_out(googlelogo.$$.fragment, local);
17982				current = false;
17983			},
17984			d(detaching) {
17985				destroy_component(googlelogo, detaching);
17986			}
17987		};
17988	}
17989
17990	// (29:0) {#each Object.keys(config) as option}
17991	function create_each_block$d(ctx) {
17992		let if_block_anchor;
17993		let current;
17994		let if_block = /*config*/ ctx[0][/*option*/ ctx[8]] === true && /*option*/ ctx[8] !== 'labelText' && /*option*/ ctx[8] !== 'allowEmptyLabel' && create_if_block_1$n(ctx);
17995
17996		return {
17997			c() {
17998				if (if_block) if_block.c();
17999				if_block_anchor = empty();
18000			},
18001			m(target, anchor) {
18002				if (if_block) if_block.m(target, anchor);
18003				insert(target, if_block_anchor, anchor);
18004				current = true;
18005			},
18006			p(ctx, dirty) {
18007				if (/*config*/ ctx[0][/*option*/ ctx[8]] === true && /*option*/ ctx[8] !== 'labelText' && /*option*/ ctx[8] !== 'allowEmptyLabel') {
18008					if (if_block) {
18009						if_block.p(ctx, dirty);
18010
18011						if (dirty & /*config*/ 1) {
18012							transition_in(if_block, 1);
18013						}
18014					} else {
18015						if_block = create_if_block_1$n(ctx);
18016						if_block.c();
18017						transition_in(if_block, 1);
18018						if_block.m(if_block_anchor.parentNode, if_block_anchor);
18019					}
18020				} else if (if_block) {
18021					group_outros();
18022
18023					transition_out(if_block, 1, 1, () => {
18024						if_block = null;
18025					});
18026
18027					check_outros();
18028				}
18029			},
18030			i(local) {
18031				if (current) return;
18032				transition_in(if_block);
18033				current = true;
18034			},
18035			o(local) {
18036				transition_out(if_block);
18037				current = false;
18038			},
18039			d(detaching) {
18040				if (detaching) {
18041					detach(if_block_anchor);
18042				}
18043
18044				if (if_block) if_block.d(detaching);
18045			}
18046		};
18047	}
18048
18049	// (58:0) {#if error}
18050	function create_if_block$x(ctx) {
18051		let errormessage;
18052		let current;
18053
18054		errormessage = new ErrorMessage({
18055				props: {
18056					error: /*error*/ ctx[2],
18057					isPaymentForm: /*isPaymentForm*/ ctx[3]
18058				}
18059			});
18060
18061		return {
18062			c() {
18063				create_component(errormessage.$$.fragment);
18064			},
18065			m(target, anchor) {
18066				mount_component(errormessage, target, anchor);
18067				current = true;
18068			},
18069			p(ctx, dirty) {
18070				const errormessage_changes = {};
18071				if (dirty & /*error*/ 4) errormessage_changes.error = /*error*/ ctx[2];
18072				if (dirty & /*isPaymentForm*/ 8) errormessage_changes.isPaymentForm = /*isPaymentForm*/ ctx[3];
18073				errormessage.$set(errormessage_changes);
18074			},
18075			i(local) {
18076				if (current) return;
18077				transition_in(errormessage.$$.fragment, local);
18078				current = true;
18079			},
18080			o(local) {
18081				transition_out(errormessage.$$.fragment, local);
18082				current = false;
18083			},
18084			d(detaching) {
18085				destroy_component(errormessage, detaching);
18086			}
18087		};
18088	}
18089
18090	function create_fragment$H(ctx) {
18091		let t;
18092		let if_block_anchor;
18093		let current;
18094		let each_value = ensure_array_like(Object.keys(/*config*/ ctx[0]));
18095		let each_blocks = [];
18096
18097		for (let i = 0; i < each_value.length; i += 1) {
18098			each_blocks[i] = create_each_block$d(get_each_context$d(ctx, each_value, i));
18099		}
18100
18101		const out = i => transition_out(each_blocks[i], 1, 1, () => {
18102			each_blocks[i] = null;
18103		});
18104
18105		let if_block = /*error*/ ctx[2] && create_if_block$x(ctx);
18106
18107		return {
18108			c() {
18109				for (let i = 0; i < each_blocks.length; i += 1) {
18110					each_blocks[i].c();
18111				}
18112
18113				t = space();
18114				if (if_block) if_block.c();
18115				if_block_anchor = empty();
18116			},
18117			m(target, anchor) {
18118				for (let i = 0; i < each_blocks.length; i += 1) {
18119					if (each_blocks[i]) {
18120						each_blocks[i].m(target, anchor);
18121					}
18122				}
18123
18124				insert(target, t, anchor);
18125				if (if_block) if_block.m(target, anchor);
18126				insert(target, if_block_anchor, anchor);
18127				current = true;
18128			},
18129			p(ctx, [dirty]) {
18130				if (dirty & /*isPaymentForm, onSelectProvider, Object, config, labelText, getProviderIcon*/ 59) {
18131					each_value = ensure_array_like(Object.keys(/*config*/ ctx[0]));
18132					let i;
18133
18134					for (i = 0; i < each_value.length; i += 1) {
18135						const child_ctx = get_each_context$d(ctx, each_value, i);
18136
18137						if (each_blocks[i]) {
18138							each_blocks[i].p(child_ctx, dirty);
18139							transition_in(each_blocks[i], 1);
18140						} else {
18141							each_blocks[i] = create_each_block$d(child_ctx);
18142							each_blocks[i].c();
18143							transition_in(each_blocks[i], 1);
18144							each_blocks[i].m(t.parentNode, t);
18145						}
18146					}
18147
18148					group_outros();
18149
18150					for (i = each_value.length; i < each_blocks.length; i += 1) {
18151						out(i);
18152					}
18153
18154					check_outros();
18155				}
18156
18157				if (/*error*/ ctx[2]) {
18158					if (if_block) {
18159						if_block.p(ctx, dirty);
18160
18161						if (dirty & /*error*/ 4) {
18162							transition_in(if_block, 1);
18163						}
18164					} else {
18165						if_block = create_if_block$x(ctx);
18166						if_block.c();
18167						transition_in(if_block, 1);
18168						if_block.m(if_block_anchor.parentNode, if_block_anchor);
18169					}
18170				} else if (if_block) {
18171					group_outros();
18172
18173					transition_out(if_block, 1, 1, () => {
18174						if_block = null;
18175					});
18176
18177					check_outros();
18178				}
18179			},
18180			i(local) {
18181				if (current) return;
18182
18183				for (let i = 0; i < each_value.length; i += 1) {
18184					transition_in(each_blocks[i]);
18185				}
18186
18187				transition_in(if_block);
18188				current = true;
18189			},
18190			o(local) {
18191				each_blocks = each_blocks.filter(Boolean);
18192
18193				for (let i = 0; i < each_blocks.length; i += 1) {
18194					transition_out(each_blocks[i]);
18195				}
18196
18197				transition_out(if_block);
18198				current = false;
18199			},
18200			d(detaching) {
18201				if (detaching) {
18202					detach(t);
18203					detach(if_block_anchor);
18204				}
18205
18206				destroy_each(each_blocks, detaching);
18207				if (if_block) if_block.d(detaching);
18208			}
18209		};
18210	}
18211
18212	function instance$H($$self, $$props, $$invalidate) {
18213		let { config } = $$props;
18214		let { onSelectProvider } = $$props;
18215		let { error = null } = $$props;
18216		let { isPaymentForm = false } = $$props;
18217		const defaultLabelText = config.allowEmptyLabel ? "" : "Continue with";
18218		const labelText = config.labelText ? config.labelText : defaultLabelText;
18219
18220		const getProviderIcon = provider => {
18221			switch (provider) {
18222				case "Facebook":
18223					return {
18224						icon: faFacebook,
18225						color: "#1877f2",
18226						size: "lg"
18227					};
18228				case "LinkedIn":
18229					return {
18230						icon: faLinkedin,
18231						color: "#0a66c2",
18232						size: "lg"
18233					};
18234				case "Apple":
18235					return { icon: faApple, color: "#000", size: "lg" };
18236				case "Microsoft":
18237					return {
18238						icon: faMicrosoft,
18239						color: "#00a4ef",
18240						size: "lg"
18241					};
18242				case "Twitter":
18243					return {
18244						icon: faTwitter,
18245						color: "#08a0e9",
18246						size: "lg"
18247					};
18248				default:
18249					return {
18250						icon: faFacebook,
18251						color: "#1877f2",
18252						size: "lg"
18253					};
18254			}
18255		};
18256
18257		const click_handler = option => onSelectProvider(option.toLowerCase());
18258
18259		$$self.$$set = $$props => {
18260			if ('config' in $$props) $$invalidate(0, config = $$props.config);
18261			if ('onSelectProvider' in $$props) $$invalidate(1, onSelectProvider = $$props.onSelectProvider);
18262			if ('error' in $$props) $$invalidate(2, error = $$props.error);
18263			if ('isPaymentForm' in $$props) $$invalidate(3, isPaymentForm = $$props.isPaymentForm);
18264		};
18265
18266		return [
18267			config,
18268			onSelectProvider,
18269			error,
18270			isPaymentForm,
18271			labelText,
18272			getProviderIcon,
18273			click_handler
18274		];
18275	}
18276
18277	class SocialSignIn extends SvelteComponent {
18278		constructor(options) {
18279			super();
18280
18281			init(this, options, instance$H, create_fragment$H, safe_not_equal, {
18282				config: 0,
18283				onSelectProvider: 1,
18284				error: 2,
18285				isPaymentForm: 3
18286			});
18287		}
18288	}
18289
18290	const factory$g = {
18291	    matches: (sectionElement) => sectionElement.type === elementTypes.SOCIAL_SIGNIN,
18292	    create: (form, _, formActions, elementConfig) => {
18293	        const { enabled: __, hide: ___, show: ____, ...cleanedConfig } = elementConfig ?? {};
18294	        return ({
18295	            component: SocialSignIn,
18296	            props: {
18297	                config: cleanedConfig,
18298	                isPaymentForm: form.formType === FormType.PAYMENT,
18299	                onSelectProvider: (provider) => useOAuthProvider(provider, form, formActions)
18300	            }
18301	        });
18302	    }
18303	};
18304
18305	const verifyingPromoCodeBusyKey = "promo-code";
18306	const runPromoCodeValidation = async (form, formState, formActions) => {
18307	    formActions.updateFormState({
18308	        promoCodeValid: undefined,
18309	        serverErrors: [],
18310	        discountedPlanPrices: []
18311	    });
18312	    const providerConfig = paymentProviderFor(form.organisationConfiguration.paymentProvider);
18313	    const response = await request(providerConfig.promoCodeCheckPath, {
18314	        method: 'POST',
18315	        bodyObject: {
18316	            promoCode: formState.promoCode,
18317	            paymentOptions: formConfigAs(form).paymentOptions
18318	        }
18319	    }, formActions, verifyingPromoCodeBusyKey);
18320	    if (!response.ok) {
18321	        let serverError;
18322	        if (response.status === 403) {
18323	            const json = await response.json();
18324	            if (json?.code === 2 || json?.code === 3) {
18325	                serverError = ServerError.PROMO_CODE_EXPIRED_ERROR;
18326	            }
18327	            else {
18328	                serverError = ServerError.PROMO_CODE_INVALID_ERROR;
18329	            }
18330	        }
18331	        else {
18332	            serverError = ServerError.PROMO_CODE_INVALID_ERROR;
18333	            console.error("Unknown error evaluating promo code", response);
18334	        }
18335	        logDataLayerEvent(form, 'zephr_form_error', {
18336	            error: ServerError[serverError],
18337	        });
18338	        return Promise.resolve(formActions.updateFormState({
18339	            promoCodeValid: false,
18340	            serverErrors: [serverError],
18341	            discountedPlanPrices: []
18342	        }));
18343	    }
18344	    const json = await response.json();
18345	    const discountedPlanPrices = json.paymentOptions.map(p => ({
18346	        planSlug: p.slug,
18347	        productId: p.productId,
18348	        discountPrice: p.discountPrice
18349	    }));
18350	    if (!discountedPlanPrices.find(discount => discount.planSlug === formState.paymentOption.slug && discount.productId === formState.paymentOption.productId)) {
18351	        logDataLayerEvent(form, 'zephr_form_error', {
18352	            error: ServerError[ServerError.PROMO_CODE_NOT_VALID_FOR_PLAN_ERROR],
18353	        });
18354	        return Promise.resolve(formActions.updateFormState({
18355	            promoCodeValid: false,
18356	            serverErrors: [ServerError.PROMO_CODE_NOT_VALID_FOR_PLAN_ERROR],
18357	            discountedPlanPrices: discountedPlanPrices
18358	        }));
18359	    }
18360	    return Promise.resolve(formActions.updateFormState({
18361	        promoCodeValid: true,
18362	        serverErrors: [],
18363	        discountedPlanPrices: discountedPlanPrices
18364	    }));
18365	};
18366	/*
18367	If we're using mobile payment and we're on the payment screen,
18368	we'll need to reload the mobile payment button so it has the discounted amount
18369	and make sure they can't press the button while the button is updating
18370	*/
18371	const afterPromoCodeChange = async (form, formState, formActions) => {
18372	    const formStateWithAddons = await getProductAddons(form, formState, formActions, true);
18373	    const formStateWithPrices = await calculatePrices(form, formStateWithAddons, formActions);
18374	    if (formState.currentSection.elements.some(element => element.type === elementTypes.MOBILE_PAYMENT && element.config?.enabled !== false)) {
18375	        formActions.incrementRequestCount();
18376	        try {
18377	            // Only reload mobile payment service if the provider actually supports mobile payments
18378	            if (supportsMobilePayments(form.organisationConfiguration.paymentProvider)) {
18379	                await mobilePaymentServiceFor(form.organisationConfiguration.paymentProvider).loader(form, formStateWithPrices, formActions);
18380	            }
18381	        }
18382	        finally {
18383	            formActions.decrementRequestCount();
18384	        }
18385	    }
18386	};
18387	const validatePromoCode = async (form, formState, formActions) => {
18388	    const providerConfig = paymentProviderFor(form.organisationConfiguration.paymentProvider);
18389	    if (!providerConfig.hasPromoCodes(form)) {
18390	        return formState;
18391	    }
18392	    if (providerConfig?.promoCodeServiceOverride) {
18393	        return providerConfig.promoCodeServiceOverride(form, formState, formActions);
18394	    }
18395	    return runPromoCodeValidation(form, formState, formActions)
18396	        .then((updatedFormState) => afterPromoCodeChange(form, updatedFormState, formActions));
18397	};
18398
18399	/* src/components/elements/paymentSummary/PaymentSummary.svelte generated by Svelte v4.2.12 */
18400
18401	function get_each_context$c(ctx, list, i) {
18402		const child_ctx = ctx.slice();
18403		child_ctx[36] = list[i];
18404		return child_ctx;
18405	}
18406
18407	function get_each_context_1$3(ctx, list, i) {
18408		const child_ctx = ctx.slice();
18409		child_ctx[39] = list[i];
18410		return child_ctx;
18411	}
18412
18413	function get_each_context_2(ctx, list, i) {
18414		const child_ctx = ctx.slice();
18415		child_ctx[42] = list[i];
18416		return child_ctx;
18417	}
18418
18419	// (52:2) {#each chargeItems as chargeItem}
18420	function create_each_block_2(ctx) {
18421		let div1;
18422		let span0;
18423		let t0_value = /*chargeItem*/ ctx[42].label + "";
18424		let t0;
18425		let t1;
18426		let div0;
18427		let span1;
18428		let t2_value = /*chargeItem*/ ctx[42].priceFormattedString + "";
18429		let t2;
18430
18431		return {
18432			c() {
18433				div1 = element("div");
18434				span0 = element("span");
18435				t0 = text(t0_value);
18436				t1 = space();
18437				div0 = element("div");
18438				span1 = element("span");
18439				t2 = text(t2_value);
18440				attr(span0, "class", "zephr-form-summary-charge-description zephr-payment-form-summary-charge-description svelte-xf8v79");
18441				attr(div0, "class", "zephr-form-summary-line-right zephr-payment-form-summary-line-right svelte-xf8v79");
18442				attr(div1, "class", "zephr-form-charge-line zephr-payment-form-charge-line svelte-xf8v79");
18443			},
18444			m(target, anchor) {
18445				insert(target, div1, anchor);
18446				append(div1, span0);
18447				append(span0, t0);
18448				append(div1, t1);
18449				append(div1, div0);
18450				append(div0, span1);
18451				append(span1, t2);
18452			},
18453			p(ctx, dirty) {
18454				if (dirty[0] & /*chargeItems*/ 524288 && t0_value !== (t0_value = /*chargeItem*/ ctx[42].label + "")) set_data(t0, t0_value);
18455				if (dirty[0] & /*chargeItems*/ 524288 && t2_value !== (t2_value = /*chargeItem*/ ctx[42].priceFormattedString + "")) set_data(t2, t2_value);
18456			},
18457			d(detaching) {
18458				if (detaching) {
18459					detach(div1);
18460				}
18461			}
18462		};
18463	}
18464
18465	// (65:2) {#if paymentProvider === 'braintree' && discounts.length > 0}
18466	function create_if_block_14$2(ctx) {
18467		let each_1_anchor;
18468		let each_value_1 = ensure_array_like(/*discounts*/ ctx[23]);
18469		let each_blocks = [];
18470
18471		for (let i = 0; i < each_value_1.length; i += 1) {
18472			each_blocks[i] = create_each_block_1$3(get_each_context_1$3(ctx, each_value_1, i));
18473		}
18474
18475		return {
18476			c() {
18477				for (let i = 0; i < each_blocks.length; i += 1) {
18478					each_blocks[i].c();
18479				}
18480
18481				each_1_anchor = empty();
18482			},
18483			m(target, anchor) {
18484				for (let i = 0; i < each_blocks.length; i += 1) {
18485					if (each_blocks[i]) {
18486						each_blocks[i].m(target, anchor);
18487					}
18488				}
18489
18490				insert(target, each_1_anchor, anchor);
18491			},
18492			p(ctx, dirty) {
18493				if (dirty[0] & /*discounts*/ 8388608) {
18494					each_value_1 = ensure_array_like(/*discounts*/ ctx[23]);
18495					let i;
18496
18497					for (i = 0; i < each_value_1.length; i += 1) {
18498						const child_ctx = get_each_context_1$3(ctx, each_value_1, i);
18499
18500						if (each_blocks[i]) {
18501							each_blocks[i].p(child_ctx, dirty);
18502						} else {
18503							each_blocks[i] = create_each_block_1$3(child_ctx);
18504							each_blocks[i].c();
18505							each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor);
18506						}
18507					}
18508
18509					for (; i < each_blocks.length; i += 1) {
18510						each_blocks[i].d(1);
18511					}
18512
18513					each_blocks.length = each_value_1.length;
18514				}
18515			},
18516			d(detaching) {
18517				if (detaching) {
18518					detach(each_1_anchor);
18519				}
18520
18521				destroy_each(each_blocks, detaching);
18522			}
18523		};
18524	}
18525
18526	// (66:4) {#each discounts as discount}
18527	function create_each_block_1$3(ctx) {
18528		let div2;
18529		let div0;
18530		let t0_value = /*discount*/ ctx[39].description + "";
18531		let t0;
18532		let t1;
18533		let div1;
18534		let t2_value = /*discount*/ ctx[39].formattedAmount + "";
18535		let t2;
18536		let t3;
18537
18538		return {
18539			c() {
18540				div2 = element("div");
18541				div0 = element("div");
18542				t0 = text(t0_value);
18543				t1 = space();
18544				div1 = element("div");
18545				t2 = text(t2_value);
18546				t3 = space();
18547				attr(div0, "class", "zephr-payment-form-summary-discount-description");
18548				attr(div1, "class", "zephr-form-summary-line-right zephr-payment-form-summary-line-right discount-value svelte-xf8v79");
18549				attr(div2, "class", "zephr-form-discount-line zephr-payment-form-discount-line svelte-xf8v79");
18550			},
18551			m(target, anchor) {
18552				insert(target, div2, anchor);
18553				append(div2, div0);
18554				append(div0, t0);
18555				append(div2, t1);
18556				append(div2, div1);
18557				append(div1, t2);
18558				append(div2, t3);
18559			},
18560			p(ctx, dirty) {
18561				if (dirty[0] & /*discounts*/ 8388608 && t0_value !== (t0_value = /*discount*/ ctx[39].description + "")) set_data(t0, t0_value);
18562				if (dirty[0] & /*discounts*/ 8388608 && t2_value !== (t2_value = /*discount*/ ctx[39].formattedAmount + "")) set_data(t2, t2_value);
18563			},
18564			d(detaching) {
18565				if (detaching) {
18566					detach(div2);
18567				}
18568			}
18569		};
18570	}
18571
18572	// (78:2) {#if tax}
18573	function create_if_block_13$2(ctx) {
18574		let div2;
18575		let div0;
18576		let t0;
18577		let t1;
18578		let div1;
18579		let t2;
18580
18581		return {
18582			c() {
18583				div2 = element("div");
18584				div0 = element("div");
18585				t0 = text(/*taxLabel*/ ctx[22]);
18586				t1 = space();
18587				div1 = element("div");
18588				t2 = text(/*tax*/ ctx[21]);
18589				attr(div0, "class", "zephr-form-summary-charge-description zephr-payment-form-summary-charge-description svelte-xf8v79");
18590				attr(div1, "class", "zephr-form-summary-line-right zephr-payment-form-summary-line-right svelte-xf8v79");
18591				attr(div2, "class", "zephr-form-charge-line zephr-payment-form-charge-line svelte-xf8v79");
18592			},
18593			m(target, anchor) {
18594				insert(target, div2, anchor);
18595				append(div2, div0);
18596				append(div0, t0);
18597				append(div2, t1);
18598				append(div2, div1);
18599				append(div1, t2);
18600			},
18601			p(ctx, dirty) {
18602				if (dirty[0] & /*taxLabel*/ 4194304) set_data(t0, /*taxLabel*/ ctx[22]);
18603				if (dirty[0] & /*tax*/ 2097152) set_data(t2, /*tax*/ ctx[21]);
18604			},
18605			d(detaching) {
18606				if (detaching) {
18607					detach(div2);
18608				}
18609			}
18610		};
18611	}
18612
18613	// (88:2) {#each addons as addon}
18614	function create_each_block$c(ctx) {
18615		let div1;
18616		let span0;
18617		let t0_value = /*addon*/ ctx[36].label + "";
18618		let t0;
18619		let t1;
18620		let div0;
18621		let span1;
18622		let t2_value = /*addon*/ ctx[36].addonPrice + "";
18623		let t2;
18624
18625		return {
18626			c() {
18627				div1 = element("div");
18628				span0 = element("span");
18629				t0 = text(t0_value);
18630				t1 = space();
18631				div0 = element("div");
18632				span1 = element("span");
18633				t2 = text(t2_value);
18634				attr(div0, "class", "zephr-form-summary-line-right zephr-payment-form-summary-line-right svelte-xf8v79");
18635				attr(div1, "class", "zephr-form-addon-line zephr-payment-form-addon-line svelte-xf8v79");
18636			},
18637			m(target, anchor) {
18638				insert(target, div1, anchor);
18639				append(div1, span0);
18640				append(span0, t0);
18641				append(div1, t1);
18642				append(div1, div0);
18643				append(div0, span1);
18644				append(span1, t2);
18645			},
18646			p(ctx, dirty) {
18647				if (dirty[0] & /*addons*/ 262144 && t0_value !== (t0_value = /*addon*/ ctx[36].label + "")) set_data(t0, t0_value);
18648				if (dirty[0] & /*addons*/ 262144 && t2_value !== (t2_value = /*addon*/ ctx[36].addonPrice + "")) set_data(t2, t2_value);
18649			},
18650			d(detaching) {
18651				if (detaching) {
18652					detach(div1);
18653				}
18654			}
18655		};
18656	}
18657
18658	// (100:2) {#if allowPromoCodes}
18659	function create_if_block_2$e(ctx) {
18660		let t;
18661		let if_block1_anchor;
18662		let current;
18663		let if_block0 = !/*paymentProcessed*/ ctx[17] && !(/*showPromoCode*/ ctx[29] || /*promoCode*/ ctx[11]) && create_if_block_12$2(ctx);
18664		let if_block1 = (/*showPromoCode*/ ctx[29] || /*promoCode*/ ctx[11]) && create_if_block_3$a(ctx);
18665
18666		return {
18667			c() {
18668				if (if_block0) if_block0.c();
18669				t = space();
18670				if (if_block1) if_block1.c();
18671				if_block1_anchor = empty();
18672			},
18673			m(target, anchor) {
18674				if (if_block0) if_block0.m(target, anchor);
18675				insert(target, t, anchor);
18676				if (if_block1) if_block1.m(target, anchor);
18677				insert(target, if_block1_anchor, anchor);
18678				current = true;
18679			},
18680			p(ctx, dirty) {
18681				if (!/*paymentProcessed*/ ctx[17] && !(/*showPromoCode*/ ctx[29] || /*promoCode*/ ctx[11])) {
18682					if (if_block0) {
18683						if_block0.p(ctx, dirty);
18684					} else {
18685						if_block0 = create_if_block_12$2(ctx);
18686						if_block0.c();
18687						if_block0.m(t.parentNode, t);
18688					}
18689				} else if (if_block0) {
18690					if_block0.d(1);
18691					if_block0 = null;
18692				}
18693
18694				if (/*showPromoCode*/ ctx[29] || /*promoCode*/ ctx[11]) {
18695					if (if_block1) {
18696						if_block1.p(ctx, dirty);
18697
18698						if (dirty[0] & /*showPromoCode, promoCode*/ 536872960) {
18699							transition_in(if_block1, 1);
18700						}
18701					} else {
18702						if_block1 = create_if_block_3$a(ctx);
18703						if_block1.c();
18704						transition_in(if_block1, 1);
18705						if_block1.m(if_block1_anchor.parentNode, if_block1_anchor);
18706					}
18707				} else if (if_block1) {
18708					group_outros();
18709
18710					transition_out(if_block1, 1, 1, () => {
18711						if_block1 = null;
18712					});
18713
18714					check_outros();
18715				}
18716			},
18717			i(local) {
18718				if (current) return;
18719				transition_in(if_block1);
18720				current = true;
18721			},
18722			o(local) {
18723				transition_out(if_block1);
18724				current = false;
18725			},
18726			d(detaching) {
18727				if (detaching) {
18728					detach(t);
18729					detach(if_block1_anchor);
18730				}
18731
18732				if (if_block0) if_block0.d(detaching);
18733				if (if_block1) if_block1.d(detaching);
18734			}
18735		};
18736	}
18737
18738	// (101:4) {#if !paymentProcessed && !(showPromoCode || promoCode)}
18739	function create_if_block_12$2(ctx) {
18740		let button;
18741		let span;
18742		let t;
18743		let mounted;
18744		let dispose;
18745
18746		return {
18747			c() {
18748				button = element("button");
18749				span = element("span");
18750				t = text(/*promoCodeLinkText*/ ctx[4]);
18751				attr(button, "type", "button");
18752				attr(button, "class", "zephr-form-promo-activate-line zephr-payment-form-promo-activate-line svelte-xf8v79");
18753			},
18754			m(target, anchor) {
18755				insert(target, button, anchor);
18756				append(button, span);
18757				append(span, t);
18758
18759				if (!mounted) {
18760					dispose = listen(button, "click", /*click_handler*/ ctx[34]);
18761					mounted = true;
18762				}
18763			},
18764			p(ctx, dirty) {
18765				if (dirty[0] & /*promoCodeLinkText*/ 16) set_data(t, /*promoCodeLinkText*/ ctx[4]);
18766			},
18767			d(detaching) {
18768				if (detaching) {
18769					detach(button);
18770				}
18771
18772				mounted = false;
18773				dispose();
18774			}
18775		};
18776	}
18777
18778	// (110:4) {#if showPromoCode || promoCode}
18779	function create_if_block_3$a(ctx) {
18780		let div2;
18781		let div0;
18782		let current_block_type_index;
18783		let if_block0;
18784		let t0;
18785		let div1;
18786		let current_block_type_index_1;
18787		let if_block1;
18788		let div1_class_value;
18789		let t1;
18790		let if_block2_anchor;
18791		let current;
18792		const if_block_creators = [create_if_block_8$2, create_if_block_9$2];
18793		const if_blocks = [];
18794
18795		function select_block_type(ctx, dirty) {
18796			if (/*paymentProcessed*/ ctx[17] && /*promoCode*/ ctx[11]) return 0;
18797			if (!/*paymentProcessed*/ ctx[17]) return 1;
18798			return -1;
18799		}
18800
18801		if (~(current_block_type_index = select_block_type(ctx))) {
18802			if_block0 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
18803		}
18804
18805		const if_block_creators_1 = [create_if_block_5$6, create_if_block_7$2];
18806		const if_blocks_1 = [];
18807
18808		function select_block_type_2(ctx, dirty) {
18809			if (/*promoCodeValid*/ ctx[12]) return 0;
18810			if (!/*paymentProcessed*/ ctx[17]) return 1;
18811			return -1;
18812		}
18813
18814		if (~(current_block_type_index_1 = select_block_type_2(ctx))) {
18815			if_block1 = if_blocks_1[current_block_type_index_1] = if_block_creators_1[current_block_type_index_1](ctx);
18816		}
18817
18818		let if_block2 = /*error*/ ctx[14] && create_if_block_4$8(ctx);
18819
18820		return {
18821			c() {
18822				div2 = element("div");
18823				div0 = element("div");
18824				if (if_block0) if_block0.c();
18825				t0 = space();
18826				div1 = element("div");
18827				if (if_block1) if_block1.c();
18828				t1 = space();
18829				if (if_block2) if_block2.c();
18830				if_block2_anchor = empty();
18831				attr(div0, "class", "zephr-form-promo-input-container zephr-payment-form-promo-input-container svelte-xf8v79");
18832
18833				attr(div1, "class", div1_class_value = "" + (null_to_empty(/*promoCodeValid*/ ctx[12]
18834				? "zephr-form-summary-line-right zephr-payment-form-summary-line-right"
18835				: "zephr-form-summary-line-left zephr-payment-form-summary-line-left") + " svelte-xf8v79"));
18836
18837				attr(div2, "class", "zephr-form-promo-line zephr-payment-form-promo-line svelte-xf8v79");
18838			},
18839			m(target, anchor) {
18840				insert(target, div2, anchor);
18841				append(div2, div0);
18842
18843				if (~current_block_type_index) {
18844					if_blocks[current_block_type_index].m(div0, null);
18845				}
18846
18847				append(div2, t0);
18848				append(div2, div1);
18849
18850				if (~current_block_type_index_1) {
18851					if_blocks_1[current_block_type_index_1].m(div1, null);
18852				}
18853
18854				insert(target, t1, anchor);
18855				if (if_block2) if_block2.m(target, anchor);
18856				insert(target, if_block2_anchor, anchor);
18857				current = true;
18858			},
18859			p(ctx, dirty) {
18860				let previous_block_index = current_block_type_index;
18861				current_block_type_index = select_block_type(ctx);
18862
18863				if (current_block_type_index === previous_block_index) {
18864					if (~current_block_type_index) {
18865						if_blocks[current_block_type_index].p(ctx, dirty);
18866					}
18867				} else {
18868					if (if_block0) {
18869						group_outros();
18870
18871						transition_out(if_blocks[previous_block_index], 1, 1, () => {
18872							if_blocks[previous_block_index] = null;
18873						});
18874
18875						check_outros();
18876					}
18877
18878					if (~current_block_type_index) {
18879						if_block0 = if_blocks[current_block_type_index];
18880
18881						if (!if_block0) {
18882							if_block0 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
18883							if_block0.c();
18884						} else {
18885							if_block0.p(ctx, dirty);
18886						}
18887
18888						transition_in(if_block0, 1);
18889						if_block0.m(div0, null);
18890					} else {
18891						if_block0 = null;
18892					}
18893				}
18894
18895				let previous_block_index_1 = current_block_type_index_1;
18896				current_block_type_index_1 = select_block_type_2(ctx);
18897
18898				if (current_block_type_index_1 === previous_block_index_1) {
18899					if (~current_block_type_index_1) {
18900						if_blocks_1[current_block_type_index_1].p(ctx, dirty);
18901					}
18902				} else {
18903					if (if_block1) {
18904						group_outros();
18905
18906						transition_out(if_blocks_1[previous_block_index_1], 1, 1, () => {
18907							if_blocks_1[previous_block_index_1] = null;
18908						});
18909
18910						check_outros();
18911					}
18912
18913					if (~current_block_type_index_1) {
18914						if_block1 = if_blocks_1[current_block_type_index_1];
18915
18916						if (!if_block1) {
18917							if_block1 = if_blocks_1[current_block_type_index_1] = if_block_creators_1[current_block_type_index_1](ctx);
18918							if_block1.c();
18919						} else {
18920							if_block1.p(ctx, dirty);
18921						}
18922
18923						transition_in(if_block1, 1);
18924						if_block1.m(div1, null);
18925					} else {
18926						if_block1 = null;
18927					}
18928				}
18929
18930				if (!current || dirty[0] & /*promoCodeValid*/ 4096 && div1_class_value !== (div1_class_value = "" + (null_to_empty(/*promoCodeValid*/ ctx[12]
18931				? "zephr-form-summary-line-right zephr-payment-form-summary-line-right"
18932				: "zephr-form-summary-line-left zephr-payment-form-summary-line-left") + " svelte-xf8v79"))) {
18933					attr(div1, "class", div1_class_value);
18934				}
18935
18936				if (/*error*/ ctx[14]) {
18937					if (if_block2) {
18938						if_block2.p(ctx, dirty);
18939
18940						if (dirty[0] & /*error*/ 16384) {
18941							transition_in(if_block2, 1);
18942						}
18943					} else {
18944						if_block2 = create_if_block_4$8(ctx);
18945						if_block2.c();
18946						transition_in(if_block2, 1);
18947						if_block2.m(if_block2_anchor.parentNode, if_block2_anchor);
18948					}
18949				} else if (if_block2) {
18950					group_outros();
18951
18952					transition_out(if_block2, 1, 1, () => {
18953						if_block2 = null;
18954					});
18955
18956					check_outros();
18957				}
18958			},
18959			i(local) {
18960				if (current) return;
18961				transition_in(if_block0);
18962				transition_in(if_block1);
18963				transition_in(if_block2);
18964				current = true;
18965			},
18966			o(local) {
18967				transition_out(if_block0);
18968				transition_out(if_block1);
18969				transition_out(if_block2);
18970				current = false;
18971			},
18972			d(detaching) {
18973				if (detaching) {
18974					detach(div2);
18975					detach(t1);
18976					detach(if_block2_anchor);
18977				}
18978
18979				if (~current_block_type_index) {
18980					if_blocks[current_block_type_index].d();
18981				}
18982
18983				if (~current_block_type_index_1) {
18984					if_blocks_1[current_block_type_index_1].d();
18985				}
18986
18987				if (if_block2) if_block2.d(detaching);
18988			}
18989		};
18990	}
18991
18992	// (117:38) 
18993	function create_if_block_9$2(ctx) {
18994		let div;
18995		let input;
18996		let current;
18997
18998		input = new Input({
18999				props: {
19000					id: "zephr-form-promo-code",
19001					value: /*promoCode*/ ctx[11],
19002					placeholder: /*promoCodePlaceholder*/ ctx[5],
19003					maxlength: 50,
19004					hasError: /*error*/ ctx[14] != null,
19005					fill: true,
19006					isPaymentForm: true,
19007					onFocus: /*onFocus*/ ctx[27],
19008					onBlur: /*onBlur*/ ctx[28],
19009					$$slots: { default: [create_default_slot$4] },
19010					$$scope: { ctx }
19011				}
19012			});
19013
19014		input.$on("change", /*change_handler*/ ctx[35]);
19015
19016		return {
19017			c() {
19018				div = element("div");
19019				create_component(input.$$.fragment);
19020				attr(div, "class", "zephr-form-relative-container zephr-form-promo-input zephr-form-relative-container zephr-payment-form-promo-input");
19021			},
19022			m(target, anchor) {
19023				insert(target, div, anchor);
19024				mount_component(input, div, null);
19025				current = true;
19026			},
19027			p(ctx, dirty) {
19028				const input_changes = {};
19029				if (dirty[0] & /*promoCode*/ 2048) input_changes.value = /*promoCode*/ ctx[11];
19030				if (dirty[0] & /*promoCodePlaceholder*/ 32) input_changes.placeholder = /*promoCodePlaceholder*/ ctx[5];
19031				if (dirty[0] & /*error*/ 16384) input_changes.hasError = /*error*/ ctx[14] != null;
19032				if (dirty[0] & /*onFocus*/ 134217728) input_changes.onFocus = /*onFocus*/ ctx[27];
19033				if (dirty[0] & /*onBlur*/ 268435456) input_changes.onBlur = /*onBlur*/ ctx[28];
19034
19035				if (dirty[0] & /*promoCodeValid, busy, error*/ 53248 | dirty[1] & /*$$scope*/ 16384) {
19036					input_changes.$$scope = { dirty, ctx };
19037				}
19038
19039				input.$set(input_changes);
19040			},
19041			i(local) {
19042				if (current) return;
19043				transition_in(input.$$.fragment, local);
19044				current = true;
19045			},
19046			o(local) {
19047				transition_out(input.$$.fragment, local);
19048				current = false;
19049			},
19050			d(detaching) {
19051				if (detaching) {
19052					detach(div);
19053				}
19054
19055				destroy_component(input);
19056			}
19057		};
19058	}
19059
19060	// (113:10) {#if paymentProcessed && promoCode}
19061	function create_if_block_8$2(ctx) {
19062		let span;
19063		let t;
19064
19065		return {
19066			c() {
19067				span = element("span");
19068				t = text(/*promoCode*/ ctx[11]);
19069				attr(span, "class", "zephr-form-summary-promo-middle zephr-payment-form-summary-promo-middle svelte-xf8v79");
19070			},
19071			m(target, anchor) {
19072				insert(target, span, anchor);
19073				append(span, t);
19074			},
19075			p(ctx, dirty) {
19076				if (dirty[0] & /*promoCode*/ 2048) set_data(t, /*promoCode*/ ctx[11]);
19077			},
19078			i: noop,
19079			o: noop,
19080			d(detaching) {
19081				if (detaching) {
19082					detach(span);
19083				}
19084			}
19085		};
19086	}
19087
19088	// (136:43) 
19089	function create_if_block_11$2(ctx) {
19090		let fa;
19091		let current;
19092		fa = new Fa({ props: { icon: faSpinner, spin: true } });
19093
19094		return {
19095			c() {
19096				create_component(fa.$$.fragment);
19097			},
19098			m(target, anchor) {
19099				mount_component(fa, target, anchor);
19100				current = true;
19101			},
19102			i(local) {
19103				if (current) return;
19104				transition_in(fa.$$.fragment, local);
19105				current = true;
19106			},
19107			o(local) {
19108				transition_out(fa.$$.fragment, local);
19109				current = false;
19110			},
19111			d(detaching) {
19112				destroy_component(fa, detaching);
19113			}
19114		};
19115	}
19116
19117	// (134:18) {#if promoCodeValid}
19118	function create_if_block_10$2(ctx) {
19119		let fa;
19120		let current;
19121		fa = new Fa({ props: { icon: faCheck } });
19122
19123		return {
19124			c() {
19125				create_component(fa.$$.fragment);
19126			},
19127			m(target, anchor) {
19128				mount_component(fa, target, anchor);
19129				current = true;
19130			},
19131			i(local) {
19132				if (current) return;
19133				transition_in(fa.$$.fragment, local);
19134				current = true;
19135			},
19136			o(local) {
19137				transition_out(fa.$$.fragment, local);
19138				current = false;
19139			},
19140			d(detaching) {
19141				destroy_component(fa, detaching);
19142			}
19143		};
19144	}
19145
19146	// (121:14) <Input                 id="zephr-form-promo-code"                 value={promoCode}                 placeholder={promoCodePlaceholder}                 maxlength={50}                 hasError={error != null}                 fill                 isPaymentForm                 on:change={({ detail }) => onChangePromoCode(detail)}                 onFocus={onFocus}                 onBlur={onBlur}               >
19147	function create_default_slot$4(ctx) {
19148		let div;
19149		let current_block_type_index;
19150		let if_block;
19151		let current;
19152		const if_block_creators = [create_if_block_10$2, create_if_block_11$2];
19153		const if_blocks = [];
19154
19155		function select_block_type_1(ctx, dirty) {
19156			if (/*promoCodeValid*/ ctx[12]) return 0;
19157			if (/*busy*/ ctx[15] && !/*error*/ ctx[14]) return 1;
19158			return -1;
19159		}
19160
19161		if (~(current_block_type_index = select_block_type_1(ctx))) {
19162			if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
19163		}
19164
19165		return {
19166			c() {
19167				div = element("div");
19168				if (if_block) if_block.c();
19169				attr(div, "class", "zephr-form-input-inner-text zephr-payment-form-input-inner-text zephr-form-input-inner-button");
19170			},
19171			m(target, anchor) {
19172				insert(target, div, anchor);
19173
19174				if (~current_block_type_index) {
19175					if_blocks[current_block_type_index].m(div, null);
19176				}
19177
19178				current = true;
19179			},
19180			p(ctx, dirty) {
19181				let previous_block_index = current_block_type_index;
19182				current_block_type_index = select_block_type_1(ctx);
19183
19184				if (current_block_type_index !== previous_block_index) {
19185					if (if_block) {
19186						group_outros();
19187
19188						transition_out(if_blocks[previous_block_index], 1, 1, () => {
19189							if_blocks[previous_block_index] = null;
19190						});
19191
19192						check_outros();
19193					}
19194
19195					if (~current_block_type_index) {
19196						if_block = if_blocks[current_block_type_index];
19197
19198						if (!if_block) {
19199							if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
19200							if_block.c();
19201						}
19202
19203						transition_in(if_block, 1);
19204						if_block.m(div, null);
19205					} else {
19206						if_block = null;
19207					}
19208				}
19209			},
19210			i(local) {
19211				if (current) return;
19212				transition_in(if_block);
19213				current = true;
19214			},
19215			o(local) {
19216				transition_out(if_block);
19217				current = false;
19218			},
19219			d(detaching) {
19220				if (detaching) {
19221					detach(div);
19222				}
19223
19224				if (~current_block_type_index) {
19225					if_blocks[current_block_type_index].d();
19226				}
19227			}
19228		};
19229	}
19230
19231	// (155:38) 
19232	function create_if_block_7$2(ctx) {
19233		let button;
19234		let current;
19235
19236		button = new Button({
19237				props: {
19238					disabled: /*promoCodeDisabled*/ ctx[16],
19239					text: /*promoCodeButtonText*/ ctx[6],
19240					onClick: /*verifyPromoCode*/ ctx[26],
19241					noMargin: true,
19242					inputHeight: true,
19243					isPaymentForm: true
19244				}
19245			});
19246
19247		return {
19248			c() {
19249				create_component(button.$$.fragment);
19250			},
19251			m(target, anchor) {
19252				mount_component(button, target, anchor);
19253				current = true;
19254			},
19255			p(ctx, dirty) {
19256				const button_changes = {};
19257				if (dirty[0] & /*promoCodeDisabled*/ 65536) button_changes.disabled = /*promoCodeDisabled*/ ctx[16];
19258				if (dirty[0] & /*promoCodeButtonText*/ 64) button_changes.text = /*promoCodeButtonText*/ ctx[6];
19259				if (dirty[0] & /*verifyPromoCode*/ 67108864) button_changes.onClick = /*verifyPromoCode*/ ctx[26];
19260				button.$set(button_changes);
19261			},
19262			i(local) {
19263				if (current) return;
19264				transition_in(button.$$.fragment, local);
19265				current = true;
19266			},
19267			o(local) {
19268				transition_out(button.$$.fragment, local);
19269				current = false;
19270			},
19271			d(detaching) {
19272				destroy_component(button, detaching);
19273			}
19274		};
19275	}
19276
19277	// (149:10) {#if promoCodeValid}
19278	function create_if_block_5$6(ctx) {
19279		let span;
19280		let if_block = /*showPromoCodeDiscountAmount*/ ctx[0] && create_if_block_6$6(ctx);
19281
19282		return {
19283			c() {
19284				span = element("span");
19285				if (if_block) if_block.c();
19286				attr(span, "class", "zephr-form-summary-promo-middle zephr-payment-form-summary-promo-middle svelte-xf8v79");
19287			},
19288			m(target, anchor) {
19289				insert(target, span, anchor);
19290				if (if_block) if_block.m(span, null);
19291			},
19292			p(ctx, dirty) {
19293				if (/*showPromoCodeDiscountAmount*/ ctx[0]) {
19294					if (if_block) {
19295						if_block.p(ctx, dirty);
19296					} else {
19297						if_block = create_if_block_6$6(ctx);
19298						if_block.c();
19299						if_block.m(span, null);
19300					}
19301				} else if (if_block) {
19302					if_block.d(1);
19303					if_block = null;
19304				}
19305			},
19306			i: noop,
19307			o: noop,
19308			d(detaching) {
19309				if (detaching) {
19310					detach(span);
19311				}
19312
19313				if (if_block) if_block.d();
19314			}
19315		};
19316	}
19317
19318	// (151:14) {#if showPromoCodeDiscountAmount}
19319	function create_if_block_6$6(ctx) {
19320		let t0;
19321		let t1;
19322
19323		return {
19324			c() {
19325				t0 = text("- ");
19326				t1 = text(/*discountAmount*/ ctx[13]);
19327			},
19328			m(target, anchor) {
19329				insert(target, t0, anchor);
19330				insert(target, t1, anchor);
19331			},
19332			p(ctx, dirty) {
19333				if (dirty[0] & /*discountAmount*/ 8192) set_data(t1, /*discountAmount*/ ctx[13]);
19334			},
19335			d(detaching) {
19336				if (detaching) {
19337					detach(t0);
19338					detach(t1);
19339				}
19340			}
19341		};
19342	}
19343
19344	// (167:6) {#if error}
19345	function create_if_block_4$8(ctx) {
19346		let errormessage;
19347		let current;
19348
19349		errormessage = new ErrorMessage({
19350				props: {
19351					error: /*error*/ ctx[14],
19352					isPaymentForm: true
19353				}
19354			});
19355
19356		return {
19357			c() {
19358				create_component(errormessage.$$.fragment);
19359			},
19360			m(target, anchor) {
19361				mount_component(errormessage, target, anchor);
19362				current = true;
19363			},
19364			p(ctx, dirty) {
19365				const errormessage_changes = {};
19366				if (dirty[0] & /*error*/ 16384) errormessage_changes.error = /*error*/ ctx[14];
19367				errormessage.$set(errormessage_changes);
19368			},
19369			i(local) {
19370				if (current) return;
19371				transition_in(errormessage.$$.fragment, local);
19372				current = true;
19373			},
19374			o(local) {
19375				transition_out(errormessage.$$.fragment, local);
19376				current = false;
19377			},
19378			d(detaching) {
19379				destroy_component(errormessage, detaching);
19380			}
19381		};
19382	}
19383
19384	// (180:2) {#if prorateDisclaimer}
19385	function create_if_block_1$m(ctx) {
19386		let div;
19387		let t;
19388
19389		return {
19390			c() {
19391				div = element("div");
19392				t = text(/*prorateDisclaimer*/ ctx[10]);
19393				attr(div, "class", "zephr-form-summary-prorate-disclaimer zephr-payment-form-summary-prorate-disclaimer svelte-xf8v79");
19394			},
19395			m(target, anchor) {
19396				insert(target, div, anchor);
19397				append(div, t);
19398			},
19399			p(ctx, dirty) {
19400				if (dirty[0] & /*prorateDisclaimer*/ 1024) set_data(t, /*prorateDisclaimer*/ ctx[10]);
19401			},
19402			d(detaching) {
19403				if (detaching) {
19404					detach(div);
19405				}
19406			}
19407		};
19408	}
19409
19410	// (185:2) {#if changeSubscriptionProrate}
19411	function create_if_block$w(ctx) {
19412		let div2;
19413		let div0;
19414		let t0_value = (/*prorateLabel*/ ctx[9] ?? "DUE TODAY") + "";
19415		let t0;
19416		let t1;
19417		let div1;
19418		let t2_value = /*changeSubscriptionProrate*/ ctx[20].totalPriceFormattedString + "";
19419		let t2;
19420
19421		return {
19422			c() {
19423				div2 = element("div");
19424				div0 = element("div");
19425				t0 = text(t0_value);
19426				t1 = space();
19427				div1 = element("div");
19428				t2 = text(t2_value);
19429				attr(div0, "class", "zephr-form-summary-line-total-title zephr-payment-form-summary-line-total-title");
19430				attr(div1, "class", "zephr-form-summary-line-price zephr-payment-form-summary-line-price svelte-xf8v79");
19431				attr(div2, "class", "zephr-form-summary-line zephr-form-summary-price-line zephr-payment-form-summary-line zephr-payment-form-summary-price-line svelte-xf8v79");
19432			},
19433			m(target, anchor) {
19434				insert(target, div2, anchor);
19435				append(div2, div0);
19436				append(div0, t0);
19437				append(div2, t1);
19438				append(div2, div1);
19439				append(div1, t2);
19440			},
19441			p(ctx, dirty) {
19442				if (dirty[0] & /*prorateLabel*/ 512 && t0_value !== (t0_value = (/*prorateLabel*/ ctx[9] ?? "DUE TODAY") + "")) set_data(t0, t0_value);
19443				if (dirty[0] & /*changeSubscriptionProrate*/ 1048576 && t2_value !== (t2_value = /*changeSubscriptionProrate*/ ctx[20].totalPriceFormattedString + "")) set_data(t2, t2_value);
19444			},
19445			d(detaching) {
19446				if (detaching) {
19447					detach(div2);
19448				}
19449			}
19450		};
19451	}
19452
19453	function create_fragment$G(ctx) {
19454		let div7;
19455		let div0;
19456		let t0;
19457		let t1;
19458		let div3;
19459		let div1;
19460		let t2;
19461		let t3;
19462		let div2;
19463		let t4;
19464		let t5;
19465		let t6;
19466		let t7;
19467		let t8;
19468		let t9;
19469		let t10;
19470		let div6;
19471		let div4;
19472		let t11;
19473		let t12;
19474		let div5;
19475		let t13;
19476		let t14;
19477		let t15;
19478		let current;
19479		let each_value_2 = ensure_array_like(/*chargeItems*/ ctx[19]);
19480		let each_blocks_1 = [];
19481
19482		for (let i = 0; i < each_value_2.length; i += 1) {
19483			each_blocks_1[i] = create_each_block_2(get_each_context_2(ctx, each_value_2, i));
19484		}
19485
19486		let if_block0 = /*paymentProvider*/ ctx[24] === 'braintree' && /*discounts*/ ctx[23].length > 0 && create_if_block_14$2(ctx);
19487		let if_block1 = /*tax*/ ctx[21] && create_if_block_13$2(ctx);
19488		let each_value = ensure_array_like(/*addons*/ ctx[18]);
19489		let each_blocks = [];
19490
19491		for (let i = 0; i < each_value.length; i += 1) {
19492			each_blocks[i] = create_each_block$c(get_each_context$c(ctx, each_value, i));
19493		}
19494
19495		let if_block2 = /*allowPromoCodes*/ ctx[3] && create_if_block_2$e(ctx);
19496		let if_block3 = /*prorateDisclaimer*/ ctx[10] && create_if_block_1$m(ctx);
19497		let if_block4 = /*changeSubscriptionProrate*/ ctx[20] && create_if_block$w(ctx);
19498
19499		return {
19500			c() {
19501				div7 = element("div");
19502				div0 = element("div");
19503				t0 = text(/*title*/ ctx[7]);
19504				t1 = space();
19505				div3 = element("div");
19506				div1 = element("div");
19507				t2 = text(/*planTitle*/ ctx[1]);
19508				t3 = space();
19509				div2 = element("div");
19510				t4 = text(/*displayPrice*/ ctx[30]);
19511				t5 = space();
19512
19513				for (let i = 0; i < each_blocks_1.length; i += 1) {
19514					each_blocks_1[i].c();
19515				}
19516
19517				t6 = space();
19518				if (if_block0) if_block0.c();
19519				t7 = space();
19520				if (if_block1) if_block1.c();
19521				t8 = space();
19522
19523				for (let i = 0; i < each_blocks.length; i += 1) {
19524					each_blocks[i].c();
19525				}
19526
19527				t9 = space();
19528				if (if_block2) if_block2.c();
19529				t10 = space();
19530				div6 = element("div");
19531				div4 = element("div");
19532				t11 = text(/*totalLabel*/ ctx[8]);
19533				t12 = space();
19534				div5 = element("div");
19535				t13 = text(/*totalPrice*/ ctx[2]);
19536				t14 = space();
19537				if (if_block3) if_block3.c();
19538				t15 = space();
19539				if (if_block4) if_block4.c();
19540				attr(div0, "class", "zephr-form-summary-title zephr-payment-form-summary-title svelte-xf8v79");
19541				attr(div1, "class", "zephr-form-summary-line-title zephr-payment-form-summary-line-title svelte-xf8v79");
19542				attr(div2, "class", "zephr-form-summary-line-price zephr-payment-form-summary-line-price svelte-xf8v79");
19543				attr(div3, "class", "zephr-form-summary-line zephr-payment-form-summary-line svelte-xf8v79");
19544				attr(div4, "class", "zephr-form-summary-line-total-title zephr-payment-form-summary-line-total-title");
19545				attr(div5, "class", "zephr-form-summary-line-price zephr-payment-form-summary-line-price svelte-xf8v79");
19546				attr(div6, "class", "zephr-form-summary-line zephr-form-summary-price-line zephr-form-summary-price-line-upper zephr-payment-form-summary-line zephr-payment-form-summary-price-line zephr-payment-form-summary-price-line-upper svelte-xf8v79");
19547				attr(div7, "class", "zephr-form-summary zephr-payment-form-summary svelte-xf8v79");
19548			},
19549			m(target, anchor) {
19550				insert(target, div7, anchor);
19551				append(div7, div0);
19552				append(div0, t0);
19553				append(div7, t1);
19554				append(div7, div3);
19555				append(div3, div1);
19556				append(div1, t2);
19557				append(div3, t3);
19558				append(div3, div2);
19559				append(div2, t4);
19560				append(div7, t5);
19561
19562				for (let i = 0; i < each_blocks_1.length; i += 1) {
19563					if (each_blocks_1[i]) {
19564						each_blocks_1[i].m(div7, null);
19565					}
19566				}
19567
19568				append(div7, t6);
19569				if (if_block0) if_block0.m(div7, null);
19570				append(div7, t7);
19571				if (if_block1) if_block1.m(div7, null);
19572				append(div7, t8);
19573
19574				for (let i = 0; i < each_blocks.length; i += 1) {
19575					if (each_blocks[i]) {
19576						each_blocks[i].m(div7, null);
19577					}
19578				}
19579
19580				append(div7, t9);
19581				if (if_block2) if_block2.m(div7, null);
19582				append(div7, t10);
19583				append(div7, div6);
19584				append(div6, div4);
19585				append(div4, t11);
19586				append(div6, t12);
19587				append(div6, div5);
19588				append(div5, t13);
19589				append(div7, t14);
19590				if (if_block3) if_block3.m(div7, null);
19591				append(div7, t15);
19592				if (if_block4) if_block4.m(div7, null);
19593				current = true;
19594			},
19595			p(ctx, dirty) {
19596				if (!current || dirty[0] & /*title*/ 128) set_data(t0, /*title*/ ctx[7]);
19597				if (!current || dirty[0] & /*planTitle*/ 2) set_data(t2, /*planTitle*/ ctx[1]);
19598				if (!current || dirty[0] & /*displayPrice*/ 1073741824) set_data(t4, /*displayPrice*/ ctx[30]);
19599
19600				if (dirty[0] & /*chargeItems*/ 524288) {
19601					each_value_2 = ensure_array_like(/*chargeItems*/ ctx[19]);
19602					let i;
19603
19604					for (i = 0; i < each_value_2.length; i += 1) {
19605						const child_ctx = get_each_context_2(ctx, each_value_2, i);
19606
19607						if (each_blocks_1[i]) {
19608							each_blocks_1[i].p(child_ctx, dirty);
19609						} else {
19610							each_blocks_1[i] = create_each_block_2(child_ctx);
19611							each_blocks_1[i].c();
19612							each_blocks_1[i].m(div7, t6);
19613						}
19614					}
19615
19616					for (; i < each_blocks_1.length; i += 1) {
19617						each_blocks_1[i].d(1);
19618					}
19619
19620					each_blocks_1.length = each_value_2.length;
19621				}
19622
19623				if (/*paymentProvider*/ ctx[24] === 'braintree' && /*discounts*/ ctx[23].length > 0) {
19624					if (if_block0) {
19625						if_block0.p(ctx, dirty);
19626					} else {
19627						if_block0 = create_if_block_14$2(ctx);
19628						if_block0.c();
19629						if_block0.m(div7, t7);
19630					}
19631				} else if (if_block0) {
19632					if_block0.d(1);
19633					if_block0 = null;
19634				}
19635
19636				if (/*tax*/ ctx[21]) {
19637					if (if_block1) {
19638						if_block1.p(ctx, dirty);
19639					} else {
19640						if_block1 = create_if_block_13$2(ctx);
19641						if_block1.c();
19642						if_block1.m(div7, t8);
19643					}
19644				} else if (if_block1) {
19645					if_block1.d(1);
19646					if_block1 = null;
19647				}
19648
19649				if (dirty[0] & /*addons*/ 262144) {
19650					each_value = ensure_array_like(/*addons*/ ctx[18]);
19651					let i;
19652
19653					for (i = 0; i < each_value.length; i += 1) {
19654						const child_ctx = get_each_context$c(ctx, each_value, i);
19655
19656						if (each_blocks[i]) {
19657							each_blocks[i].p(child_ctx, dirty);
19658						} else {
19659							each_blocks[i] = create_each_block$c(child_ctx);
19660							each_blocks[i].c();
19661							each_blocks[i].m(div7, t9);
19662						}
19663					}
19664
19665					for (; i < each_blocks.length; i += 1) {
19666						each_blocks[i].d(1);
19667					}
19668
19669					each_blocks.length = each_value.length;
19670				}
19671
19672				if (/*allowPromoCodes*/ ctx[3]) {
19673					if (if_block2) {
19674						if_block2.p(ctx, dirty);
19675
19676						if (dirty[0] & /*allowPromoCodes*/ 8) {
19677							transition_in(if_block2, 1);
19678						}
19679					} else {
19680						if_block2 = create_if_block_2$e(ctx);
19681						if_block2.c();
19682						transition_in(if_block2, 1);
19683						if_block2.m(div7, t10);
19684					}
19685				} else if (if_block2) {
19686					group_outros();
19687
19688					transition_out(if_block2, 1, 1, () => {
19689						if_block2 = null;
19690					});
19691
19692					check_outros();
19693				}
19694
19695				if (!current || dirty[0] & /*totalLabel*/ 256) set_data(t11, /*totalLabel*/ ctx[8]);
19696				if (!current || dirty[0] & /*totalPrice*/ 4) set_data(t13, /*totalPrice*/ ctx[2]);
19697
19698				if (/*prorateDisclaimer*/ ctx[10]) {
19699					if (if_block3) {
19700						if_block3.p(ctx, dirty);
19701					} else {
19702						if_block3 = create_if_block_1$m(ctx);
19703						if_block3.c();
19704						if_block3.m(div7, t15);
19705					}
19706				} else if (if_block3) {
19707					if_block3.d(1);
19708					if_block3 = null;
19709				}
19710
19711				if (/*changeSubscriptionProrate*/ ctx[20]) {
19712					if (if_block4) {
19713						if_block4.p(ctx, dirty);
19714					} else {
19715						if_block4 = create_if_block$w(ctx);
19716						if_block4.c();
19717						if_block4.m(div7, null);
19718					}
19719				} else if (if_block4) {
19720					if_block4.d(1);
19721					if_block4 = null;
19722				}
19723			},
19724			i(local) {
19725				if (current) return;
19726				transition_in(if_block2);
19727				current = true;
19728			},
19729			o(local) {
19730				transition_out(if_block2);
19731				current = false;
19732			},
19733			d(detaching) {
19734				if (detaching) {
19735					detach(div7);
19736				}
19737
19738				destroy_each(each_blocks_1, detaching);
19739				if (if_block0) if_block0.d();
19740				if (if_block1) if_block1.d();
19741				destroy_each(each_blocks, detaching);
19742				if (if_block2) if_block2.d();
19743				if (if_block3) if_block3.d();
19744				if (if_block4) if_block4.d();
19745			}
19746		};
19747	}
19748
19749	function instance$G($$self, $$props, $$invalidate) {
19750		let displayPrice;
19751		let { showPromoCodeDiscountAmount = true } = $$props;
19752		let { planTitle } = $$props;
19753		let { price } = $$props;
19754		let { totalPrice } = $$props;
19755		let { allowPromoCodes } = $$props;
19756		let { promoCodeLinkText } = $$props;
19757		let { promoCodePlaceholder } = $$props;
19758		let { promoCodeButtonText } = $$props;
19759		let { title } = $$props;
19760		let { totalLabel } = $$props;
19761		let { prorateLabel } = $$props;
19762		let { prorateDisclaimer } = $$props;
19763		let { promoCode } = $$props;
19764		let { promoCodeValid } = $$props;
19765		let { discountAmount } = $$props;
19766		let { error = null } = $$props;
19767		let { busy } = $$props;
19768		let { promoCodeDisabled } = $$props;
19769		let { paymentProcessed } = $$props;
19770		let { addons } = $$props;
19771		let { chargeItems } = $$props;
19772		let { changeSubscriptionProrate } = $$props;
19773		let { tax } = $$props;
19774		let { taxLabel } = $$props;
19775		let { subTotal } = $$props;
19776		let { discounts = [] } = $$props;
19777		let { paymentProvider = '' } = $$props;
19778		let { onChangePromoCode } = $$props;
19779		let { verifyPromoCode } = $$props;
19780		let { onFocus } = $$props;
19781		let { onBlur } = $$props;
19782		let { logBeginCheckout } = $$props;
19783		let showPromoCode = false;
19784		logBeginCheckout();
19785		const click_handler = () => $$invalidate(29, showPromoCode = true);
19786		const change_handler = ({ detail }) => onChangePromoCode(detail);
19787
19788		$$self.$$set = $$props => {
19789			if ('showPromoCodeDiscountAmount' in $$props) $$invalidate(0, showPromoCodeDiscountAmount = $$props.showPromoCodeDiscountAmount);
19790			if ('planTitle' in $$props) $$invalidate(1, planTitle = $$props.planTitle);
19791			if ('price' in $$props) $$invalidate(31, price = $$props.price);
19792			if ('totalPrice' in $$props) $$invalidate(2, totalPrice = $$props.totalPrice);
19793			if ('allowPromoCodes' in $$props) $$invalidate(3, allowPromoCodes = $$props.allowPromoCodes);
19794			if ('promoCodeLinkText' in $$props) $$invalidate(4, promoCodeLinkText = $$props.promoCodeLinkText);
19795			if ('promoCodePlaceholder' in $$props) $$invalidate(5, promoCodePlaceholder = $$props.promoCodePlaceholder);
19796			if ('promoCodeButtonText' in $$props) $$invalidate(6, promoCodeButtonText = $$props.promoCodeButtonText);
19797			if ('title' in $$props) $$invalidate(7, title = $$props.title);
19798			if ('totalLabel' in $$props) $$invalidate(8, totalLabel = $$props.totalLabel);
19799			if ('prorateLabel' in $$props) $$invalidate(9, prorateLabel = $$props.prorateLabel);
19800			if ('prorateDisclaimer' in $$props) $$invalidate(10, prorateDisclaimer = $$props.prorateDisclaimer);
19801			if ('promoCode' in $$props) $$invalidate(11, promoCode = $$props.promoCode);
19802			if ('promoCodeValid' in $$props) $$invalidate(12, promoCodeValid = $$props.promoCodeValid);
19803			if ('discountAmount' in $$props) $$invalidate(13, discountAmount = $$props.discountAmount);
19804			if ('error' in $$props) $$invalidate(14, error = $$props.error);
19805			if ('busy' in $$props) $$invalidate(15, busy = $$props.busy);
19806			if ('promoCodeDisabled' in $$props) $$invalidate(16, promoCodeDisabled = $$props.promoCodeDisabled);
19807			if ('paymentProcessed' in $$props) $$invalidate(17, paymentProcessed = $$props.paymentProcessed);
19808			if ('addons' in $$props) $$invalidate(18, addons = $$props.addons);
19809			if ('chargeItems' in $$props) $$invalidate(19, chargeItems = $$props.chargeItems);
19810			if ('changeSubscriptionProrate' in $$props) $$invalidate(20, changeSubscriptionProrate = $$props.changeSubscriptionProrate);
19811			if ('tax' in $$props) $$invalidate(21, tax = $$props.tax);
19812			if ('taxLabel' in $$props) $$invalidate(22, taxLabel = $$props.taxLabel);
19813			if ('subTotal' in $$props) $$invalidate(32, subTotal = $$props.subTotal);
19814			if ('discounts' in $$props) $$invalidate(23, discounts = $$props.discounts);
19815			if ('paymentProvider' in $$props) $$invalidate(24, paymentProvider = $$props.paymentProvider);
19816			if ('onChangePromoCode' in $$props) $$invalidate(25, onChangePromoCode = $$props.onChangePromoCode);
19817			if ('verifyPromoCode' in $$props) $$invalidate(26, verifyPromoCode = $$props.verifyPromoCode);
19818			if ('onFocus' in $$props) $$invalidate(27, onFocus = $$props.onFocus);
19819			if ('onBlur' in $$props) $$invalidate(28, onBlur = $$props.onBlur);
19820			if ('logBeginCheckout' in $$props) $$invalidate(33, logBeginCheckout = $$props.logBeginCheckout);
19821		};
19822
19823		$$self.$$.update = () => {
19824			if ($$self.$$.dirty[0] & /*chargeItems*/ 524288 | $$self.$$.dirty[1] & /*subTotal, price*/ 3) {
19825				$$invalidate(30, displayPrice = chargeItems.length ? "" : subTotal || price);
19826			}
19827		};
19828
19829		return [
19830			showPromoCodeDiscountAmount,
19831			planTitle,
19832			totalPrice,
19833			allowPromoCodes,
19834			promoCodeLinkText,
19835			promoCodePlaceholder,
19836			promoCodeButtonText,
19837			title,
19838			totalLabel,
19839			prorateLabel,
19840			prorateDisclaimer,
19841			promoCode,
19842			promoCodeValid,
19843			discountAmount,
19844			error,
19845			busy,
19846			promoCodeDisabled,
19847			paymentProcessed,
19848			addons,
19849			chargeItems,
19850			changeSubscriptionProrate,
19851			tax,
19852			taxLabel,
19853			discounts,
19854			paymentProvider,
19855			onChangePromoCode,
19856			verifyPromoCode,
19857			onFocus,
19858			onBlur,
19859			showPromoCode,
19860			displayPrice,
19861			price,
19862			subTotal,
19863			logBeginCheckout,
19864			click_handler,
19865			change_handler
19866		];
19867	}
19868
19869	class PaymentSummary extends SvelteComponent {
19870		constructor(options) {
19871			super();
19872
19873			init(
19874				this,
19875				options,
19876				instance$G,
19877				create_fragment$G,
19878				safe_not_equal,
19879				{
19880					showPromoCodeDiscountAmount: 0,
19881					planTitle: 1,
19882					price: 31,
19883					totalPrice: 2,
19884					allowPromoCodes: 3,
19885					promoCodeLinkText: 4,
19886					promoCodePlaceholder: 5,
19887					promoCodeButtonText: 6,
19888					title: 7,
19889					totalLabel: 8,
19890					prorateLabel: 9,
19891					prorateDisclaimer: 10,
19892					promoCode: 11,
19893					promoCodeValid: 12,
19894					discountAmount: 13,
19895					error: 14,
19896					busy: 15,
19897					promoCodeDisabled: 16,
19898					paymentProcessed: 17,
19899					addons: 18,
19900					chargeItems: 19,
19901					changeSubscriptionProrate: 20,
19902					tax: 21,
19903					taxLabel: 22,
19904					subTotal: 32,
19905					discounts: 23,
19906					paymentProvider: 24,
19907					onChangePromoCode: 25,
19908					verifyPromoCode: 26,
19909					onFocus: 27,
19910					onBlur: 28,
19911					logBeginCheckout: 33
19912				},
19913				null,
19914				[-1, -1]
19915			);
19916		}
19917	}
19918
19919	const factory$f = {
19920	    matches: (sectionElement) => sectionElement.type === elementTypes.PAYMENT_SUMMARY,
19921	    create: (form, formState, formActions, elementConfig) => {
19922	        const paymentProviderConfig = paymentProviderFor(form.organisationConfiguration.paymentProvider);
19923	        return {
19924	            component: PaymentSummary,
19925	            props: {
19926	                showPromoCodeDiscountAmount: !formConfigAs(form).dynamicOffer,
19927	                price: formState.paymentOptionPrices?.netPriceFormattedString ?? '-',
19928	                totalPrice: formState.paymentOptionPrices?.totalPriceFormattedString ?? '-',
19929	                tax: formState.paymentOptionPrices?.taxPriceFormattedString,
19930	                taxLabel: elementConfig.taxLabel ?? "Tax",
19931	                subTotal: formState.paymentOptionPrices?.netPriceFormattedString,
19932	                planTitle: formState.paymentOption.label,
19933	                paymentProvider: form.organisationConfiguration.paymentProvider,
19934	                // If we're using braintree we will need the full discounts array to display each discount
19935	                discounts: form.organisationConfiguration.paymentProvider === 'braintree' ?
19936	                    (formConfigAs(form).paymentOptions
19937	                        .find(opt => opt.productId === formState.paymentOption.productId && opt.slug === formState.paymentOption.slug)
19938	                        ?.discounts || [])
19939	                        .map(discount => ({
19940	                        description: discount.description || discount.name,
19941	                        formattedAmount: `- ${formatCurrency(discount.amount || 0, formState.paymentOption.currencyCode)}`
19942	                    })) : [],
19943	                allowPromoCodes: (formConfigAs(form).promoCodeConfig?.promoCodeAllowed
19944	                    || formConfigAs(form).dynamicOffer /* TODO temp just for customer demo */) && paymentProviderConfig.hasPromoCodes(form),
19945	                promoCodeLinkText: formConfigAs(form).promoCodeConfig?.promoCodeText,
19946	                promoCodePlaceholder: formConfigAs(form).promoCodeConfig?.promoCodePlaceholder,
19947	                promoCodeButtonText: formConfigAs(form).promoCodeConfig?.promoCodeButtonText,
19948	                totalLabel: elementConfig.total,
19949	                prorateLabel: elementConfig.prorateLabel,
19950	                prorateDisclaimer: (!formConfigAs(form).changeSubscriptionMode || paymentProviderConfig.changeSubscriptionProrateCalculator) ? null : elementConfig.prorateDisclaimer,
19951	                title: elementConfig.title,
19952	                promoCode: formState.promoCode,
19953	                busy: formState.isBusyByKey[verifyingPromoCodeBusyKey],
19954	                promoCodeDisabled: formState.isBusy || formState.promoCode?.length === 0,
19955	                paymentProcessed: formState.paymentProcessed,
19956	                discountAmount: formState.paymentOptionPrices?.discountPriceFormattedPrice ?? '-',
19957	                addons: addonsForPlan(formState)
19958	                    .map(addon => ({
19959	                    label: addon.label,
19960	                    addonPrice: formatCurrency(addon.addonPrice, formState.paymentOption.currencyCode)
19961	                })),
19962	                chargeItems: formState.paymentOptionPrices?.chargeItems ?? [],
19963	                promoCodeValid: formState.promoCodeValid,
19964	                changeSubscriptionProrate: formState.changeSubscriptionProrate,
19965	                onChangePromoCode: (value) => {
19966	                    let updateFormState = formActions.updateFormState({
19967	                        promoCode: value,
19968	                        promoCodeValid: undefined,
19969	                        discountedPlanPrices: []
19970	                    });
19971	                    // If we're going from a valid promo code -> incomplete promo code, the mobile payment button needs resetting
19972	                    if (formState.promoCodeValid) {
19973	                        if (formState.originalDynamicOfferResult) {
19974	                            updateFormState = formActions.updateFormState({
19975	                                dynamicOfferResult: formState.originalDynamicOfferResult
19976	                            });
19977	                        }
19978	                        void afterPromoCodeChange(form, updateFormState, formActions);
19979	                    }
19980	                    logDataLayerEvent(form, 'zephr_form_input_change', {
19981	                        inputName: 'zephr-form-promo-code',
19982	                        sectionId: formState.currentSection.type,
19983	                        field: 'promo-code'
19984	                    });
19985	                },
19986	                onFocus: () => logDataLayerEvent(form, 'zephr_form_input_focus', {
19987	                    inputName: 'zephr-form-promo-code',
19988	                    sectionId: formState.currentSection.type,
19989	                    field: 'promo-code'
19990	                }),
19991	                onBlur: () => logDataLayerEvent(form, 'zephr_form_input_blur', {
19992	                    inputName: 'zephr-form-promo-code',
19993	                    sectionId: formState.currentSection.type,
19994	                    field: 'promo-code'
19995	                }),
19996	                verifyPromoCode: () => {
19997	                    void validatePromoCode(form, formState, formActions);
19998	                },
19999	                logBeginCheckout: async () => {
20000	                    if (formState.currentPart.type === partTypes.PAYMENT.type) {
20001	                        if (form.organisationConfiguration.trackFormDataLayerEvents) {
20002	                            await calculatePrices(form, formState, formActions);
20003	                        }
20004	                        logDataLayerEvent(form, 'begin_checkout', {
20005	                            ecommerce: {
20006	                                currency: getRelevantCurrency(form, formState),
20007	                                value: formActions.getFormState().paymentOptionPrices?.totalPrice,
20008	                                items: [{
20009	                                        item_id: formState.paymentOption.slug,
20010	                                        item_name: formState.paymentOption.productId,
20011	                                        price: formActions.getFormState().paymentOptionPrices?.totalPrice,
20012	                                        quantity: 1
20013	                                    }]
20014	                            }
20015	                        });
20016	                    }
20017	                }
20018	            }
20019	        };
20020	    }
20021	};
20022
20023	/* src/components/elements/divider/Divider.svelte generated by Svelte v4.2.12 */
20024
20025	function create_if_block$v(ctx) {
20026		let div;
20027		let t0;
20028		let t1;
20029		let if_block0 = /*showLine*/ ctx[1] && create_if_block_3$9(ctx);
20030		let if_block1 = /*text*/ ctx[0] && create_if_block_2$d(ctx);
20031		let if_block2 = /*showLine*/ ctx[1] && /*text*/ ctx[0] && create_if_block_1$l(ctx);
20032
20033		return {
20034			c() {
20035				div = element("div");
20036				if (if_block0) if_block0.c();
20037				t0 = space();
20038				if (if_block1) if_block1.c();
20039				t1 = space();
20040				if (if_block2) if_block2.c();
20041				attr(div, "class", "zephr-form-divider-container svelte-1jhhsfx");
20042				toggle_class(div, "zephr-payment-form-divider-container", /*isPaymentForm*/ ctx[3]);
20043			},
20044			m(target, anchor) {
20045				insert(target, div, anchor);
20046				if (if_block0) if_block0.m(div, null);
20047				append(div, t0);
20048				if (if_block1) if_block1.m(div, null);
20049				append(div, t1);
20050				if (if_block2) if_block2.m(div, null);
20051			},
20052			p(ctx, dirty) {
20053				if (/*showLine*/ ctx[1]) {
20054					if (if_block0) {
20055						if_block0.p(ctx, dirty);
20056					} else {
20057						if_block0 = create_if_block_3$9(ctx);
20058						if_block0.c();
20059						if_block0.m(div, t0);
20060					}
20061				} else if (if_block0) {
20062					if_block0.d(1);
20063					if_block0 = null;
20064				}
20065
20066				if (/*text*/ ctx[0]) {
20067					if (if_block1) {
20068						if_block1.p(ctx, dirty);
20069					} else {
20070						if_block1 = create_if_block_2$d(ctx);
20071						if_block1.c();
20072						if_block1.m(div, t1);
20073					}
20074				} else if (if_block1) {
20075					if_block1.d(1);
20076					if_block1 = null;
20077				}
20078
20079				if (/*showLine*/ ctx[1] && /*text*/ ctx[0]) {
20080					if (if_block2) {
20081						if_block2.p(ctx, dirty);
20082					} else {
20083						if_block2 = create_if_block_1$l(ctx);
20084						if_block2.c();
20085						if_block2.m(div, null);
20086					}
20087				} else if (if_block2) {
20088					if_block2.d(1);
20089					if_block2 = null;
20090				}
20091
20092				if (dirty & /*isPaymentForm*/ 8) {
20093					toggle_class(div, "zephr-payment-form-divider-container", /*isPaymentForm*/ ctx[3]);
20094				}
20095			},
20096			d(detaching) {
20097				if (detaching) {
20098					detach(div);
20099				}
20100
20101				if (if_block0) if_block0.d();
20102				if (if_block1) if_block1.d();
20103				if (if_block2) if_block2.d();
20104			}
20105		};
20106	}
20107
20108	// (12:4) {#if showLine}
20109	function create_if_block_3$9(ctx) {
20110		let if_block_anchor;
20111
20112		function select_block_type(ctx, dirty) {
20113			if (/*text*/ ctx[0]) return create_if_block_4$7;
20114			return create_else_block$4;
20115		}
20116
20117		let current_block_type = select_block_type(ctx);
20118		let if_block = current_block_type(ctx);
20119
20120		return {
20121			c() {
20122				if_block.c();
20123				if_block_anchor = empty();
20124			},
20125			m(target, anchor) {
20126				if_block.m(target, anchor);
20127				insert(target, if_block_anchor, anchor);
20128			},
20129			p(ctx, dirty) {
20130				if (current_block_type === (current_block_type = select_block_type(ctx)) && if_block) {
20131					if_block.p(ctx, dirty);
20132				} else {
20133					if_block.d(1);
20134					if_block = current_block_type(ctx);
20135
20136					if (if_block) {
20137						if_block.c();
20138						if_block.m(if_block_anchor.parentNode, if_block_anchor);
20139					}
20140				}
20141			},
20142			d(detaching) {
20143				if (detaching) {
20144					detach(if_block_anchor);
20145				}
20146
20147				if_block.d(detaching);
20148			}
20149		};
20150	}
20151
20152	// (18:8) {:else}
20153	function create_else_block$4(ctx) {
20154		let div;
20155
20156		return {
20157			c() {
20158				div = element("div");
20159				attr(div, "class", "zephr-form-divider-line-complete svelte-1jhhsfx");
20160			},
20161			m(target, anchor) {
20162				insert(target, div, anchor);
20163			},
20164			p: noop,
20165			d(detaching) {
20166				if (detaching) {
20167					detach(div);
20168				}
20169			}
20170		};
20171	}
20172
20173	// (13:6) {#if text}
20174	function create_if_block_4$7(ctx) {
20175		let div;
20176
20177		return {
20178			c() {
20179				div = element("div");
20180				attr(div, "class", "zephr-form-divider-line svelte-1jhhsfx");
20181				toggle_class(div, "zephr-payment-form-divider-line", /*isPaymentForm*/ ctx[3]);
20182			},
20183			m(target, anchor) {
20184				insert(target, div, anchor);
20185			},
20186			p(ctx, dirty) {
20187				if (dirty & /*isPaymentForm*/ 8) {
20188					toggle_class(div, "zephr-payment-form-divider-line", /*isPaymentForm*/ ctx[3]);
20189				}
20190			},
20191			d(detaching) {
20192				if (detaching) {
20193					detach(div);
20194				}
20195			}
20196		};
20197	}
20198
20199	// (22:4) {#if text}
20200	function create_if_block_2$d(ctx) {
20201		let span;
20202		let t;
20203
20204		return {
20205			c() {
20206				span = element("span");
20207				t = text(/*text*/ ctx[0]);
20208				attr(span, "class", "zephr-form-divider-text svelte-1jhhsfx");
20209				toggle_class(span, "zephr-payment-form-divider-text", /*isPaymentForm*/ ctx[3]);
20210			},
20211			m(target, anchor) {
20212				insert(target, span, anchor);
20213				append(span, t);
20214			},
20215			p(ctx, dirty) {
20216				if (dirty & /*text*/ 1) set_data(t, /*text*/ ctx[0]);
20217
20218				if (dirty & /*isPaymentForm*/ 8) {
20219					toggle_class(span, "zephr-payment-form-divider-text", /*isPaymentForm*/ ctx[3]);
20220				}
20221			},
20222			d(detaching) {
20223				if (detaching) {
20224					detach(span);
20225				}
20226			}
20227		};
20228	}
20229
20230	// (30:4) {#if showLine && text}
20231	function create_if_block_1$l(ctx) {
20232		let div;
20233
20234		return {
20235			c() {
20236				div = element("div");
20237				attr(div, "class", "zephr-form-divider-line svelte-1jhhsfx");
20238				toggle_class(div, "zephr-payment-form-divider-line", /*isPaymentForm*/ ctx[3]);
20239			},
20240			m(target, anchor) {
20241				insert(target, div, anchor);
20242			},
20243			p(ctx, dirty) {
20244				if (dirty & /*isPaymentForm*/ 8) {
20245					toggle_class(div, "zephr-payment-form-divider-line", /*isPaymentForm*/ ctx[3]);
20246				}
20247			},
20248			d(detaching) {
20249				if (detaching) {
20250					detach(div);
20251				}
20252			}
20253		};
20254	}
20255
20256	function create_fragment$F(ctx) {
20257		let if_block_anchor;
20258		let if_block = /*show*/ ctx[2] && create_if_block$v(ctx);
20259
20260		return {
20261			c() {
20262				if (if_block) if_block.c();
20263				if_block_anchor = empty();
20264			},
20265			m(target, anchor) {
20266				if (if_block) if_block.m(target, anchor);
20267				insert(target, if_block_anchor, anchor);
20268			},
20269			p(ctx, [dirty]) {
20270				if (/*show*/ ctx[2]) {
20271					if (if_block) {
20272						if_block.p(ctx, dirty);
20273					} else {
20274						if_block = create_if_block$v(ctx);
20275						if_block.c();
20276						if_block.m(if_block_anchor.parentNode, if_block_anchor);
20277					}
20278				} else if (if_block) {
20279					if_block.d(1);
20280					if_block = null;
20281				}
20282			},
20283			i: noop,
20284			o: noop,
20285			d(detaching) {
20286				if (detaching) {
20287					detach(if_block_anchor);
20288				}
20289
20290				if (if_block) if_block.d(detaching);
20291			}
20292		};
20293	}
20294
20295	function instance$F($$self, $$props, $$invalidate) {
20296		let { text } = $$props;
20297		let { showLine } = $$props;
20298		let { show } = $$props;
20299		let { isPaymentForm = false } = $$props;
20300
20301		$$self.$$set = $$props => {
20302			if ('text' in $$props) $$invalidate(0, text = $$props.text);
20303			if ('showLine' in $$props) $$invalidate(1, showLine = $$props.showLine);
20304			if ('show' in $$props) $$invalidate(2, show = $$props.show);
20305			if ('isPaymentForm' in $$props) $$invalidate(3, isPaymentForm = $$props.isPaymentForm);
20306		};
20307
20308		return [text, showLine, show, isPaymentForm];
20309	}
20310
20311	class Divider extends SvelteComponent {
20312		constructor(options) {
20313			super();
20314
20315			init(this, options, instance$F, create_fragment$F, safe_not_equal, {
20316				text: 0,
20317				showLine: 1,
20318				show: 2,
20319				isPaymentForm: 3
20320			});
20321		}
20322	}
20323
20324	const factory$e = {
20325	    matches: (sectionElement) => sectionElement.type === elementTypes.DIVIDER,
20326	    create: (form, formState, formActions, elementConfig) => ({
20327	        component: Divider,
20328	        props: {
20329	            text: elementConfig.text,
20330	            showLine: elementConfig.showLine,
20331	            show: elementConfig.show,
20332	            isPaymentForm: form.formType === FormType.PAYMENT,
20333	        }
20334	    })
20335	};
20336
20337	/* src/components/elements/loginLink/LoginLink.svelte generated by Svelte v4.2.12 */
20338
20339	function create_fragment$E(ctx) {
20340		let div;
20341		let t0;
20342		let t1;
20343		let a;
20344		let t2;
20345
20346		return {
20347			c() {
20348				div = element("div");
20349				t0 = text(/*text*/ ctx[0]);
20350				t1 = space();
20351				a = element("a");
20352				t2 = text(/*linkText*/ ctx[1]);
20353				attr(a, "href", /*url*/ ctx[2]);
20354				attr(a, "class", "svelte-1jmemom");
20355				attr(div, "class", "zephr-form-login-link svelte-1jmemom");
20356				toggle_class(div, "zephr-payment-login-link", /*isPaymentForm*/ ctx[3]);
20357			},
20358			m(target, anchor) {
20359				insert(target, div, anchor);
20360				append(div, t0);
20361				append(div, t1);
20362				append(div, a);
20363				append(a, t2);
20364			},
20365			p(ctx, [dirty]) {
20366				if (dirty & /*text*/ 1) set_data(t0, /*text*/ ctx[0]);
20367				if (dirty & /*linkText*/ 2) set_data(t2, /*linkText*/ ctx[1]);
20368
20369				if (dirty & /*url*/ 4) {
20370					attr(a, "href", /*url*/ ctx[2]);
20371				}
20372
20373				if (dirty & /*isPaymentForm*/ 8) {
20374					toggle_class(div, "zephr-payment-login-link", /*isPaymentForm*/ ctx[3]);
20375				}
20376			},
20377			i: noop,
20378			o: noop,
20379			d(detaching) {
20380				if (detaching) {
20381					detach(div);
20382				}
20383			}
20384		};
20385	}
20386
20387	function instance$E($$self, $$props, $$invalidate) {
20388		let { text } = $$props;
20389		let { linkText } = $$props;
20390		let { url } = $$props;
20391		let { isPaymentForm = false } = $$props;
20392
20393		$$self.$$set = $$props => {
20394			if ('text' in $$props) $$invalidate(0, text = $$props.text);
20395			if ('linkText' in $$props) $$invalidate(1, linkText = $$props.linkText);
20396			if ('url' in $$props) $$invalidate(2, url = $$props.url);
20397			if ('isPaymentForm' in $$props) $$invalidate(3, isPaymentForm = $$props.isPaymentForm);
20398		};
20399
20400		return [text, linkText, url, isPaymentForm];
20401	}
20402
20403	class LoginLink extends SvelteComponent {
20404		constructor(options) {
20405			super();
20406
20407			init(this, options, instance$E, create_fragment$E, safe_not_equal, {
20408				text: 0,
20409				linkText: 1,
20410				url: 2,
20411				isPaymentForm: 3
20412			});
20413		}
20414	}
20415
20416	const factory$d = {
20417	    matches: (sectionElement) => sectionElement.type === elementTypes.LOGIN_LINK,
20418	    create: (form, formState, formActions, elementConfig) => ({
20419	        component: LoginLink,
20420	        props: {
20421	            text: elementConfig.alreadyRegText,
20422	            linkText: elementConfig.loginText,
20423	            url: elementConfig.url,
20424	            isPaymentForm: form.formType === FormType.PAYMENT,
20425	        }
20426	    })
20427	};
20428
20429	const factory$c = {
20430	    matches: (sectionElement) => sectionElement.type === elementTypes.BUTTON && sectionElement.config.isLogin,
20431	    create: (form, formState, formActions, elementConfig) => ({
20432	        component: Button,
20433	        props: {
20434	            disabled: formState.isBusy,
20435	            text: elementConfig.text,
20436	            onClick: () => {
20437	                logDataLayerEvent(form, 'zephr_form_button_press', {
20438	                    sectionId: formState.currentSection.type,
20439	                    buttonType: 'SUBMIT'
20440	                });
20441	                formActions.updateFormState({
20442	                    forgotPassword: false,
20443	                });
20444	                formActions.jumpToPartStart(partTypes.ACCOUNT_VERIFICATION.type);
20445	            },
20446	            isPaymentForm: form.formType === FormType.PAYMENT,
20447	        }
20448	    })
20449	};
20450
20451	const factory$b = {
20452	    matches: (sectionElement) => sectionElement.type === elementTypes.BUTTON && sectionElement.config.isCancel,
20453	    create: (form, formState, formActions, elementConfig) => ({
20454	        component: Button,
20455	        props: {
20456	            text: elementConfig.text,
20457	            onClick: () => {
20458	                logDataLayerEvent(form, 'zephr_form_button_press', {
20459	                    sectionId: formState.currentSection.type,
20460	                    buttonType: 'SUBMIT'
20461	                });
20462	                formActions.updateFormState({
20463	                    confirmCancel: true,
20464	                });
20465	                formActions.completeSection();
20466	            },
20467	        }
20468	    })
20469	};
20470
20471	/* src/components/elements/accountMembershipCode/AccountMembershipCode.svelte generated by Svelte v4.2.12 */
20472
20473	function create_if_block_1$k(ctx) {
20474		let link;
20475		let current;
20476		link = new Link({ props: { text: /*label*/ ctx[0] } });
20477		link.$on("linkClick", /*linkClick_handler*/ ctx[10]);
20478
20479		return {
20480			c() {
20481				create_component(link.$$.fragment);
20482			},
20483			m(target, anchor) {
20484				mount_component(link, target, anchor);
20485				current = true;
20486			},
20487			p(ctx, dirty) {
20488				const link_changes = {};
20489				if (dirty & /*label*/ 1) link_changes.text = /*label*/ ctx[0];
20490				link.$set(link_changes);
20491			},
20492			i(local) {
20493				if (current) return;
20494				transition_in(link.$$.fragment, local);
20495				current = true;
20496			},
20497			o(local) {
20498				transition_out(link.$$.fragment, local);
20499				current = false;
20500			},
20501			d(detaching) {
20502				destroy_component(link, detaching);
20503			}
20504		};
20505	}
20506
20507	// (23:2) {#if accountMembershipCode || showInput}
20508	function create_if_block$u(ctx) {
20509		let label_1;
20510		let t;
20511		let input;
20512		let current;
20513
20514		label_1 = new Label({
20515				props: {
20516					forInput: /*id*/ ctx[8],
20517					label: /*label*/ ctx[0]
20518				}
20519			});
20520
20521		input = new Input({
20522				props: {
20523					id: /*id*/ ctx[8],
20524					value: /*accountMembershipCode*/ ctx[2],
20525					errorMessage: /*error*/ ctx[3],
20526					placeholder: /*placeholder*/ ctx[1],
20527					onFocus: /*onFocus*/ ctx[5],
20528					onBlur: /*onBlur*/ ctx[6]
20529				}
20530			});
20531
20532		input.$on("change", /*change_handler*/ ctx[11]);
20533
20534		return {
20535			c() {
20536				create_component(label_1.$$.fragment);
20537				t = space();
20538				create_component(input.$$.fragment);
20539			},
20540			m(target, anchor) {
20541				mount_component(label_1, target, anchor);
20542				insert(target, t, anchor);
20543				mount_component(input, target, anchor);
20544				current = true;
20545			},
20546			p(ctx, dirty) {
20547				const label_1_changes = {};
20548				if (dirty & /*label*/ 1) label_1_changes.label = /*label*/ ctx[0];
20549				label_1.$set(label_1_changes);
20550				const input_changes = {};
20551				if (dirty & /*accountMembershipCode*/ 4) input_changes.value = /*accountMembershipCode*/ ctx[2];
20552				if (dirty & /*error*/ 8) input_changes.errorMessage = /*error*/ ctx[3];
20553				if (dirty & /*placeholder*/ 2) input_changes.placeholder = /*placeholder*/ ctx[1];
20554				if (dirty & /*onFocus*/ 32) input_changes.onFocus = /*onFocus*/ ctx[5];
20555				if (dirty & /*onBlur*/ 64) input_changes.onBlur = /*onBlur*/ ctx[6];
20556				input.$set(input_changes);
20557			},
20558			i(local) {
20559				if (current) return;
20560				transition_in(label_1.$$.fragment, local);
20561				transition_in(input.$$.fragment, local);
20562				current = true;
20563			},
20564			o(local) {
20565				transition_out(label_1.$$.fragment, local);
20566				transition_out(input.$$.fragment, local);
20567				current = false;
20568			},
20569			d(detaching) {
20570				if (detaching) {
20571					detach(t);
20572				}
20573
20574				destroy_component(label_1, detaching);
20575				destroy_component(input, detaching);
20576			}
20577		};
20578	}
20579
20580	function create_fragment$D(ctx) {
20581		let div;
20582		let t;
20583		let current;
20584		let if_block0 = !/*showInput*/ ctx[7] && create_if_block_1$k(ctx);
20585		let if_block1 = (/*accountMembershipCode*/ ctx[2] || /*showInput*/ ctx[7]) && create_if_block$u(ctx);
20586
20587		return {
20588			c() {
20589				div = element("div");
20590				if (if_block0) if_block0.c();
20591				t = space();
20592				if (if_block1) if_block1.c();
20593				attr(div, "class", "zephr-form-account-code-container svelte-1hhep92");
20594			},
20595			m(target, anchor) {
20596				insert(target, div, anchor);
20597				if (if_block0) if_block0.m(div, null);
20598				append(div, t);
20599				if (if_block1) if_block1.m(div, null);
20600				current = true;
20601			},
20602			p(ctx, [dirty]) {
20603				if (!/*showInput*/ ctx[7]) {
20604					if (if_block0) {
20605						if_block0.p(ctx, dirty);
20606
20607						if (dirty & /*showInput*/ 128) {
20608							transition_in(if_block0, 1);
20609						}
20610					} else {
20611						if_block0 = create_if_block_1$k(ctx);
20612						if_block0.c();
20613						transition_in(if_block0, 1);
20614						if_block0.m(div, t);
20615					}
20616				} else if (if_block0) {
20617					group_outros();
20618
20619					transition_out(if_block0, 1, 1, () => {
20620						if_block0 = null;
20621					});
20622
20623					check_outros();
20624				}
20625
20626				if (/*accountMembershipCode*/ ctx[2] || /*showInput*/ ctx[7]) {
20627					if (if_block1) {
20628						if_block1.p(ctx, dirty);
20629
20630						if (dirty & /*accountMembershipCode, showInput*/ 132) {
20631							transition_in(if_block1, 1);
20632						}
20633					} else {
20634						if_block1 = create_if_block$u(ctx);
20635						if_block1.c();
20636						transition_in(if_block1, 1);
20637						if_block1.m(div, null);
20638					}
20639				} else if (if_block1) {
20640					group_outros();
20641
20642					transition_out(if_block1, 1, 1, () => {
20643						if_block1 = null;
20644					});
20645
20646					check_outros();
20647				}
20648			},
20649			i(local) {
20650				if (current) return;
20651				transition_in(if_block0);
20652				transition_in(if_block1);
20653				current = true;
20654			},
20655			o(local) {
20656				transition_out(if_block0);
20657				transition_out(if_block1);
20658				current = false;
20659			},
20660			d(detaching) {
20661				if (detaching) {
20662					detach(div);
20663				}
20664
20665				if (if_block0) if_block0.d();
20666				if (if_block1) if_block1.d();
20667			}
20668		};
20669	}
20670
20671	function instance$D($$self, $$props, $$invalidate) {
20672		let { formKey } = $$props;
20673		let { label } = $$props;
20674		let { placeholder } = $$props;
20675		let { accountMembershipCode } = $$props;
20676		let { error = null } = $$props;
20677		let { onChange } = $$props;
20678		let { onFocus } = $$props;
20679		let { onBlur } = $$props;
20680		let showInput = false;
20681		const id = `zephr-form-account-code-${formKey}`;
20682		const linkClick_handler = () =>
20682 $$invalidate(7, showInput = true);
20683		const change_handler = value => onChange(value.detail);
20684
20685		$$self.$$set = $$props => {
20686			if ('formKey' in $$props) $$invalidate(9, formKey = $$props.formKey);
20687			if ('label' in $$props) $$invalidate(0, label = $$props.label);
20688			if ('placeholder' in $$props) $$invalidate(1, placeholder = $$props.placeholder);
20689			if ('accountMembershipCode' in $$props) $$invalidate(2, accountMembershipCode = $$props.accountMembershipCode);
20690			if ('error' in $$props) $$invalidate(3, error = $$props.error);
20691			if ('onChange' in $$props) $$invalidate(4, onChange = $$props.onChange);
20692			if ('onFocus' in $$props) $$invalidate(5, onFocus = $$props.onFocus);
20693			if ('onBlur' in $$props) $$invalidate(6, onBlur = $$props.onBlur);
20694		};
20695
20696		return [
20697			label,
20698			placeholder,
20699			accountMembershipCode,
20700			error,
20701			onChange,
20702			onFocus,
20703			onBlur,
20704			showInput,
20705			id,
20706			formKey,
20707			linkClick_handler,
20708			change_handler
20709		];
20710	}
20711
20712	class AccountMembershipCode extends SvelteComponent {
20713		constructor(options) {
20714			super();
20715
20716			init(this, options, instance$D, create_fragment$D, safe_not_equal, {
20717				formKey: 9,
20718				label: 0,
20719				placeholder: 1,
20720				accountMembershipCode: 2,
20721				error: 3,
20722				onChange: 4,
20723				onFocus: 5,
20724				onBlur: 6
20725			});
20726		}
20727	}
20728
20729	const factory$a = {
20730	    matches: (sectionElement) => sectionElement.type === elementTypes.ACCOUNT_MEMBERSHIP_CODE,
20731	    create: (form, formState, formActions, elementConfig) => ({
20732	        component: AccountMembershipCode,
20733	        props: {
20734	            formKey: form.uniqueKey,
20735	            label: elementConfig.label,
20736	            placeholder: elementConfig.placeholder,
20737	            accountMembershipCode: formState.accountMembershipCode,
20738	            onChange: (value) => {
20739	                formActions.updateFormState({
20740	                    accountMembershipCode: value,
20741	                    serverErrors: [],
20742	                });
20743	                logDataLayerEvent(form, 'zephr_form_input_change', {
20744	                    inputName: `zephr-form-account-code-${form.uniqueKey}`,
20745	                    sectionId: formState.currentSection.type,
20746	                    field: 'account-code'
20747	                });
20748	            },
20749	            onFocus: () => logDataLayerEvent(form, 'zephr_form_input_focus', {
20750	                inputName: `zephr-form-account-code-${form.uniqueKey}`,
20751	                sectionId: formState.currentSection.type,
20752	                field: 'account-code'
20753	            }),
20754	            onBlur: () => logDataLayerEvent(form, 'zephr_form_input_blur', {
20755	                inputName: `zephr-form-account-code-${form.uniqueKey}`,
20756	                sectionId: formState.currentSection.type,
20757	                field: 'account-code'
20758	            }),
20759	        }
20760	    })
20761	};
20762
20763	/* src/components/elements/invitation/Invitation.svelte generated by Svelte v4.2.12 */
20764
20765	function create_if_block$t(ctx) {
20766		let div;
20767		let successmessage;
20768		let current;
20769		successmessage = new SuccessMessage({ props: { text: /*linkSentText*/ ctx[4] } });
20770
20771		return {
20772			c() {
20773				div = element("div");
20774				create_component(successmessage.$$.fragment);
20775				attr(div, "class", "zephr-form-invitation-success-message svelte-1qkv7d3");
20776			},
20777			m(target, anchor) {
20778				insert(target, div, anchor);
20779				mount_component(successmessage, div, null);
20780				current = true;
20781			},
20782			p(ctx, dirty) {
20783				const successmessage_changes = {};
20784				if (dirty & /*linkSentText*/ 16) successmessage_changes.text = /*linkSentText*/ ctx[4];
20785				successmessage.$set(successmessage_changes);
20786			},
20787			i(local) {
20788				if (current) return;
20789				transition_in(successmessage.$$.fragment, local);
20790				current = true;
20791			},
20792			o(local) {
20793				transition_out(successmessage.$$.fragment, local);
20794				current = false;
20795			},
20796			d(detaching) {
20797				if (detaching) {
20798					detach(div);
20799				}
20800
20801				destroy_component(successmessage);
20802			}
20803		};
20804	}
20805
20806	function create_fragment$C(ctx) {
20807		let div4;
20808		let div0;
20809		let t0;
20810		let t1;
20811		let div1;
20812		let t2;
20813		let t3;
20814		let label_1;
20815		let t4;
20816		let div3;
20817		let div2;
20818		let input;
20819		let t5;
20820		let button;
20821		let t6;
20822		let current;
20823
20824		label_1 = new Label({
20825				props: {
20826					forInput: /*id*/ ctx[14],
20827					label: /*label*/ ctx[2],
20828					isPaymentForm: /*isPaymentForm*/ ctx[11]
20829				}
20830			});
20831
20832		input = new Input({
20833				props: {
20834					disabled: /*isBusy*/ ctx[10],
20835					required: true,
20836					id: /*id*/ ctx[14],
20837					value: /*invitationEmail*/ ctx[7] ?? '',
20838					errorMessage: /*error*/ ctx[9],
20839					isPaymentForm: /*isPaymentForm*/ ctx[11],
20840					onFocus: /*onFocus*/ ctx[12],
20841					onBlur: /*onBlur*/ ctx[13]
20842				}
20843			});
20844
20845		input.$on("change", /*change_handler*/ ctx[16]);
20846
20847		button = new Button({
20848				props: {
20849					disabled: !isValidEmail(/*invitationEmail*/ ctx[7]) || /*isBusy*/ ctx[10],
20850					text: /*btnText*/ ctx[3],
20851					onClick: /*onSendInviteClick*/ ctx[5],
20852					noMargin: true,
20853					inputHeight: true,
20854					aside: true,
20855					isPaymentForm: /*isPaymentForm*/ ctx[11]
20856				}
20857			});
20858
20859		let if_block = /*invitationSent*/ ctx[8] && create_if_block$t(ctx);
20860
20861		return {
20862			c() {
20863				div4 = element("div");
20864				div0 = element("div");
20865				t0 = text(/*title*/ ctx[0]);
20866				t1 = space();
20867				div1 = element("div");
20868				t2 = text(/*description*/ ctx[1]);
20869				t3 = space();
20870				create_component(label_1.$$.fragment);
20871				t4 = space();
20872				div3 = element("div");
20873				div2 = element("div");
20874				create_component(input.$$.fragment);
20875				t5 = space();
20876				create_component(button.$$.fragment);
20877				t6 = space();
20878				if (if_block) if_block.c();
20879				attr(div0, "class", "zephr-form-invitation-title svelte-1qkv7d3");
20880				attr(div1, "class", "zephr-form-invitation-description");
20881				attr(div2, "class", "zephr-form-invitation-input-container svelte-1qkv7d3");
20882				attr(div3, "class", "zephr-form-relative-container zephr-form-invitation-email svelte-1qkv7d3");
20883				toggle_class(div3, "zephr-payment-form-relative-container", /*isPaymentForm*/ ctx[11]);
20884				attr(div4, "class", "zephr-form-invitation-container svelte-1qkv7d3");
20885			},
20886			m(target, anchor) {
20887				insert(target, div4, anchor);
20888				append(div4, div0);
20889				append(div0, t0);
20890				append(div4, t1);
20891				append(div4, div1);
20892				append(div1, t2);
20893				append(div4, t3);
20894				mount_component(label_1, div4, null);
20895				append(div4, t4);
20896				append(div4, div3);
20897				append(div3, div2);
20898				mount_component(input, div2, null);
20899				append(div3, t5);
20900				mount_component(button, div3, null);
20901				append(div4, t6);
20902				if (if_block) if_block.m(div4, null);
20903				current = true;
20904			},
20905			p(ctx, [dirty]) {
20906				if (!current || dirty & /*title*/ 1) set_data(t0, /*title*/ ctx[0]);
20907				if (!current || dirty & /*description*/ 2) set_data(t2, /*description*/ ctx[1]);
20908				const label_1_changes = {};
20909				if (dirty & /*label*/ 4) label_1_changes.label = /*label*/ ctx[2];
20910				if (dirty & /*isPaymentForm*/ 2048) label_1_changes.isPaymentForm = /*isPaymentForm*/ ctx[11];
20911				label_1.$set(label_1_changes);
20912				const input_changes = {};
20913				if (dirty & /*isBusy*/ 1024) input_changes.disabled = /*isBusy*/ ctx[10];
20914				if (dirty & /*invitationEmail*/ 128) input_changes.value = /*invitationEmail*/ ctx[7] ?? '';
20915				if (dirty & /*error*/ 512) input_changes.errorMessage = /*error*/ ctx[9];
20916				if (dirty & /*isPaymentForm*/ 2048) input_changes.isPaymentForm = /*isPaymentForm*/ ctx[11];
20917				if (dirty & /*onFocus*/ 4096) input_changes.onFocus = /*onFocus*/ ctx[12];
20918				if (dirty & /*onBlur*/ 8192) input_changes.onBlur = /*onBlur*/ ctx[13];
20919				input.$set(input_changes);
20920				const button_changes = {};
20921				if (dirty & /*invitationEmail, isBusy*/ 1152) button_changes.disabled = !isValidEmail(/*invitationEmail*/ ctx[7]) || /*isBusy*/ ctx[10];
20922				if (dirty & /*btnText*/ 8) button_changes.text = /*btnText*/ ctx[3];
20923				if (dirty & /*onSendInviteClick*/ 32) button_changes.onClick = /*onSendInviteClick*/ ctx[5];
20924				if (dirty & /*isPaymentForm*/ 2048) button_changes.isPaymentForm = /*isPaymentForm*/ ctx[11];
20925				button.$set(button_changes);
20926
20927				if (!current || dirty & /*isPaymentForm*/ 2048) {
20928					toggle_class(div3, "zephr-payment-form-relative-container", /*isPaymentForm*/ ctx[11]);
20929				}
20930
20931				if (/*invitationSent*/ ctx[8]) {
20932					if (if_block) {
20933						if_block.p(ctx, dirty);
20934
20935						if (dirty & /*invitationSent*/ 256) {
20936							transition_in(if_block, 1);
20937						}
20938					} else {
20939						if_block = create_if_block$t(ctx);
20940						if_block.c();
20941						transition_in(if_block, 1);
20942						if_block.m(div4, null);
20943					}
20944				} else if (if_block) {
20945					group_outros();
20946
20947					transition_out(if_block, 1, 1, () => {
20948						if_block = null;
20949					});
20950
20951					check_outros();
20952				}
20953			},
20954			i(local) {
20955				if (current) return;
20956				transition_in(label_1.$$.fragment, local);
20957				transition_in(input.$$.fragment, local);
20958				transition_in(button.$$.fragment, local);
20959				transition_in(if_block);
20960				current = true;
20961			},
20962			o(local) {
20963				transition_out(label_1.$$.fragment, local);
20964				transition_out(input.$$.fragment, local);
20965				transition_out(button.$$.fragment, local);
20966				transition_out(if_block);
20967				current = false;
20968			},
20969			d(detaching) {
20970				if (detaching) {
20971					detach(div4);
20972				}
20973
20974				destroy_component(label_1);
20975				destroy_component(input);
20976				destroy_component(button);
20977				if (if_block) if_block.d();
20978			}
20979		};
20980	}
20981
20982	function instance$C($$self, $$props, $$invalidate) {
20983		let { formKey } = $$props;
20984		let { title } = $$props;
20985		let { description } = $$props;
20986		let { label } = $$props;
20987		let { btnText } = $$props;
20988		let { linkSentText } = $$props;
20989		let { onSendInviteClick } = $$props;
20990		let { onChange } = $$props;
20991		let { invitationEmail } = $$props;
20992		let { invitationSent } = $$props;
20993		let { error = null } = $$props;
20994		let { isBusy } = $$props;
20995		let { isPaymentForm = false } = $$props;
20996		let { onFocus } = $$props;
20997		let { onBlur } = $$props;
20998		const id = `zephr-form-invitation-email-${formKey}`;
20999		const change_handler = ({ detail }) => onChange(detail);
21000
21001		$$self.$$set = $$props => {
21002			if ('formKey' in $$props) $$invalidate(15, formKey = $$props.formKey);
21003			if ('title' in $$props) $$invalidate(0, title = $$props.title);
21004			if ('description' in $$props) $$invalidate(1, description = $$props.description);
21005			if ('label' in $$props) $$invalidate(2, label = $$props.label);
21006			if ('btnText' in $$props) $$invalidate(3, btnText = $$props.btnText);
21007			if ('linkSentText' in $$props) $$invalidate(4, linkSentText = $$props.linkSentText);
21008			if ('onSendInviteClick' in $$props) $$invalidate(5, onSendInviteClick = $$props.onSendInviteClick);
21009			if ('onChange' in $$props) $$invalidate(6, onChange = $$props.onChange);
21010			if ('invitationEmail' in $$props) $$invalidate(7, invitationEmail = $$props.invitationEmail);
21011			if ('invitationSent' in $$props) $$invalidate(8, invitationSent = $$props.invitationSent);
21012			if ('error' in $$props) $$invalidate(9, error = $$props.error);
21013			if ('isBusy' in $$props) $$invalidate(10, isBusy = $$props.isBusy);
21014			if ('isPaymentForm' in $$props) $$invalidate(11, isPaymentForm = $$props.isPaymentForm);
21015			if ('onFocus' in $$props) $$invalidate(12, onFocus = $$props.onFocus);
21016			if ('onBlur' in $$props) $$invalidate(13, onBlur = $$props.onBlur);
21017		};
21018
21019		return [
21020			title,
21021			description,
21022			label,
21023			btnText,
21024			linkSentText,
21025			onSendInviteClick,
21026			onChange,
21027			invitationEmail,
21028			invitationSent,
21029			error,
21030			isBusy,
21031			isPaymentForm,
21032			onFocus,
21033			onBlur,
21034			id,
21035			formKey,
21036			change_handler
21037		];
21038	}
21039
21040	class Invitation extends SvelteComponent {
21041		constructor(options) {
21042			super();
21043
21044			init(this, options, instance$C, create_fragment$C, safe_not_equal, {
21045				formKey: 15,
21046				title: 0,
21047				description: 1,
21048				label: 2,
21049				btnText: 3,
21050				linkSentText: 4,
21051				onSendInviteClick: 5,
21052				onChange: 6,
21053				invitationEmail: 7,
21054				invitationSent: 8,
21055				error: 9,
21056				isBusy: 10,
21057				isPaymentForm: 11,
21058				onFocus: 12,
21059				onBlur: 13
21060			});
21061		}
21062	}
21063
21064	const mapToError = (e) => {
21065	    if (e?.status === 403 && e?.message?.includes('you do not have access to')) {
21066	        return ServerError.INVITATION_FAILED_NO_PRODUCT_ACCESS;
21067	    }
21068	    if (e?.status === 400 && e?.message?.includes('Invalid recipient email')) {
21069	        return ServerError.INVITATION_FAILED_INVALID_EMAIL;
21070	    }
21071	    if (e?.status === 400 && e?.message?.includes('reached the configured limit')) {
21072	        return ServerError.INVITATION_FAILED_LIMIT_REACHED;
21073	    }
21074	    if (e?.status === 409) {
21075	        return ServerError.INVITATION_FAILED_DUPLICATE_EMAIL;
21076	    }
21077	    return ServerError.INVITATION_FAILED_UNKNOWN;
21078	};
21079	const getUserProfile = (formActions) => request('blaize/profile', {
21080	    method: "GET"
21081	}, formActions)
21082	    .then(response => response.json());
21083	const convertMapping = (mapping, profile) => (mapping ?? []).reduce((acc, curr) => {
21084	    const value = profile[curr.attrSlug];
21085	    return { ...acc, [curr.fieldName]: value };
21086	}, {});
21087	const sendInvitationEmail = async (form, formState, formActions) => {
21088	    let profile;
21089	    if (formState.userExists) {
21090	        profile = await getUserProfile(formActions);
21091	    }
21092	    else {
21093	        profile = formState.userAttributes;
21094	    }
21095	    const profileConverted = convertMapping(formConfigAs(form).invitationMetadata.mapping, profile);
21096	    const response = await request('zephr/public/products/v1/shares/invitations/emails', {
21097	        method: "POST",
21098	        bodyObject: {
21099	            product_id: formState.paymentOption.productId,
21100	            email_address: formState.invitationEmail,
21101	            base_url: formConfigAs(form).invitationMetadata.url,
21102	            meta_data: profileConverted,
21103	        }
21104	    }, formActions);
21105	    const responseJson = (await response.json());
21106	    if (response.ok) {
21107	        formActions.updateFormState({
21108	            invitationSent: true,
21109	            invitationEmail: '',
21110	        });
21111	        setTimeout(() => {
21112	            formActions.updateFormState({
21113	                invitationSent: false,
21114	            });
21115	        }, 3000);
21116	    }
21117	    else {
21118	        const serverError = mapToError(responseJson);
21119	        logDataLayerEvent(form, 'zephr_form_error', {
21120	            error: ServerError[serverError],
21121	        });
21122	        formActions.updateFormState({
21123	            invitationSent: false,
21124	            serverErrors: [serverError],
21125	        });
21126	    }
21127	};
21128
21129	const factory$9 = {
21130	    matches: (sectionElement) => sectionElement.type === elementTypes.INVITATION,
21131	    create: (form, formState, formActions, elementConfig) => {
21132	        if (formState.paymentOption?.product_sharing_limit > 0) {
21133	            return {
21134	                component: Invitation,
21135	                props: {
21136	                    formKey: form.uniqueKey,
21137	                    title: elementConfig.title,
21138	                    description: elementConfig.description,
21139	                    label: elementConfig.label,
21140	                    btnText: elementConfig.btnText,
21141	                    linkSentText: elementConfig.linkSentText,
21142	                    onSendInviteClick: () => {
21143	                        logDataLayerEvent(form, 'zephr_form_button_press', {
21144	                            sectionId: formState.currentSection.type,
21145	                            buttonType: 'SUBMIT'
21146	                        });
21147	                        void sendInvitationEmail(form, formState, formActions);
21148	                    },
21149	                    onChange: (value) => {
21150	                        formActions.updateFormState({
21151	                            invitationEmail: value,
21152	                            serverErrors: [],
21153	                        });
21154	                        logDataLayerEvent(form, 'zephr_form_input_change', {
21155	                            inputName: `zephr-form-invitation-email-${form.uniqueKey}`,
21156	                            sectionId: formState.currentSection.type,
21157	                            field: 'invitation-email'
21158	                        });
21159	                    },
21160	                    onFocus: () => logDataLayerEvent(form, 'zephr_form_input_focus', {
21161	                        inputName: `zephr-form-invitation-email-${form.uniqueKey}`,
21162	                        sectionId: formState.currentSection.type,
21163	                        field: 'invitation-email'
21164	                    }),
21165	                    onBlur: () => logDataLayerEvent(form, 'zephr_form_input_blur', {
21166	                        inputName: `zephr-form-invitation-email-${form.uniqueKey}`,
21167	                        sectionId: formState.currentSection.type,
21168	                        field: 'invitation-email'
21169	                    }),
21170	                    invitationEmail: formState.invitationEmail,
21171	                    invitationSent: formState.invitationSent,
21172	                    isBusy: formState.isBusy,
21173	                    isPaymentForm: form.formType === FormType.PAYMENT,
21174	                }
21175	            };
21176	        }
21177	        return {
21178	            component: null,
21179	            props: {},
21180	        };
21181	    }
21182	};
21183
21184	/* src/components/elements/payment/EmptyPreLoader.svelte generated by Svelte v4.2.12 */
21185
21186	class EmptyPreLoader extends SvelteComponent {
21187		constructor(options) {
21188			super();
21189			init(this, options, null, null, safe_not_equal, {});
21190		}
21191	}
21192
21193	const factory$8 = {
21194	    matches: (sectionElement) => sectionElement.type === elementTypes.PAYMENT_PRE_LOADER,
21195	    create: (form, _, __) => {
21196	        const paymentProvider = paymentProviderFor(form.organisationConfiguration.paymentProvider);
21197	        if (paymentProvider.preLoaderComponent == null) {
21198	            return {
21199	                component: EmptyPreLoader,
21200	                props: {},
21201	            };
21202	        }
21203	        let component;
21204	        const formConfig = formConfigAs(form);
21205	        if (form.formType === FormType.CHANGE_SUBSCRIPTION && formConfig.allowNoPaymentMethodUpgrade) {
21206	            const environment = formConfig.paymentOptions?.[0]?.virtualEnvironment || 'live';
21207	            component = paymentProvider.preLoaderComponent(formConfig.paymentMethodSetupFormConfig[environment]);
21208	        }
21209	        else {
21210	            component = paymentProvider.preLoaderComponent(formConfig.paymentProviderFormConfig);
21211	        }
21212	        return {
21213	            component,
21214	            props: {
21215	                onMountCallback: () => paymentProvider.preLoader()
21216	            },
21217	        };
21218	    }
21219	};
21220
21221	/* src/components/elements/templateComponent/TemplateComponent.svelte generated by Svelte v4.2.12 */
21222
21223	function create_fragment$B(ctx) {
21224		let div;
21225
21226		return {
21227			c() {
21228				div = element("div");
21229			},
21230			m(target, anchor) {
21231				insert(target, div, anchor);
21232				div.innerHTML = /*html*/ ctx[0];
21233			},
21234			p(ctx, [dirty]) {
21235				if (dirty & /*html*/ 1) div.innerHTML = /*html*/ ctx[0];		},
21236			i: noop,
21237			o: noop,
21238			d(detaching) {
21239				if (detaching) {
21240					detach(div);
21241				}
21242			}
21243		};
21244	}
21245
21246	function instance$B($$self, $$props, $$invalidate) {
21247		let { html } = $$props;
21248
21249		$$self.$$set = $$props => {
21250			if ('html' in $$props) $$invalidate(0, html = $$props.html);
21251		};
21252
21253		return [html];
21254	}
21255
21256	class TemplateComponent extends SvelteComponent {
21257		constructor(options) {
21258			super();
21259			init(this, options, instance$B, create_fragment$B, safe_not_equal, { html: 0 });
21260		}
21261	}
21262
21263	const randomId = () => (Math.random() + 1).toString(36).substring(7);
21264
21265	// Unique ID for this instance of this form being rendered.
21266	const formInstanceId = randomId();
21267	// Flatten the extra scope variables from DO and remove null values, as for null values the default
21268	// should be used
21269	const extractDoScopeVariables = (formState) => {
21270	    if (!formState.dynamicOfferResult) {
21271	        return {};
21272	    }
21273	    return Object.entries({
21274	        tagline: formState.dynamicOfferResult.tagline,
21275	        ...(formState.dynamicOfferResult.custom ?? {})
21276	    }).reduce((acc, [key, value]) => {
21277	        if (key && value != null) {
21278	            acc[key] = value;
21279	        }
21280	        return acc;
21281	    }, {});
21282	};
21283	const renderTemplateComponent = (form, formState, formActions, templateElement) => {
21284	    // Load the resolved template values
21285	    const templateContent = (form.resolvedComponentTemplates ?? []).find(c => c.id === templateElement.templateId);
21286	    if (!templateContent) {
21287	        console.warn(`No component template found for id '${templateElement.templateId}'`);
21288	        return '';
21289	    }
21290	    // Pre-render
21291	    const templateForm = prepareForm(form, formState, formActions, templateElement, templateContent);
21292	    const preRenderScope = {
21293	        ...(templateDefaultVariableScope(templateContent, false)),
21294	        ...(templateElement.templateValues ?? {}),
21295	        ...(extractDoScopeVariables(formState)),
21296	        zephrForm: templateForm,
21297	        zephrOutcomeId: form.outcomeId,
21298	        zephrRuleId: form.ruleId,
21299	    };
21300	    const scriptResult = runTemplateScript(form, formState, templateElement, templateForm, templateContent.preRenderScript, preRenderScope);
21301	    // Assemble pre-render results for template rendering
21302	    const scope = {
21303	        ...preRenderScope,
21304	        ...(scriptResult.scope ?? {})
21305	    };
21306	    templateForm.actions = scriptResult.actions ?? {};
21307	    attachFormRefToWindow(templateForm);
21308	    // Render the template
21309	    try {
21310	        const html = mustache.render(`
21311        ${templateContent.css ? `<style>${templateContent.css}</style>` : ''}
21312        ${templateContent.html ?? ""}
21313        `, scope);
21314	        return html;
21315	    }
21316	    catch (e) {
21317	        console.error('Error rendering mustache template', e);
21318	        return '';
21319	    }
21320	};
21321	const templateDefaultVariableScope = (template, paymentOptionLevel) => (template.templateVariables ?? []).reduce((prev, variable) => (variable.defaultValue == null || variable.paymentOptionLevel != paymentOptionLevel ? prev : {
21322	    ...prev,
21323	    [variable.key]: variable.defaultValue
21324	}), {});
21325	const attachFormRefToWindow = (templateForm) => {
21326	    if (!window.Zephr) {
21327	        window.Zephr = {};
21328	    }
21329	    if (!window.Zephr.forms) {
21330	        window.Zephr.forms = {};
21331	    }
21332	    window.Zephr.forms[templateForm.formInstanceId] = templateForm;
21333	};
21334	const runTemplateScript = (form, formState, templateElement, templateForm, script, scope) => {
21335	    if (!script) {
21336	        return {
21337	            scope: {},
21338	            actions: {}
21339	        };
21340	    }
21341	    try {
21342	        // eslint-disable-next-line @typescript-eslint/no-implied-eval
21343	        const templateScript = new Function('state', 'form', 'scope', script);
21344	        const customState = (formState.customComponentState ?? {})[templateElement.id ?? '_'];
21345	        const customStateWithDo = formState.dynamicOfferResult ? {
21346	            ...(customState ?? {}),
21347	            dynamicOfferResult: filterChangeSubDynamicOfferResponse(formState.dynamicOfferResult, form, formState)
21348	        } : customState;
21349	        return templateScript(customStateWithDo, templateForm, scope);
21350	    }
21351	    catch (e) {
21352	        console.error('Error evaluating pre-render script', e);
21353	        return {
21354	            scope: {
21355	                'error': e
21356	            },
21357	            actions: {}
21358	        };
21359	    }
21360	};
21361	const setState = (formState, formActions, elementId) => (state) => {
21362	    formActions.updateFormState({
21363	        customComponentState: {
21364	            ...(formState.customComponentState ?? {}),
21365	            [elementId]: {
21366	                ...((formState.customComponentState ?? {})[elementId] ?? {}),
21367	                ...(state ?? {})
21368	            }
21369	        }
21370	    });
21371	};
21372	const selectPaymentOption = (form, formActions, formState, isDynamicOffer) => (productId, slug) => {
21373	    let paymentOption;
21374	    if (isDynamicOffer) {
21375	        const product = formState
21376	            .dynamicOfferResult.products.find((prod) => prod.id === productId);
21377	        const paymentPlan = product
21378	            ?.paymentPlans.find(plan => plan.planId === slug);
21379	        paymentOption = {
21380	            slug: paymentPlan.planId,
21381	            productId: product.id,
21382	            label: product.label,
21383	            currencyCode: paymentPlan.charges[0].prices[0].currency,
21384	            terms: paymentPlan.additionalPlanData?.terms,
21385	            termsAndConditions: paymentPlan.additionalPlanData?.termsAndConditions,
21386	            triggerOffsets: paymentPlan.additionalPlanData?.triggerOffsets,
21387	            changeSubscriptionTriggerOffsets: paymentPlan.additionalPlanData?.changeSubscriptionTriggerOffsets,
21388	            autoRenewConfig: paymentPlan.additionalPlanData?.autoRenewConfig || 'auto_renew',
21389	            autoRenewToggleLabel: paymentPlan.additionalPlanData?.autoRenewToggleLabel
21390	        };
21391	    }
21392	    else {
21393	        paymentOption = formConfigAs(form)
21394	            .paymentOptions
21395	            ?.find(o => o.productId === productId && o.slug === slug);
21396	    }
21397	    if (!paymentOption) {
21398	        console.warn(`No payment option exists for ${productId} ${slug}.`);
21399	        return;
21400	    }
21401	    const paymentOptionKey = `${paymentOption.productId}-${paymentOption.slug}`;
21402	    const updateState = {
21403	        paymentOption: paymentOption,
21404	        serverErrors: [],
21405	        billingAddress: {
21406	            country: null,
21407	            postalCode: null,
21408	        }
21409	    };
21410	    // Only initialize auto-renew state for payment options with custom_toggle config
21411	    if (paymentOption.autoRenewConfig === 'custom_toggle') {
21412	        updateState.paymentOptionAutoRenew = {
21413	            ...formState.paymentOptionAutoRenew,
21414	            [paymentOptionKey]: paymentOption.terms?.autoRenew ?? false
21415	        };
21416	    }
21417	    formActions.updateFormState(updateState);
21418	    if (form.organisationConfiguration.trackFormDataLayerEvents) {
21419	        logDataLayerEvent(form, 'zephr_form_button_press', {
21420	            sectionId: formState.currentSection.type,
21421	            buttonType: 'SUBMIT'
21422	        });
21423	    }
21424	    formActions.completeSection();
21425	};
21426	const prepareForm = (form, formState, formActions, templateElement, template) => {
21427	    const isDynamicOffer = !!formConfigAs(form).dynamicOffer?.id;
21428	    const paymentOptions = (formConfigAs(form).paymentOptions ?? []).map((p, i) => ({
21429	        slug: p.slug,
21430	        productId: p.productId,
21431	        label: p.label,
21432	        price: p.price,
21433	        currencyCode: p.currencyCode,
21434	        formattedPrice: formatCurrency(p.price, p.currencyCode),
21435	        index: i,
21436	        ...(templateDefaultVariableScope(template, true)),
21437	        ...(p.templateValues ?? {}),
21438	    }));
21439	    return {
21440	        formId: form.id,
21441	        formInstanceId,
21442	        paymentOptions: paymentOptions,
21443	        ref: `window.Zephr.forms['${formInstanceId}']`,
21444	        setState: setState(formState, formActions, templateElement.id ?? '_'),
21445	        getState: () => formActions.getFormState(),
21446	        selectPaymentOption: selectPaymentOption(form, formActions, formState, isDynamicOffer)
21447	    };
21448	};
21449
21450	const factory$7 = {
21451	    matches: (sectionElement) => sectionElement.type === elementTypes.TEMPLATE_COMPONENT,
21452	    create: (form, formState, formActions, elementConfig) => {
21453	        const renderedHtml = renderTemplateComponent(form, formState, formActions, elementConfig);
21454	        return {
21455	            component: TemplateComponent,
21456	            props: {
21457	                html: renderedHtml
21458	            }
21459	        };
21460	    }
21461	};
21462
21463	/* src/components/elements/subscriptionSelect/SubscriptionOption.svelte generated by Svelte v4.2.12 */
21464
21465	function create_if_block_3$8(ctx) {
21466		let div;
21467		let h3;
21468		let t_value = /*subscription*/ ctx[0].planLabel + "";
21469		let t;
21470
21471		return {
21472			c() {
21473				div = element("div");
21474				h3 = element("h3");
21475				t = text(t_value);
21476				attr(div, "class", "plan-label");
21477			},
21478			m(target, anchor) {
21479				insert(target, div, anchor);
21480				append(div, h3);
21481				append(h3, t);
21482			},
21483			p(ctx, dirty) {
21484				if (dirty & /*subscription*/ 1 && t_value !== (t_value = /*subscription*/ ctx[0].planLabel + "")) set_data(t, t_value);
21485			},
21486			d(detaching) {
21487				if (detaching) {
21488					detach(div);
21489				}
21490			}
21491		};
21492	}
21493
21494	// (26:6) {#if subscription.amount && amountLabel}
21495	function create_if_block_2$c(ctx) {
21496		let hr;
21497		let t0;
21498		let div2;
21499		let div0;
21500		let t1;
21501		let t2;
21502		let div1;
21503		let t3_value = /*subscription*/ ctx[0].amount + "";
21504		let t3;
21505
21506		return {
21507			c() {
21508				hr = element("hr");
21509				t0 = space();
21510				div2 = element("div");
21511				div0 = element("div");
21512				t1 = text(/*amountLabel*/ ctx[2]);
21513				t2 = space();
21514				div1 = element("div");
21515				t3 = text(t3_value);
21516				attr(hr, "class", "svelte-1gr56ov");
21517				attr(div0, "class", "info-label svelte-1gr56ov");
21518				attr(div1, "class", "info svelte-1gr56ov");
21519				attr(div2, "class", "info-row svelte-1gr56ov");
21520			},
21521			m(target, anchor) {
21522				insert(target, hr, anchor);
21523				insert(target, t0, anchor);
21524				insert(target, div2, anchor);
21525				append(div2, div0);
21526				append(div0, t1);
21527				append(div2, t2);
21528				append(div2, div1);
21529				append(div1, t3);
21530			},
21531			p(ctx, dirty) {
21532				if (dirty & /*amountLabel*/ 4) set_data(t1, /*amountLabel*/ ctx[2]);
21533				if (dirty & /*subscription*/ 1 && t3_value !== (t3_value = /*subscription*/ ctx[0].amount + "")) set_data(t3, t3_value);
21534			},
21535			d(detaching) {
21536				if (detaching) {
21537					detach(hr);
21538					detach(t0);
21539					detach(div2);
21540				}
21541			}
21542		};
21543	}
21544
21545	// (37:4) {#if subscription.nextBillingTime && nextBillingDateLabel}
21546	function create_if_block_1$j(ctx) {
21547		let hr;
21548		let t0;
21549		let div2;
21550		let div0;
21551		let t1;
21552		let t2;
21553		let div1;
21554		let t3_value = /*subscription*/ ctx[0].nextBillingTime + "";
21555		let t3;
21556
21557		return {
21558			c() {
21559				hr = element("hr");
21560				t0 = space();
21561				div2 = element("div");
21562				div0 = element("div");
21563				t1 = text(/*nextBillingDateLabel*/ ctx[3]);
21564				t2 = space();
21565				div1 = element("div");
21566				t3 = text(t3_value);
21567				attr(hr, "class", "svelte-1gr56ov");
21568				attr(div0, "class", "info-label svelte-1gr56ov");
21569				attr(div1, "class", "info svelte-1gr56ov");
21570				attr(div2, "class", "info-row svelte-1gr56ov");
21571			},
21572			m(target, anchor) {
21573				insert(target, hr, anchor);
21574				insert(target, t0, anchor);
21575				insert(target, div2, anchor);
21576				append(div2, div0);
21577				append(div0, t1);
21578				append(div2, t2);
21579				append(div2, div1);
21580				append(div1, t3);
21581			},
21582			p(ctx, dirty) {
21583				if (dirty & /*nextBillingDateLabel*/ 8) set_data(t1, /*nextBillingDateLabel*/ ctx[3]);
21584				if (dirty & /*subscription*/ 1 && t3_value !== (t3_value = /*subscription*/ ctx[0].nextBillingTime + "")) set_data(t3, t3_value);
21585			},
21586			d(detaching) {
21587				if (detaching) {
21588					detach(hr);
21589					detach(t0);
21590					detach(div2);
21591				}
21592			}
21593		};
21594	}
21595
21596	// (53:6) {#if subscription.cannotBeChanged}
21597	function create_if_block$s(ctx) {
21598		let div;
21599
21600		return {
21601			c() {
21602				div = element("div");
21603				attr(div, "class", "change-disabled-label svelte-1gr56ov");
21604			},
21605			m(target, anchor) {
21606				insert(target, div, anchor);
21607				div.innerHTML = /*noChangePlanMappingMessage*/ ctx[4];
21608			},
21609			p(ctx, dirty) {
21610				if (dirty & /*noChangePlanMappingMessage*/ 16) div.innerHTML = /*noChangePlanMappingMessage*/ ctx[4];		},
21611			d(detaching) {
21612				if (detaching) {
21613					detach(div);
21614				}
21615			}
21616		};
21617	}
21618
21619	function create_fragment$A(ctx) {
21620		let div3;
21621		let div2;
21622		let div1;
21623		let div0;
21624		let h2;
21625		let t0_value = /*subscription*/ ctx[0].productLabel + "";
21626		let t0;
21627		let t1;
21628		let t2;
21629		let t3;
21630		let t4;
21631		let button;
21632		let t5;
21633		let div2_style_value;
21634		let current;
21635		let mounted;
21636		let dispose;
21637		let if_block0 = /*subscription*/ ctx[0].planLabel && create_if_block_3$8(ctx);
21638		let if_block1 = /*subscription*/ ctx[0].amount && /*amountLabel*/ ctx[2] && create_if_block_2$c(ctx);
21639		let if_block2 = /*subscription*/ ctx[0].nextBillingTime && /*nextBillingDateLabel*/ ctx[3] && create_if_block_1$j(ctx);
21640
21641		button = new Button({
21642				props: {
21643					disabled: /*subscription*/ ctx[0].cannotBeChanged,
21644					text: /*selectButtonText*/ ctx[1] ?? "Select",
21645					onClick: /*onSelect*/ ctx[5]
21646				}
21647			});
21648
21649		let if_block3 = /*subscription*/ ctx[0].cannotBeChanged && create_if_block$s(ctx);
21650
21651		return {
21652			c() {
21653				div3 = element("div");
21654				div2 = element("div");
21655				div1 = element("div");
21656				div0 = element("div");
21657				h2 = element("h2");
21658				t0 = text(t0_value);
21659				t1 = space();
21660				if (if_block0) if_block0.c();
21661				t2 = space();
21662				if (if_block1) if_block1.c();
21663				t3 = space();
21664				if (if_block2) if_block2.c();
21665				t4 = space();
21666				create_component(button.$$.fragment);
21667				t5 = space();
21668				if (if_block3) if_block3.c();
21669				attr(div0, "class", "subscription-option-product-label");
21670				attr(div1, "class", "inner-box svelte-1gr56ov");
21671				attr(div2, "class", "subscription-option-box");
21672				attr(div2, "aria-hidden", "true");
21673
21674				attr(div2, "style", div2_style_value = /*subscription*/ ctx[0].cannotBeChanged
21675				? ""
21676				: "cursor: pointer;");
21677
21678				attr(div3, "class", "subscription-option-wrapper svelte-1gr56ov");
21679			},
21680			m(target, anchor) {
21681				insert(target, div3, anchor);
21682				append(div3, div2);
21683				append(div2, div1);
21684				append(div1, div0);
21685				append(div0, h2);
21686				append(h2, t0);
21687				append(div1, t1);
21688				if (if_block0) if_block0.m(div1, null);
21689				append(div1, t2);
21690				if (if_block1) if_block1.m(div1, null);
21691				append(div1, t3);
21692				if (if_block2) if_block2.m(div1, null);
21693				append(div1, t4);
21694				mount_component(button, div1, null);
21695				append(div1, t5);
21696				if (if_block3) if_block3.m(div1, null);
21697				current = true;
21698
21699				if (!mounted) {
21700					dispose = listen(div2, "click", self(prevent_default(function () {
21701						if (is_function(/*onSelect*/ ctx[5])) /*onSelect*/ ctx[5].apply(this, arguments);
21702					})));
21703
21704					mounted = true;
21705				}
21706			},
21707			p(new_ctx, [dirty]) {
21708				ctx = new_ctx;
21709				if ((!current || dirty & /*subscription*/ 1) && t0_value !== (t0_value = /*subscription*/ ctx[0].productLabel + "")) set_data(t0, t0_value);
21710
21711				if (/*subscription*/ ctx[0].planLabel) {
21712					if (if_block0) {
21713						if_block0.p(ctx, dirty);
21714					} else {
21715						if_block0 = create_if_block_3$8(ctx);
21716						if_block0.c();
21717						if_block0.m(div1, t2);
21718					}
21719				} else if (if_block0) {
21720					if_block0.d(1);
21721					if_block0 = null;
21722				}
21723
21724				if (/*subscription*/ ctx[0].amount && /*amountLabel*/ ctx[2]) {
21725					if (if_block1) {
21726						if_block1.p(ctx, dirty);
21727					} else {
21728						if_block1 = create_if_block_2$c(ctx);
21729						if_block1.c();
21730						if_block1.m(div1, t3);
21731					}
21732				} else if (if_block1) {
21733					if_block1.d(1);
21734					if_block1 = null;
21735				}
21736
21737				if (/*subscription*/ ctx[0].nextBillingTime && /*nextBillingDateLabel*/ ctx[3]) {
21738					if (if_block2) {
21739						if_block2.p(ctx, dirty);
21740					} else {
21741						if_block2 = create_if_block_1$j(ctx);
21742						if_block2.c();
21743						if_block2.m(div1, t4);
21744					}
21745				} else if (if_block2) {
21746					if_block2.d(1);
21747					if_block2 = null;
21748				}
21749
21750				const button_changes = {};
21751				if (dirty & /*subscription*/ 1) button_changes.disabled = /*subscription*/ ctx[0].cannotBeChanged;
21752				if (dirty & /*selectButtonText*/ 2) button_changes.text = /*selectButtonText*/ ctx[1] ?? "Select";
21753				if (dirty & /*onSelect*/ 32) button_changes.onClick = /*onSelect*/ ctx[5];
21754				button.$set(button_changes);
21755
21756				if (/*subscription*/ ctx[0].cannotBeChanged) {
21757					if (if_block3) {
21758						if_block3.p(ctx, dirty);
21759					} else {
21760						if_block3 = create_if_block$s(ctx);
21761						if_block3.c();
21762						if_block3.m(div1, null);
21763					}
21764				} else if (if_block3) {
21765					if_block3.d(1);
21766					if_block3 = null;
21767				}
21768
21769				if (!current || dirty & /*subscription*/ 1 && div2_style_value !== (div2_style_value = /*subscription*/ ctx[0].cannotBeChanged
21770				? ""
21771				: "cursor: pointer;")) {
21772					attr(div2, "style", div2_style_value);
21773				}
21774			},
21775			i(local) {
21776				if (current) return;
21777				transition_in(button.$$.fragment, local);
21778				current = true;
21779			},
21780			o(local) {
21781				transition_out(button.$$.fragment, local);
21782				current = false;
21783			},
21784			d(detaching) {
21785				if (detaching) {
21786					detach(div3);
21787				}
21788
21789				if (if_block0) if_block0.d();
21790				if (if_block1) if_block1.d();
21791				if (if_block2) if_block2.d();
21792				destroy_component(button);
21793				if (if_block3) if_block3.d();
21794				mounted = false;
21795				dispose();
21796			}
21797		};
21798	}
21799
21800	function instance$A($$self, $$props, $$invalidate) {
21801		let { subscription } = $$props;
21802		let { selectButtonText } = $$props;
21803		let { amountLabel } = $$props;
21804		let { nextBillingDateLabel } = $$props;
21805		let { noChangePlanMappingMessage } = $$props;
21806		let { onSelect } = $$props;
21807
21808		$$self.$$set = $$props => {
21809			if ('subscription' in $$props) $$invalidate(0, subscription = $$props.subscription);
21810			if ('selectButtonText' in $$props) $$invalidate(1, selectButtonText = $$props.selectButtonText);
21811			if ('amountLabel' in $$props) $$invalidate(2, amountLabel = $$props.amountLabel);
21812			if ('nextBillingDateLabel' in $$props) $$invalidate(3, nextBillingDateLabel = $$props.nextBillingDateLabel);
21813			if ('noChangePlanMappingMessage' in $$props) $$invalidate(4, noChangePlanMappingMessage = $$props.noChangePlanMappingMessage);
21814			if ('onSelect' in $$props) $$invalidate(5, onSelect = $$props.onSelect);
21815		};
21816
21817		return [
21818			subscription,
21819			selectButtonText,
21820			amountLabel,
21821			nextBillingDateLabel,
21822			noChangePlanMappingMessage,
21823			onSelect
21824		];
21825	}
21826
21827	class SubscriptionOption extends SvelteComponent {
21828		constructor(options) {
21829			super();
21830
21831			init(this, options, instance$A, create_fragment$A, safe_not_equal, {
21832				subscription: 0,
21833				selectButtonText: 1,
21834				amountLabel: 2,
21835				nextBillingDateLabel: 3,
21836				noChangePlanMappingMessage: 4,
21837				onSelect: 5
21838			});
21839		}
21840	}
21841
21842	/* src/components/elements/subscriptionSelect/SubscriptionSelect.svelte generated by Svelte v4.2.12 */
21843
21844	function get_each_context$b(ctx, list, i) {
21845		const child_ctx = ctx.slice();
21846		child_ctx[8] = list[i];
21847		return child_ctx;
21848	}
21849
21850	// (13:2) {#if subscriptions == null}
21851	function create_if_block_1$i(ctx) {
21852		let spinner;
21853		let current;
21854		spinner = new Spinner({});
21855
21856		return {
21857			c() {
21858				create_component(spinner.$$.fragment);
21859			},
21860			m(target, anchor) {
21861				mount_component(spinner, target, anchor);
21862				current = true;
21863			},
21864			i(local) {
21865				if (current) return;
21866				transition_in(spinner.$$.fragment, local);
21867				current = true;
21868			},
21869			o(local) {
21870				transition_out(spinner.$$.fragment, local);
21871				current = false;
21872			},
21873			d(detaching) {
21874				destroy_component(spinner, detaching);
21875			}
21876		};
21877	}
21878
21879	// (16:2) {#if subscriptions != null && !subscriptions.length}
21880	function create_if_block$r(ctx) {
21881		let div;
21882
21883		return {
21884			c() {
21885				div = element("div");
21886			},
21887			m(target, anchor) {
21888				insert(target, div, anchor);
21889				div.innerHTML = /*noSubscriptionsMessage*/ ctx[0];
21890			},
21891			p(ctx, dirty) {
21892				if (dirty & /*noSubscriptionsMessage*/ 1) div.innerHTML = /*noSubscriptionsMessage*/ ctx[0];		},
21893			d(detaching) {
21894				if (detaching) {
21895					detach(div);
21896				}
21897			}
21898		};
21899	}
21900
21901	// (21:2) {#each subscriptions ?? [] as subscription}
21902	function create_each_block$b(ctx) {
21903		let subscriptionoption;
21904		let current;
21905
21906		function func() {
21907			return /*func*/ ctx[7](/*subscription*/ ctx[8]);
21908		}
21909
21910		subscriptionoption = new SubscriptionOption({
21911				props: {
21912					subscription: /*subscription*/ ctx[8],
21913					selectButtonText: /*selectButtonText*/ ctx[5],
21914					noChangePlanMappingMessage: /*noChangePlanMappingMessage*/ ctx[1],
21915					amountLabel: /*amountLabel*/ ctx[3],
21916					nextBillingDateLabel: /*nextBillingDateLabel*/ ctx[4],
21917					onSelect: func
21918				}
21919			});
21920
21921		return {
21922			c() {
21923				create_component(subscriptionoption.$$.fragment);
21924			},
21925			m(target, anchor) {
21926				mount_component(subscriptionoption, target, anchor);
21927				current = true;
21928			},
21929			p(new_ctx, dirty) {
21930				ctx = new_ctx;
21931				const subscriptionoption_changes = {};
21932				if (dirty & /*subscriptions*/ 4) subscriptionoption_changes.subscription = /*subscription*/ ctx[8];
21933				if (dirty & /*selectButtonText*/ 32) subscriptionoption_changes.selectButtonText = /*selectButtonText*/ ctx[5];
21934				if (dirty & /*noChangePlanMappingMessage*/ 2) subscriptionoption_changes.noChangePlanMappingMessage = /*noChangePlanMappingMessage*/ ctx[1];
21935				if (dirty & /*amountLabel*/ 8) subscriptionoption_changes.amountLabel = /*amountLabel*/ ctx[3];
21936				if (dirty & /*nextBillingDateLabel*/ 16) subscriptionoption_changes.nextBillingDateLabel = /*nextBillingDateLabel*/ ctx[4];
21937				if (dirty & /*onSelect, subscriptions*/ 68) subscriptionoption_changes.onSelect = func;
21938				subscriptionoption.$set(subscriptionoption_changes);
21939			},
21940			i(local) {
21941				if (current) return;
21942				transition_in(subscriptionoption.$$.fragment, local);
21943				current = true;
21944			},
21945			o(local) {
21946				transition_out(subscriptionoption.$$.fragment, local);
21947				current = false;
21948			},
21949			d(detaching) {
21950				destroy_component(subscriptionoption, detaching);
21951			}
21952		};
21953	}
21954
21955	function create_fragment$z(ctx) {
21956		let div;
21957		let t0;
21958		let t1;
21959		let current;
21960		let if_block0 = /*subscriptions*/ ctx[2] == null && create_if_block_1$i();
21961		let if_block1 = /*subscriptions*/ ctx[2] != null && !/*subscriptions*/ ctx[2].length && create_if_block$r(ctx);
21962		let each_value = ensure_array_like(/*subscriptions*/ ctx[2] ?? []);
21963		let each_blocks = [];
21964
21965		for (let i = 0; i < each_value.length; i += 1) {
21966			each_blocks[i] = create_each_block$b(get_each_context$b(ctx, each_value, i));
21967		}
21968
21969		const out = i => transition_out(each_blocks[i], 1, 1, () => {
21970			each_blocks[i] = null;
21971		});
21972
21973		return {
21974			c() {
21975				div = element("div");
21976				if (if_block0) if_block0.c();
21977				t0 = space();
21978				if (if_block1) if_block1.c();
21979				t1 = space();
21980
21981				for (let i = 0; i < each_blocks.length; i += 1) {
21982					each_blocks[i].c();
21983				}
21984
21985				attr(div, "class", "subscription-options-container svelte-bnxnvq");
21986			},
21987			m(target, anchor) {
21988				insert(target, div, anchor);
21989				if (if_block0) if_block0.m(div, null);
21990				append(div, t0);
21991				if (if_block1) if_block1.m(div, null);
21992				append(div, t1);
21993
21994				for (let i = 0; i < each_blocks.length; i += 1) {
21995					if (each_blocks[i]) {
21996						each_blocks[i].m(div, null);
21997					}
21998				}
21999
22000				current = true;
22001			},
22002			p(ctx, [dirty]) {
22003				if (/*subscriptions*/ ctx[2] == null) {
22004					if (if_block0) {
22005						if (dirty & /*subscriptions*/ 4) {
22006							transition_in(if_block0, 1);
22007						}
22008					} else {
22009						if_block0 = create_if_block_1$i();
22010						if_block0.c();
22011						transition_in(if_block0, 1);
22012						if_block0.m(div, t0);
22013					}
22014				} else if (if_block0) {
22015					group_outros();
22016
22017					transition_out(if_block0, 1, 1, () => {
22018						if_block0 = null;
22019					});
22020
22021					check_outros();
22022				}
22023
22024				if (/*subscriptions*/ ctx[2] != null && !/*subscriptions*/ ctx[2].length) {
22025					if (if_block1) {
22026						if_block1.p(ctx, dirty);
22027					} else {
22028						if_block1 = create_if_block$r(ctx);
22029						if_block1.c();
22030						if_block1.m(div, t1);
22031					}
22032				} else if (if_block1) {
22033					if_block1.d(1);
22034					if_block1 = null;
22035				}
22036
22037				if (dirty & /*subscriptions, selectButtonText, noChangePlanMappingMessage, amountLabel, nextBillingDateLabel, onSelect*/ 126) {
22038					each_value = ensure_array_like(/*subscriptions*/ ctx[2] ?? []);
22039					let i;
22040
22041					for (i = 0; i < each_value.length; i += 1) {
22042						const child_ctx = get_each_context$b(ctx, each_value, i);
22043
22044						if (each_blocks[i]) {
22045							each_blocks[i].p(child_ctx, dirty);
22046							transition_in(each_blocks[i], 1);
22047						} else {
22048							each_blocks[i] = create_each_block$b(child_ctx);
22049							each_blocks[i].c();
22050							transition_in(each_blocks[i], 1);
22051							each_blocks[i].m(div, null);
22052						}
22053					}
22054
22055					group_outros();
22056
22057					for (i = each_value.length; i < each_blocks.length; i += 1) {
22058						out(i);
22059					}
22060
22061					check_outros();
22062				}
22063			},
22064			i(local) {
22065				if (current) return;
22066				transition_in(if_block0);
22067
22068				for (let i = 0; i < each_value.length; i += 1) {
22069					transition_in(each_blocks[i]);
22070				}
22071
22072				current = true;
22073			},
22074			o(local) {
22075				transition_out(if_block0);
22076				each_blocks = each_blocks.filter(Boolean);
22077
22078				for (let i = 0; i < each_blocks.length; i += 1) {
22079					transition_out(each_blocks[i]);
22080				}
22081
22082				current = false;
22083			},
22084			d(detaching) {
22085				if (detaching) {
22086					detach(div);
22087				}
22088
22089				if (if_block0) if_block0.d();
22090				if (if_block1) if_block1.d();
22091				destroy_each(each_blocks, detaching);
22092			}
22093		};
22094	}
22095
22096	function instance$z($$self, $$props, $$invalidate) {
22097		let { noSubscriptionsMessage } = $$props;
22098		let { noChangePlanMappingMessage } = $$props;
22099		let { subscriptions } = $$props;
22100		let { amountLabel } = $$props;
22101		let { nextBillingDateLabel } = $$props;
22102		let { selectButtonText } = $$props;
22103		let { onSelect } = $$props;
22104		const func = subscription => onSelect(subscription);
22105
22106		$$self.$$set = $$props => {
22107			if ('noSubscriptionsMessage' in $$props) $$invalidate(0, noSubscriptionsMessage = $$props.noSubscriptionsMessage);
22108			if ('noChangePlanMappingMessage' in $$props) $$invalidate(1, noChangePlanMappingMessage = $$props.noChangePlanMappingMessage);
22109			if ('subscriptions' in $$props) $$invali
22109date(2, subscriptions = $$props.subscriptions);
22110			if ('amountLabel' in $$props) $$invalidate(3, amountLabel = $$props.amountLabel);
22111			if ('nextBillingDateLabel' in $$props) $$invalidate(4, nextBillingDateLabel = $$props.nextBillingDateLabel);
22112			if ('selectButtonText' in $$props) $$invalidate(5, selectButtonText = $$props.selectButtonText);
22113			if ('onSelect' in $$props) $$invalidate(6, onSelect = $$props.onSelect);
22114		};
22115
22116		return [
22117			noSubscriptionsMessage,
22118			noChangePlanMappingMessage,
22119			subscriptions,
22120			amountLabel,
22121			nextBillingDateLabel,
22122			selectButtonText,
22123			onSelect,
22124			func
22125		];
22126	}
22127
22128	class SubscriptionSelect extends SvelteComponent {
22129		constructor(options) {
22130			super();
22131
22132			init(this, options, instance$z, create_fragment$z, safe_not_equal, {
22133				noSubscriptionsMessage: 0,
22134				noChangePlanMappingMessage: 1,
22135				subscriptions: 2,
22136				amountLabel: 3,
22137				nextBillingDateLabel: 4,
22138				selectButtonText: 5,
22139				onSelect: 6
22140			});
22141		}
22142	}
22143
22144	const subscriptionSelectFactory = {
22145	    matches: (sectionElement) => sectionElement.type === elementTypes.SUBSCRIPTION_SELECT,
22146	    create: (form, formState, formActions, elementConfig) => ({
22147	        component: SubscriptionSelect,
22148	        props: {
22149	            noSubscriptionsMessage: elementConfig.noSubscriptionsMessage,
22150	            selectButtonText: elementConfig.selectButtonText,
22151	            noChangePlanMappingMessage: elementConfig.noChangePlanMappingMessage,
22152	            amountLabel: elementConfig.amountLabel,
22153	            nextBillingDateLabel: elementConfig.nextBillingDateLabel,
22154	            subscriptions: formState.existingSubscriptions
22155	                ? formState.existingSubscriptions.filter(s => s.status !== 'inactive')
22156	                : null,
22157	            onSelect: (subscription) => {
22158	                formActions.updateFormState({
22159	                    selectedSubscription: subscription
22160	                });
22161	                logDataLayerEvent(form, 'zephr_form_button_press', {
22162	                    sectionId: formState.currentSection.type,
22163	                    buttonType: 'SUBMIT'
22164	                });
22165	                formActions.completeSection();
22166	            }
22167	        }
22168	    })
22169	};
22170
22171	/* src/components/elements/subscriptionsList/SubscriptionsListItem.svelte generated by Svelte v4.2.12 */
22172
22173	function create_if_block_4$6(ctx) {
22174		let span;
22175		let t;
22176
22177		return {
22178			c() {
22179				span = element("span");
22180				t = text(/*giftPillText*/ ctx[7]);
22181				attr(span, "class", "gift-pill svelte-1qhs7yc");
22182			},
22183			m(target, anchor) {
22184				insert(target, span, anchor);
22185				append(span, t);
22186			},
22187			p(ctx, dirty) {
22188				if (dirty & /*giftPillText*/ 128) set_data(t, /*giftPillText*/ ctx[7]);
22189			},
22190			d(detaching) {
22191				if (detaching) {
22192					detach(span);
22193				}
22194			}
22195		};
22196	}
22197
22198	// (23:4) {#if showBillingHistory}
22199	function create_if_block_2$b(ctx) {
22200		let div1;
22201		let div0;
22202		let t0;
22203		let t1;
22204		let t2;
22205		let hr;
22206		let current;
22207		let if_block = /*billingHistoryLink*/ ctx[4] && create_if_block_3$7(ctx);
22208
22209		return {
22210			c() {
22211				div1 = element("div");
22212				div0 = element("div");
22213				t0 = text(/*billingHistoryText*/ ctx[3]);
22214				t1 = space();
22215				if (if_block) if_block.c();
22216				t2 = space();
22217				hr = element("hr");
22218				attr(div0, "class", "information");
22219				attr(div1, "class", "section");
22220				attr(hr, "class", "svelte-1qhs7yc");
22221			},
22222			m(target, anchor) {
22223				insert(target, div1, anchor);
22224				append(div1, div0);
22225				append(div0, t0);
22226				append(div0, t1);
22227				if (if_block) if_block.m(div0, null);
22228				insert(target, t2, anchor);
22229				insert(target, hr, anchor);
22230				current = true;
22231			},
22232			p(ctx, dirty) {
22233				if (!current || dirty & /*billingHistoryText*/ 8) set_data(t0, /*billingHistoryText*/ ctx[3]);
22234
22235				if (/*billingHistoryLink*/ ctx[4]) {
22236					if (if_block) {
22237						if_block.p(ctx, dirty);
22238
22239						if (dirty & /*billingHistoryLink*/ 16) {
22240							transition_in(if_block, 1);
22241						}
22242					} else {
22243						if_block = create_if_block_3$7(ctx);
22244						if_block.c();
22245						transition_in(if_block, 1);
22246						if_block.m(div0, null);
22247					}
22248				} else if (if_block) {
22249					group_outros();
22250
22251					transition_out(if_block, 1, 1, () => {
22252						if_block = null;
22253					});
22254
22255					check_outros();
22256				}
22257			},
22258			i(local) {
22259				if (current) return;
22260				transition_in(if_block);
22261				current = true;
22262			},
22263			o(local) {
22264				transition_out(if_block);
22265				current = false;
22266			},
22267			d(detaching) {
22268				if (detaching) {
22269					detach(div1);
22270					detach(t2);
22271					detach(hr);
22272				}
22273
22274				if (if_block) if_block.d();
22275			}
22276		};
22277	}
22278
22279	// (27:10) {#if billingHistoryLink}
22280	function create_if_block_3$7(ctx) {
22281		let link;
22282		let current;
22283
22284		link = new Link({
22285				props: { text: /*billingHistoryLink*/ ctx[4] }
22286			});
22287
22288		link.$on("linkClick", /*linkClick_handler*/ ctx[8]);
22289
22290		return {
22291			c() {
22292				create_component(link.$$.fragment);
22293			},
22294			m(target, anchor) {
22295				mount_component(link, target, anchor);
22296				current = true;
22297			},
22298			p(ctx, dirty) {
22299				const link_changes = {};
22300				if (dirty & /*billingHistoryLink*/ 16) link_changes.text = /*billingHistoryLink*/ ctx[4];
22301				link.$set(link_changes);
22302			},
22303			i(local) {
22304				if (current) return;
22305				transition_in(link.$$.fragment, local);
22306				current = true;
22307			},
22308			o(local) {
22309				transition_out(link.$$.fragment, local);
22310				current = false;
22311			},
22312			d(detaching) {
22313				destroy_component(link, detaching);
22314			}
22315		};
22316	}
22317
22318	// (34:4) {#if subscription.status === 'active' && subscription.nextBillingTime}
22319	function create_if_block_1$h(ctx) {
22320		let div1;
22321		let h3;
22322		let t0;
22323		let t1;
22324		let div0;
22325		let t2_value = /*subscription*/ ctx[0].nextBillingTime + "";
22326		let t2;
22327		let t3;
22328		let hr;
22329
22330		return {
22331			c() {
22332				div1 = element("div");
22333				h3 = element("h3");
22334				t0 = text(/*nextPaymentDateText*/ ctx[1]);
22335				t1 = space();
22336				div0 = element("div");
22337				t2 = text(t2_value);
22338				t3 = space();
22339				hr = element("hr");
22340				attr(h3, "class", "svelte-1qhs7yc");
22341				attr(div0, "class", "information");
22342				attr(div1, "class", "section");
22343				attr(hr, "class", "svelte-1qhs7yc");
22344			},
22345			m(target, anchor) {
22346				insert(target, div1, anchor);
22347				append(div1, h3);
22348				append(h3, t0);
22349				append(div1, t1);
22350				append(div1, div0);
22351				append(div0, t2);
22352				insert(target, t3, anchor);
22353				insert(target, hr, anchor);
22354			},
22355			p(ctx, dirty) {
22356				if (dirty & /*nextPaymentDateText*/ 2) set_data(t0, /*nextPaymentDateText*/ ctx[1]);
22357				if (dirty & /*subscription*/ 1 && t2_value !== (t2_value = /*subscription*/ ctx[0].nextBillingTime + "")) set_data(t2, t2_value);
22358			},
22359			d(detaching) {
22360				if (detaching) {
22361					detach(div1);
22362					detach(t3);
22363					detach(hr);
22364				}
22365			}
22366		};
22367	}
22368
22369	// (41:4) {#if subscription.amount}
22370	function create_if_block$q(ctx) {
22371		let div1;
22372		let h3;
22373		let t0;
22374		let t1;
22375		let div0;
22376		let t2_value = /*subscription*/ ctx[0].amount + "";
22377		let t2;
22378		let t3;
22379		let hr;
22380
22381		return {
22382			c() {
22383				div1 = element("div");
22384				h3 = element("h3");
22385				t0 = text(/*subscriptionRateText*/ ctx[2]);
22386				t1 = space();
22387				div0 = element("div");
22388				t2 = text(t2_value);
22389				t3 = space();
22390				hr = element("hr");
22391				attr(h3, "class", "svelte-1qhs7yc");
22392				attr(div0, "class", "information");
22393				attr(div1, "class", "section");
22394				attr(hr, "class", "svelte-1qhs7yc");
22395			},
22396			m(target, anchor) {
22397				insert(target, div1, anchor);
22398				append(div1, h3);
22399				append(h3, t0);
22400				append(div1, t1);
22401				append(div1, div0);
22402				append(div0, t2);
22403				insert(target, t3, anchor);
22404				insert(target, hr, anchor);
22405			},
22406			p(ctx, dirty) {
22407				if (dirty & /*subscriptionRateText*/ 4) set_data(t0, /*subscriptionRateText*/ ctx[2]);
22408				if (dirty & /*subscription*/ 1 && t2_value !== (t2_value = /*subscription*/ ctx[0].amount + "")) set_data(t2, t2_value);
22409			},
22410			d(detaching) {
22411				if (detaching) {
22412					detach(div1);
22413					detach(t3);
22414					detach(hr);
22415				}
22416			}
22417		};
22418	}
22419
22420	function create_fragment$y(ctx) {
22421		let div2;
22422		let div1;
22423		let div0;
22424		let h2;
22425		let t0_value = /*subscription*/ ctx[0].productLabel + "";
22426		let t0;
22427		let t1;
22428		let h2_class_value;
22429		let t2;
22430		let hr;
22431		let t3;
22432		let t4;
22433		let t5;
22434		let current;
22435		let if_block0 = /*subscription*/ ctx[0].isGift && create_if_block_4$6(ctx);
22436		let if_block1 = /*showBillingHistory*/ ctx[6] && create_if_block_2$b(ctx);
22437		let if_block2 = /*subscription*/ ctx[0].status === 'active' && /*subscription*/ ctx[0].nextBillingTime && create_if_block_1$h(ctx);
22438		let if_block3 = /*subscription*/ ctx[0].amount && create_if_block$q(ctx);
22439
22440		return {
22441			c() {
22442				div2 = element("div");
22443				div1 = element("div");
22444				div0 = element("div");
22445				h2 = element("h2");
22446				t0 = text(t0_value);
22447				t1 = space();
22448				if (if_block0) if_block0.c();
22449				t2 = space();
22450				hr = element("hr");
22451				t3 = space();
22452				if (if_block1) if_block1.c();
22453				t4 = space();
22454				if (if_block2) if_block2.c();
22455				t5 = space();
22456				if (if_block3) if_block3.c();
22457
22458				attr(h2, "class", h2_class_value = "" + (null_to_empty(/*sub
22458scription*/ ctx[0].status === 'inactive'
22459				? 'inactive'
22460				: '') + " svelte-1qhs7yc"));
22461
22462				attr(div0, "class", "section");
22463				attr(hr, "class", "svelte-1qhs7yc");
22464				attr(div1, "class", "inner-box svelte-1qhs7yc");
22465				attr(div2, "class", "subscription-list-item svelte-1qhs7yc");
22466			},
22467			m(target, anchor) {
22468				insert(target, div2, anchor);
22469				append(div2, div1);
22470				append(div1, div0);
22471				append(div0, h2);
22472				append(h2, t0);
22473				append(h2, t1);
22474				if (if_block0) if_block0.m(h2, null);
22475				append(div1, t2);
22476				append(div1, hr);
22477				append(div1, t3);
22478				if (if_block1) if_block1.m(div1, null);
22479				append(div1, t4);
22480				if (if_block2) if_block2.m(div1, null);
22481				append(div1, t5);
22482				if (if_block3) if_block3.m(div1, null);
22483				current = true;
22484			},
22485			p(ctx, [dirty]) {
22486				if ((!current || dirty & /*subscription*/ 1) && t0_value !== (t0_value = /*subscription*/ ctx[0].productLabel + "")) set_data(t0, t0_value);
22487
22488				if (/*subscription*/ ctx[0].isGift) {
22489					if (if_block0) {
22490						if_block0.p(ctx, dirty);
22491					} else {
22492						if_block0 = create_if_block_4$6(ctx);
22493						if_block0.c();
22494						if_block0.m(h2, null);
22495					}
22496				} else if (if_block0) {
22497					if_block0.d(1);
22498					if_block0 = null;
22499				}
22500
22501				if (!current || dirty & /*subscription*/ 1 && h2_class_value !== (h2_class_value = "" + (null_to_empty(/*subscription*/ ctx[0].status === 'inactive'
22502				? 'inactive'
22503				: '') + " svelte-1qhs7yc"))) {
22504					attr(h2, "class", h2_class_value);
22505				}
22506
22507				if (/*showBillingHistory*/ ctx[6]) {
22508					if (if_block1) {
22509						if_block1.p(ctx, dirty);
22510
22511						if (dirty & /*showBillingHistory*/ 64) {
22512							transition_in(if_block1, 1);
22513						}
22514					} else {
22515						if_block1 = create_if_block_2$b(ctx);
22516						if_block1.c();
22517						transition_in(if_block1, 1);
22518						if_block1.m(div1, t4);
22519					}
22520				} else if (if_block1) {
22521					group_outros();
22522
22523					transition_out(if_block1, 1, 1, () => {
22524						if_block1 = null;
22525					});
22526
22527					check_outros();
22528				}
22529
22530				if (/*subscription*/ ctx[0].status === 'active' && /*subscription*/ ctx[0].nextBillingTime) {
22531					if (if_block2) {
22532						if_block2.p(ctx, dirty);
22533					} else {
22534						if_block2 = create_if_block_1$h(ctx);
22535						if_block2.c();
22536						if_block2.m(div1, t5);
22537					}
22538				} else if (if_block2) {
22539					if_block2.d(1);
22540					if_block2 = null;
22541				}
22542
22543				if (/*subscription*/ ctx[0].amount) {
22544					if (if_block3) {
22545						if_block3.p(ctx, dirty);
22546					} else {
22547						if_block3 = create_if_block$q(ctx);
22548						if_block3.c();
22549						if_block3.m(div1, null);
22550					}
22551				} else if (if_block3) {
22552					if_block3.d(1);
22553					if_block3 = null;
22554				}
22555			},
22556			i(local) {
22557				if (current) return;
22558				transition_in(if_block1);
22559				current = true;
22560			},
22561			o(local) {
22562				transition_out(if_block1);
22563				current = false;
22564			},
22565			d(detaching) {
22566				if (detaching) {
22567					detach(div2);
22568				}
22569
22570				if (if_block0) if_block0.d();
22571				if (if_block1) if_block1.d();
22572				if (if_block2) if_block2.d();
22573				if (if_block3) if_block3.d();
22574			}
22575		};
22576	}
22577
22578	function instance$y($$self, $$props, $$invalidate) {
22579		let { subscription } = $$props;
22580		let { nextPaymentDateText } = $$props;
22581		let { subscriptionRateText } = $$props;
22582		let { billingHistoryText } = $$props;
22583		let { billingHistoryLink } = $$props;
22584		let { onViewHistory } = $$props;
22585		let { showBillingHistory } = $$props;
22586		let { giftPillText = 'Gift' } = $$props;
22587		const linkClick_handler = () => onViewHistory(subscription);
22588
22589		$$self.$$set = $$props => {
22590			if ('subscription' in $$props) $$invalidate(0, subscription = $$props.subscription);
22591			if ('nextPaymentDateText' in $$props) $$invalidate(1, nextPaymentDateText = $$props.nextPaymentDateText);
22592			if ('subscriptionRateText' in $$props) $$invalidate(2, subscriptionRateText = $$props.subscriptionRateText);
22593			if ('billingHistoryText' in $$props) $$invalidate(3, billingHistoryText = $$props.billingHistoryText);
22594			if ('billingHistoryLink' in $$props) $$invalidate(4, billingHistoryLink = $$props.billingHistoryLink);
22595			if ('onViewHistory' in $$props) $$invalidate(5, onViewHistory = $$props.onViewHistory);
22596			if ('showBillingHistory' in $$props) $$invalidate(6, showBillingHistory = $$props.showBillingHistory);
22597			if ('giftPillText' in $$props) $$invalidate(7, giftPillText = $$props.giftPillText);
22598		};
22599
22600		return [
22601			subscription,
22602			nextPaymentDateText,
22603			subscriptionRateText,
22604			billingHistoryText,
22605			billingHistoryLink,
22606			onViewHistory,
22607			showBillingHistory,
22608			giftPillText,
22609			linkClick_handler
22610		];
22611	}
22612
22613	class SubscriptionsListItem extends SvelteComponent {
22614		constructor(options) {
22615			super();
22616
22617			init(this, options, instance$y, create_fragment$y, safe_not_equal, {
22618				subscription: 0,
22619				nextPaymentDateText: 1,
22620				subscriptionRateText: 2,
22621				billingHistoryText: 3,
22622				billingHistoryLink: 4,
22623				onViewHistory: 5,
22624				showBillingHistory: 6,
22625				giftPillText: 7
22626			});
22627		}
22628	}
22629
22630	/* src/components/elements/Tablink.svelte generated by Svelte v4.2.12 */
22631
22632	function create_fragment$x(ctx) {
22633		let a;
22634		let span;
22635		let t0;
22636		let t1;
22637		let svg;
22638		let path_1;
22639		let a_href_value;
22640		let mounted;
22641		let dispose;
22642
22643		return {
22644			c() {
22645				a = element("a");
22646				span = element("span");
22647				t0 = text(/*text*/ ctx[0]);
22648				t1 = space();
22649				svg = svg_element("svg");
22650				path_1 = svg_element("path");
22651				attr(path_1, "fill", "currentColor");
22652				attr(path_1, "d", "M305 239c9.4 9.4 9.4 24.6 0 33.9L113 465c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l175-175L79 81c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L305 239z");
22653				attr(svg, "aria-hidden", "true");
22654				attr(svg, "focusable", "false");
22655				attr(svg, "data-prefix", "far");
22656				attr(svg, "data-icon", "chevron-right");
22657				attr(svg, "class", "svg-inline--fa fa-chevron-right sc-egTsrv kzAurc");
22658				attr(svg, "role", "img");
22659				attr(svg, "xmlns", "http://www.w3.org/2000/svg");
22660				attr(svg, "viewBox", "0 0 320 512");
22661				attr(svg, "width", "16");
22662				attr(svg, "height", "16");
22663				attr(a, "class", "zephr-form-tablink svelte-py0ruk");
22664
22665				attr(a, "href", a_href_value = /*path*/ ctx[1] && (!window.Zephr || !window.Zephr.isCustomPage || !/*path*/ ctx[1].startsWith(window.Zephr.customPagePath))
22666				? /*path*/ ctx[1]
22667				: "javascript: void(0)");
22668			},
22669			m(target, anchor) {
22670				insert(target, a, anchor);
22671				append(a, span);
22672				append(span, t0);
22673				append(a, t1);
22674				append(a, svg);
22675				append(svg, path_1);
22676
22677				if (!mounted) {
22678					dispose = listen(a, "click", /*click_handler*/ ctx[4]);
22679					mounted = true;
22680				}
22681			},
22682			p(ctx, [dirty]) {
22683				if (dirty & /*text*/ 1) set_data(t0, /*text*/ ctx[0]);
22684
22685				if (dirty & /*path*/ 2 && a_href_value !== (a_href_value = /*path*/ ctx[1] && (!window.Zephr || !window.Zephr.isCustomPage || !/*path*/ ctx[1].startsWith(window.Zephr.customPagePath))
22686				? /*path*/ ctx[1]
22687				: "javascript: void(0)")) {
22688					attr(a, "href", a_href_value);
22689				}
22690			},
22691			i: noop,
22692			o: noop,
22693			d(detaching) {
22694				if (detaching) {
22695					detach(a);
22696				}
22697
22698				mounted = false;
22699				dispose();
22700			}
22701		};
22702	}
22703
22704	function instance$x($$self, $$props, $$invalidate) {
22705		let { text } = $$props;
22706		let { path = '' } = $$props;
22707
22708		let { onClick = () => {
22709			
22710		} } = $$props;
22711
22712		let { logDlEvent = () => {
22713			
22714		} } = $$props;
22715
22716		const click_handler = () => {
22717			logDlEvent?.();
22718
22719			if (window.Zephr && window.Zephr.isCustomPage && path.startsWith(window.Zephr.customPagePath)) {
22720				window.history.pushState({}, '', path);
22721			} else {
22722				onClick();
22723			}
22724		};
22725
22726		$$self.$$set = $$props => {
22727			if ('text' in $$props) $$invalidate(0, text = $$props.text);
22728			if ('path' in $$props) $$invalidate(1, path = $$props.path);
22729			if ('onClick' in $$props) $$invalidate(2, onClick = $$props.onClick);
22730			if ('logDlEvent' in $$props) $$invalidate(3, logDlEvent = $$props.logDlEvent);
22731		};
22732
22733		return [text, path, onClick, logDlEvent, click_handler];
22734	}
22735
22736	class Tablink extends SvelteComponent {
22737		constructor(options) {
22738			super();
22739
22740			init(this, options, instance$x, create_fragment$x, safe_not_equal, {
22741				text: 0,
22742				path: 1,
22743				onClick: 2,
22744				logDlEvent: 3
22745			});
22746		}
22747	}
22748
22749	/* src/components/elements/subscriptionsList/SubscriptionsListBoxItem.svelte generated by Svelte v4.2.12 */
22750
22751	function get_each_context$a(ctx, list, i) {
22752		const child_ctx = ctx.slice();
22753		child_ctx[48] = list[i];
22754		child_ctx[50] = i;
22755		return child_ctx;
22756	}
22757
22758	function get_each_context_1$2(ctx, list, i) {
22759		const child_ctx = ctx.slice();
22760		child_ctx[51] = list[i];
22761		return child_ctx;
22762	}
22763
22764	// (123:8) {#if subscription.isGift}
22765	function create_if_block_23(ctx) {
22766		let span;
22767		let t;
22768
22769		return {
22770			c() {
22771				span = element("span");
22772				t = text(/*giftPillText*/ ctx[24]);
22773				attr(span, "class", "gift-pill svelte-xxnasy");
22774			},
22775			m(target, anchor) {
22776				insert(target, span, anchor);
22777				append(span, t);
22778			},
22779			p(ctx, dirty) {
22780				if (dirty[0] & /*giftPillText*/ 16777216) set_data(t, /*giftPillText*/ ctx[24]);
22781			},
22782			d(detaching) {
22783				if (detaching) {
22784					detach(span);
22785				}
22786			}
22787		};
22788	}
22789
22790	// (135:4) {:else}
22791	function create_else_block$3(ctx) {
22792		let each_1_anchor;
22793		let current;
22794		let each_value = ensure_array_like(/*elementsOrder*/ ctx[21]);
22795		let each_blocks = [];
22796
22797		for (let i = 0; i < each_value.length; i += 1) {
22798			each_blocks[i] = create_each_block$a(get_each_context$a(ctx, each_value, i));
22799		}
22800
22801		const out = i => transition_out(each_blocks[i], 1, 1, () => {
22802			each_blocks[i] = null;
22803		});
22804
22805		return {
22806			c() {
22807				for (let i = 0; i < each_blocks.length; i += 1) {
22808					each_blocks[i].c();
22809				}
22810
22811				each_1_anchor = empty();
22812			},
22813			m(target, anchor) {
22814				for (let i = 0; i < each_blocks.length; i += 1) {
22815					if (each_blocks[i]) {
22816						each_blocks[i].m(target, anchor);
22817					}
22818				}
22819
22820				insert(target, each_1_anchor, anchor);
22821				current = true;
22822			},
22823			p(ctx, dirty) {
22824				if (dirty[0] & /*elementsOrder, updateBillToContactText, updateBillToContactPath, subscription, logUpdateBillToContact, elementsHide, paymentProvider, subscriptionCustomFieldsText, onUpdateSubscriptionCustomFields, suspendResumeSubscriptionText, suspendResumeSubscriptionPath, logSuspendResumeSubscription, cancelSubscriptionText, cancelSubscriptionPath, logCancelSubscription, changeSubscriptionText, changeSubscriptionPath, logChangeSubscription, changePaymentMethodText, onChangePayment, billingHistoryLink, onViewHistory, statusType, statusMessage, isUpdatingAutoRenew, autoRenewToggleText, autoRenewToggleEnabled, nextPaymentDateText, subscriptionRateText*/ 2122317823 | dirty[1] & /*displayedFields, withSubscriptionParam, autoRenewValue, handleAutoRenewChange*/ 15) {
22825					each_value = ensure_array_like(/*elementsOrder*/ ctx[21]);
22826					let i;
22827
22828					for (i = 0; i < each_value.length; i += 1) {
22829						const child_ctx = get_each_context$a(ctx, each_value, i);
22830
22831						if (each_blocks[i]) {
22832							each_blocks[i].p(child_ctx, dirty);
22833							transition_in(each_blocks[i], 1);
22834						} else {
22835							each_blocks[i] = create_each_block$a(child_ctx);
22836							each_blocks[i].c();
22837							transition_in(each_blocks[i], 1);
22838							each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor);
22839						}
22840					}
22841
22842					group_outros();
22843
22844					for (i = each_value.length; i < each_blocks.length; i += 1) {
22845						out(i);
22846					}
22847
22848					check_outros();
22849				}
22850			},
22851			i(local) {
22852				if (current) return;
22853
22854				for (let i = 0; i < each_value.length; i += 1) {
22855					transition_in(each_blocks[i]);
22856				}
22857
22858				current = true;
22859			},
22860			o(local) {
22861				each_blocks = each_blocks.filter(Boolean);
22862
22863				for (let i = 0; i < each_blocks.length; i += 1) {
22864					transition_out(each_blocks[i]);
22865				}
22866
22867				current = false;
22868			},
22869			d(detaching) {
22870				if (detaching) {
22871					detach(each_1_anchor);
22872				}
22873
22874				destroy_each(each_blocks, detaching);
22875			}
22876		};
22877	}
22878
22879	// (128:4) {#if isInactive}
22880	function create_if_block$p(ctx) {
22881		let if_block_anchor;
22882		let if_block = /*subscription*/ ctx[0].amount && create_if_block_1$g(ctx);
22883
22884		return {
22885			c() {
22886				if (if_block) if_block.c();
22887				if_block_anchor = empty();
22888			},
22889			m(target, anchor) {
22890				if (if_block) if_block.m(target, anchor);
22891				insert(target, if_block_anchor, anchor);
22892			},
22893			p(ctx, dirty) {
22894				if (/*subscription*/ ctx[0].amount) {
22895					if (if_block) {
22896						if_block.p(ctx, dirty);
22897					} else {
22898						if_block = create_if_block_1$g(ctx);
22899						if_block.c();
22900						if_block.m(if_block_anchor.parentNode, if_block_anchor);
22901					}
22902				} else if (if_block) {
22903					if_block.d(1);
22904					if_block = null;
22905				}
22906			},
22907			i: noop,
22908			o: noop,
22909			d(detaching) {
22910				if (detaching) {
22911					detach(if_block_anchor);
22912				}
22913
22914				if (if_block) if_block.d(detaching);
22915			}
22916		};
22917	}
22918
22919	// (137:8) {#if element === 'subscription_information' && !elementsHide.subscriptionInformation}
22920	function create_if_block_20(ctx) {
22921		let t;
22922		let if_block1_anchor;
22923		let if_block0 = /*subscription*/ ctx[0].amount && create_if_block_22(ctx);
22924		let if_block1 = /*subscription*/ ctx[0].status === 'active' && /*subscription*/ ctx[0].nextBillingTime && create_if_block_21(ctx);
22925
22926		return {
22927			c() {
22928				if (if_block0) if_block0.c();
22929				t = space();
22930				if (if_block1) if_block1.c();
22931				if_block1_anchor = empty();
22932			},
22933			m(target, anchor) {
22934				if (if_block0) if_block0.m(target, anchor);
22935				insert(target, t, anchor);
22936				if (if_block1) if_block1.m(target, anchor);
22937				insert(target, if_block1_anchor, anchor);
22938			},
22939			p(ctx, dirty) {
22940				if (/*subscription*/ ctx[0].amount) {
22941					if (if_block0) {
22942						if_block0.p(ctx, dirty);
22943					} else {
22944						if_block0 = create_if_block_22(ctx);
22945						if_block0.c();
22946						if_block0.m(t.parentNode, t);
22947					}
22948				} else if (if_block0) {
22949					if_block0.d(1);
22950					if_block0 = null;
22951				}
22952
22953				if (/*subscription*/ ctx[0].status === 'active' && /*subscription*/ ctx[0].nextBillingTime) {
22954					if (if_block1) {
22955						if_block1.p(ctx, dirty);
22956					} else {
22957						if_block1 = create_if_block_21(ctx);
22958						if_block1.c();
22959						if_block1.m(if_block1_anchor.parentNode, if_block1_anchor);
22960					}
22961				} else if (if_block1) {
22962					if_block1.d(1);
22963					if_block1 = null;
22964				}
22965			},
22966			d(detaching) {
22967				if (detaching) {
22968					detach(t);
22969					detach(if_block1_anchor);
22970				}
22971
22972				if (if_block0) if_block0.d(detaching);
22973				if (if_block1) if_block1.d(detaching);
22974			}
22975		};
22976	}
22977
22978	// (138:10) {#if subscription.amount}
22979	function create_if_block_22(ctx) {
22980		let div1;
22981		let span;
22982		let t0;
22983		let t1;
22984		let div0;
22985		let t2_value = /*subscription*/ ctx[0].amount + "";
22986		let t2;
22987
22988		return {
22989			c() {
22990				div1 = element("div");
22991				span = element("span");
22992				t0 = text(/*subscriptionRateText*/ ctx[2]);
22993				t1 = space();
22994				div0 = element("div");
22995				t2 = text(t2_value);
22996				attr(span, "class", "svelte-xxnasy");
22997				attr(div0, "class", "zephr-box-item-information svelte-xxnasy");
22998				attr(div1, "class", "zephr-section svelte-xxnasy");
22999			},
23000			m(target, anchor) {
23001				insert(target, div1, anchor);
23002				append(div1, span);
23003				append(span, t0);
23004				append(div1, t1);
23005				append(div1, div0);
23006				append(div0, t2);
23007			},
23008			p(ctx, dirty) {
23009				if (dirty[0] & /*subscriptionRateText*/ 4) set_data(t0, /*subscriptionRateText*/ ctx[2]);
23010				if (dirty[0] & /*subscription*/ 1 && t2_value !== (t2_value = /*subscription*/ ctx[0].amount + "")) set_data(t2, t2_value);
23011			},
23012			d(detaching) {
23013				if (detaching) {
23014					detach(div1);
23015				}
23016			}
23017		};
23018	}
23019
23020	// (146:10) {#if subscription.status === 'active' && subscription.nextBillingTime}
23021	function create_if_block_21(ctx) {
23022		let div1;
23023		let span;
23024		let t0;
23025		let t1;
23026		let div0;
23027		let t2_value = /*subscription*/ ctx[0].nextBillingTime + "";
23028		let t2;
23029
23030		return {
23031			c() {
23032				div1 = element("div");
23033				span = element("span");
23034				t0 = text(/*nextPaymentDateText*/ ctx[1]);
23035				t1 = space();
23036				div0 = element("div");
23037				t2 = text(t2_value);
23038				attr(span, "class", "svelte-xxnasy");
23039				attr(div0, "class", "zephr-box-item-information svelte-xxnasy");
23040				attr(div1, "class", "zephr-section svelte-xxnasy");
23041			},
23042			m(target, anchor) {
23043				insert(target, div1, anchor);
23044				append(div1, span);
23045				append(span, t0);
23046				append(div1, t1);
23047				append(div1, div0);
23048				append(div0, t2);
23049			},
23050			p(ctx, dirty) {
23051				if (dirty[0] & /*nextPaymentDateText*/ 2) set_data(t0, /*nextPaymentDateText*/ ctx[1]);
23052				if (dirty[0] & /*subscription*/ 1 && t2_value !== (t2_value = /*subscription*/ ctx[0].nextBillingTime + "")) set_data(t2, t2_value);
23053			},
23054			d(detaching) {
23055				if (detaching) {
23056					detach(div1);
23057				}
23058			}
23059		};
23060	}
23061
23062	// (155:8) {#if element === 'payment_auto_renew_toggle' && autoRenewToggleEnabled && paymentProvider === 'zuora-billing' && subscription.status === 'active' && !subscription.isGift && subscription.termType === 'TERMED'}
23063	function create_if_block_17(ctx) {
23064		let div1;
23065		let div0;
23066		let checkbox;
23067		let t0;
23068		let t1;
23069		let current;
23070
23071		checkbox = new Checkbox({
23072				props: {
23073					id: "auto-renew-" + /*subscription*/ ctx[0].externalId,
23074					label: /*autoRenewToggleText*/ ctx[27],
23075					value: "auto-renew",
23076					checked: /*autoRenewValue*/ ctx[31],
23077					disabled: /*isUpdatingAutoRenew*/ ctx[28]
23078				}
23079			});
23080
23081		checkbox.$on("change", /*handleAutoRenewChange*/ ctx[34]);
23082		let if_block0 = /*isUpdatingAutoRenew*/ ctx[28] && create_if_block_19();
23083		let if_block1 = /*statusMessage*/ ctx[29] && create_if_block_18(ctx);
23084
23085		return {
23086			c() {
23087				div1 = element("div");
23088				div0 = element("div");
23089				create_component(checkbox.$$.fragment);
23090				t0 = space();
23091				if (if_block0) if_block0.c();
23092				t1 = space();
23093				if (if_block1) if_block1.c();
23094				attr(div0, "class", "auto-renew-toggle-container svelte-xxnasy");
23095				attr(div1, "class", "zephr-section svelte-xxnasy");
23096			},
23097			m(target, anchor) {
23098				insert(target, div1, anchor);
23099				append(div1, div0);
23100				mount_component(checkbox, div0, null);
23101				append(div0, t0);
23102				if (if_block0) if_block0.m(div0, null);
23103				append(div1, t1);
23104				if (if_block1) if_block1.m(div1, null);
23105				current = true;
23106			},
23107			p(ctx, dirty) {
23108				const checkbox_changes = {};
23109				if (dirty[0] & /*subscription*/ 1) checkbox_changes.id = "auto-renew-" + /*subscription*/ ctx[0].externalId;
23110				if (dirty[0] & /*autoRenewToggleText*/ 134217728) checkbox_changes.label = /*autoRenewToggleText*/ ctx[27];
23111				if (dirty[1] & /*autoRenewValue*/ 1) checkbox_changes.checked = /*autoRenewValue*/ ctx[31];
23112				if (dirty[0] & /*isUpdatingAutoRenew*/ 268435456) checkbox_changes.disabled = /*isUpdatingAutoRenew*/ ctx[28];
23113				checkbox.$set(checkbox_changes);
23114
23115				if (/*isUpdatingAutoRenew*/ ctx[28]) {
23116					if (if_block0) ; else {
23117						if_block0 = create_if_block_19();
23118						if_block0.c();
23119						if_block0.m(div0, null);
23120					}
23121				} else if (if_block0) {
23122					if_block0.d(1);
23123					if_block0 = null;
23124				}
23125
23126				if (/*statusMessage*/ ctx[29]) {
23127					if (if_block1) {
23128						if_block1.p(ctx, dirty);
23129					} else {
23130						if_block1 = create_if_block_18(ctx);
23131						if_block1.c();
23132						if_block1.m(div1, null);
23133					}
23134				} else if (if_block1) {
23135					if_block1.d(1);
23136					if_block1 = null;
23137				}
23138			},
23139			i(local) {
23140				if (current) return;
23141				transition_in(checkbox.$$.fragment, local);
23142				current = true;
23143			},
23144			o(local) {
23145				transition_out(checkbox.$$.fragment, local);
23146				current = false;
23147			},
23148			d(detaching) {
23149				if (detaching) {
23150					detach(div1);
23151				}
23152
23153				destroy_component(checkbox);
23154				if (if_block0) if_block0.d();
23155				if (if_block1) if_block1.d();
23156			}
23157		};
23158	}
23159
23160	// (166:14) {#if isUpdatingAutoRenew}
23161	function create_if_block_19(ctx) {
23162		let span;
23163
23164		return {
23165			c() {
23166				span = element("span");
23167				span.textContent = "Updating...";
23168				attr(span, "class", "updating-indicator svelte-xxnasy");
23169			},
23170			m(target, anchor) {
23171				insert(target, span, anchor);
23172			},
23173			d(detaching) {
23174				if (detaching) {
23175					detach(span);
23176				}
23177			}
23178		};
23179	}
23180
23181	// (170:12) {#if statusMessage}
23182	function create_if_block_18(ctx) {
23183		let div;
23184		let t;
23185		let div_class_value;
23186
23187		return {
23188			c() {
23189				div = element("div");
23190				t = text(/*statusMessage*/ ctx[29]);
23191				attr(div, "class", div_class_value = "status-message " + /*statusType*/ ctx[30] + " svelte-xxnasy");
23192			},
23193			m(target, anchor) {
23194				insert(target, div, anchor);
23195				append(div, t);
23196			},
23197			p(ctx, dirty) {
23198				if (dirty[0] & /*statusMessage*/ 536870912) set_data(t, /*statusMessage*/ ctx[29]);
23199
23200				if (dirty[0] & /*statusType*/ 1073741824 && div_class_value !== (div_class_value = "status-message " + /*statusType*/ ctx[30] + " svelte-xxnasy")) {
23201					attr(div, "class", div_class_value);
23202				}
23203			},
23204			d(detaching) {
23205				if (detaching) {
23206					detach(div);
23207				}
23208			}
23209		};
23210	}
23211
23212	// (177:8) {#if element === 'billing_history' && !elementsHide.billingHistory}
23213	function create_if_block_15(ctx) {
23214		let if_block_anchor;
23215		let current;
23216		let if_block = /*billingHistoryLink*/ ctx[3] && create_if_block_16(ctx);
23217
23218		return {
23219			c() {
23220				if (if_block) if_block.c();
23221				if_block_anchor = empty();
23222			},
23223			m(target, anchor) {
23224				if (if_block) if_block.m(target, anchor);
23225				insert(target, if_block_anchor, anchor);
23226				current = true;
23227			},
23228			p(ctx, dirty) {
23229				if (/*billingHistoryLink*/ ctx[3]) {
23230					if (if_block) {
23231						if_block.p(ctx, dirty);
23232
23233						if (dirty[0] & /*billingHistoryLink*/ 8) {
23234							transition_in(if_block, 1);
23235						}
23236					} else {
23237						if_block = create_if_block_16(ctx);
23238						if_block.c();
23239						transition_in(if_block, 1);
23240						if_block.m(if_block_anchor.parentNode, if_block_anchor);
23241					}
23242				} else if (if_block) {
23243					group_outros();
23244
23245					transition_out(if_block, 1, 1, () => {
23246						if_block = null;
23247					});
23248
23249					check_outros();
23250				}
23251			},
23252			i(local) {
23253				if (current) return;
23254				transition_in(if_block);
23255				current = true;
23256			},
23257			o(local) {
23258				transition_out(if_block);
23259				current = false;
23260			},
23261			d(detaching) {
23262				if (detaching) {
23263					detach(if_block_anchor);
23264				}
23265
23266				if (if_block) if_block.d(detaching);
23267			}
23268		};
23269	}
23270
23271	// (178:10) {#if billingHistoryLink}
23272	function create_if_block_16(ctx) {
23273		let tablink;
23274		let current;
23275
23276		tablink = new Tablink({
23277				props: {
23278					text: /*billingHistoryLink*/ ctx[3],
23279					onClick: /*func*/ ctx[39]
23280				}
23281			});
23282
23283		return {
23284			c() {
23285				create_component(tablink.$$.fragment);
23286			},
23287			m(target, anchor) {
23288				mount_component(tablink, target, anchor);
23289				current = true;
23290			},
23291			p(ctx, dirty) {
23292				const tablink_changes = {};
23293				if (dirty[0] & /*billingHistoryLink*/ 8) tablink_changes.text = /*billingHistoryLink*/ ctx[3];
23294				if (dirty[0] & /*onViewHistory, subscription*/ 17) tablink_changes.onClick = /*func*/ ctx[39];
23295				tablink.$set(tablink_changes);
23296			},
23297			i(local) {
23298				if (current) return;
23299				transition_in(tablink.$$.fragment, local);
23300				current = true;
23301			},
23302			o(local) {
23303				transition_out(tablink.$$.fragment, local);
23304				current = false;
23305			},
23306			d(detaching) {
23307				destroy_component(tablink, detaching);
23308			}
23309		};
23310	}
23311
23312	// (185:8) {#if element === 'change_payment' && !elementsHide.changePayment && !subscription.isGift}
23313	function create_if_block_13$1(ctx) {
23314		let if_block_anchor;
23315		let current;
23316		let if_block = /*changePaymentMethodText*/ ctx[10] && create_if_block_14$1(ctx);
23317
23318		return {
23319			c() {
23320				if (if_block) if_block.c();
23321				if_block_anchor = empty();
23322			},
23323			m(target, anchor) {
23324				if (if_block) if_block.m(target, anchor);
23325				insert(target, if_block_anchor, anchor);
23326				current = true;
23327			},
23328			p(ctx, dirty) {
23329				if (/*changePaymentMethodText*/ ctx[10]) {
23330					if (if_block) {
23331						if_block.p(ctx, dirty);
23332
23333						if (dirty[0] & /*changePaymentMethodText*/ 1024) {
23334							transition_in(if_block, 1);
23335						}
23336					} else {
23337						if_block = create_if_block_14$1(ctx);
23338						if_block.c();
23339						transition_in(if_block, 1);
23340						if_block.m(if_block_anchor.parentNode, if_block_anchor);
23341					}
23342				} else if (if_block) {
23343					group_outros();
23344
23345					transition_out(if_block, 1, 1, () => {
23346						if_block = null;
23347					});
23348
23349					check_outros();
23350				}
23351			},
23352			i(local) {
23353				if (current) return;
23354				transition_in(if_block);
23355				current = true;
23356			},
23357			o(local) {
23358				transition_out(if_block);
23359				current = false;
23360			},
23361			d(detaching) {
23362				if (detaching) {
23363					detach(if_block_anchor);
23364				}
23365
23366				if (if_block) if_block.d(detaching);
23367			}
23368		};
23369	}
23370
23371	// (186:10) {#if changePaymentMethodText}
23372	function create_if_block_14$1(ctx) {
23373		let tablink;
23374		let current;
23375
23376		tablink = new Tablink({
23377				props: {
23378					text: /*changePaymentMethodText*/ ctx[10],
23379					onClick: /*func_1*/ ctx[40]
23380				}
23381			});
23382
23383		return {
23384			c() {
23385				create_component(tablink.$$.fragment);
23386			},
23387			m(target, anchor) {
23388				mount_component(tablink, target, anchor);
23389				current = true;
23390			},
23391			p(ctx, dirty) {
23392				const tablink_changes = {};
23393				if (dirty[0] & /*changePaymentMethodText*/ 1024) tablink_changes.text = /*changePaymentMethodText*/ ctx[10];
23394				if (dirty[0] & /*onChangePayment, subscription*/ 33) tablink_changes.onClick = /*func_1*/ ctx[40];
23395				tablink.$set(tablink_changes);
23396			},
23397			i(local) {
23398				if (current) return;
23399				transition_in(tablink.$$.fragment, local);
23400				current = true;
23401			},
23402			o(local) {
23403				transition_out(tablink.$$.fragment, local);
23404				current = false;
23405			},
23406			d(detaching) {
23407				destroy_component(tablink, detaching);
23408			}
23409		};
23410	}
23411
23412	// (193:8) {#if element === 'change_subscription' && !elementsHide.changeSubscription}
23413	function create_if_block_11$1(ctx) {
23414		let if_block_anchor;
23415		let current;
23416		let if_block = /*changeSubscriptionText*/ ctx[11] && create_if_block_12$1(ctx);
23417
23418		return {
23419			c() {
23420				if (if_block) if_block.c();
23421				if_block_anchor = empty();
23422			},
23423			m(target, anchor) {
23424				if (if_block) if_block.m(target, anchor);
23425				insert(target, if_block_anchor, anchor);
23426				current = true;
23427			},
23428			p(ctx, dirty) {
23429				if (/*changeSubscriptionText*/ ctx[11]) {
23430					if (if_block) {
23431						if_block.p(ctx, dirty);
23432
23433						if (dirty[0] & /*changeSubscriptionText*/ 2048) {
23434							transition_in(if_block, 1);
23435						}
23436					} else {
23437						if_block = create_if_block_12$1(ctx);
23438						if_block.c();
23439						transition_in(if_block, 1);
23440						if_block.m(if_block_anchor.parentNode, if_block_anchor);
23441					}
23442				} else if (if_block) {
23443					group_outros();
23444
23445					transition_out(if_block, 1, 1, () => {
23446						if_block = null;
23447					});
23448
23449					check_outros();
23450				}
23451			},
23452			i(local) {
23453				if (current) return;
23454				transition_in(if_block);
23455				current = true;
23456			},
23457			o(local) {
23458				transition_out(if_block);
23459				current = false;
23460			},
23461			d(detaching) {
23462				if (detaching) {
23463					detach(if_block_anchor);
23464				}
23465
23466				if (if_block) if_block.d(detaching);
23467			}
23468		};
23469	}
23470
23471	// (194:10) {#if changeSubscriptionText}
23472	function create_if_block_12$1(ctx) {
23473		let tablink;
23474		let current;
23475
23476		tablink = new Tablink({
23477				props: {
23478					text: /*changeSubscriptionText*/ ctx[11],
23479					path: /*withSubscriptionParam*/ ctx[33](/*changeSubscriptionPath*/ ctx[13], /*subscription*/ ctx[0].externalId),
23480					logDlEvent: /*func_2*/ ctx[41]
23481				}
23482			});
23483
23484		return {
23485			c() {
23486				create_component(tablink.$$.fragment);
23487			},
23488			m(target, anchor) {
23489				mount_component(tablink, target, anchor);
23490				current = true;
23491			},
23492			p(ctx, dirty) {
23493				const tablink_changes = {};
23494				if (dirty[0] & /*changeSubscriptionText*/ 2048) tablink_changes.text = /*changeSubscriptionText*/ ctx[11];
23495				if (dirty[0] & /*changeSubscriptionPath, subscription*/ 8193) tablink_changes.path = /*withSubscriptionParam*/ ctx[33](/*changeSubscriptionPath*/ ctx[13], /*subscription*/ ctx[0].externalId);
23496				if (dirty[0] & /*logChangeSubscription, subscription*/ 65) tablink_changes.logDlEvent = /*func_2*/ ctx[41];
23497				tablink.$set(tablink_changes);
23498			},
23499			i(local) {
23500				if (current) return;
23501				transition_in(tablink.$$.fragment, local);
23502				current = true;
23503			},
23504			o(local) {
23505				transition_out(tablink.$$.fragment, local);
23506				current = false;
23507			},
23508			d(detaching) {
23509				destroy_component(tablink, detaching);
23510			}
23511		};
23512	}
23513
23514	// (202:8) {#if element === 'cancel_subscription' && !elementsHide.cancelSubscription && !subscription.isGift}
23515	function create_if_block_9$1(ctx) {
23516		let if_block_anchor;
23517		let current;
23518		let if_block = /*cancelSubscriptionText*/ ctx[12] && create_if_block_10$1(ctx);
23519
23520		return {
23521			c() {
23522				if (if_block) if_block.c();
23523				if_block_anchor = empty();
23524			},
23525			m(target, anchor) {
23526				if (if_block) if_block.m(target, anchor);
23527				insert(target, if_block_anchor, anchor);
23528				current = true;
23529			},
23530			p(ctx, dirty) {
23531				if (/*cancelSubscriptionText*/ ctx[12]) {
23532					if (if_block) {
23533						if_block.p(ctx, dirty);
23534
23535						if (dirty[0] & /*cancelSubscriptionText*/ 4096) {
23536							transition_in(if_block, 1);
23537						}
23538					} else {
23539						if_block = create_if_block_10$1(ctx);
23540						if_block.c();
23541						transition_in(if_block, 1);
23542						if_block.m(if_block_anchor.parentNode, if_block_anchor);
23543					}
23544				} else if (if_block) {
23545					group_outros();
23546
23547					transition_out(if_block, 1, 1, () => {
23548						if_block = null;
23549					});
23550
23551					check_outros();
23552				}
23553			},
23554			i(local) {
23555				if (current) return;
23556				transition_in(if_block);
23557				current = true;
23558			},
23559			o(local) {
23560				transition_out(if_block);
23561				current = false;
23562			},
23563			d(detaching) {
23564				if (detaching) {
23565					detach(if_block_anchor);
23566				}
23567
23568				if (if_block) if_block.d(detaching);
23569			}
23570		};
23571	}
23572
23573	// (203:10) {#if cancelSubscriptionText}
23574	function create_if_block_10$1(ctx) {
23575		let tablink;
23576		let current;
23577
23578		tablink = new Tablink({
23579				props: {
23580					text: /*cancelSubscriptionText*/ ctx[12],
23581					path: /*withSubscriptionParam*/ ctx[33](/*cancelSubscriptionPath*/ ctx[14], /*subscription*/ ctx[0].externalId),
23582					logDlEvent: /*func_3*/ ctx[42]
23583				}
23584			});
23585
23586		return {
23587			c() {
23588				create_component(tablink.$$.fragment);
23589			},
23590			m(target, anchor) {
23591				mount_component(tablink, target, anchor);
23592				current = true;
23593			},
23594			p(ctx, dirty) {
23595				const tablink_changes = {};
23596				if (dirty[0] & /*cancelSubscriptionText*/ 4096) tablink_changes.text = /*cancelSubscriptionText*/ ctx[12];
23597				if (dirty[0] & /*cancelSubscriptionPath, subscription*/ 16385) tablink_changes.path = /*withSubscriptionParam*/ ctx[33](/*cancelSubscriptionPath*/ ctx[14], /*subscription*/ ctx[0].externalId);
23598				if (dirty[0] & /*logCancelSubscription, subscription*/ 129) tablink_changes.logDlEvent = /*func_3*/ ctx[42];
23599				tablink.$set(tablink_changes);
23600			},
23601			i(local) {
23602				if (current) return;
23603				transition_in(tablink.$$.fragment, local);
23604				current = true;
23605			},
23606			o(local) {
23607				transition_out(tablink.$$.fragment, local);
23608				current = false;
23609			},
23610			d(detaching) {
23611				destroy_component(tablink, detaching);
23612			}
23613		};
23614	}
23615
23616	// (211:8) {#if element === 'suspend_resume_subscription' && !elementsHide.suspendResumeSubscription && paymentProvider === 'zuora-billing'}
23617	function create_if_block_7$1(ctx) {
23618		let if_block_anchor;
23619		let current;
23620		let if_block = /*suspendResumeSubscriptionText*/ ctx[15] && create_if_block_8$1(ctx);
23621
23622		return {
23623			c() {
23624				if (if_block) if_block.c();
23625				if_block_anchor = empty();
23626			},
23627			m(target, anchor) {
23628				if (if_block) if_block.m(target, anchor);
23629				insert(target, if_block_anchor, anchor);
23630				current = true;
23631			},
23632			p(ctx, dirty) {
23633				if (/*suspendResumeSubscriptionText*/ ctx[15]) {
23634					if (if_block) {
23635						if_block.p(ctx, dirty);
23636
23637						if (dirty[0] & /*suspendResumeSubscriptionText*/ 32768) {
23638							transition_in(if_block, 1);
23639						}
23640					} else {
23641						if_block = create_if_block_8$1(ctx);
23642						if_block.c();
23643						transition_in(if_block, 1);
23644						if_block.m(if_block_anchor.parentNode, if_block_anchor);
23645					}
23646				} else if (if_block) {
23647					group_outros();
23648
23649					transition_out(if_block, 1, 1, () => {
23650						if_block = null;
23651					});
23652
23653					check_outros();
23654				}
23655			},
23656			i(local) {
23657				if (current) return;
23658				transition_in(if_block);
23659				current = true;
23660			},
23661			o(local) {
23662				transition_out(if_block);
23663				current = false;
23664			},
23665			d(detaching) {
23666				if (detaching) {
23667					detach(if_block_anchor);
23668				}
23669
23670				if (if_block) if_block.d(detaching);
23671			}
23672		};
23673	}
23674
23675	// (212:10) {#if suspendResumeSubscriptionText}
23676	function create_if_block_8$1(ctx) {
23677		let tablink;
23678		let current;
23679
23680		tablink = new Tablink({
23681				props: {
23682					text: /*suspendResumeSubscriptionText*/ ctx[15],
23683					path: /*withSubscriptionParam*/ ctx[33](/*suspendResumeSubscriptionPath*/ ctx[16], /*subscription*/ ctx[0].externalId),
23684					logDlEvent: /*func_4*/ ctx[43]
23685				}
23686			});
23687
23688		return {
23689			c() {
23690				create_component(tablink.$$.fragment);
23691			},
23692			m(target, anchor) {
23693				mount_component(tablink, target, anchor);
23694				current = true;
23695			},
23696			p(ctx, dirty) {
23697				const tablink_changes = {};
23698				if (dirty[0] & /*suspendResumeSubscriptionText*/ 32768) tablink_changes.text = /*suspendResumeSubscriptionText*/ ctx[15];
23699				if (dirty[0] & /*suspendResumeSubscriptionPath, subscription*/ 65537) tablink_changes.path = /*withSubscriptionParam*/ ctx[33](/*suspendResumeSubscriptionPath*/ ctx[16], /*subscription*/ ctx[0].externalId);
23700				if (dirty[0] & /*logSuspendResumeSubscription, subscription*/ 257) tablink_changes.logDlEvent = /*func_4*/ ctx[43];
23701				tablink.$set(tablink_changes);
23702			},
23703			i(local) {
23704				if (current) return;
23705				transition_in(tablink.$$.fragment, local);
23706				current = true;
23707			},
23708			o(local) {
23709				transition_out(tablink.$$.fragment, local);
23710				current = false;
23711			},
23712			d(detaching) {
23713				destroy_component(tablink, detaching);
23714			}
23715		};
23716	}
23717
23718	// (220:8) {#if element === 'subscription_custom_fields_list' && !elementsHide.subscriptionCustomFields}
23719	function create_if_block_5$5(ctx) {
23720		let if_block_anchor;
23721		let current;
23722		let if_block = /*subscriptionCustomFieldsText*/ ctx[17] && create_if_block_6$5(ctx);
23723
23724		return {
23725			c() {
23726				if (if_block) if_block.c();
23727				if_block_anchor = empty();
23728			},
23729			m(target, anchor) {
23730				if (if_block) if_block.m(target, anchor);
23731				insert(target, if_block_anchor, anchor);
23732				current = true;
23733			},
23734			p(ctx, dirty) {
23735				if (/*subscriptionCustomFieldsText*/ ctx[17]) {
23736					if (if_block) {
23737						if_block.p(ctx, dirty);
23738
23739						if (dirty[0] & /*subscriptionCustomFieldsText*/ 131072) {
23740							transition_in(if_block, 1);
23741						}
23742					} else {
23743						if_block = create_if_block_6$5(ctx);
23744						if_block.c();
23745						transition_in(if_block, 1);
23746						if_block.m(if_block_anchor.parentNode, if_block_anchor);
23747					}
23748				} else if (if_block) {
23749					group_outros();
23750
23751					transition_out(if_block, 1, 1, () => {
23752						if_block = null;
23753					});
23754
23755					check_outros();
23756				}
23757			},
23758			i(local) {
23759				if (current) return;
23760				transition_in(if_block);
23761				current = true;
23762			},
23763			o(local) {
23764				transition_out(if_block);
23765				current = false;
23766			},
23767			d(detaching) {
23768				if (detaching) {
23769					detach(if_block_anchor);
23770				}
23771
23772				if (if_block) if_block.d(detaching);
23773			}
23774		};
23775	}
23776
23777	// (221:10) {#if subscriptionCustomFieldsText}
23778	function create_if_block_6$5(ctx) {
23779		let tablink;
23780		let current;
23781
23782		tablink = new Tablink({
23783				props: {
23784					text: /*subscriptionCustomFieldsText*/ ctx[17],
23785					onClick: /*func_5*/ ctx[44]
23786				}
23787			});
23788
23789		return {
23790			c() {
23791				create_component(tablink.$$.fragment);
23792			},
23793			m(target, anchor) {
23794				mount_component(tablink, target, anchor);
23795				current = true;
23796			},
23797			p(ctx, dirty) {
23798				const tablink_changes = {};
23799				if (dirty[0] & /*subscriptionCustomFieldsText*/ 131072) tablink_changes.text = /*subscriptionCustomFieldsText*/ ctx[17];
23800				if (dirty[0] & /*onUpdateSubscriptionCustomFields, subscription*/ 262145) tablink_changes.onClick = /*func_5*/ ctx[44];
23801				tablink.$set(tablink_changes);
23802			},
23803			i(local) {
23804				if (current) return;
23805				transition_in(tablink.$$.fragment, local);
23806				current = true;
23807			},
23808			o(local) {
23809				transition_out(tablink.$$.fragment, local);
23810				current = false;
23811			},
23812			d(detaching) {
23813				destroy_component(tablink, detaching);
23814			}
23815		};
23816	}
23817
23818	// (228:8) {#if element === 'bill_to_contact' && !elementsHide.updateBillToContact && paymentProvider === 'zuora-billing'}
23819	function create_if_block_3$6(ctx) {
23820		let if_block_anchor;
23821		let current;
23822		let if_block = /*updateBillToContactText*/ ctx[19] && create_if_block_4$5(ctx);
23823
23824		return {
23825			c() {
23826				if (if_block) if_block.c();
23827				if_block_anchor = empty();
23828			},
23829			m(target, anchor) {
23830				if (if_block) if_block.m(target, anchor);
23831				insert(target, if_block_anchor, anchor);
23832				current = true;
23833			},
23834			p(ctx, dirty) {
23835				if (/*updateBillToContactText*/ ctx[19]) {
23836					if (if_block) {
23837						if_block.p(ctx, dirty);
23838
23839						if (dirty[0] & /*updateBillToContactText*/ 524288) {
23840							transition_in(if_block, 1);
23841						}
23842					} else {
23843						if_block = create_if_block_4$5(ctx);
23844						if_block.c();
23845						transition_in(if_block, 1);
23846						if_block.m(if_block_anchor.parentNode, if_block_anchor);
23847					}
23848				} else if (if_block) {
23849					group_outros();
23850
23851					transition_out(if_block, 1, 1, () => {
23852						if_block = null;
23853					});
23854
23855					check_outros();
23856				}
23857			},
23858			i(local) {
23859				if (current) return;
23860				transition_in(if_block);
23861				current = true;
23862			},
23863			o(local) {
23864				transition_out(if_block);
23865				current = false;
23866			},
23867			d(detaching) {
23868				if (detaching) {
23869					detach(if_block_anchor);
23870				}
23871
23872				if (if_block) if_block.d(detaching);
23873			}
23874		};
23875	}
23876
23877	// (229:10) {#if updateBillToContactText}
23878	function create_if_block_4$5(ctx) {
23879		let tablink;
23880		let current;
23881
23882		tablink = new Tablink({
23883				props: {
23884					text: /*updateBillToContactText*/ ctx[19],
23885					path: /*withSubscriptionParam*/ ctx[33](/*updateBillToContactPath*/ ctx[20], /*subscription*/ ctx[0].externalId),
23886					logDlEvent: /*func_6*/ ctx[45]
23887				}
23888			});
23889
23890		return {
23891			c() {
23892				create_component(tablink.$$.fragment);
23893			},
23894			m(target, anchor) {
23895				mount_component(tablink, target, anchor);
23896				current = true;
23897			},
23898			p(ctx, dirty) {
23899				const tablink_changes = {};
23900				if (dirty[0] & /*updateBillToContactText*/ 524288) tablink_changes.text = /*updateBillToContactText*/ ctx[19];
23901				if (dirty[0] & /*updateBillToContactPath, subscription*/ 1048577) tablink_changes.path = /*withSubscriptionParam*/ ctx[33](/*updateBillToContactPath*/ ctx[20], /*subscription*/ ctx[0].externalId);
23902				if (dirty[0] & /*logUpdateBillToContact, subscription*/ 513) tablink_changes.logDlEvent = /*func_6*/ ctx[45];
23903				tablink.$set(tablink_changes);
23904			},
23905			i(local) {
23906				if (current) return;
23907				transition_in(tablink.$$.fragment, local);
23908				current = true;
23909			},
23910			o(local) {
23911				transition_out(tablink.$$.fragment, local);
23912				current = false;
23913			},
23914			d(detaching) {
23915				destroy_component(tablink, detaching);
23916			}
23917		};
23918	}
23919
23920	// (237:8) {#if element === 'subscription_custom_fields_list' && displayedFields.length > 0}
23921	function create_if_block_2$a(ctx) {
23922		let each_1_anchor;
23923		let each_value_1 = ensure_array_like(/*displayedFields*/ ctx[32]);
23924		let each_blocks = [];
23925
23926		for (let i = 0; i < each_value_1.length; i += 1) {
23927			each_blocks[i] = create_each_block_1$2(get_each_context_1$2(ctx, each_value_1, i));
23928		}
23929
23930		return {
23931			c() {
23932				for (let i = 0; i < each_blocks.length; i += 1) {
23933					each_blocks[i].c();
23934				}
23935
23936				each_1_anchor = empty();
23937			},
23938			m(target, anchor) {
23939				for (let i = 0; i < each_blocks.length; i += 1) {
23940					if (each_blocks[i]) {
23941						each_blocks[i].m(target, anchor);
23942					}
23943				}
23944
23945				insert(target, each_1_anchor, anchor);
23946			},
23947			p(ctx, dirty) {
23948				if (dirty[1] & /*displayedFields*/ 2) {
23949					each_value_1 = ensure_array_like(/*displayedFields*/ ctx[32]);
23950					let i;
23951
23952					for (i = 0; i < each_value_1.length; i += 1) {
23953						const child_ctx = get_each_context_1$2(ctx, each_value_1, i);
23954
23955						if (each_blocks[i]) {
23956							each_blocks[i].p(child_ctx, dirty);
23957						} else {
23958							each_blocks[i] = create_each_block_1$2(child_ctx);
23959							each_blocks[i].c();
23960							each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor);
23961						}
23962					}
23963
23964					for (; i < each_blocks.length; i += 1) {
23965						each_blocks[i].d(1);
23966					}
23967
23968					each_blocks.length = each_value_1.length;
23969				}
23970			},
23971			d(detaching) {
23972				if (detaching) {
23973					detach(each_1_anchor);
23974				}
23975
23976				destroy_each(each_blocks, detaching);
23977			}
23978		};
23979	}
23980
23981	// (238:10) {#each displayedFields as field}
23982	function create_each_block_1$2(ctx) {
23983		let div1;
23984		let span;
23985		let t0_value = /*field*/ ctx[51].label + "";
23986		let t0;
23987		let t1;
23988		let div0;
23989		let t2_value = /*field*/ ctx[51].value + "";
23990		let t2;
23991		let t3;
23992
23993		return {
23994			c() {
23995				div1 = element("div");
23996				span = element("span");
23997				t0 = text(t0_value);
23998				t1 = space();
23999				div0 = element("div");
24000				t2 = text(t2_value);
24001				t3 = space();
24002				attr(span, "class", "svelte-xxnasy");
24003				attr(div0, "class", "zephr-box-item-information svelte-xxnasy");
24004				attr(div1, "class", "zephr-section svelte-xxnasy");
24005			},
24006			m(target, anchor) {
24007				insert(target, div1, anchor);
24008				append(div1, span);
24009				append(span, t0);
24010				append(div1, t1);
24011				append(div1, div0);
24012				append(div0, t2);
24013				append(div1, t3);
24014			},
24015			p(ctx, dirty) {
24016				if (dirty[1] & /*displayedFields*/ 2 && t0_value !== (t0_value = /*field*/ ctx[51].label + "")) set_data(t0, t0_value);
24017				if (dirty[1] & /*displayedFields*/ 2 && t2_value !== (t2_value = /*field*/ ctx[51].value + "")) set_data(t2, t2_value);
24018			},
24019			d(detaching) {
24020				if (detaching) {
24021					detach(div1);
24022				}
24023			}
24024		};
24025	}
24026
24027	// (136:6) {#each elementsOrder as element, _index}
24028	function create_each_block$a(ctx) {
24029		let t0;
24030		let t1;
24031		let t2;
24032		let t3;
24033		let t4;
24034		let t5;
24035		let t6;
24036		let t7;
24037		let t8;
24038		let if_block9_anchor;
24039		let current;
24040		let if_block0 = /*element*/ ctx[48] === 'subscription_information' && !/*elementsHide*/ ctx[22].subscriptionInformation && create_if_block_20(ctx);
24041		let if_block1 = /*element*/ ctx[48] === 'payment_auto_renew_toggle' && /*autoRenewToggleEnabled*/ ctx[26] && /*paymentProvider*/ ctx[25] === 'zuora-billing' && /*subscription*/ ctx[0].status === 'active' && !/*subscription*/ ctx[0].isGift && /*subscription*/ ctx[0].termType === 'TERMED' && create_if_block_17(ctx);
24042		let if_block2 = /*element*/ ctx[48] === 'billing_history' && !/*elementsHide*/ ctx[22].billingHistory && create_if_block_15(ctx);
24043		let if_block3 = /*element*/ ctx[48] === 'change_payment' && !/*elementsHide*/ ctx[22].changePayment && !/*subscription*/ ctx[0].isGift && create_if_block_13$1(ctx);
24044		let if_block4 = /*element*/ ctx[48] === 'change_subscription' && !/*elementsHide*/ ctx[22].changeSubscription && create_if_block_11$1(ctx);
24045		let if_block5 = /*element*/ ctx[48] === 'cancel_subscription' && !/*elementsHide*/ ctx[22].cancelSubscription && !/*subscription*/ ctx[0].isGift && create_if_block_9$1(ctx);
24046		let if_block6 = /*element*/ ctx[48] === 'suspend_resume_subscription' && !/*elementsHide*/ ctx[22].suspendResumeSubscription && /*paymentProvider*/ ctx[25] === 'zuora-billing' && create_if_block_7$1(ctx);
24047		let if_block7 = /*element*/ ctx[48] === 'subscription_custom_fields_list' && !/*elementsHide*/ ctx[22].subscriptionCustomFields && create_if_block_5$5(ctx);
24048		let if_block8 = /*element*/ ctx[48] === 'bill_to_contact' && !/*elementsHide*/ ctx[22].updateBillToContact && /*paymentProvider*/ ctx[25] === 'zuora-billing' && create_if_block_3$6(ctx);
24049		let if_block9 = /*element*/ ctx[48] === 'subscription_custom_fields_list' && /*displayedFields*/ ctx[32].length > 0 && create_if_block_2$a(ctx);
24050
24051		return {
24052			c() {
24053				if (if_block0) if_block0.c();
24054				t0 = space();
24055				if (if_block1) if_block1.c();
24056				t1 = space();
24057				if (if_block2) if_block2.c();
24058				t2 = space();
24059				if (if_block3) if_block3.c();
24060				t3 = space();
24061				if (if_block4) if_block4.c();
24062				t4 = space();
24063				if (if_block5) if_block5.c();
24064				t5 = space();
24065				if (if_block6) if_block6.c();
24066				t6 = space();
24067				if (if_block7) if_block7.c();
24068				t7 = space();
24069				if (if_block8) if_block8.c();
24070				t8 = space();
24071				if (if_block9) if_block9.c();
24072				if_block9_anchor = empty();
24073			},
24074			m(target, anchor) {
24075				if (if_block0) if_block0.m(target, anchor);
24076				insert(target, t0, anchor);
24077				if (if_block1) if_block1.m(target, anchor);
24078				insert(target, t1, anchor);
24079				if (if_block2) if_block2.m(target, anchor);
24080				insert(target, t2, anchor);
24081				if (if_block3) if_block3.m(target, anchor);
24082				insert(target, t3, anchor);
24083				if (if_block4) if_block4.m(target, anchor);
24084				insert(target, t4, anchor);
24085				if (if_block5) if_block5.m(target, anchor);
24086				insert(target, t5, anchor);
24087				if (if_block6) if_block6.m(target, anchor);
24088				insert(target, t6, anchor);
24089				if (if_block7) if_block7.m(target, anchor);
24090				insert(target, t7, anchor);
24091				if (if_block8) if_block8.m(target, anchor);
24092				insert(target, t8, anchor);
24093				if (if_block9) if_block9.m(target, anchor);
24094				insert(target, if_block9_anchor, anchor);
24095				current = true;
24096			},
24097			p(ctx, dirty) {
24098				if (/*element*/ ctx[48] === 'subscription_information' && !/*elementsHide*/ ctx[22].subscriptionInformation) {
24099					if (if_block0) {
24100						if_block0.p(ctx, dirty);
24101					} else {
24102						if_block0 = create_if_block_20(ctx);
24103						if_block0.c();
24104						if_block0.m(t0.parentNode, t0);
24105					}
24106				} else if (if_block0) {
24107					if_block0.d(1);
24108					if_block0 = null;
24109				}
24110
24111				if (/*element*/ ctx[48] === 'payment_auto_renew_toggle' && /*autoRenewToggleEnabled*/ ctx[26] && /*paymentProvider*/ ctx[25] === 'zuora-billing' && /*subscription*/ ctx[0].status === 'active' && !/*subscription*/ ctx[0].isGift && /*subscription*/ ctx[0].termType === 'TERMED') {
24112					if (if_block1) {
24113						if_block1.p(ctx, dirty);
24114
24115						if (dirty[0] & /*elementsOrder, autoRenewToggleEnabled, paymentProvider, subscription*/ 102760449) {
24116							transition_in(if_block1, 1);
24117						}
24118					} else {
24119						if_block1 = create_if_block_17(ctx);
24120						if_block1.c();
24121						transition_in(if_block1, 1);
24122						if_block1.m(t1.parentNode, t1);
24123					}
24124				} else if (if_block1) {
24125					group_outros();
24126
24127					transition_out(if_block1, 1, 1, () => {
24128						if_block1 = null;
24129					});
24130
24131					check_outros();
24132				}
24133
24134				if (/*element*/ ctx[48] === 'billing_history' && !/*elementsHide*/ ctx[22].billingHistory) {
24135					if (if_block2) {
24136						if_block2.p(ctx, dirty);
24137
24138						if (dirty[0] & /*elementsOrder, elementsHide*/ 6291456) {
24139							transition_in(if_block2, 1);
24140						}
24141					} else {
24142						if_block2 = create_if_block_15(ctx);
24143						if_block2.c();
24144						transition_in(if_block2, 1);
24145						if_block2.m(t2.parentNode, t2);
24146					}
24147				} else if (if_block2) {
24148					group_outros();
24149
24150					transition_out(if_block2, 1, 1, () => {
24151						if_block2 = null;
24152					});
24153
24154					check_outros();
24155				}
24156
24157				if (/*element*/ ctx[48] === 'change_payment' && !/*elementsHide*/ ctx[22].changePayment && !/*subscription*/ ctx[0].isGift) {
24158					if (if_block3) {
24159						if_block3.p(ctx, dirty);
24160
24161						if (dirty[0] & /*elementsOrder, elementsHide, subscription*/ 6291457) {
24162							transition_in(if_block3, 1);
24163						}
24164					} else {
24165						if_block3 = create_if_block_13$1(ctx);
24166						if_block3.c();
24167						transition_in(if_block3, 1);
24168						if_block3.m(t3.parentNode, t3);
24169					}
24170				} else if (if_block3) {
24171					group_outros();
24172
24173					transition_out(if_block3, 1, 1, () => {
24174						if_block3 = null;
24175					});
24176
24177					check_outros();
24178				}
24179
24180				if (/*element*/ ctx[48] === 'change_subscription' && !/*elementsHide*/ ctx[22].changeSubscription) {
24181					if (if_block4) {
24182						if_block4.p(ctx, dirty);
24183
24184						if (dirty[0] & /*elementsOrder, elementsHide*/ 6291456) {
24185							transition_in(if_block4, 1);
24186						}
24187					} else {
24188						if_block4 = create_if_block_11$1(ctx);
24189						if_block4.c();
24190						transition_in(if_block4, 1);
24191						if_block4.m(t4.parentNode, t4);
24192					}
24193				} else if (if_block4) {
24194					group_outros();
24195
24196					transition_out(if_block4, 1, 1, () => {
24197						if_block4 = null;
24198					});
24199
24200					check_outros();
24201				}
24202
24203				if (/*element*/ ctx[48] === 'cancel_subscription' && !/*elementsHide*/ ctx[22].cancelSubscription && !/*subscription*/ ctx[0].isGift) {
24204					if (if_block5) {
24205						if_block5.p(ctx, dirty);
24206
24207						if (dirty[0] & /*elementsOrder, elementsHide, subscription*/ 6291457) {
24208							transition_in(if_block5, 1);
24209						}
24210					} else {
24211						if_block5 = create_if_block_9$1(ctx);
24212						if_block5.c();
24213						transition_in(if_block5, 1);
24214						if_block5.m(t5.parentNode, t5);
24215					}
24216				} else if (if_block5) {
24217					group_outros();
24218
24219					transition_out(if_block5, 1, 1, () => {
24220						if_block5 = null;
24221					});
24222
24223					check_outros();
24224				}
24225
24226				if (/*element*/ ctx[48] === 'suspend_resume_subscription' && !/*elementsHide*/ ctx[22].suspendResumeSubscription && /*paymentProvider*/ ctx[25] === 'zuora-billing') {
24227					if (if_block6) {
24228						if_block6.p(ctx, dirty);
24229
24230						if (dirty[0] & /*elementsOrder, elementsHide, paymentProvider*/ 39845888) {
24231							transition_in(if_block6, 1);
24232						}
24233					} else {
24234						if_block6 = create_if_block_7$1(ctx);
24235						if_block6.c();
24236						transition_in(if_block6, 1);
24237						if_block6.m(t6.parentNode, t6);
24238					}
24239				} else if (if_block6) {
24240					group_outros();
24241
24242					transition_out(if_block6, 1, 1, () => {
24243						if_block6 = null;
24244					});
24245
24246					check_outros();
24247				}
24248
24249				if (/*element*/ ctx[48] === 'subscription_custom_fields_list' && !/*elementsHide*/ ctx[22].subscriptionCustomFields) {
24250					if (if_block7) {
24251						if_block7.p(ctx, dirty);
24252
24253						if (dirty[0] & /*elementsOrder, elementsHide*/ 6291456) {
24254							transition_in(if_block7, 1);
24255						}
24256					} else {
24257						if_block7 = create_if_block_5$5(ctx);
24258						if_block7.c();
24259						transition_in(if_block7, 1);
24260						if_block7.m(t7.parentNode, t7);
24261					}
24262				} else if (if_block7) {
24263					group_outros();
24264
24265					transition_out(if_block7, 1, 1, () => {
24266						if_block7 = null;
24267					});
24268
24269					check_outros();
24270				}
24271
24272				if (/*element*/ ctx[48] === 'bill_to_contact' && !/*elementsHide*/ ctx[22].updateBillToContact && /*paymentProvider*/ ctx[25] === 'zuora-billing') {
24273					if (if_block8) {
24274						if_block8.p(ctx, dirty);
24275
24276						if (dirty[0] & /*elementsOrder, elementsHide, paymentProvider*/ 39845888) {
24277							transition_in(if_block8, 1);
24278						}
24279					} else {
24280						if_block8 = create_if_block_3$6(ctx);
24281						if_block8.c();
24282						transition_in(if_block8, 1);
24283						if_block8.m(t8.parentNode, t8);
24284					}
24285				} else if (if_block8) {
24286					group_outros();
24287
24288					transition_out(if_block8, 1, 1, () => {
24289						if_block8 = null;
24290					});
24291
24292					check_outros();
24293				}
24294
24295				if (/*element*/ ctx[48] === 'subscription_custom_fields_list' && /*displayedFields*/ ctx[32].length > 0) {
24296					if (if_block9) {
24297						if_block9.p(ctx, dirty);
24298					} else {
24299						if_block9 = create_if_block_2$a(ctx);
24300						if_block9.c();
24301						if_block9.m(if_block9_anchor.parentNode, if_block9_anchor);
24302					}
24303				} else if (if_block9) {
24304					if_block9.d(1);
24305					if_block9 = null;
24306				}
24307			},
24308			i(local) {
24309				if (current) return;
24310				transition_in(if_block1);
24311				transition_in(if_block2);
24312				transition_in(if_block3);
24313				transition_in(if_block4);
24314				transition_in(if_block5);
24315				transition_in(if_block6);
24316				transition_in(if_block7);
24317				transition_in(if_block8);
24318				current = true;
24319			},
24320			o(local) {
24321				transition_out(if_block1);
24322				transition_out(if_block2);
24323				transition_out(if_block3);
24324				transition_out(if_block4);
24325				transition_out(if_block5);
24326				transition_out(if_block6);
24327				transition_out(if_block7);
24328				transition_out(if_block8);
24329				current = false;
24330			},
24331			d(detaching) {
24332				if (detaching) {
24333					detach(t0);
24334					detach(t1);
24335					detach(t2);
24336					detach(t3);
24337					detach(t4);
24338					detach(t5);
24339					detach(t6);
24340					detach(t7);
24341					detach(t8);
24342					detach(if_block9_anchor);
24343				}
24344
24345				if (if_block0) if_block0.d(detaching);
24346				if (if_block1) if_block1.d(detaching);
24347				if (if_block2) if_block2.d(detaching);
24348				if (if_block3) if_block3.d(detaching);
24349				if (if_block4) if_block4.d(detaching);
24350				if (if_block5) if_block5.d(detaching);
24351				if (if_block6) if_block6.d(detaching);
24352				if (if_block7) if_block7.d(detaching);
24353				if (if_block8) if_block8.d(detaching);
24354				if (if_block9) if_block9.d(detaching);
24355			}
24356		};
24357	}
24358
24359	// (129:6) {#if subscription.amount}
24360	function create_if_block_1$g(ctx) {
24361		let div1;
24362		let span;
24363		let t0;
24364		let t1;
24365		let div0;
24366		let t2_value = /*subscription*/ ctx[0].amount + "";
24367		let t2;
24368
24369		return {
24370			c() {
24371				div1 = element("div");
24372				span = element("span");
24373				t0 = text(/*subscriptionRateText*/ ctx[2]);
24374				t1 = space();
24375				div0 = element("div");
24376				t2 = text(t2_value);
24377				attr(span, "class", "svelte-xxnasy");
24378				attr(div0, "class", "zephr-box-item-information svelte-xxnasy");
24379				attr(div1, "class", "zephr-section svelte-xxnasy");
24380			},
24381			m(target, anchor) {
24382				insert(target, div1, anchor);
24383				append(div1, span);
24384				append(span, t0);
24385				append(div1, t1);
24386				append(div1, div0);
24387				append(div0, t2);
24388			},
24389			p(ctx, dirty) {
24390				if (dirty[0] & /*subscriptionRateText*/ 4) set_data(t0, /*subscriptionRateText*/ ctx[2]);
24391				if (dirty[0] & /*subscription*/ 1 && t2_value !== (t2_value = /*subscription*/ ctx[0].amount + "")) set_data(t2, t2_value);
24392			},
24393			d(detaching) {
24394				if (detaching) {
24395					detach(div1);
24396				}
24397			}
24398		};
24399	}
24400
24401	function create_fragment$w(ctx) {
24402		let div2;
24403		let div1;
24404		let div0;
24405		let h2;
24406		let t0_value = /*subscription*/ ctx[0].productLabel + "";
24407		let t0;
24408		let t1;
24409		let t2;
24410		let current_block_type_index;
24411		let if_block1;
24412		let current;
24413		let if_block0 = /*subscription*/ ctx[0].isGift && create_if_block_23(ctx);
24414		const if_block_creators = [create_if_block$p, create_else_block$3];
24415		const if_blocks = [];
24416
24417		function select_block_type(ctx, dirty) {
24418			if (/*isInactive*/ ctx[23]) return 0;
24419			return 1;
24420		}
24421
24422		current_block_type_index = select_block_type(ctx);
24423		if_block1 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
24424
24425		return {
24426			c() {
24427				div2 = element("div");
24428				div1 = element("div");
24429				div0 = element("div");
24430				h2 = element("h2");
24431				t0 = text(t0_value);
24432				t1 = space();
24433				if (if_block0) if_block0.c();
24434				t2 = space();
24435				if_block1.c();
24436				attr(h2, "class", "svelte-xxnasy");
24437				attr(div0, "class", "zephr-section svelte-xxnasy");
24438				attr(div1, "class", "zephr-inner-box svelte-xxnasy");
24439				attr(div2, "class", "zephr-subscription-list-box-item svelte-xxnasy");
24440			},
24441			m(target, anchor) {
24442				insert(target, div2, anchor);
24443				append(div2, div1);
24444				append(div1, div0);
24445				append(div0, h2);
24446				append(h2, t0);
24447				append(h2, t1);
24448				if (if_block0) if_block0.m(h2, null);
24449				append(div1, t2);
24450				if_blocks[current_block_type_index].m(div1, null);
24451				current = true;
24452			},
24453			p(ctx, dirty) {
24454				if ((!current || dirty[0] & /*subscription*/ 1) && t0_value !== (t0_value = /*subscription*/ ctx[0].productLabel + "")) set_data(t0, t0_value);
24455
24456				if (/*subscription*/ ctx[0].isGift) {
24457					if (if_block0) {
24458						if_block0.p(ctx, dirty);
24459					} else {
24460						if_block0 = create_if_block_23(ctx);
24461						if_block0.c();
24462						if_block0.m(h2, null);
24463					}
24464				} else if (if_block0) {
24465					if_block0.d(1);
24466					if_block0 = null;
24467				}
24468
24469				let previous_block_index = current_block_type_index;
24470				current_block_type_index = select_block_type(ctx);
24471
24472				if (current_block_type_index === previous_block_index) {
24473					if_blocks[current_block_type_index].p(ctx, dirty);
24474				} else {
24475					group_outros();
24476
24477					transition_out(if_blocks[previous_block_index], 1, 1, () => {
24478						if_blocks[previous_block_index] = null;
24479					});
24480
24481					check_outros();
24482					if_block1 = if_blocks[current_block_type_index];
24483
24484					if (!if_block1) {
24485						if_block1 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
24486						if_block1.c();
24487					} else {
24488						if_block1.p(ctx, dirty);
24489					}
24490
24491					transition_in(if_block1, 1);
24492					if_block1.m(div1, null);
24493				}
24494			},
24495			i(local) {
24496				if (current) return;
24497				transition_in(if_block1);
24498				current = true;
24499			},
24500			o(local) {
24501				transition_out(if_block1);
24502				current = false;
24503			},
24504			d(detaching) {
24505				if (detaching) {
24506					detach(div2);
24507				}
24508
24509				if (if_block0) if_block0.d();
24510				if_blocks[current_block_type_index].d();
24511			}
24512		};
24513	}
24514
24515	function instance$w($$self, $$props, $$invalidate) {
24516		let displayedFields;
24517		let { subscription } = $$props;
24518		let { nextPaymentDateText = '' } = $$props;
24519		let { subscriptionRateText } = $$props;
24520		let { billingHistoryLink = '' } = $$props;
24521
24522		let { onViewHistory = () => {
24523			
24524		} } = $$props;
24525
24526		let { onChangePayment = () => {
24527			
24528		} } = $$props;
24529
24530		let { logChangeSubscription = () => {
24531			
24532		} } = $$props;
24533
24534		let { logCancelSubscription = () => {
24535			
24536		} } = $$props;
24537
24538		let { logSuspendResumeSubscription = () => {
24539			
24540		} } = $$props;
24541
24542		let { logUpdateBillToContact = () => {
24543			
24544		} } = $$props;
24545
24546		let { changePaymentMethodText = '' } = $$props;
24547		let { changeSubscriptionText = '' } = $$props;
24548		let { cancelSubscriptionText = '' } = $$props;
24549		let { changeSubscriptionPath = '' } = $$props;
24550		let { cancelSubscriptionPath = '' } = $$props;
24551		let { suspendResumeSubscriptionText = '' } = $$props;
24552		let { suspendResumeSubscriptionPath = '' } = $$props;
24553		let { subscriptionCustomFieldsText } = $$props;
24554		let { onUpdateSubscriptionCustomFields } = $$props;
24555		let { updateBillToContactText } = $$props;
24556		let { updateBillToContactPath } = $$props;
24557		let { elementsOrder = [] } = $$props;
24558
24559		let { elementsHide = {
24560			subscriptionInformation: false,
24561			changePayment: true,
24562			changeSubscription: true,
24563			cancelSubscription: true,
24564			billingHistory: true,
24565			suspendResumeSubscription: true,
24566			subscriptionCustomFields: true,
24567			updateBillToContact: true
24568		} } = $$props;
24569
24570		let { isInactive = false } = $$props;
24571		let { displayedCustomFields = {} } = $$props;
24572		let { giftPillText = 'Gift' } = $$props;
24573		let { paymentProvider = '' } = $$props;
24574		let { autoRenewToggleEnabled = false } = $$props;
24575		let { autoRenewToggleText = 'Auto-renew subscription' } = $$props;
24576		let { autoRenewSuccessMessage = 'Preferences updated' } = $$props;
24577		let { autoRenewErrorMessage = 'Something went wrong. Please try again later' } = $$props;
24578		let { onAutoRenewToggle = async () => ({ success: false }) } = $$props;
24579		let isUpdatingAutoRenew = false;
24580		let statusMessage = '';
24581		let statusType = '';
24582		let statusTimeout = null;
24583		let autoRenewValue = subscription.autoRenew ?? false; // Local checkbox state
24584
24585		// Ensures we append the subscription id correctly whether or not the base path already has query params
24586		const withSubscriptionParam = (basePath, subscriptionId) => {
24587			if (!basePath) return '';
24588			const hasQuery = basePath.includes('?');
24589			const separator = hasQuery ? '&' : '?';
24590			return `${basePath}${separator}subscription=${encodeURIComponent(subscriptionId)}`;
24591		};
24592
24593		const handleAutoRenewChange = async event => {
24594			const newAutoRenewValue = event.detail;
24595
24596			// Clear any existing status message
24597			clearStatusMessage();
24598
24599			// Revert checkbox to previous state immediately (will update on success)
24600			$$invalidate(31, autoRenewValue = subscription.autoRenew ?? false);
24601
24602			$$invalidate(28, isUpdatingAutoRenew = true);
24603
24604			try {
24605				const result = await onAutoRenewToggle(subscription, newAutoRenewValue);
24606
24607				if (result.success) {
24608					// Update local subscription state (this will trigger checkbox update via reactive statement)
24609					$$invalidate(0, subscription.autoRenew = newAutoRenewValue, subscription);
24610
24611					// Show success message for 5 seconds
24612					$$invalidate(29, statusMessage = autoRenewSuccessMessage);
24613
24614					$$invalidate(30, statusType = 'success');
24615
24616					statusTimeout = setTimeout(
24617						() => {
24618							clearStatusMessage();
24619						},
24620						5000
24621					);
24622				} else {
24623					// Show error message persistently (checkbox already reverted)
24624					$$invalidate(29, statusMessage = autoRenewErrorMessage);
24625
24626					$$invalidate(30, statusType = 'error');
24627				}
24628			} catch(error) {
24629				console.error('Failed to update auto-renewal:', error);
24630
24631				// Show error message persistently (checkbox already reverted)
24632				$$invalidate(29, statusMessage = autoRenewErrorMessage);
24633
24634				$$invalidate(30, statusType = 'error');
24635			} finally {
24636				$$invalidate(28, isUpdatingAutoRenew = false);
24637			}
24638		};
24639
24640		const clearStatusMessage = () => {
24641			if (statusTimeout) {
24642				clearTimeout(statusTimeout);
24643				statusTimeout = null;
24644			}
24645
24646			$$invalidate(29, statusMessage = '');
24647			$$invalidate(30, statusType = '');
24648		};
24649
24650		// Clean up timeout on component destroy
24651		onDestroy(() => {
24652			if (statusTimeout) {
24653				clearTimeout(statusTimeout);
24654			}
24655		});
24656
24657		const func = () => onViewHistory(subscription);
24658		const func_1 = () => onChangePayment(subscription);
24659		const func_2 = () => logChangeSubscription(subscription);
24660		const func_3 = () => logCancelSubscription(subscription);
24661		const func_4 = () => logSuspendResumeSubscription(subscription);
24662		const func_5 = () => onUpdateSubscriptionCustomFields(subscription);
24663		const func_6 = () => logUpdateBillToContact(subscription);
24664
24665		$$self.$$set = $$props => {
24666			if ('subscription' in $$props) $$invalidate(0, subscription = $$props.subscription);
24667			if ('nextPaymentDateText' in $$props) $$invalidate(1, nextPaymentDateText = $$props.nextPaymentDateText);
24668			if ('subscriptionRateText' in $$props) $$invalidate(2, subscriptionRateText = $$props.subscriptionRateText);
24669			if ('billingHistoryLink' in $$props) $$invalidate(3, billingHistoryLink = $$props.billingHistoryLink);
24670			if ('onViewHistory' in $$props) $$invalidate(4, onViewHistory = $$props.onViewHistory);
24671			if ('onChangePayment' in $$props) $$invalidate(5, onChangePayment = $$props.onChangePayment);
24672			if ('logChangeSubscription' in $$props) $$invalidate(6, logChangeSubscription = $$props.logChangeSubscription);
24673			if ('logCancelSubscription' in $$props) $$invalidate(7, logCancelSubscription = $$props.logCancelSubscription);
24674			if ('logSuspendResumeSubscription' in $$props) $$invalidate(8, logSuspendResumeSubscription = $$props.logSuspendResumeSubscription);
24675			if ('logUpdateBillToContact' in $$props) $$invalidate(9, logUpdateBillToContact = $$props.logUpdateBillToContact);
24676			if ('changePaymentMethodText' in $$props) $$invalidate(10, changePaymentMethodText = $$props.changePaymentMethodText);
24677			if ('changeSubscriptionText' in $$props) $$invalidate(11, changeSubscriptionText = $$props.changeSubscriptionText);
24678			if ('cancelSubscriptionText' in $$props) $$invalidate(12, cancelSubscriptionText = $$props.cancelSubscriptionText);
24679			if ('changeSubscriptionPath' in $$props) $$invalidate(13, changeSubscriptionPath = $$props.changeSubscriptionPath);
24680			if ('cancelSubscriptionPath' in $$props) $$invalidate(14, cancelSubscriptionPath = $$props.cancelSubscriptionPath);
24681			if ('suspendResumeSubscriptionText' in $$props) $$invalidate(15, suspendResumeSubscriptionText = $$props.suspendResumeSubscriptionText);
24682			if ('suspendResumeSubscriptionPath' in $$props) $$invalidate(16, suspendResumeSubscriptionPath = $$props.suspendResumeSubscriptionPath);
24683			if ('subscriptionCustomFieldsText' in $$props) $$invalidate(17, subscriptionCustomFieldsText = $$props.subscriptionCustomFieldsText);
24684			if ('onUpdateSubscriptionCustomFields' in $$props) $$invali
24684date(18, onUpdateSubscriptionCustomFields = $$props.onUpdateSubscriptionCustomFields);
24685			if ('updateBillToContactText' in $$props) $$invalidate(19, updateBillToContactText = $$props.updateBillToContactText);
24686			if ('updateBillToContactPath' in $$props) $$invalidate(20, updateBillToContactPath = $$props.updateBillToContactPath);
24687			if ('elementsOrder' in $$props) $$invalidate(21, elementsOrder = $$props.elementsOrder);
24688			if ('elementsHide' in $$props) $$invalidate(22, elementsHide = $$props.elementsHide);
24689			if ('isInactive' in $$props) $$invalidate(23, isInactive = $$props.isInactive);
24690			if ('displayedCustomFields' in $$props) $$invalidate(35, displayedCustomFields = $$props.displayedCustomFields);
24691			if ('giftPillText' in $$props) $$invalidate(24, giftPillText = $$props.giftPillText);
24692			if ('paymentProvider' in $$props) $$invalidate(25, paymentProvider = $$props.paymentProvider);
24693			if ('autoRenewToggleEnabled' in $$props) $$invalidate(26, autoRenewToggleEnabled = $$props.autoRenewToggleEnabled);
24694			if ('autoRenewToggleText' in $$props) $$invali
24694date(27, autoRenewToggleText = $$props.autoRenewToggleText);
24695			if ('autoRenewSuccessMessage' in $$props) $$invalidate(36, autoRenewSuccessMessage = $$props.autoRenewSuccessMessage);
24696			if ('autoRenewErrorMessage' in $$props) $$invalidate(37, autoRenewErrorMessage = $$props.autoRenewErrorMessage);
24697			if ('onAutoRenewToggle' in $$props) $$invalidate(38, onAutoRenewToggle = $$props.onAutoRenewToggle);
24698		};
24699
24700		$$self.$$.update = () => {
24701			if ($$self.$$.dirty[0] & /*subscription*/ 1 | $$self.$$.dirty[1] & /*displayedCustomFields*/ 16) {
24702				// Compute displayed custom fields
24703				$$invalidate(32, displayedFields = Object.entries(displayedCustomFields).filter(([fieldId, fieldConfig]) => fieldConfig.enabled && subscription[fieldId]).map(([fieldId, fieldConfig]) => ({
24704					label: fieldConfig.label,
24705					value: subscription[fieldId]
24706				})));
24707			}
24708
24709			if ($$self.$$.dirty[0] & /*subscription*/ 1) {
24710				// Update local checkbox state when subscription changes
24711				$$invalidate(31, autoRenewValue = subscription.autoRenew ?? false);
24712			}
24713		};
24714
24715		return [
24716			subscription,
24717			nextPaymentDateText,
24718			subscriptionRateText,
24719			billingHistoryLink,
24720			onViewHistory,
24721			onChangePayment,
24722			logChangeSubscription,
24723			logCancelSubscription,
24724			logSuspendResumeSubscription,
24725			logUpdateBillToContact,
24726			changePaymentMethodText,
24727			changeSubscriptionText,
24728			cancelSubscriptionText,
24729			changeSubscriptionPath,
24730			cancelSubscriptionPath,
24731			suspendResumeSubscriptionText,
24732			suspendResumeSubscriptionPath,
24733			subscriptionCustomFieldsText,
24734			onUpdateSubscriptionCustomFields,
24735			updateBillToContactText,
24736			updateBillToContactPath,
24737			elementsOrder,
24738			elementsHide,
24739			isInactive,
24740			giftPillText,
24741			paymentProvider,
24742			autoRenewToggleEnabled,
24743			autoRenewToggleText,
24744			isUpdatingAutoRenew,
24745			statusMessage,
24746			statusType,
24747			autoRenewValue,
24748			displayedFields,
24749			withSubscriptionParam,
24750			handleAutoRenewChange,
24751			displayedCustomFields,
24752			autoRenewSuccessMessage,
24753			autoRenewErrorMessage,
24754			onAutoRenewToggle,
24755			func,
24756			func_1,
24757			func_2,
24758			func_3,
24759			func_4,
24760			func_5,
24761			func_6
24762		];
24763	}
24764
24765	class SubscriptionsListBoxItem extends SvelteComponent {
24766		constructor(options) {
24767			super();
24768
24769			init(
24770				this,
24771				options,
24772				instance$w,
24773				create_fragment$w,
24774				safe_not_equal,
24775				{
24776					subscription: 0,
24777					nextPaymentDateText: 1,
24778					subscriptionRateText: 2,
24779					billingHistoryLink: 3,
24780					onViewHistory: 4,
24781					onChangePayment: 5,
24782					logChangeSubscription: 6,
24783					logCancelSubscription: 7,
24784					logSuspendResumeSubscription: 8,
24785					logUpdateBillToContact: 9,
24786					changePaymentMethodText: 10,
24787					changeSubscriptionText: 11,
24788					cancelSubscriptionText: 12,
24789					changeSubscriptionPath: 13,
24790					cancelSubscriptionPath: 14,
24791					suspendResumeSubscriptionText: 15,
24792					suspendResumeSubscriptionPath: 16,
24793					subscriptionCustomFieldsText: 17,
24794					onUpdateSubscriptionCustomFields: 18,
24795					updateBillToContactText: 19,
24796					updateBillToContactPath: 20,
24797					elementsOrder: 21,
24798					elementsHide: 22,
24799					isInactive: 23,
24800					displayedCustomFields: 35,
24801					giftPillText: 24,
24802					paymentProvider: 25,
24803					autoRenewToggleEnabled: 26,
24804					autoRenewToggleText: 27,
24805					autoRenewSuccessMessage: 36,
24806					autoRenewErrorMessage: 37,
24807					onAutoRenewToggle: 38
24808				},
24809				null,
24810				[-1, -1]
24811			);
24812		}
24813	}
24814
24815	/* src/components/elements/subscriptionsList/SubscriptionsList.svelte generated by Svelte v4.2.12 */
24816
24817	function get_each_context$9(ctx, list, i) {
24818		const child_ctx = ctx.slice();
24819		child_ctx[34] = list[i];
24820		return child_ctx;
24821	}
24822
24823	function get_each_context_1$1(ctx, list, i) {
24824		const child_ctx = ctx.slice();
24825		child_ctx[34] = list[i];
24826		return child_ctx;
24827	}
24828
24829	// (44:2) {#if loading}
24830	function create_if_block_6$4(ctx) {
24831		let spinner;
24832		let current;
24833		spinner = new Spinner({});
24834
24835		return {
24836			c() {
24837				create_component(spinner.$$.fragment);
24838			},
24839			m(target, anchor) {
24840				mount_component(spinner, target, anchor);
24841				current = true;
24842			},
24843			i(local) {
24844				if (current) return;
24845				transition_in(spinner.$$.fragment, local);
24846				current = true;
24847			},
24848			o(local) {
24849				transition_out(spinner.$$.fragment, local);
24850				current = false;
24851			},
24852			d(detaching) {
24853				destroy_component(spinner, detaching);
24854			}
24855		};
24856	}
24857
24858	// (47:2) {#if !isPastSubscriptions}
24859	function create_if_block_2$9(ctx) {
24860		let t;
24861		let each_1_anchor;
24862		let current;
24863		let if_block = !/*loading*/ ctx[10] && !/*subscriptions*/ ctx[6].length && create_if_block_5$4(ctx);
24864		let each_value_1 = ensure_array_like(/*subscriptions*/ ctx[6]);
24865		let each_blocks = [];
24866
24867		for (let i = 0; i < each_value_1.length; i += 1) {
24868			each_blocks[i] = create_each_block_1$1(get_each_context_1$1(ctx, each_value_1, i));
24869		}
24870
24871		const out = i => transition_out(each_blocks[i], 1, 1, () => {
24872			each_blocks[i] = null;
24873		});
24874
24875		return {
24876			c() {
24877				if (if_block) if_block.c();
24878				t = space();
24879
24880				for (let i = 0; i < each_blocks.length; i += 1) {
24881					each_blocks[i].c();
24882				}
24883
24884				each_1_anchor = empty();
24885			},
24886			m(target, anchor) {
24887				if (if_block) if_block.m(target, anchor);
24888				insert(target, t, anchor);
24889
24890				for (let i = 0; i < each_blocks.length; i += 1) {
24891					if (each_blocks[i]) {
24892						each_blocks[i].m(target, anchor);
24893					}
24894				}
24895
24896				insert(target, each_1_anchor, anchor);
24897				current = true;
24898			},
24899			p(ctx, dirty) {
24900				if (!/*loading*/ ctx[10] && !/*subscriptions*/ ctx[6].length) {
24901					if (if_block) {
24902						if_block.p(ctx, dirty);
24903					} else {
24904						if_block = create_if_block_5$4(ctx);
24905						if_block.c();
24906						if_block.m(t.parentNode, t);
24907					}
24908				} else if (if_block) {
24909					if_block.d(1);
24910					if_block = null;
24911				}
24912
24913				if (dirty[0] & /*subscriptions, nextPaymentDateText, subscriptionRateText, billingHistoryLink, onViewHistory, onChangePayment, logChangeSubscription, logCancelSubscription, logSuspendResumeSubscription, changePaymentMethodText, changeSubscriptionText, cancelSubscriptionText, changeSubscriptionPath, cancelSubscriptionPath, suspendResumeSubscriptionText, suspendResumeSubscriptionPath, subscriptionCustomFieldsText, onUpdateSubscriptionCustomFields, updateBillToContactText, updateBillToContactPath, elementsOrder, elementsHide, giftPillText, paymentProvider, autoRenewToggleEnabled, autoRenewToggleText, billingHistoryText*/ 2147482492 | dirty[1] & /*onAutoRenewToggle, displayedCustomFields*/ 3) {
24914					each_value_1 = ensure_array_like(/*subscriptions*/ ctx[6]);
24915					let i;
24916
24917					for (i = 0; i < each_value_1.length; i += 1) {
24918						const child_ctx = get_each_context_1$1(ctx, each_value_1, i);
24919
24920						if (each_blocks[i]) {
24921							each_blocks[i].p(child_ctx, dirty);
24922							transition_in(each_blocks[i], 1);
24923						} else {
24924							each_blocks[i] = create_each_block_1$1(child_ctx);
24925							each_blocks[i].c();
24926							transition_in(each_blocks[i], 1);
24927							each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor);
24928						}
24929					}
24930
24931					group_outros();
24932
24933					for (i = each_value_1.length; i < each_blocks.length; i += 1) {
24934						out(i);
24935					}
24936
24937					check_outros();
24938				}
24939			},
24940			i(local) {
24941				if (current) return;
24942
24943				for (let i = 0; i < each_value_1.length; i += 1) {
24944					transition_in(each_blocks[i]);
24945				}
24946
24947				current = true;
24948			},
24949			o(local) {
24950				each_blocks = each_blocks.filter(Boolean);
24951
24952				for (let i = 0; i < each_blocks.length; i += 1) {
24953					transition_out(each_blocks[i]);
24954				}
24955
24956				current = false;
24957			},
24958			d(detaching) {
24959				if (detaching) {
24960					detach(t);
24961					detach(each_1_anchor);
24962				}
24963
24964				if (if_block) if_block.d(detaching);
24965				destroy_each(each_blocks, detaching);
24966			}
24967		};
24968	}
24969
24970	// (48:4) {#if !loading && !subscriptions.length}
24971	function create_if_block_5$4(ctx) {
24972		let div;
24973
24974		return {
24975			c() {
24976				div = element("div");
24977			},
24978			m(target, anchor) {
24979				insert(target, div, anchor);
24980				div.innerHTML = /*noSubscriptionsMessage*/ ctx[1];
24981			},
24982			p(ctx, dirty) {
24983				if (dirty[0] & /*noSubscriptionsMessage*/ 2) div.innerHTML = /*noSubscriptionsMessage*/ ctx[1];		},
24984			d(detaching) {
24985				if (detaching) {
24986					detach(div);
24987				}
24988			}
24989		};
24990	}
24991
24992	// (85:6) {:else}
24993	function create_else_block$2(ctx) {
24994		let subscriptionslistitem;
24995		let t;
24996		let if_block_anchor;
24997		let current;
24998
24999		subscriptionslistitem = new SubscriptionsListItem({
25000				props: {
25001					subscription: /*subscription*/ ctx[34],
25002					nextPaymentDateText: /*nextPaymentDateText*/ ctx[4],
25003					subscriptionRateText: /*subscriptionRateText*/ ctx[5],
25004					billingHistoryText: /*billingHistoryText*/ ctx[2],
25005					billingHistoryLink: /*billingHistoryLink*/ ctx[3],
25006					onViewHistory: /*onViewHistory*/ ctx[15],
25007					showBillingHistory: /*paymentProvider*/ ctx[8] !== "zuora-billing",
25008					giftPillText: /*giftPillText*/ ctx[28]
25009				}
25010			});
25011
25012		let if_block = /*paymentProvider*/ ctx[8] !== "zuora-billing" && /*subscription*/ ctx[34].status === "active" && !/*subscription*/ ctx[34].isGift && create_if_block_4$4(ctx);
25013
25014		return {
25015			c() {
25016				create_component(subscriptionslistitem.$$.fragment);
25017				t = space();
25018				if (if_block) if_block.c();
25019				if_block_anchor = empty();
25020			},
25021			m(target, anchor) {
25022				mount_component(subscriptionslistitem, target, anchor);
25023				insert(target, t, anchor);
25024				if (if_block) if_block.m(target, anchor);
25025				insert(target, if_block_anchor, anchor);
25026				current = true;
25027			},
25028			p(ctx, dirty) {
25029				const subscriptionslistitem_changes = {};
25030				if (dirty[0] & /*subscriptions*/ 64) subscriptionslistitem_changes.subscription = /*subscription*/ ctx[34];
25031				if (dirty[0] & /*nextPaymentDateText*/ 16) subscriptionslistitem_changes.nextPaymentDateText = /*nextPaymentDateText*/ ctx[4];
25032				if (dirty[0] & /*subscriptionRateText*/ 32) subscriptionslistitem_changes.subscriptionRateText = /*subscriptionRateText*/ ctx[5];
25033				if (dirty[0] & /*billingHistoryText*/ 4) subscriptionslistitem_changes.billingHistoryText = /*billingHistoryText*/ ctx[2];
25034				if (dirty[0] & /*billingHistoryLink*/ 8) subscriptionslistitem_changes.billingHistoryLink = /*billingHistoryLink*/ ctx[3];
25035				if (dirty[0] & /*onViewHistory*/ 32768) subscriptionslistitem_changes.onViewHistory = /*onViewHistory*/ ctx[15];
25036				if (dirty[0] & /*paymentProvider*/ 256) subscriptionslistitem_changes.showBillingHistory = /*paymentProvider*/ ctx[8] !== "zuora-billing";
25037				if (dirty[0] & /*giftPillText*/ 268435456) subscriptionslistitem_changes.giftPillText = /*giftPillText*/ ctx[28];
25038				subscriptionslistitem.$set(subscriptionslistitem_changes);
25039
25040				if (/*paymentProvider*/ ctx[8] !== "zuora-billing" && /*subscription*/ ctx[34].status === "active" && !/*subscription*/ ctx[34].isGift) {
25041					if (if_block) {
25042						if_block.p(ctx, dirty);
25043
25044						if (dirty[0] & /*paymentProvider, subscriptions*/ 320) {
25045							transition_in(if_block, 1);
25046						}
25047					} else {
25048						if_block = create_if_block_4$4(ctx);
25049						if_block.c();
25050						transition_in(if_block, 1);
25051						if_block.m(if_block_anchor.parentNode, if_block_anchor);
25052					}
25053				} else if (if_block) {
25054					group_outros();
25055
25056					transition_out(if_block, 1, 1, () => {
25057						if_block = null;
25058					});
25059
25060					check_outros();
25061				}
25062			},
25063			i(local) {
25064				if (current) return;
25065				transition_in(subscriptionslistitem.$$.fragment, local);
25066				transition_in(if_block);
25067				current = true;
25068			},
25069			o(local) {
25070				transition_out(subscriptionslistitem.$$.fragment, local);
25071				transition_out(if_block);
25072				current = false;
25073			},
25074			d(detaching) {
25075				if (detaching) {
25076					detach(t);
25077					detach(if_block_anchor);
25078				}
25079
25080				destroy_component(subscriptionslistitem, detaching);
25081				if (if_block) if_block.d(detaching);
25082			}
25083		};
25084	}
25085
25086	// (54:6) {#if elementsOrder}
25087	function create_if_block_3$5(ctx) {
25088		let subscriptionslistboxitem;
25089		let current;
25090
25091		subscriptionslistboxitem = new SubscriptionsListBoxItem({
25092				props: {
25093					subscription: /*subscription*/ ctx[34],
25094					nextPaymentDateText: /*nextPaymentDateText*/ ctx[4],
25095					subscriptionRateText: /*subscriptionRateText*/ ctx[5],
25096					billingHistoryLink: /*billingHistoryLink*/ ctx[3],
25097					onViewHistory: /*onViewHistory*/ ctx[15],
25098					onChangePayment: /*onChangePayment*/ ctx[11],
25099					logChangeSubscription: /*logChangeSubscription*/ ctx[12],
25100					logCancelSubscription: /*logCancelSubscription*/ ctx[13],
25101					logSuspendResumeSubscription: /*logSuspendResumeSubscription*/ ctx[14],
25102					changePaymentMethodText: /*changePaymentMethodText*/ ctx[9],
25103					changeSubscriptionText: /*changeSubscriptionText*/ ctx[16],
25104					cancelSubscriptionText: /*cancelSubscriptionText*/ ctx[17],
25105					changeSubscriptionPath: /*changeSubscriptionPath*/ ctx[18],
25106					cancelSubscriptionPath: /*cancelSubscriptionPath*/ ctx[19],
25107					suspendResumeSubscriptionText: /*suspendResumeSubscriptionText*/ ctx[20],
25108					suspendResumeSubscriptionPath: /*suspendResumeSubscriptionPath*/ ctx[21],
25109					subscriptionCustomFieldsText: /*subscriptionCustomFieldsText*/ ctx[22],
25110					onUpdateSubscriptionCustomFields: /*onUpdateSubscriptionCustomFields*/ ctx[23],
25111					updateBillToContactText: /*updateBillToContactText*/ ctx[24],
25112					updateBillToContactPath: /*updateBillToContactPath*/ ctx[25],
25113					elementsOrder: /*elementsOrder*/ ctx[26],
25114					elementsHide: /*elementsHide*/ ctx[27],
25115					giftPillText: /*giftPillText*/ ctx[28],
25116					paymentProvider: /*paymentProvider*/ ctx[8],
25117					autoRenewToggleEnabled: /*autoRenewToggleEnabled*/ ctx[29],
25118					autoRenewToggleText: /*autoRenewToggleText*/ ctx[30],
25119					onAutoRenewToggle: /*onAutoRenewToggle*/ ctx[31],
25120					displayedCustomFields: /*displayedCustomFields*/ ctx[32]
25121				}
25122			});
25123
25124		return {
25125			c() {
25126				create_component(subscriptionslistboxitem.$$.fragment);
25127			},
25128			m(target, anchor) {
25129				mount_component(subscriptionslistboxitem, target, anchor);
25130				current = true;
25131			},
25132			p(ctx, dirty) {
25133				const subscriptionslistboxitem_changes = {};
25134				if (dirty[0] & /*subscriptions*/ 64) subscriptionslistboxitem_changes.subscription = /*subscription*/ ctx[34];
25135				if (dirty[0] & /*nextPaymentDateText*/ 16) subscriptionslistboxitem_changes.nextPaymentDateText = /*nextPaymentDateText*/ ctx[4];
25136				if (dirty[0] & /*subscriptionRateText*/ 32) subscriptionslistboxitem_changes.subscriptionRateText = /*subscriptionRateText*/ ctx[5];
25137				if (dirty[0] & /*billingHistoryLink*/ 8) subscriptionslistboxitem_changes.billingHistoryLink = /*billingHistoryLink*/ ctx[3];
25138				if (dirty[0] & /*onViewHistory*/ 32768) subscriptionslistboxitem_changes.onViewHistory = /*onViewHistory*/ ctx[15];
25139				if (dirty[0] & /*onChangePayment*/ 2048) subscriptionslistboxitem_changes.onChangePayment = /*onChangePayment*/ ctx[11];
25140				if (dirty[0] & /*logChangeSubscription*/ 4096) subscriptionslistboxitem_changes.logChangeSubscription = /*logChangeSubscription*/ ctx[12];
25141				if (dirty[0] & /*logCancelSubscription*/ 8192) subscriptionslistboxitem_changes.logCancelSubscription = /*logCancelSubscription*/ ctx[13];
25142				if (dirty[0] & /*logSuspendResumeSubscription*/ 16384) subscriptionslistboxitem_changes.logSuspendResumeSubscription = /*logSuspendResumeSubscription*/ ctx[14];
25143				if (dirty[0] & /*changePaymentMethodText*/ 512) subscriptionslistboxitem_changes.changePaymentMethodText = /*changePaymentMethodText*/ ctx[9];
25144				if (dirty[0] & /*changeSubscriptionText*/ 65536) subscriptionslistboxitem_changes.changeSubscriptionText = /*changeSubscriptionText*/ ctx[16];
25145				if (dirty[0] & /*cancelSubscriptionText*/ 131072) subscriptionslistboxitem_changes.cancelSubscriptionText = /*cancelSubscriptionText*/ ctx[17];
25146				if (dirty[0] & /*changeSubscriptionPath*/ 262144) subscriptionslistboxitem_changes.changeSubscriptionPath = /*changeSubscriptionPath*/ ctx[18];
25147				if (dirty[0] & /*cancelSubscriptionPath*/ 524288) subscriptionslistboxitem_changes.cancelSubscriptionPath = /*cancelSubscriptionPath*/ ctx[19];
25148				if (dirty[0] & /*suspendResumeSubscriptionText*/ 1048576) subscriptionslistboxitem_changes.suspendResumeSubscriptionText = /*suspendResumeSubscriptionText*/ ctx[20];
25149				if (dirty[0] & /*suspendResumeSubscriptionPath*/ 2097152) subscriptionslistboxitem_changes.suspendResumeSubscriptionPath = /*suspendResumeSubscriptionPath*/ ctx[21];
25150				if (dirty[0] & /*subscriptionCustomFieldsText*/ 4194304) subscriptionslistboxitem_changes.subscriptionCustomFieldsText = /*subscriptionCustomFieldsText*/ ctx[22];
25151				if (dirty[0] & /*onUpdateSubscriptionCustomFields*/ 8388608) subscriptionslistboxitem_changes.onUpdateSubscriptionCustomFields = /*onUpdateSubscriptionCustomFields*/ ctx[23];
25152				if (dirty[0] & /*updateBillToContactText*/ 16777216) subscriptionslistboxitem_changes.updateBillToContactText = /*updateBillToContactText*/ ctx[24];
25153				if (dirty[0] & /*updateBillToContactPath*/ 33554432) subscriptionslistboxitem_changes.updateBillToContactPath = /*updateBillToContactPath*/ ctx[25];
25154				if (dirty[0] & /*elementsOrder*/ 67108864) subscriptionslistboxitem_changes.elementsOrder = /*elementsOrder*/ ctx[26];
25155				if (dirty[0] & /*elementsHide*/ 134217728) subscriptionslistboxitem_changes.elementsHide = /*elementsHide*/ ctx[27];
25156				if (dirty[0] & /*giftPillText*/ 268435456) subscriptionslistboxitem_changes.giftPillText = /*giftPillText*/ ctx[28];
25157				if (dirty[0] & /*paymentProvider*/ 256) subscriptionslistboxitem_changes.paymentProvider = /*paymentProvider*/ ctx[8];
25158				if (dirty[0] & /*autoRenewToggleEnabled*/ 536870912) subscriptionslistboxitem_changes.autoRenewToggleEnabled = /*autoRenewToggleEnabled*/ ctx[29];
25159				if (dirty[0] & /*autoRenewToggleText*/ 1073741824) subscriptionslistboxitem_changes.autoRenewToggleText = /*autoRenewToggleText*/ ctx[30];
25160				if (dirty[1] & /*onAutoRenewToggle*/ 1) subscriptionslistboxitem_changes.onAutoRenewToggle = /*onAutoRenewToggle*/ ctx[31];
25161				if (dirty[1] & /*displayedCustomFields*/ 2) subscriptionslistboxitem_changes.displayedCustomFields = /*displayedCustomFields*/ ctx[32];
25162				subscriptionslistboxitem.$set(subscriptionslistboxitem_changes);
25163			},
25164			i(local) {
25165				if (current) return;
25166				transition_in(subscriptionslistboxitem.$$.fragment, local);
25167				current = true;
25168			},
25169			o(local) {
25170				transition_out(subscriptionslistboxitem.$$.fragment, local);
25171				current = false;
25172			},
25173			d(detaching) {
25174				destroy_component(subscriptionslistboxitem, detaching);
25175			}
25176		};
25177	}
25178
25179	// (96:8) {#if paymentProvider !== "zuora-billing" && subscription.status === "active" && !subscription.isGift}
25180	function create_if_block_4$4(ctx) {
25181		let button;
25182		let current;
25183
25184		function func() {
25185			return /*func*/ ctx[33](/*subscription*/ ctx[34]);
25186		}
25187
25188		button = new Button({
25189				props: {
25190					disabled: false,
25191					text: /*changePaymentMethodText*/ ctx[9],
25192					onClick: func,
25193					noMargin: true
25194				}
25195			});
25196
25197		return {
25198			c() {
25199				create_component(button.$$.fragment);
25200			},
25201			m(target, anchor) {
25202				mount_component(button, target, anchor);
25203				current = true;
25204			},
25205			p(new_ctx, dirty) {
25206				ctx = new_ctx;
25207				const button_changes = {};
25208				if (dirty[0] & /*changePaymentMethodText*/ 512) button_changes.text = /*changePaymentMethodText*/ ctx[9];
25209				if (dirty[0] & /*onChangePayment, subscriptions*/ 2112) button_changes.onClick = func;
25210				button.$set(button_changes);
25211			},
25212			i(local) {
25213				if (current) return;
25214				transition_in(button.$$.fragment, local);
25215				current = true;
25216			},
25217			o(local) {
25218				transition_out(button.$$.fragment, local);
25219				current = false;
25220			},
25221			d(detaching) {
25222				destroy_component(button, detaching);
25223			}
25224		};
25225	}
25226
25227	// (53:4) {#each subscriptions as subscription}
25228	function create_each_block_1$1(ctx) {
25229		let current_block_type_index;
25230		let if_block;
25231		let if_block_anchor;
25232		let current;
25233		const if_block_creators = [create_if_block_3$5, create_else_block$2];
25234		const if_blocks = [];
25235
25236		function select_block_type(ctx, dirty) {
25237			if (/*elementsOrder*/ ctx[26]) return 0;
25238			return 1;
25239		}
25240
25241		current_block_type_index = select_block_type(ctx);
25242		if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
25243
25244		return {
25245			c() {
25246				if_block.c();
25247				if_block_anchor = empty();
25248			},
25249			m(target, anchor) {
25250				if_blocks[current_block_type_index].m(target, anchor);
25251				insert(target, if_block_anchor, anchor);
25252				current = true;
25253			},
25254			p(ctx, dirty) {
25255				let previous_block_index = current_block_type_index;
25256				current_block_type_index = select_block_type(ctx);
25257
25258				if (current_block_type_index === previous_block_index) {
25259					if_blocks[current_block_type_index].p(ctx, dirty);
25260				} else {
25261					group_outros();
25262
25263					transition_out(if_blocks[previous_block_index], 1, 1, () => {
25264						if_blocks[previous_block_index] = null;
25265					});
25266
25267					check_outros();
25268					if_block = if_blocks[current_block_type_index];
25269
25270					if (!if_block) {
25271						if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
25272						if_block.c();
25273					} else {
25274						if_block.p(ctx, dirty);
25275					}
25276
25277					transition_in(if_block, 1);
25278					if_block.m(if_block_anchor.parentNode, if_block_anchor);
25279				}
25280			},
25281			i(local) {
25282				if (current) return;
25283				transition_in(if_block);
25284				current = true;
25285			},
25286			o(local) {
25287				transition_out(if_block);
25288				current = false;
25289			},
25290			d(detaching) {
25291				if (detaching) {
25292					detach(if_block_anchor);
25293				}
25294
25295				if_blocks[current_block_type_index].d(detaching);
25296			}
25297		};
25298	}
25299
25300	// (107:2) {#if isPastSubscriptions}
25301	function create_if_block$o(ctx) {
25302		let t;
25303		let each_1_anchor;
25304		let current;
25305		let if_block = !/*loading*/ ctx[10] && !/*inactiveSubscriptions*/ ctx[7].length && create_if_block_1$f(ctx);
25306		let each_value = ensure_array_like(/*inactiveSubscriptions*/ ctx[7]);
25307		let each_blocks = [];
25308
25309		for (let i = 0; i < each_value.length; i += 1) {
25310			each_blocks[i] = create_each_block$9(get_each_context$9(ctx, each_value, i));
25311		}
25312
25313		const out = i => transition_out(each_blocks[i], 1, 1, () => {
25314			each_blocks[i] = null;
25315		});
25316
25317		return {
25318			c() {
25319				if (if_block) if_block.c();
25320				t = space();
25321
25322				for (let i = 0; i < each_blocks.length; i += 1) {
25323					each_blocks[i].c();
25324				}
25325
25326				each_1_anchor = empty();
25327			},
25328			m(target, anchor) {
25329				if (if_block) if_block.m(target, anchor);
25330				insert(target, t, anchor);
25331
25332				for (let i = 0; i < each_blocks.length; i += 1) {
25333					if (each_blocks[i]) {
25334						each_blocks[i].m(target, anchor);
25335					}
25336				}
25337
25338				insert(target, each_1_anchor, anchor);
25339				current = true;
25340			},
25341			p(ctx, dirty) {
25342				if (!/*loading*/ ctx[10] && !/*inactiveSubscriptions*/ ctx[7].length) {
25343					if (if_block) {
25344						if_block.p(ctx, dirty);
25345					} else {
25346						if_block = create_if_block_1$f(ctx);
25347						if_block.c();
25348						if_block.m(t.parentNode, t);
25349					}
25350				} else if (if_block) {
25351					if_block.d(1);
25352					if_block = null;
25353				}
25354
25355				if (dirty[0] & /*inactiveSubscriptions, subscriptionRateText, giftPillText*/ 268435616 | dirty[1] & /*displayedCustomFields*/ 2) {
25356					each_value = ensure_array_like(/*inactiveSubscriptions*/ ctx[7]);
25357					let i;
25358
25359					for (i = 0; i < each_value.length; i += 1) {
25360						const child_ctx = get_each_context$9(ctx, each_value, i);
25361
25362						if (each_blocks[i]) {
25363							each_blocks[i].p(child_ctx, dirty);
25364							transition_in(each_blocks[i], 1);
25365						} else {
25366							each_blocks[i] = create_each_block$9(child_ctx);
25367							each_blocks[i].c();
25368							transition_in(each_blocks[i], 1);
25369							each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor);
25370						}
25371					}
25372
25373					group_outros();
25374
25375					for (i = each_value.length; i < each_blocks.length; i += 1) {
25376						out(i);
25377					}
25378
25379					check_outros();
25380				}
25381			},
25382			i(local) {
25383				if (current) return;
25384
25385				for (let i = 0; i < each_value.length; i += 1) {
25386					transition_in(each_blocks[i]);
25387				}
25388
25389				current = true;
25390			},
25391			o(local) {
25392				each_blocks = each_blocks.filter(Boolean);
25393
25394				for (let i = 0; i < each_blocks.length; i += 1) {
25395					transition_out(each_blocks[i]);
25396				}
25397
25398				current = false;
25399			},
25400			d(detaching) {
25401				if (detaching) {
25402					detach(t);
25403					detach(each_1_anchor);
25404				}
25405
25406				if (if_block) if_block.d(detaching);
25407				destroy_each(each_blocks, detaching);
25408			}
25409		};
25410	}
25411
25412	// (108:4) {#if !loading && !inactiveSubscriptions.length}
25413	function create_if_block_1$f(ctx) {
25414		let div;
25415
25416		return {
25417			c() {
25418				div = element("div");
25419			},
25420			m(target, anchor) {
25421				insert(target, div, anchor);
25422				div.innerHTML = /*noSubscriptionsMessage*/ ctx[1];
25423			},
25424			p(ctx, dirty) {
25425				if (dirty[0] & /*noSubscriptionsMessage*/ 2) div.innerHTML = /*noSubscriptionsMessage*/ ctx[1];		},
25426			d(detaching) {
25427				if (detaching) {
25428					detach(div);
25429				}
25430			}
25431		};
25432	}
25433
25434	// (113:4) {#each inactiveSubscriptions as subscription}
25435	function create_each_block$9(ctx) {
25436		let subscriptionslistboxitem;
25437		let current;
25438
25439		subscriptionslistboxitem = new SubscriptionsListBoxItem({
25440				props: {
25441					subscription: /*subscription*/ ctx[34],
25442					isInactive: true,
25443					subscriptionRateText: /*subscriptionRateText*/ ctx[5],
25444					giftPillText: /*giftPillText*/ ctx[28],
25445					displayedCustomFields: /*displayedCustomFields*/ ctx[32],
25446					subscriptionCustomFieldsText: "",
25447					onUpdateSubscriptionCustomFields: func_1$1,
25448					updateBillToContactText: "",
25449					updateBillToContactPath: ""
25450				}
25451			});
25452
25453		return {
25454			c() {
25455				create_component(subscriptionslistboxitem.$$.fragment);
25456			},
25457			m(target, anchor) {
25458				mount_component(subscriptionslistboxitem, target, anchor);
25459				current = true;
25460			},
25461			p(ctx, dirty) {
25462				const subscriptionslistboxitem_changes = {};
25463				if (dirty[0] & /*inactiveSubscriptions*/ 128) subscriptionslistboxitem_changes.subscription = /*subscription*/ ctx[34];
25464				if (dirty[0] & /*subscriptionRateText*/ 32) subscriptionslistboxitem_changes.subscriptionRateText = /*subscriptionRateText*/ ctx[5];
25465				if (dirty[0] & /*giftPillText*/ 268435456) subscriptionslistboxitem_changes.giftPillText = /*giftPillText*/ ctx[28];
25466				if (dirty[1] & /*displayedCustomFields*/ 2) subscriptionslistboxitem_changes.displayedCustomFields = /*displayedCustomFields*/ ctx[32];
25467				subscriptionslistboxitem.$set(subscriptionslistboxitem_changes);
25468			},
25469			i(local) {
25470				if (current) return;
25471				transition_in(subscriptionslistboxitem.$$.fragment, local);
25472				current = true;
25473			},
25474			o(local) {
25475				transition_out(subscriptionslistboxitem.$$.fragment, local);
25476				current = false;
25477			},
25478			d(detaching) {
25479				destroy_component(subscriptionslistboxitem, detaching);
25480			}
25481		};
25482	}
25483
25484	function create_fragment$v(ctx) {
25485		let div;
25486		let t0;
25487		let t1;
25488		let current;
25489		let if_block0 = /*loading*/ ctx[10] && create_if_block_6$4();
25490		let if_block1 = !/*isPastSubscriptions*/ ctx[0] && create_if_block_2$9(ctx);
25491		let if_block2 = /*isPastSubscriptions*/ ctx[0] && create_if_block$o(ctx);
25492
25493		return {
25494			c() {
25495				div = element("div");
25496				if (if_block0) if_block0.c();
25497				t0 = space();
25498				if (if_block1) if_block1.c();
25499				t1 = space();
25500				if (if_block2) if_block2.c();
25501				attr(div, "class", "subscriptions-list-container svelte-ldb1rq");
25502			},
25503			m(target, anchor) {
25504				insert(target, div, anchor);
25505				if (if_block0) if_block0.m(div, null);
25506				append(div, t0);
25507				if (if_block1) if_block1.m(div, null);
25508				append(div, t1);
25509				if (if_block2) if_block2.m(div, null);
25510				current = true;
25511			},
25512			p(ctx, dirty) {
25513				if (/*loading*/ ctx[10]) {
25514					if (if_block0) {
25515						if (dirty[0] & /*loading*/ 1024) {
25516							transition_in(if_block0, 1);
25517						}
25518					} else {
25519						if_block0 = create_if_block_6$4();
25520						if_block0.c();
25521						transition_in(if_block0, 1);
25522						if_block0.m(div, t0);
25523					}
25524				} else if (if_block0) {
25525					group_outros();
25526
25527					transition_out(if_block0, 1, 1, () => {
25528						if_block0 = null;
25529					});
25530
25531					check_outros();
25532				}
25533
25534				if (!/*isPastSubscriptions*/ ctx[0]) {
25535					if (if_block1) {
25536						if_block1.p(ctx, dirty);
25537
25538						if (dirty[0] & /*isPastSubscriptions*/ 1) {
25539							transition_in(if_block1, 1);
25540						}
25541					} else {
25542						if_block1 = create_if_block_2$9(ctx);
25543						if_block1.c();
25544						transition_in(if_block1, 1);
25545						if_block1.m(div, t1);
25546					}
25547				} else if (if_block1) {
25548					group_outros();
25549
25550					transition_out(if_block1, 1, 1, () => {
25551						if_block1 = null;
25552					});
25553
25554					check_outros();
25555				}
25556
25557				if (/*isPastSubscriptions*/ ctx[0]) {
25558					if (if_block2) {
25559						if_block2.p(ctx, dirty);
25560
25561						if (dirty[0] & /*isPastSubscriptions*/ 1) {
25562							transition_in(if_block2, 1);
25563						}
25564					} else {
25565						if_block2 = create_if_block$o(ctx);
25566						if_block2.c();
25567						transition_in(if_block2, 1);
25568						if_block2.m(div, null);
25569					}
25570				} else if (if_block2) {
25571					group_outros();
25572
25573					transition_out(if_block2, 1, 1, () => {
25574						if_block2 = null;
25575					});
25576
25577					check_outros();
25578				}
25579			},
25580			i(local) {
25581				if (current) return;
25582				transition_in(if_block0);
25583				transition_in(if_block1);
25584				transition_in(if_block2);
25585				current = true;
25586			},
25587			o(local) {
25588				transition_out(if_block0);
25589				transition_out(if_block1);
25590				transition_out(if_block2);
25591				current = false;
25592			},
25593			d(detaching) {
25594				if (detaching) {
25595					detach(div);
25596				}
25597
25598				if (if_block0) if_block0.d();
25599				if (if_block1) if_block1.d();
25600				if (if_block2) if_block2.d();
25601			}
25602		};
25603	}
25604
25605	const func_1$1 = () => {
25606		
25607	};
25608
25609	function instance$v($$self, $$props, $$invalidate) {
25610		let { isPastSubscriptions } = $$props;
25611		let { noSubscriptionsMessage } = $$props;
25612		let { billingHistoryText } = $$props;
25613		let { billingHistoryLink } = $$props;
25614		let { nextPaymentDateText } = $$props;
25615		let { subscriptionRateText } = $$props;
25616		let { subscriptions } = $$props;
25617		let { inactiveSubscriptions } = $$props;
25618		let { paymentProvider } = $$props;
25619		let { changePaymentMethodText } = $$props;
25620		let { loading } = $$props;
25621		let { onChangePayment } = $$props;
25622		let { logChangeSubscription } = $$props;
25623		let { logCancelSubscription } = $$props;
25624		let { logSuspendResumeSubscription } = $$props;
25625		let { onViewHistory } = $$props;
25626		let { changeSubscriptionText } = $$props;
25627		let { cancelSubscriptionText } = $$props;
25628		let { changeSubscriptionPath } = $$props;
25629		let { cancelSubscriptionPath } = $$props;
25630		let { suspendResumeSubscriptionText } = $$props;
25631		let { suspendResumeSubscriptionPath } = $$props;
25632		let { subscriptionCustomFieldsText } = $$props;
25633		let { onUpdateSubscriptionCustomFields } = $$props;
25634		let { updateBillToContactText } = $$props;
25635		let { updateBillToContactPath } = $$props;
25636		let { elementsOrder } = $$props;
25637		let { elementsHide } = $$props;
25638		let { giftPillText = 'Gift' } = $$props;
25639		let { autoRenewToggleEnabled = false } = $$props;
25640		let { autoRenewToggleText = 'Auto-renew subscription' } = $$props;
25641		let { onAutoRenewToggle = async () => ({ success: false }) } = $$props;
25642		let { displayedCustomFields = {} } = $$props;
25643
25644		onMount(() => {
25645			
25646		});
25647
25648		const func = subscription => onChangePayment(subscription);
25649
25650		$$self.$$set = $$props => {
25651			if ('isPastSubscriptions' in $$props) $$invalidate(0, isPastSubscriptions = $$props.isPastSubscriptions);
25652			if ('noSubscriptionsMessage' in $$props) $$invalidate(1, noSubscriptionsMessage = $$props.noSubscriptionsMessage);
25653			if ('billingHistoryText' in $$props) $$invalidate(2, billingHistoryText = $$props.billingHistoryText);
25654			if ('billingHistoryLink' in $$props) $$invalidate(3, billingHistoryLink = $$props.billingHistoryLink);
25655			if ('nextPaymentDateText' in $$props) $$invalidate(4, nextPaymentDateText = $$props.nextPaymentDateText);
25656			if ('subscriptionRateText' in $$props) $$invalidate(5, subscriptionRateText = $$props.subscriptionRateText);
25657			if ('subscriptions' in $$props) $$invalidate(6, subscriptions = $$props.subscriptions);
25658			if ('inactiveSubscriptions' in $$props) $$invalidate(7, inactiveSubscriptions = $$props.inactiveSubscriptions);
25659			if ('paymentProvider' in $$props) $$invalidate(8, paymentProvider = $$props.paymentProvider);
25660			if ('changePaymentMethodText' in $$props) $$invalidate(9, changePaymentMethodText = $$props.changePaymentMethodText);
25661			if ('loading' in $$props) $$invalidate(10, loading = $$props.loading);
25662			if ('onChangePayment' in $$props) $$invalidate(11, onChangePayment = $$props.onChangePayment);
25663			if ('logChangeSubscription' in $$props) $$invalidate(12, logChangeSubscription = $$props.logChangeSubscription);
25664			if ('logCancelSubscription' in $$props) $$invalidate(13, logCancelSubscription = $$props.logCancelSubscription);
25665			if ('logSuspendResumeSubscription' in $$props) $$invalidate(14, logSuspendResumeSubscription = $$props.logSuspendResumeSubscription);
25666			if ('onViewHistory' in $$props) $$invalidate(15, onViewHistory = $$props.onViewHistory);
25667			if ('changeSubscriptionText' in $$props) $$invalidate(16, changeSubscriptionText = $$props.changeSubscriptionText);
25668			if ('cancelSubscriptionText' in $$props) $$invalidate(17, cancelSubscriptionText = $$props.cancelSubscriptionText);
25669			if ('changeSubscriptionPath' in $$props) $$invalidate(18, changeSubscriptionPath = $$props.changeSubscriptionPath);
25670			if ('cancelSubscriptionPath' in $$props) $$invali
25670date(19, cancelSubscriptionPath = $$props.cancelSubscriptionPath);
25671			if ('suspendResumeSubscriptionText' in $$props) $$invalidate(20, suspendResumeSubscriptionText = $$props.suspendResumeSubscriptionText);
25672			if ('suspendResumeSubscriptionPath' in $$props) $$invalidate(21, suspendResumeSubscriptionPath = $$props.suspendResumeSubscriptionPath);
25673			if ('subscriptionCustomFieldsText' in $$props) $$invalidate(22, subscriptionCustomFieldsText = $$props.subscriptionCustomFieldsText);
25674			if ('onUpdateSubscriptionCustomFields' in $$props) $$invalidate(23, onUpdateSubscriptionCustomFields = $$props.onUpdateSubscriptionCustomFields);
25675			if ('updateBillToContactText' in $$props) $$invalidate(24, updateBillToContactText = $$props.updateBillToContactText);
25676			if ('updateBillToContactPath' in $$props) $$invalidate(25, updateBillToContactPath = $$props.updateBillToContactPath);
25677			if ('elementsOrder' in $$props) $$invalidate(26, elementsOrder = $$props.elementsOrder);
25678			if ('elementsHide' in $$props) $$invalidate(27, elementsHide = $$props.elementsHide);
25679			if ('giftPillText' in $$props) $$invalidate(28, giftPillText = $$props.giftPillText);
25680			if ('autoRenewToggleEnabled' in $$props) $$invalidate(29, autoRenewToggleEnabled = $$props.autoRenewToggleEnabled);
25681			if ('autoRenewToggleText' in $$props) $$invalidate(30, autoRenewToggleText = $$props.autoRenewToggleText);
25682			if ('onAutoRenewToggle' in $$props) $$invalidate(31, onAutoRenewToggle = $$props.onAutoRenewToggle);
25683			if ('displayedCustomFields' in $$props) $$invalidate(32, displayedCustomFields = $$props.displayedCustomFields);
25684		};
25685
25686		return [
25687			isPastSubscriptions,
25688			noSubscriptionsMessage,
25689			billingHistoryText,
25690			billingHistoryLink,
25691			nextPaymentDateText,
25692			subscriptionRateText,
25693			subscriptions,
25694			inactiveSubscriptions,
25695			paymentProvider,
25696			changePaymentMethodText,
25697			loading,
25698			onChangePayment,
25699			logChangeSubscription,
25700			logCancelSubscription,
25701			logSuspendResumeSubscription,
25702			onViewHistory,
25703			changeSubscriptionText,
25704			cancelSubscriptionText,
25705			changeSubscriptionPath,
25706			cancelSubscriptionPath,
25707			suspendResumeSubscriptionText,
25708			suspendResumeSubscriptionPath,
25709			subscriptionCustomFieldsText,
25710			onUpdateSubscriptionCustomFields,
25711			updateBillToContactText,
25712			updateBillToContactPath,
25713			elementsOrder,
25714			elementsHide,
25715			giftPillText,
25716			autoRenewToggleEnabled,
25717			autoRenewToggleText,
25718			onAutoRenewToggle,
25719			displayedCustomFields,
25720			func
25721		];
25722	}
25723
25724	class SubscriptionsList extends SvelteComponent {
25725		constructor(options) {
25726			super();
25727
25728			init(
25729				this,
25730				options,
25731				instance$v,
25732				create_fragment$v,
25733				safe_not_equal,
25734				{
25735					isPastSubscriptions: 0,
25736					noSubscriptionsMessage: 1,
25737					billingHistoryText: 2,
25738					billingHistoryLink: 3,
25739					nextPaymentDateText: 4,
25740					subscriptionRateText: 5,
25741					subscriptions: 6,
25742					inactiveSubscriptions: 7,
25743					paymentProvider: 8,
25744					changePaymentMethodText: 9,
25745					loading: 10,
25746					onChangePayment: 11,
25747					logChangeSubscription: 12,
25748					logCancelSubscription: 13,
25749					logSuspendResumeSubscription: 14,
25750					onViewHistory: 15,
25751					changeSubscriptionText: 16,
25752					cancelSubscriptionText: 17,
25753					changeSubscriptionPath: 18,
25754					cancelSubscriptionPath: 19,
25755					suspendResumeSubscriptionText: 20,
25756					suspendResumeSubscriptionPath: 21,
25757					subscriptionCustomFieldsText: 22,
25758					onUpdateSubscriptionCustomFields: 23,
25759					updateBillToContactText: 24,
25760					updateBillToContactPath: 25,
25761					elementsOrder: 26,
25762					elementsHide: 27,
25763					giftPillText: 28,
25764					autoRenewToggleEnabled: 29,
25765					autoRenewToggleText: 30,
25766					onAutoRenewToggle: 31,
25767					displayedCustomFields: 32
25768				},
25769				null,
25770				[-1, -1]
25771			);
25772		}
25773	}
25774
25775	const updateZuoraSubscriptionAutoRenew = async (subscription, autoRenew, formActions) => {
25776	    try {
25777	        const order = {
25778	            subscription: {
25779	                orderActions: [{
25780	                        type: "TermsAndConditions",
25781	                        termsAndConditions: {
25782	                            autoRenew
25783	                        }
25784	                    }]
25785	            }
25786	        };
25787	        const requestBody = {
25788	            vendor_fields: {
25789	                order: JSON.stringify(order)
25790	            }
25791	        };
25792	        const response = await request(`zephr/subscriptions/${subscription.externalId}/manage`, {
25793	            method: 'POST',
25794	            bodyObject: requestBody
25795	        }, formActions);
25796	        if (!response?.ok) {
25797	            const errorText = await response?.text() || 'Unknown error occurred';
25798	            console.error('Error updating subscription auto-renewal:', response);
25799	            return {
25800	                success: false,
25801	                error: `HTTP ${response?.status}: ${errorText}`
25802	            };
25803	        }
25804	        const result = await response.json();
25805	        if (result.error) {
25806	            console.error('API error updating subscription auto-renewal:', result.error);
25807	            return {
25808	                success: false,
25809	                error: result.error
25810	            };
25811	        }
25812	        return {
25813	            success: true,
25814	            message: 'Settings updated'
25815	        };
25816	    }
25817	    catch (error) {
25818	        console.error('Exception updating subscription auto-renewal:', error);
25819	        return {
25820	            success: false,
25821	            error: error instanceof Error ? error.message : 'An unexpected error occurred'
25822	        };
25823	    }
25824	};
25825
25826	// Temporarily disable this feature
25827	const shouldShowSubscriptionCustomFields = false;
25828	const subscriptionCustomFieldsUpdateFactory = {
25829	    matches: (sectionElement) => sectionElement.type === elementTypes.SUBSCRIPTION_CUSTOM_FIELDS_UPDATE,
25830	    create: (form, formState, formActions, elementConfig) => {
25831	        // Return null component to prevent rendering
25832	        {
25833	            return {
25834	                component: null,
25835	                props: {}
25836	            };
25837	        }
25838	    }
25839	};
25840
25841	const subscriptionsListFactory = {
25842	    matches: (sectionElement) => sectionElement.type === elementTypes.SUBSCRIPTIONS_LIST,
25843	    create: (form, formState, formActions, elementConfig) => {
25844	        // Get existing regular subscriptions and gift subscriptions
25845	        const existingSubscriptions = formState.existingSubscriptions || [];
25846	        const giftSubscriptions = formState.giftSubscriptions || [];
25847	        // Default gift pill settings if not provided in config
25848	        const giftPillText = elementConfig.giftPillText || 'Gift';
25849	        // Convert received gift subscriptions to ExistingSubscription format for display
25850	        // Only include gift subscriptions where the current user is the recipient (is_re
25850cipient === true)
25851	        const receivedGiftSubscriptions = giftSubscriptions
25852	            .filter(gift => gift.is_recipient === true)
25853	            .map(gift => {
25854	            return {
25855	                externalId: gift.subscription_number || gift.gift_code || '',
25856	                productId: gift.subscription_type || 'gift',
25857	                productLabel: gift.subscription_type || 'Subscription',
25858	                planId: gift.subscription_number || gift.gift_code || '',
25859	                planLabel: `Valid until ${gift.subscription_end_date || 'N/A'}`,
25860	                status: gift.status === 'REDEEMED' ? 'active' : 'pending',
25861	                ...gift,
25862	                // Add a flag to identify this as a gift subscription
25863	                isGift: true
25864	            };
25865	        });
25866	        // Combine regular subscriptions with received gift subscriptions
25867	        const allActiveSubscriptions = [
25868	            ...existingSubscriptions.filter(s => s.status === 'active'),
25869	            ...receivedGiftSubscriptions.filter(s => s.status === 'active')
25870	        ];
25871	        const allInactiveSubscriptions = [
25872	            ...existingSubscriptions.filter(s => s.status !== 'active'),
25873	            ...receivedGiftSubscriptions.filter(s => s.status !== 'active')
25874	        ];
25875	        // Auto-renew toggle handler for Zuora billing subscriptions
25876	        const onAutoRenewToggle = async (subscription, autoRenew) => {
25877	            try {
25878	                let result;
25879	                // Mock API call in preview mode
25880	                if (form.environment?.previewMode) {
25881	                    // Simulate API delay
25882	                    await new Promise(resolve => setTimeout(resolve, 1000));
25883	                    // Mock successful response (you could add logic to simulate failures occasionally)
25884	                    result = {
25885	                        success: true,
25886	                        message: 'Preferences updated'
25887	                    };
25888	                }
25889	                else {
25890	                    result = await updateZuoraSubscriptionAutoRenew(subscription, autoRenew, formActions);
25891	                }
25892	                if (result.success) {
25893	                    // Update the subscription in the local state
25894	                    const updatedSubscriptions = existingSubscriptions.map(sub => sub.externalId === subscription.externalId
25895	                        ? { ...sub, autoRenew }
25896	                        : sub);
25897	                    formActions.updateFormState({
25898	                        existingSubscriptions: updatedSubscriptions
25899	                    });
25900	                    // Log the change
25901	                    logDataLayerEvent(form, 'zephr_form_button_press', {
25902	                        sectionId: formState.currentSection.type,
25903	                        buttonType: 'AUTO_RENEW_TOGGLE'
25904	                    });
25905	                    return { success: true, message: result.message };
25906	                }
25907	                else {
25908	                    return { success: false, error: result.error };
25909	                }
25910	            }
25911	            catch (error) {
25912	                console.error('Error updating auto-renewal:', error);
25913	                return {
25914	                    success: false,
25915	                    error: error instanceof Error ? error.message : 'An unexpected error occurred'
25916	                };
25917	            }
25918	        };
25919	        return {
25920	            component: SubscriptionsList,
25921	            props: {
25922	                isPastSubscriptions: elementConfig.isPastSubscriptions,
25923	                subscriptionTitle: elementConfig.subscriptionTitle,
25924	                billingHistoryText: elementConfig.billingHistoryText,
25925	                billingHistoryLink: elementConfig.billingHistoryLink,
25926	                noSubscriptionsMessage: elementConfig.noSubscriptionsMessage,
25927	                nextPaymentDateText: elementConfig.nextPaymentDateText,
25928	                subscriptionRateText: elementConfig.subscriptionRateText,
25929	                loading: (!formState.existingSubscriptions || formState.loadingSubscriptions) ||
25930	                    (!formState.giftSubscriptions && formState.loadingGiftSubscriptions),
25931	                subscriptions: allActiveSubscriptions,
25932	                inactiveSubscriptions: allInactiveSubscriptions,
25933	                paymentProvider: form.organisationConfiguration.paymentProvider,
25934	                changePaymentMethodText: elementConfig.changePaymentMethodText,
25935	                onChangePayment: (subscription) => {
25936	                    formActions.updateFormState({
25937	                        selectedSubscription: subscription
25938	                    });
25939	                    logDataLayerEvent(form, 'zephr_form_button_press', {
25940	                        sectionId: formState.currentSection.type,
25941	                        buttonType: 'SUBMIT'
25942	                    });
25943	                    formActions.completeSection();
25944	                },
25945	                onViewHistory: (subscription) => {
25946	                    formActions.updateFormState({
25947	                        selectedSubscription: subscription
25948	                    });
25949	                    formActions.jumpToPartStart('billing-history');
25950	                    logDataLayerEvent(form, 'zephr_form_billing_history_view', null);
25951	                },
25952	                logChangeSubscription: (subscription) => {
25953	                    logDataLayerEvent(form, 'zephr_form_subscription_change_clicked', {
25954	                        productId: subscription.productId,
25955	                        planId: subscription.externalId
25956	                    });
25957	                },
25958	                logCancelSubscription: (subscription) => {
25959	                    logDataLayerEvent(form, 'zephr_form_cancel_subscription_clicked', {
25960	                        productId: subscription.productId,
25961	                        planId: subscription.externalId
25962	                    });
25963	                },
25964	                logSuspendResumeSubscription: (subscription) => {
25965	                    logDataLayerEvent(form, 'zephr_form_suspend_resume_subscription_clicked', {
25966	                        productId: subscription.productId,
25967	                        planId: subscription.externalId,
25968	                        status: subscription.status
25969	                    });
25970	                },
25971	                changeSubscriptionText: elementConfig.changeSubscriptionText,
25972	                cancelSubscriptionText: elementConfig.cancelSubscriptionText,
25973	                changeSubscriptionPath: elementConfig.changeSubscriptionPath,
25974	                cancelSubscriptionPath: elementConfig.cancelSubscriptionPath,
25975	                suspendResumeSubscriptionText: elementConfig.suspendResumeSubscriptionText,
25976	                suspendResumeSubscriptionPath: elementConfig.suspendResumeSubscriptionPath,
25977	                updateBillToContactText: elementConfig.updateBillToContactText,
25978	                updateBillToContactPath: elementConfig.updateBillToContactPath,
25979	                elementsOrder: elementConfig.elementsOrder,
25980	                subscriptionCustomFieldsText: elementConfig.subscriptionCustomFieldsText || 'Update subscription details',
25981	                onUpdateSubscriptionCustomFields: (subscription) => {
25982	                    formActions.updateFormState({
25983	                        selectedSubscription: subscription
25984	                    });
25985	                    formActions.jumpToPartStart('subscription-custom-fields');
25986	                    logDataLayerEvent(form, 'zephr_form_subscription_custom_fields_clicked', {
25987	                        productId: subscription.productId,
25988	                        planId: subscription.externalId
25989	                    });
25990	                },
25991	                elementsHide: {
25992	                    subscriptionInformation: elementConfig?.hideSubscriptionInformation,
25993	                    changePayment: elementConfig?.hideChangePayment,
25994	                    changeSubscription: elementConfig?.hideChangeSubscription,
25995	                    cancelSubscription: elementConfig?.hideCancelSubscription,
25996	                    billingHistory: elementConfig?.hideBillingHistory,
25997	                    suspendResumeSubscription: elementConfig?.hideSuspendResumeSubscription,
25998	                    // elementConfig?.hideSubscriptionCustomFields,
25999	                    subscriptionCustomFields: !shouldShowSubscriptionCustomFields,
26000	                    updateBillToContact: elementConfig?.hideUpdateBillToContact
26001	                },
26002	                giftPillText,
26003	                autoRenewToggleEnabled: elementConfig.autoRenewToggleEnabled || false,
26004	                autoRenewToggleText: elementConfig.autoRenewToggleText || 'Auto-renew subscription',
26005	                onAutoRenewToggle: onAutoRenewToggle,
26006	                displayedCustomFields: elementConfig.displayedCustomFields || {}
26007	            }
26008	        };
26009	    }
26010	};
26011
26012	/* src/components/elements/pastSubscriptionsLink/PastSubscriptionsLink.svelte generated by Svelte v4.2.12 */
26013
26014	function create_if_block$n(ctx) {
26015		let div;
26016		let link;
26017		let current;
26018		link = new Link({ props: { text: /*linkText*/ ctx[2] } });
26019
26020		link.$on("linkClick", function () {
26021			if (is_function(/*onClick*/ ctx[3])) /*onClick*/ ctx[3].apply(this, arguments);
26022		});
26023
26024		return {
26025			c() {
26026				div = element("div");
26027				create_component(link.$$.fragment);
26028				attr(div, "class", "past-subscriptions-link-wrapper svelte-zpa2t");
26029			},
26030			m(target, anchor) {
26031				insert(target, div, anchor);
26032				mount_component(link, div, null);
26033				current = true;
26034			},
26035			p(new_ctx, dirty) {
26036				ctx = new_ctx;
26037				const link_changes = {};
26038				if (dirty & /*linkText*/ 4) link_changes.text = /*linkText*/ ctx[2];
26039				link.$set(link_changes);
26040			},
26041			i(local) {
26042				if (current) return;
26043				transition_in(link.$$.fragment, local);
26044				current = true;
26045			},
26046			o(local) {
26047				transition_out(link.$$.fragment, local);
26048				current = false;
26049			},
26050			d(detaching) {
26051				if (detaching) {
26052					detach(div);
26053				}
26054
26055				destroy_component(link);
26056			}
26057		};
26058	}
26059
26060	function create_fragment$u(ctx) {
26061		let if_block_anchor;
26062		let current;
26063		let if_block = /*show*/ ctx[1] && !/*loading*/ ctx[0] && create_if_block$n(ctx);
26064
26065		return {
26066			c() {
26067				if (if_block) if_block.c();
26068				if_block_anchor = empty();
26069			},
26070			m(target, anchor) {
26071				if (if_block) if_block.m(target, anchor);
26072				insert(target, if_block_anchor, anchor);
26073				current = true;
26074			},
26075			p(ctx, [dirty]) {
26076				if (/*show*/ ctx[1] && !/*loading*/ ctx[0]) {
26077					if (if_block) {
26078						if_block.p(ctx, dirty);
26079
26080						if (dirty & /*show, loading*/ 3) {
26081							transition_in(if_block, 1);
26082						}
26083					} else {
26084						if_block = create_if_block$n(ctx);
26085						if_block.c();
26086						transition_in(if_block, 1);
26087						if_block.m(if_block_anchor.parentNode, if_block_anchor);
26088					}
26089				} else if (if_block) {
26090					group_outros();
26091
26092					transition_out(if_block, 1, 1, () => {
26093						if_block = null;
26094					});
26095
26096					check_outros();
26097				}
26098			},
26099			i(local) {
26100				if (current) return;
26101				transition_in(if_block);
26102				current = true;
26103			},
26104			o(local) {
26105				transition_out(if_block);
26106				current = false;
26107			},
26108			d(detaching) {
26109				if (detaching) {
26110					detach(if_block_anchor);
26111				}
26112
26113				if (if_block) if_block.d(detaching);
26114			}
26115		};
26116	}
26117
26118	function instance$u($$self, $$props, $$invalidate) {
26119		let { loading } = $$props;
26120		let { show } = $$props;
26121		let { linkText } = $$props;
26122		let { onClick } = $$props;
26123
26124		$$self.$$set = $$props => {
26125			if ('loading' in $$props) $$invalidate(0, loading = $$props.loading);
26126			if ('show' in $$props) $$invalidate(1, show = $$props.show);
26127			if ('linkText' in $$props) $$invalidate(2, linkText = $$props.linkText);
26128			if ('onClick' in $$props) $$invalidate(3, onClick = $$props.onClick);
26129		};
26130
26131		return [loading, show, linkText, onClick];
26132	}
26133
26134	class PastSubscriptionsLink extends SvelteComponent {
26135		constructor(options) {
26136			super();
26137
26138			init(this, options, instance$u, create_fragment$u, safe_not_equal, {
26139				loading: 0,
26140				show: 1,
26141				linkText: 2,
26142				onClick: 3
26143			});
26144		}
26145	}
26146
26147	const pastSubscriptionsLinkFactory = {
26148	    matches: (sectionElement) => sectionElement.type === elementTypes.PAST_SUBSCRIPTIONS_LINK,
26149	    create: (form, formState, formActions, elementConfig) => ({
26150	        component: PastSubscriptionsLink,
26151	        props: {
26152	            loading: !formState.existingSubscriptions || formState.loadingSubscriptions,
26153	            show: elementConfig.show,
26154	            linkText: elementConfig.linkText,
26155	            onClick: () => {
26156	                logDataLayerEvent(form, 'zephr_form_button_press', {
26157	                    sectionId: formState.currentSection.type,
26158	                    buttonType: 'PAST_SUBSCRIPTIONS_LINK'
26159	                });
26160	                formActions.jumpToPartStart('past-subscriptions');
26161	            }
26162	        }
26163	    })
26164	};
26165
26166	/* src/components/elements/changePaymentMethodButton/ChangePaymentMethodButton.svelte generated by Svelte v4.2.12 */
26167
26168	function create_fragment$t(ctx) {
26169		let div;
26170		let button;
26171		let current;
26172
26173		button = new Button({
26174				props: {
26175					disabled: false,
26176					text: /*text*/ ctx[0],
26177					onClick: /*func*/ ctx[2]
26178				}
26179			});
26180
26181		return {
26182			c() {
26183				div = element("div");
26184				create_component(button.$$.fragment);
26185				attr(div, "class", "change-payment-method-button-container");
26186			},
26187			m(target, anchor) {
26188				insert(target, div, anchor);
26189				mount_component(button, div, null);
26190				current = true;
26191			},
26192			p(ctx, [dirty]) {
26193				const button_changes = {};
26194				if (dirty & /*text*/ 1) button_changes.text = /*text*/ ctx[0];
26195				if (dirty & /*onChangePayment*/ 2) button_changes.onClick = /*func*/ ctx[2];
26196				button.$set(button_changes);
26197			},
26198			i(local) {
26199				if (current) return;
26200				transition_in(button.$$.fragment, local);
26201				current = true;
26202			},
26203			o(local) {
26204				transition_out(button.$$.fragment, local);
26205				current = false;
26206			},
26207			d(detaching) {
26208				if (detaching) {
26209					detach(div);
26210				}
26211
26212				destroy_component(button);
26213			}
26214		};
26215	}
26216
26217	function instance$t($$self, $$props, $$invalidate) {
26218		let { text } = $$props;
26219		let { onChangePayment } = $$props;
26220		const func = () => onChangePayment();
26221
26222		$$self.$$set = $$props => {
26223			if ('text' in $$props) $$invalidate(0, text = $$props.text);
26224			if ('onChangePayment' in $$props) $$invalidate(1, onChangePayment = $$props.onChangePayment);
26225		};
26226
26227		return [text, onChangePayment, func];
26228	}
26229
26230	class ChangePaymentMethodButton extends SvelteComponent {
26231		constructor(options) {
26232			super();
26233			init(this, options, instance$t, create_fragment$t, safe_not_equal, { text: 0, onChangePayment: 1 });
26234		}
26235	}
26236
26237	const changePaymentMethodButtonFactory = {
26238	    matches: (sectionElement) => sectionElement.type === elementTypes.CHNAGE_PAYMENT_METHOD_BUTTON,
26239	    create: (form, formState, formActions, elementConfig) => ({
26240	        component: ChangePaymentMethodButton,
26241	        props: {
26242	            text: elementConfig.text,
26243	            onChangePayment: () => {
26244	                logDataLayerEvent(form, 'zephr_form_button_press', {
26245	                    sectionId: formState.currentSection.type,
26246	                    buttonType: 'SUBMIT'
26247	                });
26248	                formActions.completeSection();
26249	            }
26250	        }
26251	    })
26252	};
26253
26254	/* src/components/elements/eventLink/EventLink.svelte generated by Svelte v4.2.12 */
26255
26256	function create_fragment$s(ctx) {
26257		let div;
26258		let link;
26259		let div_class_value;
26260		let current;
26261
26262		link = new Link({
26263				props: {
26264					text: /*text*/ ctx[0],
26265					onClick: /*onClick*/ ctx[2]
26266				}
26267			});
26268
26269		link.$on("linkClick", function () {
26270			if (is_function(/*onClick*/ ctx[2])) /*onClick*/ ctx[2].apply(this, arguments);
26271		});
26272
26273		return {
26274			c() {
26275				div = element("div");
26276				create_component(link.$$.fragment);
26277				attr(div, "class", div_class_value = "" + (null_to_empty(`event-link-wrapper ${/*floatRight*/ ctx[1] ? "float-right" : ""}`) + " svelte-3cxpfz"));
26278			},
26279			m(target, anchor) {
26280				insert(target, div, anchor);
26281				mount_component(link, div, null);
26282				current = true;
26283			},
26284			p(new_ctx, [dirty]) {
26285				ctx = new_ctx;
26286				const link_changes = {};
26287				if (dirty & /*text*/ 1) link_changes.text = /*text*/ ctx[0];
26288				if (dirty & /*onClick*/ 4) link_changes.onClick = /*onClick*/ ctx[2];
26289				link.$set(link_changes);
26290
26291				if (!current || dirty & /*floatRight*/ 2 && div_class_value !== (div_class_value = "" + (null_to_empty(`event-link-wrapper ${/*floatRight*/ ctx[1] ? "float-right" : ""}`) + " svelte-3cxpfz"))) {
26292					attr(div, "class", div_class_value);
26293				}
26294			},
26295			i(local) {
26296				if (current) return;
26297				transition_in(link.$$.fragment, local);
26298				current = true;
26299			},
26300			o(local) {
26301				transition_out(link.$$.fragment, local);
26302				current = false;
26303			},
26304			d(detaching) {
26305				if (detaching) {
26306					detach(div);
26307				}
26308
26309				destroy_component(link);
26310			}
26311		};
26312	}
26313
26314	function instance$s($$self, $$props, $$invalidate) {
26315		let { text } = $$props;
26316		let { floatRight } = $$props;
26317		let { onClick } = $$props;
26318
26319		$$self.$$set = $$props => {
26320			if ('text' in $$props) $$invalidate(0, text = $$props.text);
26321			if ('floatRight' in $$props) $$invalidate(1, floatRight = $$props.floatRight);
26322			if ('onClick' in $$props) $$invalidate(2, onClick = $$props.onClick);
26323		};
26324
26325		return [text, floatRight, onClick];
26326	}
26327
26328	class EventLink extends SvelteComponent {
26329		constructor(options) {
26330			super();
26331			init(this, options, instance$s, create_fragment$s, safe_not_equal, { text: 0, floatRight: 1, onClick: 2 });
26332		}
26333	}
26334
26335	const eventLinkFactory = {
26336	    matches: (sectionElement) => sectionElement.type === elementTypes.EVENT_LINK,
26337	    create: (form, formState, formActions, elementConfig) => ({
26338	        component: EventLink,
26339	        props: {
26340	            text: elementConfig.text,
26341	            floatRight: elementConfig.floatRight,
26342	            onClick: () => {
26343	                console.log({
26344	                    sectionId: formState.currentSection.type,
26345	                    buttonType: 'EVENT_LINK'
26346	                });
26347	                logDataLayerEvent(form, 'zephr_form_button_press', {
26348	                    sectionId: formState.currentSection.type,
26349	                    buttonType: 'EVENT_LINK'
26350	                });
26351	                formActions.onEvent(elementConfig.event);
26352	            }
26353	        }
26354	    })
26355	};
26356
26357	/* src/components/elements/email/ReadOnlyEmailAddress.svelte generated by Svelte v4.2.12 */
26358
26359	function create_if_block$m(ctx) {
26360		let link;
26361		let current;
26362		link = new Link({ props: { text: /*updateLabel*/ ctx[2] } });
26363
26364		link.$on("linkClick", function () {
26365			if (is_function(/*onUpdate*/ ctx[4])) /*onUpdate*/ ctx[4].apply(this, arguments);
26366		});
26367
26368		return {
26369			c() {
26370				create_component(link.$$.fragment);
26371			},
26372			m(target, anchor) {
26373				mount_component(link, target, anchor);
26374				current = true;
26375			},
26376			p(new_ctx, dirty) {
26377				ctx = new_ctx;
26378				const link_changes = {};
26379				if (dirty & /*updateLabel*/ 4) link_changes.text = /*updateLabel*/ ctx[2];
26380				link.$set(link_changes);
26381			},
26382			i(local) {
26383				if (current) return;
26384				transition_in(link.$$.fragment, local);
26385				current = true;
26386			},
26387			o(local) {
26388				transition_out(link.$$.fragment, local);
26389				current = false;
26390			},
26391			d(detaching) {
26392				destroy_component(link, detaching);
26393			}
26394		};
26395	}
26396
26397	function create_fragment$r(ctx) {
26398		let div0;
26399		let label_1;
26400		let t0;
26401		let div1;
26402		let input;
26403		let t1;
26404		let current;
26405
26406		label_1 = new Label({
26407				props: {
26408					forInput: /*id*/ ctx[5],
26409					label: /*label*/ ctx[0]
26410				}
26411			});
26412
26413		let if_block = /*updateEnabled*/ ctx[3] && create_if_block$m(ctx);
26414
26415		return {
26416			c() {
26417				div0 = element("div");
26418				create_component(label_1.$$.fragment);
26419				t0 = space();
26420				div1 = element("div");
26421				input = element("input");
26422				t1 = space();
26423				if (if_block) if_block.c();
26424				attr(div0, "class", "bold-label svelte-nx4w5y");
26425				attr(input, "id", /*id*/ ctx[5]);
26426				attr(input, "type", "email");
26427				attr(input, "name", "email");
26428				input.value = /*emailAddress*/ ctx[1];
26429				input.readOnly = true;
26430				attr(input, "class", "read-only-input svelte-nx4w5y");
26431				attr(div1, "class", "zephr-form-relative-container svelte-nx4w5y");
26432			},
26433			m(target, anchor) {
26434				insert(target, div0, anchor);
26435				mount_component(label_1, div0, null);
26436				insert(target, t0, anchor);
26437				insert(target, div1, anchor);
26438				append(div1, input);
26439				append(div1, t1);
26440				if (if_block) if_block.m(div1, null);
26441				current = true;
26442			},
26443			p(ctx, [dirty]) {
26444				const label_1_changes = {};
26445				if (dirty & /*label*/ 1) label_1_changes.label = /*label*/ ctx[0];
26446				label_1.$set(label_1_changes);
26447
26448				if (!current || dirty & /*emailAddress*/ 2 && input.value !== /*emailAddress*/ ctx[1]) {
26449					input.value = /*emailAddress*/ ctx[1];
26450				}
26451
26452				if (/*updateEnabled*/ ctx[3]) {
26453					if (if_block) {
26454						if_block.p(ctx, dirty);
26455
26456						if (dirty & /*updateEnabled*/ 8) {
26457							transition_in(if_block, 1);
26458						}
26459					} else {
26460						if_block = create_if_block$m(ctx);
26461						if_block.c();
26462						transition_in(if_block, 1);
26463						if_block.m(div1, null);
26464					}
26465				} else if (if_block) {
26466					group_outros();
26467
26468					transition_out(if_block, 1, 1, () => {
26469						if_block = null;
26470					});
26471
26472					check_outros();
26473				}
26474			},
26475			i(local) {
26476				if (current) return;
26477				transition_in(label_1.$$.fragment, local);
26478				transition_in(if_block);
26479				current = true;
26480			},
26481			o(local) {
26482				transition_out(label_1.$$.fragment, local);
26483				transition_out(if_block);
26484				current = false;
26485			},
26486			d(detaching) {
26487				if (detaching) {
26488					detach(div0);
26489					detach(t0);
26490					detach(div1);
26491				}
26492
26493				destroy_component(label_1);
26494				if (if_block) if_block.d();
26495			}
26496		};
26497	}
26498
26499	function instance$r($$self, $$props, $$invalidate) {
26500		let { formKey } = $$props;
26501		let { label } = $$props;
26502		let { emailAddress } = $$props;
26503		let { updateLabel } = $$props;
26504		let { updateEnabled } = $$props;
26505		let { onUpdate } = $$props;
26506		const id = `zephr-form-read-only-email-address-${formKey}`;
26507
26508		$$self.$$set = $$props => {
26509			if ('formKey' in $$props) $$invalidate(6, formKey = $$props.formKey);
26510			if ('label' in $$props) $$invalidate(0, label = $$props.label);
26511			if ('emailAddress' in $$props) $$invalidate(1, emailAddress = $$props.emailAddress);
26512			if ('updateLabel' in $$props) $$invalidate(2, updateLabel = $$props.updateLabel);
26513			if ('updateEnabled' in $$props) $$invalidate(3, updateEnabled = $$props.updateEnabled);
26514			if ('onUpdate' in $$props) $$invalidate(4, onUpdate = $$props.onUpdate);
26515		};
26516
26517		return [label, emailAddress, updateLabel, updateEnabled, onUpdate, id, formKey];
26518	}
26519
26520	class ReadOnlyEmailAddress extends SvelteComponent {
26521		constructor(options) {
26522			super();
26523
26524			init(this, options, instance$r, create_fragment$r, safe_not_equal, {
26525				formKey: 6,
26526				label: 0,
26527				emailAddress: 1,
26528				updateLabel: 2,
26529				updateEnabled: 3,
26530				onUpdate: 4
26531			});
26532		}
26533	}
26534
26535	const factory$6 = {
26536	    matches: (sectionElement) => sectionElement.type === elementTypes.READ_ONLY_EMAIL_ADDRESS,
26537	    create: (form, formState, formActions, elementConfig) => {
26538	        return {
26539	            component: ReadOnlyEmailAddress,
26540	            props: {
26541	                formKey: form.uniqueKey,
26542	                emailAddress: formState.readOnlyEmail ?? '',
26543	                label: elementConfig.label,
26544	                updateLabel: elementConfig.updateLinkLabel,
26545	                updateEnabled: elementConfig.updateLinkEnabled,
26546	                onUpdate: () => formActions.jumpToPartStart('email-update')
26547	            }
26548	        };
26549	    }
26550	};
26551
26552	/* src/components/elements/password/ReadOnlyPassword.svelte generated by Svelte v4.2.12 */
26553
26554	function create_if_block$l(ctx) {
26555		let link;
26556		let current;
26557		link = new Link({ props: { text: /*updateLabel*/ ctx[1] } });
26558
26559		link.$on("linkClick", function () {
26560			if (is_function(/*onUpdate*/ ctx[3])) /*onUpdate*/ ctx[3].apply(this, arguments);
26561		});
26562
26563		return {
26564			c() {
26565				create_component(link.$$.fragment);
26566			},
26567			m(target, anchor) {
26568				mount_component(link, target, anchor);
26569				current = true;
26570			},
26571			p(new_ctx, dirty) {
26572				ctx = new_ctx;
26573				const link_changes = {};
26574				if (dirty & /*updateLabel*/ 2) link_changes.text = /*updateLabel*/ ctx[1];
26575				link.$set(link_changes);
26576			},
26577			i(local) {
26578				if (current) return;
26579				transition_in(link.$$.fragment, local);
26580				current = true;
26581			},
26582			o(local) {
26583				transition_out(link.$$.fragment, local);
26584				current = false;
26585			},
26586			d(detaching) {
26587				destroy_component(link, detaching);
26588			}
26589		};
26590	}
26591
26592	function create_fragment$q(ctx) {
26593		let div0;
26594		let label_1;
26595		let t0;
26596		let div1;
26597		let input;
26598		let t1;
26599		let current;
26600
26601		label_1 = new Label({
26602				props: {
26603					forInput: /*id*/ ctx[4],
26604					label: /*label*/ ctx[0]
26605				}
26606			});
26607
26608		let if_block = /*updateEnabled*/ ctx[2] && create_if_block$l(ctx);
26609
26610		return {
26611			c() {
26612				div0 = element("div");
26613				create_component(label_1.$$.fragment);
26614				t0 = space();
26615				div1 = element("div");
26616				input = element("input");
26617				t1 = space();
26618				if (if_block) if_block.c();
26619				attr(div0, "class", "bold-label svelte-nx4w5y");
26620				attr(input, "id", /*id*/ ctx[4]);
26621				attr(input, "type", "password");
26622				input.value = "••••••••••••••••";
26623				input.readOnly = true;
26624				attr(input, "class", "read-only-input svelte-nx4w5y");
26625				attr(div1, "class", "zephr-form-relative-container svelte-nx4w5y");
26626			},
26627			m(target, anchor) {
26628				insert(target, div0, anchor);
26629				mount_component(label_1, div0, null);
26630				insert(target, t0, anchor);
26631				insert(target, div1, anchor);
26632				append(div1, input);
26633				append(div1, t1);
26634				if (if_block) if_block.m(div1, null);
26635				current = true;
26636			},
26637			p(ctx, [dirty]) {
26638				const label_1_changes = {};
26639				if (dirty & /*label*/ 1) label_1_changes.label = /*label*/ ctx[0];
26640				label_1.$set(label_1_changes);
26641
26642				if (/*updateEnabled*/ ctx[2]) {
26643					if (if_block) {
26644						if_block.p(ctx, dirty);
26645
26646						if (dirty & /*updateEnabled*/ 4) {
26647							transition_in(if_block, 1);
26648						}
26649					} else {
26650						if_block = create_if_block$l(ctx);
26651						if_block.c();
26652						transition_in(if_block, 1);
26653						if_block.m(div1, null);
26654					}
26655				} else if (if_block) {
26656					group_outros();
26657
26658					transition_out(if_block, 1, 1, () => {
26659						if_block = null;
26660					});
26661
26662					check_outros();
26663				}
26664			},
26665			i(local) {
26666				if (current) return;
26667				transition_in(label_1.$$.fragment, local);
26668				transition_in(if_block);
26669				current = true;
26670			},
26671			o(local) {
26672				transition_out(label_1.$$.fragment, local);
26673				transition_out(if_block);
26674				current = false;
26675			},
26676			d(detaching) {
26677				if (detaching) {
26678					detach(div0);
26679					detach(t0);
26680					detach(div1);
26681				}
26682
26683				destroy_component(label_1);
26684				if (if_block) if_block.d();
26685			}
26686		};
26687	}
26688
26689	function instance$q($$self, $$props, $$invalidate) {
26690		let { formKey } = $$props;
26691		let { label } = $$props;
26692		let { updateLabel } = $$props;
26693		let { updateEnabled } = $$props;
26694		let { onUpdate } = $$props;
26695		const id = `zephr-form-read-only-password-${formKey}`;
26696
26697		$$self.$$set = $$props => {
26698			if ('formKey' in $$props) $$invalidate(5, formKey = $$props.formKey);
26699			if ('label' in $$props) $$invalidate(0, label = $$props.label);
26700			if ('updateLabel' in $$props) $$invalidate(1, updateLabel = $$props.updateLabel);
26701			if ('updateEnabled' in $$props) $$invalidate(2, updateEnabled = $$props.updateEnabled);
26702			if ('onUpdate' in $$props) $$invalidate(3, onUpdate = $$props.onUpdate);
26703		};
26704
26705		return [label, updateLabel, updateEnabled, onUpdate, id, formKey];
26706	}
26707
26708	class ReadOnlyPassword extends SvelteComponent {
26709		constructor(options) {
26710			super();
26711
26712			init(this, options, instance$q, create_fragment$q, safe_not_equal, {
26713				formKey: 5,
26714				label: 0,
26715				updateLabel: 1,
26716				updateEnabled: 2,
26717				onUpdate: 3
26718			});
26719		}
26720	}
26721
26722	const factory$5 = {
26723	    matches: (sectionElement) => sectionElement.type === elementTypes.READ_ONLY_PASSWORD,
26724	    create: (form, formState, formActions, elementConfig) => {
26725	        return {
26726	            component: ReadOnlyPassword,
26727	            props: {
26728	                formKey: form.uniqueKey,
26729	                label: elementConfig.label,
26730	                updateLabel: elementConfig.updateLinkLabel,
26731	                updateEnabled: elementConfig.updateLinkEnabled,
26732	                onUpdate: () => formActions.jumpToPartStart('password-update')
26733	            }
26734	        };
26735	    }
26736	};
26737
26738	/* src/components/elements/userAttribute/ReadOnlyUserAttribute.svelte generated by Svelte v4.2.12 */
26739
26740	function create_else_block$1(ctx) {
26741		let div2;
26742		let div0;
26743		let t0;
26744		let t1;
26745		let div1;
26746		let t2;
26747
26748		return {
26749			c() {
26750				div2 = element("div");
26751				div0 = element("div");
26752				t0 = text(/*label*/ ctx[3]);
26753				t1 = space();
26754				div1 = element("div");
26755				t2 = text(/*value*/ ctx[2]);
26756				attr(div0, "class", "zephr-form-ro-attribute-label");
26757				attr(div1, "class", "zephr-form-ro-attribute-value");
26758				attr(div2, "class", "zephr-form-ro-attribute");
26759			},
26760			m(target, anchor) {
26761				insert(target, div2, anchor);
26762				append(div2, div0);
26763				append(div0, t0);
26764				append(div2, t1);
26765				append(div2, div1);
26766				append(div1, t2);
26767			},
26768			p(ctx, dirty) {
26769				if (dirty & /*label*/ 8) set_data(t0, /*label*/ ctx[3]);
26770				if (dirty & /*value*/ 4) set_data(t2, /*value*/ ctx[2]);
26771			},
26772			i: noop,
26773			o: noop,
26774			d(detaching) {
26775				if (detaching) {
26776					detach(div2);
26777				}
26778			}
26779		};
26780	}
26781
26782	// (8:0) {#if isCheckbox}
26783	function create_if_block$k(ctx) {
26784		let div;
26785		let checkbox;
26786		let current;
26787
26788		checkbox = new Checkbox({
26789				props: {
26790					id: `zephr-form-ro-checkbox-${/*slug*/ ctx[1]}`,
26791					name: /*slug*/ ctx[1],
26792					label: /*label*/ ctx[3],
26793					required: false,
26794					value: /*value*/ ctx[2],
26795					checked: /*value*/ ctx[2],
26796					disabled: true
26797				}
26798			});
26799
26800		return {
26801			c() {
26802				div = element("div");
26803				create_component(checkbox.$$.fragment);
26804				attr(div, "class", "zephr-form-ro-attribute");
26805			},
26806			m(target, anchor) {
26807				insert(target, div, anchor);
26808				mount_component(checkbox, div, null);
26809				current = true;
26810			},
26811			p(ctx, dirty) {
26812				const checkbox_changes = {};
26813				if (dirty & /*slug*/ 2) checkbox_changes.id = `zephr-form-ro-checkbox-${/*slug*/ ctx[1]}`;
26814				if (dirty & /*slug*/ 2) checkbox_changes.name = /*slug*/ ctx[1];
26815				if (dirty & /*label*/ 8) checkbox_changes.label = /*label*/ ctx[3];
26816				if (dirty & /*value*/ 4) checkbox_changes.value = /*value*/ ctx[2];
26817				if (dirty & /*value*/ 4) checkbox_changes.checked = /*value*/ ctx[2];
26818				checkbox.$set(checkbox_changes);
26819			},
26820			i(local) {
26821				if (current) return;
26822				transition_in(checkbox.$$.fragment, local);
26823				current = true;
26824			},
26825			o(local) {
26826				transition_out(checkbox.$$.fragment, local);
26827				current = false;
26828			},
26829			d(detaching) {
26830				if (detaching) {
26831					detach(div);
26832				}
26833
26834				destroy_component(checkbox);
26835			}
26836		};
26837	}
26838
26839	function create_fragment$p(ctx) {
26840		let current_block_type_index;
26841		let if_block;
26842		let if_block_anchor;
26843		let current;
26844		const if_block_creators = [create_if_block$k, create_else_block$1];
26845		const if_blocks = [];
26846
26847		function select_block_type(ctx, dirty) {
26848			if (/*isCheckbox*/ ctx[0]) return 0;
26849			return 1;
26850		}
26851
26852		current_block_type_index = select_block_type(ctx);
26853		if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
26854
26855		return {
26856			c() {
26857				if_block.c();
26858				if_block_anchor = empty();
26859			},
26860			m(target, anchor) {
26861				if_blocks[current_block_type_index].m(target, anchor);
26862				insert(target, if_block_anchor, anchor);
26863				current = true;
26864			},
26865			p(ctx, [dirty]) {
26866				let previous_block_index = current_block_type_index;
26867				current_block_type_index = select_block_type(ctx);
26868
26869				if (current_block_type_index === previous_block_index) {
26870					if_blocks[current_block_type_index].p(ctx, dirty);
26871				} else {
26872					group_outros();
26873
26874					transition_out(if_blocks[previous_block_index], 1, 1, () => {
26875						if_blocks[previous_block_index] = null;
26876					});
26877
26878					check_outros();
26879					if_block = if_blocks[current_block_type_index];
26880
26881					if (!if_block) {
26882						if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
26883						if_block.c();
26884					} else {
26885						if_block.p(ctx, dirty);
26886					}
26887
26888					transition_in(if_block, 1);
26889					if_block.m(if_block_anchor.parentNode, if_block_anchor);
26890				}
26891			},
26892			i(local) {
26893				if (current) return;
26894				transition_in(if_block);
26895				current = true;
26896			},
26897			o(local) {
26898				transition_out(if_block);
26899				current = false;
26900			},
26901			d(detaching) {
26902				if (detaching) {
26903					detach(if_block_anchor);
26904				}
26905
26906				if_blocks[current_block_type_index].d(detaching);
26907			}
26908		};
26909	}
26910
26911	function instance$p($$self, $$props, $$invalidate) {
26912		let { isCheckbox } = $$props;
26913		let { slug } = $$props;
26914		let { value } = $$props;
26915		let { label } = $$props;
26916
26917		$$self.$$set = $$props => {
26918			if ('isCheckbox' in $$props) $$invalidate(0, isCheckbox = $$props.isCheckbox);
26919			if ('slug' in $$props) $$invalidate(1, slug = $$props.slug);
26920			if ('value' in $$props) $$invalidate(2, value = $$props.value);
26921			if ('label' in $$props) $$invalidate(3, label = $$props.label);
26922		};
26923
26924		return [isCheckbox, slug, value, label];
26925	}
26926
26927	class ReadOnlyUserAttribute extends SvelteComponent {
26928		constructor(options) {
26929			super();
26930
26931			init(this, options, instance$p, create_fragment$p, safe_not_equal, {
26932				isCheckbox: 0,
26933				slug: 1,
26934				value: 2,
26935				label: 3
26936			});
26937		}
26938	}
26939
26940	const selectAttributeTypes = ['radio', 'select'];
26941	const readOnlyUserAttributeFactory = {
26942	    matches: (sectionElement) => sectionElement.type === elementTypes.READ_ONLY_USER_ATTRIBUTE,
26943	    create: (form, formState, _, elementConfig) => {
26944	        const attributeSchema = form.organisationConfiguration.schemaFields.find(s => s.slug === elementConfig.slug);
26945	        let value = (formState.readOnlyAttributeValues ?? {})[elementConfig.slug] ?? '';
26946	        if (value && selectAttributeTypes.includes(attributeSchema?.["input-type"])) {
26947	            value = (attributeSchema?.["select-options"] ?? []).find(o => o.value === value)?.label ?? value;
26948	        }
26949	        const isCheckbox = attributeSchema?.["input-type"] === 'checkbox';
26950	        return {
26951	            component: ReadOnlyUserAttribute,
26952	            props: {
26953	                value,
26954	                slug: elementConfig.slug,
26955	                label: elementConfig.label,
26956	                isCheckbox,
26957	            }
26958	        };
26959	    }
26960	};
26961
26962	/* src/components/elements/devices/DeviceSessionWrapper.svelte generated by Svelte v4.2.12 */
26963
26964	function create_if_block_1$e(ctx) {
26965		let span;
26966		let t;
26967
26968		return {
26969			c() {
26970				span = element("span");
26971				t = text(/*currentDeviceLabel*/ ctx[2]);
26972				attr(span, "class", "current-device svelte-jmotet");
26973			},
26974			m(target, anchor) {
26975				insert(target, span, anchor);
26976				append(span, t);
26977			},
26978			p(ctx, dirty) {
26979				if (dirty & /*currentDeviceLabel*/ 4) set_data(t, /*currentDeviceLabel*/ ctx[2]);
26980			},
26981			d(detaching) {
26982				if (detaching) {
26983					detach(span);
26984				}
26985			}
26986		};
26987	}
26988
26989	// (22:4) {#if !deviceSession.requestingSession}
26990	function create_if_block$j(ctx) {
26991		let button;
26992		let current;
26993
26994		button = new Button({
26995				props: {
26996					disabled: false,
26997					text: /*signOutLabel*/ ctx[4],
26998					onClick: /*func*/ ctx[5]
26999				}
27000			});
27001
27002		return {
27003			c() {
27004				create_component(button.$$.fragment);
27005			},
27006			m(target, anchor) {
27007				mount_component(button, target, anchor);
27008				current = true;
27009			},
27010			p(ctx, dirty) {
27011				const button_changes = {};
27012				if (dirty & /*signOutLabel*/ 16) button_changes.text = /*signOutLabel*/ ctx[4];
27013				if (dirty & /*onDeviceSignOut, deviceSession*/ 3) button_changes.onClick = /*func*/ ctx[5];
27014				button.$set(button_changes);
27015			},
27016			i(local) {
27017				if (current) return;
27018				transition_in(button.$$.fragment, local);
27019				current = true;
27020			},
27021			o(local) {
27022				transition_out(button.$$.fragment, local);
27023				current = false;
27024			},
27025			d(detaching) {
27026				destroy_component(button, detaching);
27027			}
27028		};
27029	}
27030
27031	function create_fragment$o(ctx) {
27032		let div4;
27033		let div0;
27034		let t0_value = /*deviceSession*/ ctx[0].deviceName + "";
27035		let t0;
27036		let t1;
27037		let t2;
27038		let div1;
27039		let t3;
27040		let t4;
27041		let t5_value = /*deviceSession*/ ctx[0].startDate + "";
27042		let t5;
27043		let t6;
27044		let div2;
27045		let t7_value = /*deviceSession*/ ctx[0].browser + "";
27046		let t7;
27047		let t8;
27048		let div3;
27049		let t9_value = /*deviceSession*/ ctx[0].country + "";
27050		let t9;
27051		let t10;
27052		let t11;
27053		let hr;
27054		let current;
27055		let if_block0 = /*deviceSession*/ ctx[0].requestingSession && create_if_block_1$e(ctx);
27056		let if_block1 = !/*deviceSession*/ ctx[0].requestingSession && create_if_block$j(ctx);
27057
27058		return {
27059			c() {
27060				div4 = element("div");
27061				div0 = element("div");
27062				t0 = text(t0_value);
27063				t1 = space();
27064				if (if_block0) if_block0.c();
27065				t2 = space();
27066				div1 = element("div");
27067				t3 = text(/*loginTimeLabel*/ ctx[3]);
27068				t4 = text(": ");
27069				t5 = text(t5_value);
27070				t6 = space();
27071				div2 = element("div");
27072				t7 = text(t7_value);
27073				t8 = space();
27074				div3 = element("div");
27075				t9 = text(t9_value);
27076				t10 = space();
27077				if (if_block1) if_block1.c();
27078				t11 = space();
27079				hr = element("hr");
27080				attr(div0, "class", "device-title svelte-jmotet");
27081				attr(div1, "class", "login-time svelte-jmotet");
27082				attr(div2, "class", "browser svelte-jmotet");
27083				attr(div3, "class", "country svelte-jmotet");
27084				attr(hr, "class", "svelte-jmotet");
27085				attr(div4, "class", "session-container svelte-jmotet");
27086			},
27087			m(target, anchor) {
27088				insert(target, div4, anchor);
27089				append(div4, div0);
27090				append(div0, t0);
27091				append(div0, t1);
27092				if (if_block0) if_block0.m(div0, null);
27093				append(div4, t2);
27094				append(div4, div1);
27095				append(div1, t3);
27096				append(div1, t4);
27097				append(div1, t5);
27098				append(div4, t6);
27099				append(div4, div2);
27100				append(div2, t7);
27101				append(div4, t8);
27102				append(div4, div3);
27103				append(div3, t9);
27104				append(div4, t10);
27105				if (if_block1) if_block1.m(div4, null);
27106				append(div4, t11);
27107				append(div4, hr);
27108				current = true;
27109			},
27110			p(ctx, [dirty]) {
27111				if ((!current || dirty & /*deviceSession*/ 1) && t0_value !== (t0_value = /*deviceSession*/ ctx[0].deviceName + "")) set_data(t0, t0_value);
27112
27113				if (/*deviceSession*/ ctx[0].requestingSession) {
27114					if (if_block0) {
27115						if_block0.p(ctx, dirty);
27116					} else {
27117						if_block0 = create_if_block_1$e(ctx);
27118						if_block0.c();
27119						if_block0.m(div0, null);
27120					}
27121				} else if (if_block0) {
27122					if_block0.d(1);
27123					if_block0 = null;
27124				}
27125
27126				if (!current || dirty & /*loginTimeLabel*/ 8) set_data(t3, /*loginTimeLabel*/ ctx[3]);
27127				if ((!current || dirty & /*deviceSession*/ 1) && t5_value !== (t5_value = /*deviceSession*/ ctx[0].startDate + "")) set_data(t5, t5_value);
27128				if ((!current || dirty & /*deviceSession*/ 1) && t7_value !== (t7_value = /*deviceSession*/ ctx[0].browser + "")) set_data(t7, t7_value);
27129				if ((!current || dirty & /*deviceSession*/ 1) && t9_value !== (t9_value = /*deviceSession*/ ctx[0].country + "")) set_data(t9, t9_value);
27130
27131				if (!/*deviceSession*/ ctx[0].requestingSession) {
27132					if (if_block1) {
27133						if_block1.p(ctx, dirty);
27134
27135						if (dirty & /*deviceSession*/ 1) {
27136							transition_in(if_block1, 1);
27137						}
27138					} else {
27139						if_block1 = create_if_block$j(ctx);
27140						if_block1.c();
27141						transition_in(if_block1, 1);
27142						if_block1.m(div4, t11);
27143					}
27144				} else if (if_block1) {
27145					group_outros();
27146
27147					transition_out(if_block1, 1, 1, () => {
27148						if_block1 = null;
27149					});
27150
27151					check_outros();
27152				}
27153			},
27154			i(local) {
27155				if (current) return;
27156				transition_in(if_block1);
27157				current = true;
27158			},
27159			o(local) {
27160				transition_out(if_block1);
27161				current = false;
27162			},
27163			d(detaching) {
27164				if (detaching) {
27165					detach(div4);
27166				}
27167
27168				if (if_block0) if_block0.d();
27169				if (if_block1) if_block1.d();
27170			}
27171		};
27172	}
27173
27174	function instance$o($$self, $$props, $$invalidate) {
27175		let { deviceSession } = $$props;
27176		let { onDeviceSignOut } = $$props;
27177		let { currentDeviceLabel } = $$props;
27178		let { loginTimeLabel } = $$props;
27179		let { signOutLabel } = $$props;
27180		const func = () => onDeviceSignOut(deviceSession.id);
27181
27182		$$self.$$set = $$props => {
27183			if ('deviceSession' in $$props) $$invalidate(0, deviceSession = $$props.deviceSession);
27184			if ('onDeviceSignOut' in $$props) $$invalidate(1, onDeviceSignOut = $$props.onDeviceSignOut);
27185			if ('currentDeviceLabel' in $$props) $$invalidate(2, currentDeviceLabel = $$props.currentDeviceLabel);
27186			if ('loginTimeLabel' in $$props) $$invalidate(3, loginTimeLabel = $$props.loginTimeLabel);
27187			if ('signOutLabel' in $$props) $$invalidate(4, signOutLabel = $$props.signOutLabel);
27188		};
27189
27190		return [
27191			deviceSession,
27192			onDeviceSignOut,
27193			currentDeviceLabel,
27194			loginTimeLabel,
27195			signOutLabel,
27196			func
27197		];
27198	}
27199
27200	class DeviceSessionWrapper extends SvelteComponent {
27201		constructor(options) {
27202			super();
27203
27204			init(this, options, instance$o, create_fragment$o, safe_not_equal, {
27205				deviceSession: 0,
27206				onDeviceSignOut: 1,
27207				currentDeviceLabel: 2,
27208				loginTimeLabel: 3,
27209				signOutLabel: 4
27210			});
27211		}
27212	}
27213
27214	/* src/components/elements/devices/DevicesSessionList.svelte generated by Svelte v4.2.12 */
27215
27216	function get_each_context$8(ctx, list, i) {
27217		const child_ctx = ctx.slice();
27218		child_ctx[7] = list[i];
27219		return child_ctx;
27220	}
27221
27222	// (33:4) {#if devicesSessions == null}
27223	function create_if_block_1$d(ctx) {
27224		let fa;
27225		let current;
27226
27227		fa = new Fa({
27228				props: { icon: faSpinner, spin: true, size: "lg" }
27229			});
27230
27231		return {
27232			c() {
27233				create_component(fa.$$.fragment);
27234			},
27235			m(target, anchor) {
27236				mount_component(fa, target, anchor);
27237				current = true;
27238			},
27239			i(local) {
27240				if (current) return;
27241				transition_in(fa.$$.fragment, local);
27242				current = true;
27243			},
27244			o(local) {
27245				transition_out(fa.$$.fragment, local);
27246				current = false;
27247			},
27248			d(detaching) {
27249				destroy_component(fa, detaching);
27250			}
27251		};
27252	}
27253
27254	// (36:4) {#if devicesSessions != null && !devicesSessions.length}
27255	function create_if_block$i(ctx) {
27256		let div;
27257
27258		return {
27259			c() {
27260				div = element("div");
27261			},
27262			m(target, anchor) {
27263				insert(target, div, anchor);
27264				div.innerHTML = /*noDeviceSessionsMessage*/ ctx[1];
27265			},
27266			p(ctx, dirty) {
27267				if (dirty & /*noDeviceSessionsMessage*/ 2) div.innerHTML = /*noDeviceSessionsMessage*/ ctx[1];		},
27268			d(detaching) {
27269				if (detaching) {
27270					detach(div);
27271				}
27272			}
27273		};
27274	}
27275
27276	// (41:4) {#each devicesSessions ?? [] as deviceSession}
27277	function create_each_block$8(ctx) {
27278		let devicesessionwrapper;
27279		let current;
27280
27281		devicesessionwrapper = new DeviceSessionWrapper({
27282				props: {
27283					deviceSession: /*deviceSession*/ ctx[7],
27284					currentDeviceLabel: /*currentDeviceLabel*/ ctx[3],
27285					loginTimeLabel: /*loginTimeLabel*/ ctx[4],
27286					signOutLabel: /*signOutLabel*/ ctx[5],
27287					onDeviceSignOut: /*onDeviceSignOut*/ ctx[6]
27288				}
27289			});
27290
27291		return {
27292			c() {
27293				create_component(devicesessionwrapper.$$.fragment);
27294			},
27295			m(target, anchor) {
27296				mount_component(devicesessionwrapper, target, anchor);
27297				current = true;
27298			},
27299			p(ctx, dirty) {
27300				const devicesessionwrapper_changes = {};
27301				if (dirty & /*devicesSessions*/ 1) devicesessionwrapper_changes.deviceSession = /*deviceSession*/ ctx[7];
27302				if (dirty & /*currentDeviceLabel*/ 8) devicesessionwrapper_changes.currentDeviceLabel = /*currentDeviceLabel*/ ctx[3];
27303				if (dirty & /*loginTimeLabel*/ 16) devicesessionwrapper_changes.loginTimeLabel = /*loginTimeLabel*/ ctx[4];
27304				if (dirty & /*signOutLabel*/ 32) devicesessionwrapper_changes.signOutLabel = /*signOutLabel*/ ctx[5];
27305				if (dirty & /*onDeviceSignOut*/ 64) devicesessionwrapper_changes.onDeviceSignOut = /*onDeviceSignOut*/ ctx[6];
27306				devicesessionwrapper.$set(devicesessionwrapper_changes);
27307			},
27308			i(local) {
27309				if (current) return;
27310				transition_in(devicesessionwrapper.$$.fragment, local);
27311				current = true;
27312			},
27313			o(local) {
27314				transition_out(devicesessionwrapper.$$.fragment, local);
27315				current = false;
27316			},
27317			d(detaching) {
27318				destroy_component(devicesessionwrapper, detaching);
27319			}
27320		};
27321	}
27322
27323	function create_fragment$n(ctx) {
27324		let div1;
27325		let div0;
27326		let h1;
27327		let t0;
27328		let t1;
27329		let t2;
27330		let t3;
27331		let current;
27332		let if_block0 = /*devicesSessions*/ ctx[0] == null && create_if_block_1$d();
27333		let if_block1 = /*devicesSessions*/ ctx[0] != null && !/*devicesSessions*/ ctx[0].length && create_if_block$i(ctx);
27334		let each_value = ensure_array_like(/*devicesSessions*/ ctx[0] ?? []);
27335		let each_blocks = [];
27336
27337		for (let i = 0; i < each_value.length; i += 1) {
27338			each_blocks[i] = create_each_block$8(get_each_context$8(ctx, each_value, i));
27339		}
27340
27341		const out = i => transition_out(each_blocks[i], 1, 1, () => {
27342			each_blocks[i] = null;
27343		});
27344
27345		return {
27346			c() {
27347				div1 = element("div");
27348				div0 = element("div");
27349				h1 = element("h1");
27350				t0 = text(/*yourDevicesLabel*/ ctx[2]);
27351				t1 = space();
27352				if (if_block0) if_block0.c();
27353				t2 = space();
27354				if (if_block1) if_block1.c();
27355				t3 = space();
27356
27357				for (let i = 0; i < each_blocks.length; i += 1) {
27358					each_blocks[i].c();
27359				}
27360
27361				attr(h1, "class", "current-device");
27362				attr(div0, "class", "your-devices");
27363				attr(div1, "class", "devices-sessions-container");
27364			},
27365			m(target, anchor) {
27366				insert(target, div1, anchor);
27367				append(div1, div0);
27368				append(div0, h1);
27369				append(h1, t0);
27370				append(div1, t1);
27371				if (if_block0) if_block0.m(div1, null);
27372				append(div1, t2);
27373				if (if_block1) if_block1.m(div1, null);
27374				append(div1, t3);
27375
27376				for (let i = 0; i < each_blocks.length; i += 1) {
27377					if (each_blocks[i]) {
27378						each_blocks[i].m(div1, null);
27379					}
27380				}
27381
27382				current = true;
27383			},
27384			p(ctx, [dirty]) {
27385				if (!current || dirty & /*yourDevicesLabel*/ 4) set_data(t0, /*yourDevicesLabel*/ ctx[2]);
27386
27387				if (/*devicesSessions*/ ctx[0] == null) {
27388					if (if_block0) {
27389						if (dirty & /*devicesSessions*/ 1) {
27390							transition_in(if_block0, 1);
27391						}
27392					} else {
27393						if_block0 = create_if_block_1$d();
27394						if_block0.c();
27395						transition_in(if_block0, 1);
27396						if_block0.m(div1, t2);
27397					}
27398				} else if (if_block0) {
27399					group_outros();
27400
27401					transition_out(if_block0, 1, 1, () => {
27402						if_block0 = null;
27403					});
27404
27405					check_outros();
27406				}
27407
27408				if (/*devicesSessions*/ ctx[0] != null && !/*devicesSessions*/ ctx[0].length) {
27409					if (if_block1) {
27410						if_block1.p(ctx, dirty);
27411					} else {
27412						if_block1 = create_if_block$i(ctx);
27413						if_block1.c();
27414						if_block1.m(div1, t3);
27415					}
27416				} else if (if_block1) {
27417					if_block1.d(1);
27418					if_block1 = null;
27419				}
27420
27421				if (dirty & /*devicesSessions, currentDeviceLabel, loginTimeLabel, signOutLabel, onDeviceSignOut*/ 121) {
27422					each_value = ensure_array_like(/*devicesSessions*/ ctx[0] ?? []);
27423					let i;
27424
27425					for (i = 0; i < each_value.length; i += 1) {
27426						const child_ctx = get_each_context$8(ctx, each_value, i);
27427
27428						if (each_blocks[i]) {
27429							each_blocks[i].p(child_ctx, dirty);
27430							transition_in(each_blocks[i], 1);
27431						} else {
27432							each_blocks[i] = create_each_block$8(child_ctx);
27433							each_blocks[i].c();
27434							transition_in(each_blocks[i], 1);
27435							each_blocks[i].m(div1, null);
27436						}
27437					}
27438
27439					group_outros();
27440
27441					for (i = each_value.length; i < each_blocks.length; i += 1) {
27442						out(i);
27443					}
27444
27445					check_outros();
27446				}
27447			},
27448			i(local) {
27449				if (current) return;
27450				transition_in(if_block0);
27451
27452				for (let i = 0; i < each_value.length; i += 1) {
27453					transition_in(each_blocks[i]);
27454				}
27455
27456				current = true;
27457			},
27458			o(local) {
27459				transition_out(if_block0);
27460				each_blocks = each_blocks.filter(Boolean);
27461
27462				for (let i = 0; i < each_blocks.length; i += 1) {
27463					transition_out(each_blocks[i]);
27464				}
27465
27466				current = false;
27467			},
27468			d(detaching) {
27469				if (detaching) {
27470					detach(div1);
27471				}
27472
27473				if (if_block0) if_block0.d();
27474				if (if_block1) if_block1.d();
27475				destroy_each(each_blocks, detaching);
27476			}
27477		};
27478	}
27479
27480	function instance$n($$self, $$props, $$invalidate) {
27481		let { devicesSessions } = $$props;
27482		let { noDeviceSessionsMessage } = $$props;
27483		let { yourDevicesLabel } = $$props;
27484		let { currentDeviceLabel } = $$props;
27485		let { loginTimeLabel } = $$props;
27486		let { signOutLabel } = $$props;
27487		let { onDeviceSignOut } = $$props;
27488
27489		$$self.$$set = $$props => {
27490			if ('devicesSessions' in $$props) $$invalidate(0, devicesSessions = $$props.devicesSessions);
27491			if ('noDeviceSessionsMessage' in $$props) $$invalidate(1, noDeviceSessionsMessage = $$props.noDeviceSessionsMessage);
27492			if ('yourDevicesLabel' in $$props) $$invalidate(2, yourDevicesLabel = $$props.yourDevicesLabel);
27493			if ('currentDeviceLabel' in $$props) $$invalidate(3, currentDeviceLabel = $$props.currentDeviceLabel);
27494			if ('loginTimeLabel' in $$props) $$invalidate(4, loginTimeLabel = $$props.loginTimeLabel);
27495			if ('signOutLabel' in $$props) $$invalidate(5, signOutLabel = $$props.signOutLabel);
27496			if ('onDeviceSignOut' in $$props) $$invalidate(6, onDeviceSignOut = $$props.onDeviceSignOut);
27497		};
27498
27499		return [
27500			devicesSessions,
27501			noDeviceSessionsMessage,
27502			yourDevicesLabel,
27503			currentDeviceLabel,
27504			loginTimeLabel,
27505			signOutLabel,
27506			onDeviceSignOut
27507		];
27508	}
27509
27510	class DevicesSessionList extends SvelteComponent {
27511		constructor(options) {
27512			super();
27513
27514			init(this, options, instance$n, create_fragment$n, safe_not_equal, {
27515				devicesSessions: 0,
27516				noDeviceSessionsMessage: 1,
27517				yourDevicesLabel: 2,
27518				currentDeviceLabel: 3,
27519				loginTimeLabel: 4,
27520				signOutLabel: 5,
27521				onDeviceSignOut: 6
27522			});
27523		}
27524	}
27525
27526	const loadDeviceSessions = async (form, formState, formActions) => {
27527	    const availableDeviceSessions = await getAvailableDeviceSessions(form, formState, formActions);
27528	    formActions.updateFormState({
27529	        availableDeviceSessions
27530	    });
27531	    return availableDeviceSessions;
27532	};
27533	const getAvailableDeviceSessions = (form, _, formActions) => {
27534	    return request(`zephr/public/sessions/v1/sessions`, {
27535	        method: "GET"
27536	    }, formActions, null, true)
27537	        .then(response => response.ok ? response.json() : [])
27538	        .then(sessions => sessions
27539	        .map(session => ({
27540	        tenantId: session['tenantId'],
27541	        userId: session['userId'],
27542	        id: session['id'],
27543	        startDate: new Date(session['startDate']).toLocaleString(resolveLanguagePackLocale(form), {
27544	            year: 'numeric',
27545	            month: 'long',
27546	            day: 'numeric',
27547	            hour: '2-digit',
27548	            minute: '2-digit',
27549	            second: '2-digit',
27550	            hour12: true
27551	        }),
27552	        deviceName: session['deviceName'],
27553	        browser: session['browser'],
27554	        requestingSession: session['requestingSession'],
27555	        city: session['city'] ?? null,
27556	        country: session['country'] ?? null,
27557	        geoState: session['geoState'] ?? null,
27558	        ipAddress: session['ipAddress'] ?? null,
27559	    })));
27560	};
27561
27562	const signOutSingleDevice = async (form, formState, formActions, deviceId) => {
27563	    const success = await signOutDevice(form, formState, formActions, deviceId);
27564	    if (success) {
27565	        console.log("Successfully signed out device.");
27566	        return loadDeviceSessions(form, formState, formActions);
27567	    }
27568	    else {
27569	        console.error("Failed to sign out device.");
27570	    }
27571	};
27572	const signOutDevice = async (form, formState, formActions, deviceId) => {
27573	    try {
27574	        const response = await request(`zephr/public/sessions/v1/sessions/${deviceId}`, {
27575	            method: "DELETE"
27576	        }, formActions, null, true);
27577	        return response.status === 200;
27578	    }
27579	    catch (error) {
27580	        console.error("Error occurred while signing out device:", error);
27581	        return false;
27582	    }
27583	};
27584
27585	const deviceSessionsFactory = {
27586	    matches: (sectionElement) => sectionElement.type === elementTypes.DEVICES_SESSIONS_LIST,
27587	    create: (form, formState, formActions, elementConfig) => ({
27588	        component: DevicesSessionList,
27589	        props: {
27590	            yourDevicesLabel: elementConfig.yourDevicesLabel,
27591	            noDeviceSessionsMessage: elementConfig.noDeviceSessionsMessage,
27592	            devicesSessions: formState.availableDeviceSessions,
27593	            currentDeviceLabel: elementConfig.currentDeviceLabel,
27594	            loginTimeLabel: elementConfig.loginTimeLabel,
27595	            signOutLabel: elementConfig.signOutLabel,
27596	            onDeviceSignOut: (value) => {
27597	                logDataLayerEvent(form, 'zephr_form_button_press', {
27598	                    sectionId: formState.currentSection.type,
27599	                    buttonType: 'SUBMIT'
27600	                });
27601	                logDataLayerEvent(form, 'zephr_form_device_logout', { deviceId: value });
27602	                void signOutSingleDevice(form, formState, formActions, value);
27603	            }
27604	        }
27605	    })
27606	};
27607
27608	/* src/components/elements/devices/DeviceSessionsSignOutAllWrapper.svelte generated by Svelte v4.2.12 */
27609
27610	function create_if_block$h(ctx) {
27611		let div;
27612		let t;
27613		let mounted;
27614		let dispose;
27615
27616		return {
27617			c() {
27618				div = element("div");
27619				t = text(/*text*/ ctx[2]);
27620				attr(div, "class", "sign-out-all svelte-1ogdv39");
27621			},
27622			m(target, anchor) {
27623				insert(target, div, anchor);
27624				append(div, t);
27625
27626				if (!mounted) {
27627					dispose = listen(div, "click", function () {
27628						if (is_function(/*onSignOutAllDevices*/ ctx[0])) /*onSignOutAllDevices*/ ctx[0].apply(this, arguments);
27629					});
27630
27631					mounted = true;
27632				}
27633			},
27634			p(new_ctx, dirty) {
27635				ctx = new_ctx;
27636				if (dirty & /*text*/ 4) set_data(t, /*text*/ ctx[2]);
27637			},
27638			d(detaching) {
27639				if (detaching) {
27640					detach(div);
27641				}
27642
27643				mounted = false;
27644				dispose();
27645			}
27646		};
27647	}
27648
27649	function create_fragment$m(ctx) {
27650		let if_block_anchor;
27651		let if_block = !/*hidden*/ ctx[1] && create_if_block$h(ctx);
27652
27653		return {
27654			c() {
27655				if (if_block) if_block.c();
27656				if_block_anchor = empty();
27657			},
27658			m(target, anchor) {
27659				if (if_block) if_block.m(target, anchor);
27660				insert(target, if_block_anchor, anchor);
27661			},
27662			p(ctx, [dirty]) {
27663				if (!/*hidden*/ ctx[1]) {
27664					if (if_block) {
27665						if_block.p(ctx, dirty);
27666					} else {
27667						if_block = create_if_block$h(ctx);
27668						if_block.c();
27669						if_block.m(if_block_anchor.parentNode, if_block_anchor);
27670					}
27671				} else if (if_block) {
27672					if_block.d(1);
27673					if_block = null;
27674				}
27675			},
27676			i: noop,
27677			o: noop,
27678			d(detaching) {
27679				if (detaching) {
27680					detach(if_block_anchor);
27681				}
27682
27683				if (if_block) if_block.d(detaching);
27684			}
27685		};
27686	}
27687
27688	function instance$m($$self, $$props, $$invalidate) {
27689		let { onSignOutAllDevices } = $$props;
27690		let { hidden } = $$props;
27691		let { text } = $$props;
27692
27693		$$self.$$set = $$props => {
27694			if ('onSignOutAllDevices' in $$props) $$invalidate(0, onSignOutAllDevices = $$props.onSignOutAllDevices);
27695			if ('hidden' in $$props) $$invalidate(1, hidden = $$props.hidden);
27696			if ('text' in $$props) $$invalidate(2, text = $$props.text);
27697		};
27698
27699		return [onSignOutAllDevices, hidden, text];
27700	}
27701
27702	class DeviceSessionsSignOutAllWrapper extends SvelteComponent {
27703		constructor(options) {
27704			super();
27705
27706			init(this, options, instance$m, create_fragment$m, safe_not_equal, {
27707				onSignOutAllDevices: 0,
27708				hidden: 1,
27709				text: 2
27710			});
27711		}
27712	}
27713
27714	const signOutOfAllDevices = async (form, formState, formActions) => {
27715	    const success = await signOutDevices(form, formState, formActions);
27716	    if (success) {
27717	        console.log("Successfully signed out of all devices.");
27718	        return loadDeviceSessions(form, formState, formActions);
27719	    }
27720	    else {
27721	        console.error("Failed to sign out of all devices.");
27722	    }
27723	};
27724	const signOutDevices = async (form, _, formActions) => {
27725	    try {
27726	        const response = await request(`zephr/public/sessions/v1/sessions?except-current`, {
27727	            method: "DELETE"
27728	        }, formActions, null, true);
27729	        return response.status === 200;
27730	    }
27731	    catch (error) {
27732	        console.error("Error occurred while signing out devices:", error);
27733	        return false;
27734	    }
27735	};
27736
27737	const deviceSessionsSignOutAll = {
27738	    matches: (sectionElement) => sectionElement.type === elementTypes.SIGN_OUT_ALL_OTHER_DEVICES,
27739	    create: (form, formState, formActions, elementConfig) => ({
27740	        component: DeviceSessionsSignOutAllWrapper,
27741	        props: {
27742	            hidden: formState.availableDeviceSessions?.length <= 1,
27743	            text: elementConfig.text,
27744	            onSignOutAllDevices: () => {
27745	                logDataLayerEvent(form, 'zephr_form_sign_out_all_devices', null);
27746	                void signOutOfAllDevices(form, formState, formActions);
27747	            }
27748	        }
27749	    })
27750	};
27751
27752	/* src/components/elements/billingHistory/BillingHistory.svelte generated by Svelte v4.2.12 */
27753
27754	function get_each_context$7(ctx, list, i) {
27755		const child_ctx = ctx.slice();
27756		child_ctx[5] = list[i];
27757		return child_ctx;
27758	}
27759
27760	// (30:10) {#if e.subtotal}
27761	function create_if_block_1$c(ctx) {
27762		let t0_value = /*e*/ ctx[5].currency + "";
27763		let t0;
27764		let t1;
27765		let t2_value = /*e*/ ctx[5].subtotal + "";
27766		let t2;
27767		let t3;
27768		let if_block_anchor;
27769		let if_block = /*e*/ ctx[5].taxes && create_if_block_2$8(ctx);
27770
27771		return {
27772			c() {
27773				t0 = text(t0_value);
27774				t1 = space();
27775				t2 = text(t2_value);
27776				t3 = space();
27777				if (if_block) if_block.c();
27778				if_block_anchor = empty();
27779			},
27780			m(target, anchor) {
27781				insert(target, t0, anchor);
27782				insert(target, t1, anchor);
27783				insert(target, t2, anchor);
27784				insert(target, t3, anchor);
27785				if (if_block) if_block.m(target, anchor);
27786				insert(target, if_block_anchor, anchor);
27787			},
27788			p(ctx, dirty) {
27789				if (dirty & /*historyItems*/ 1 && t0_value !== (t0_value = /*e*/ ctx[5].currency + "")) set_data(t0, t0_value);
27790				if (dirty & /*historyItems*/ 1 && t2_value !== (t2_value = /*e*/ ctx[5].subtotal + "")) set_data(t2, t2_value);
27791
27792				if (/*e*/ ctx[5].taxes) {
27793					if (if_block) {
27794						if_block.p(ctx, dirty);
27795					} else {
27796						if_block = create_if_block_2$8(ctx);
27797						if_block.c();
27798						if_block.m(if_block_anchor.parentNode, if_block_anchor);
27799					}
27800				} else if (if_block) {
27801					if_block.d(1);
27802					if_block = null;
27803				}
27804			},
27805			d(detaching) {
27806				if (detaching) {
27807					detach(t0);
27808					detach(t1);
27809					detach(t2);
27810					detach(t3);
27811					detach(if_block_anchor);
27812				}
27813
27814				if (if_block) if_block.d(detaching);
27815			}
27816		};
27817	}
27818
27819	// (32:12) {#if e.taxes}
27820	function create_if_block_2$8(ctx) {
27821		let span;
27822		let t_value = ` ${/*e*/ ctx[5].taxes}` + "";
27823		let t;
27824
27825		return {
27826			c() {
27827				span = element("span");
27828				t = text(t_value);
27829				attr(span, "class", "taxes svelte-7sscau");
27830			},
27831			m(target, anchor) {
27832				insert(target, span, anchor);
27833				append(span, t);
27834			},
27835			p(ctx, dirty) {
27836				if (dirty & /*historyItems*/ 1 && t_value !== (t_value = ` ${/*e*/ ctx[5].taxes}` + "")) set_data(t, t_value);
27837			},
27838			d(detaching) {
27839				if (detaching) {
27840					detach(span);
27841				}
27842			}
27843		};
27844	}
27845
27846	// (38:10) {#if e.total}
27847	function create_if_block$g(ctx) {
27848		let t0_value = /*e*/ ctx[5].currency + "";
27849		let t0;
27850		let t1;
27851		let t2_value = /*e*/ ctx[5].total + "";
27852		let t2;
27853
27854		return {
27855			c() {
27856				t0 = text(t0_value);
27857				t1 = space();
27858				t2 = text(t2_value);
27859			},
27860			m(target, anchor) {
27861				insert(target, t0, anchor);
27862				insert(target, t1, anchor);
27863				insert(target, t2, anchor);
27864			},
27865			p(ctx, dirty) {
27866				if (dirty & /*historyItems*/ 1 && t0_value !== (t0_value = /*e*/ ctx[5].currency + "")) set_data(t0, t0_value);
27867				if (dirty & /*historyItems*/ 1 && t2_value !== (t2_value = /*e*/ ctx[5].total + "")) set_data(t2, t2_value);
27868			},
27869			d(detaching) {
27870				if (detaching) {
27871					detach(t0);
27872					detach(t1);
27873					detach(t2);
27874				}
27875			}
27876		};
27877	}
27878
27879	// (25:4) {#each historyItems ?? [] as e}
27880	function create_each_block$7(ctx) {
27881		let div4;
27882		let div0;
27883		let t0_value = /*e*/ ctx[5].date + "";
27884		let t0;
27885		let t1;
27886		let div1;
27887		let t2_value = /*e*/ ctx[5].period + "";
27888		let t2;
27889		let t3;
27890		let div2;
27891		let t4;
27892		let div3;
27893		let t5;
27894		let if_block0 = /*e*/ ctx[5].subtotal && create_if_block_1$c(ctx);
27895		let if_block1 = /*e*/ ctx[5].total && create_if_block$g(ctx);
27896
27897		return {
27898			c() {
27899				div4 = element("div");
27900				div0 = element("div");
27901				t0 = text(t0_value);
27902				t1 = space();
27903				div1 = element("div");
27904				t2 = text(t2_value);
27905				t3 = space();
27906				div2 = element("div");
27907				if (if_block0) if_block0.c();
27908				t4 = space();
27909				div3 = element("div");
27910				if (if_block1) if_block1.c();
27911				t5 = space();
27912				attr(div0, "class", "svelte-7sscau");
27913				attr(div1, "class", "svelte-7sscau");
27914				attr(div2, "class", "svelte-7sscau");
27915				attr(div3, "class", "svelte-7sscau");
27916				attr(div4, "class", "table-row svelte-7sscau");
27917			},
27918			m(target, anchor) {
27919				insert(target, div4, anchor);
27920				append(div4, div0);
27921				append(div0, t0);
27922				append(div4, t1);
27923				append(div4, div1);
27924				append(div1, t2);
27925				append(div4, t3);
27926				append(div4, div2);
27927				if (if_block0) if_block0.m(div2, null);
27928				append(div4, t4);
27929				append(div4, div3);
27930				if (if_block1) if_block1.m(div3, null);
27931				append(div4, t5);
27932			},
27933			p(ctx, dirty) {
27934				if (dirty & /*historyItems*/ 1 && t0_value !== (t0_value = /*e*/ ctx[5].date + "")) set_data(t0, t0_value);
27935				if (dirty & /*historyItems*/ 1 && t2_value !== (t2_value = /*e*/ ctx[5].period + "")) set_data(t2, t2_value);
27936
27937				if (/*e*/ ctx[5].subtotal) {
27938					if (if_block0) {
27939						if_block0.p(ctx, dirty);
27940					} else {
27941						if_block0 = create_if_block_1$c(ctx);
27942						if_block0.c();
27943						if_block0.m(div2, null);
27944					}
27945				} else if (if_block0) {
27946					if_block0.d(1);
27947					if_block0 = null;
27948				}
27949
27950				if (/*e*/ ctx[5].total) {
27951					if (if_block1) {
27952						if_block1.p(ctx, dirty);
27953					} else {
27954						if_block1 = create_if_block$g(ctx);
27955						if_block1.c();
27956						if_block1.m(div3, null);
27957					}
27958				} else if (if_block1) {
27959					if_block1.d(1);
27960					if_block1 = null;
27961				}
27962			},
27963			d(detaching) {
27964				if (detaching) {
27965					detach(div4);
27966				}
27967
27968				if (if_block0) if_block0.d();
27969				if (if_block1) if_block1.d();
27970			}
27971		};
27972	}
27973
27974	function create_fragment$l(ctx) {
27975		let div6;
27976		let div5;
27977		let div4;
27978		let div0;
27979		let t0;
27980		let t1;
27981		let div1;
27982		let t2;
27983		let t3;
27984		let div2;
27985		let t4;
27986		let t5;
27987		let div3;
27988		let t6;
27989		let t7;
27990		let each_value = ensure_array_like(/*historyItems*/ ctx[0] ?? []);
27991		let each_blocks = [];
27992
27993		for (let i = 0; i < each_value.length; i += 1) {
27994			each_blocks[i] = create_each_block$7(get_each_context$7(ctx, each_value, i));
27995		}
27996
27997		return {
27998			c() {
27999				div6 = element("div");
28000				div5 = element("div");
28001				div4 = element("div");
28002				div0 = element("div");
28003				t0 = text(/*dateLabel*/ ctx[1]);
28004				t1 = space();
28005				div1 = element("div");
28006				t2 = text(/*periodLabel*/ ctx[2]);
28007				t3 = space();
28008				div2 = element("div");
28009				t4 = text(/*subtotalLabel*/ ctx[3]);
28010				t5 = space();
28011				div3 = element("div");
28012				t6 = text(/*totalLabel*/ ctx[4]);
28013				t7 = space();
28014
28015				for (let i = 0; i < each_blocks.length; i += 1) {
28016					each_blocks[i].c();
28017				}
28018
28019				attr(div0, "class", "svelte-7sscau");
28020				attr(div1, "class", "svelte-7sscau");
28021				attr(div2, "class", "svelte-7sscau");
28022				attr(div3, "class", "svelte-7sscau");
28023				attr(div4, "class", "table-head svelte-7sscau");
28024				attr(div5, "class", "table svelte-7sscau");
28025				attr(div6, "class", "billing-history-container");
28026			},
28027			m(target, anchor) {
28028				insert(target, div6, anchor);
28029				append(div6, div5);
28030				append(div5, div4);
28031				append(div4, div0);
28032				append(div0, t0);
28033				append(div4, t1);
28034				append(div4, div1);
28035				append(div1, t2);
28036				append(div4, t3);
28037				append(div4, div2);
28038				append(div2, t4);
28039				append(div4, t5);
28040				append(div4, div3);
28041				append(div3, t6);
28042				append(div5, t7);
28043
28044				for (let i = 0; i < each_blocks.length; i += 1) {
28045					if (each_blocks[i]) {
28046						each_blocks[i].m(div5, null);
28047					}
28048				}
28049			},
28050			p(ctx, [dirty]) {
28051				if (dirty & /*dateLabel*/ 2) set_data(t0, /*dateLabel*/ ctx[1]);
28052				if (dirty & /*periodLabel*/ 4) set_data(t2, /*periodLabel*/ ctx[2]);
28053				if (dirty & /*subtotalLabel*/ 8) set_data(t4, /*subtotalLabel*/ ctx[3]);
28054				if (dirty & /*totalLabel*/ 16) set_data(t6, /*totalLabel*/ ctx[4]);
28055
28056				if (dirty & /*historyItems*/ 1) {
28057					each_value = ensure_array_like(/*historyItems*/ ctx[0] ?? []);
28058					let i;
28059
28060					for (i = 0; i < each_value.length; i += 1) {
28061						const child_ctx = get_each_context$7(ctx, each_value, i);
28062
28063						if (each_blocks[i]) {
28064							each_blocks[i].p(child_ctx, dirty);
28065						} else {
28066							each_blocks[i] = create_each_block$7(child_ctx);
28067							each_blocks[i].c();
28068							each_blocks[i].m(div5, null);
28069						}
28070					}
28071
28072					for (; i < each_blocks.length; i += 1) {
28073						each_blocks[i].d(1);
28074					}
28075
28076					each_blocks.length = each_value.length;
28077				}
28078			},
28079			i: noop,
28080			o: noop,
28081			d(detaching) {
28082				if (detaching) {
28083					detach(div6);
28084				}
28085
28086				destroy_each(each_blocks, detaching);
28087			}
28088		};
28089	}
28090
28091	function instance$l($$self, $$props, $$invalidate) {
28092		let { historyItems } = $$props;
28093		let { dateLabel } = $$props;
28094		let { periodLabel } = $$props;
28095		let { subtotalLabel } = $$props;
28096		let { totalLabel } = $$props;
28097
28098		$$self.$$set = $$props => {
28099			if ('historyItems' in $$props) $$invalidate(0, historyItems = $$props.historyItems);
28100			if ('dateLabel' in $$props) $$invalidate(1, dateLabel = $$props.dateLabel);
28101			if ('periodLabel' in $$props) $$invalidate(2, periodLabel = $$props.periodLabel);
28102			if ('subtotalLabel' in $$props) $$invalidate(3, subtotalLabel = $$props.subtotalLabel);
28103			if ('totalLabel' in $$props) $$invalidate(4, totalLabel = $$props.totalLabel);
28104		};
28105
28106		return [historyItems, dateLabel, periodLabel, subtotalLabel, totalLabel];
28107	}
28108
28109	class BillingHistory extends SvelteComponent {
28110		constructor(options) {
28111			super();
28112
28113			init(this, options, instance$l, create_fragment$l, safe_not_equal, {
28114				historyItems: 0,
28115				dateLabel: 1,
28116				periodLabel: 2,
28117				subtotalLabel: 3,
28118				totalLabel: 4
28119			});
28120		}
28121	}
28122
28123	const billingHistoryFactory = {
28124	    matches: (sectionElement) => sectionElement.type === elementTypes.BILLING_HISTORY,
28125	    create: (form, formState, __) => ({
28126	        component: BillingHistory,
28127	        props: {
28128	            historyItems: formState.selectedSubscription?.transactionHistory,
28129	            dateLabel: resolveLanguagePackKeyTyped(form, 'forms.billing.history.date', 'Date'),
28130	            periodLabel: resolveLanguagePackKeyTyped(form, 'forms.billing.history.period', 'Period'),
28131	            subtotalLabel: resolveLanguagePackKeyTyped(form, 'forms.billing.history.subtotal', 'Subtotal'),
28132	            totalLabel: resolveLanguagePackKeyTyped(form, 'forms.billing.history.total', 'Total'),
28133	        }
28134	    })
28135	};
28136
28137	/* src/components/elements/buttonGroup/ButtonGroup.svelte generated by Svelte v4.2.12 */
28138
28139	function create_if_block$f(ctx) {
28140		let button;
28141		let t;
28142		let mounted;
28143		let dispose;
28144
28145		return {
28146			c() {
28147				button = element("button");
28148				t = text(/*backText*/ ctx[1]);
28149				attr(button, "class", "zephr-form-back-button svelte-5uv9ua");
28150				attr(button, "type", "submit");
28151			},
28152			m(target, anchor) {
28153				insert(target, button, anchor);
28154				append(button, t);
28155
28156				if (!mounted) {
28157					dispose = listen(button, "click", prevent_default(function () {
28158						if (is_function(/*onBack*/ ctx[3])) /*onBack*/ ctx[3].apply(this, arguments);
28159					}));
28160
28161					mounted = true;
28162				}
28163			},
28164			p(new_ctx, dirty) {
28165				ctx = new_ctx;
28166				if (dirty & /*backText*/ 2) set_data(t, /*backText*/ ctx[1]);
28167			},
28168			d(detaching) {
28169				if (detaching) {
28170					detach(button);
28171				}
28172
28173				mounted = false;
28174				dispose();
28175			}
28176		};
28177	}
28178
28179	function create_fragment$k(ctx) {
28180		let div;
28181		let t0;
28182		let button;
28183		let t1;
28184		let mounted;
28185		let dispose;
28186		let if_block = /*backEnabled*/ ctx[2] && create_if_block$f(ctx);
28187
28188		return {
28189			c() {
28190				div = element("div");
28191				if (if_block) if_block.c();
28192				t0 = space();
28193				button = element("button");
28194				t1 = text(/*continueText*/ ctx[0]);
28195				attr(button, "class", "zephr-form-continue-button svelte-5uv9ua");
28196				attr(button, "type", "submit");
28197				attr(div, "class", "zephr-form-button-group zephr-form-max-width svelte-5uv9ua");
28198			},
28199			m(target, anchor) {
28200				insert(target, div, anchor);
28201				if (if_block) if_block.m(div, null);
28202				append(div, t0);
28203				append(div, button);
28204				append(button, t1);
28205
28206				if (!mounted) {
28207					dispose = listen(button, "click", prevent_default(function () {
28208						if (is_function(/*onClick*/ ctx[4])) /*onClick*/ ctx[4].apply(this, arguments);
28209					}));
28210
28211					mounted = true;
28212				}
28213			},
28214			p(new_ctx, [dirty]) {
28215				ctx = new_ctx;
28216
28217				if (/*backEnabled*/ ctx[2]) {
28218					if (if_block) {
28219						if_block.p(ctx, dirty);
28220					} else {
28221						if_block = create_if_block$f(ctx);
28222						if_block.c();
28223						if_block.m(div, t0);
28224					}
28225				} else if (if_block) {
28226					if_block.d(1);
28227					if_block = null;
28228				}
28229
28230				if (dirty & /*continueText*/ 1) set_data(t1, /*continueText*/ ctx[0]);
28231			},
28232			i: noop,
28233			o: noop,
28234			d(detaching) {
28235				if (detaching) {
28236					detach(div);
28237				}
28238
28239				if (if_block) if_block.d();
28240				mounted = false;
28241				dispose();
28242			}
28243		};
28244	}
28245
28246	function instance$k($$self, $$props, $$invalidate) {
28247		let { continueText } = $$props;
28248		let { backText } = $$props;
28249		let { backEnabled } = $$props;
28250		let { onBack } = $$props;
28251		let { onClick } = $$props;
28252
28253		$$self.$$set = $$props => {
28254			if ('continueText' in $$props) $$invalidate(0, continueText = $$props.continueText);
28255			if ('backText' in $$props) $$invalidate(1, backText = $$props.backText);
28256			if ('backEnabled' in $$props) $$invalidate(2, backEnabled = $$props.backEnabled);
28257			if ('onBack' in $$props) $$invalidate(3, onBack = $$props.onBack);
28258			if ('onClick' in $$props) $$invalidate(4, onClick = $$props.onClick);
28259		};
28260
28261		return [continueText, backText, backEnabled, onBack, onClick];
28262	}
28263
28264	class ButtonGroup extends SvelteComponent {
28265		constructor(options) {
28266			super();
28267
28268			init(this, options, instance$k, create_fragment$k, safe_not_equal, {
28269				continueText: 0,
28270				backText: 1,
28271				backEnabled: 2,
28272				onBack: 3,
28273				onClick: 4
28274			});
28275		}
28276	}
28277
28278	const factory$4 = {
28279	    matches: (sectionElement) => sectionElement.type === elementTypes.BUTTON_GROUP,
28280	    create: (form, formState, formActions, elementConfig) => ({
28281	        component: ButtonGroup,
28282	        props: {
28283	            continueText: elementConfig.continueText,
28284	            backText: elementConfig.backText,
28285	            backEnabled: elementConfig.backEnabled,
28286	            onClick: () => {
28287	                logDataLayerEvent(form, 'zephr_form_button_press', {
28288	                    sectionId: formState.currentSection.type,
28289	                    buttonType: 'CONTINUE'
28290	                });
28291	                if (elementConfig.isCancel) {
28292	                    formActions.updateFormState({
28293	                        confirmCancel: true,
28294	                    });
28295	                }
28296	                formActions.updateFormState({
28297	                    isExternalReferrer: false,
28298	                });
28299	                formActions.attemptCompleteSection();
28300	            },
28301	            onBack: () => {
28302	                logDataLayerEvent(form, 'zephr_form_button_press', {
28303	                    sectionId: formState.currentSection.type,
28304	                    buttonType: 'BACK'
28305	                });
28306	                if (elementConfig.backToURL) {
28307	                    window.location.pathname = elementConfig.backURL;
28308	                }
28309	                else if (formState.isExternalReferrer) {
28310	                    window.history.back();
28311	                }
28312	                else {
28313	                    formActions.onEvent(elementConfig.event);
28314	                }
28315	            }
28316	        }
28317	    })
28318	};
28319
28320	/* src/components/elements/linkButton/LinkButton.svelte generated by Svelte v4.2.12 */
28321
28322	function create_fragment$j(ctx) {
28323		let a;
28324		let t;
28325		let mounted;
28326		let dispose;
28327
28328		return {
28329			c() {
28330				a = element("a");
28331				t = text(/*text*/ ctx[0]);
28332				attr(a, "class", "zephr-form-button zephr-form-button-top-margin svelte-1uaz0r");
28333				attr(a, "href", /*href*/ ctx[1]);
28334			},
28335			m(target, anchor) {
28336				insert(target, a, anchor);
28337				append(a, t);
28338
28339				if (!mounted) {
28340					dispose = listen(a, "click", function () {
28341						if (is_function(/*onClick*/ ctx[2])) /*onClick*/ ctx[2].apply(this, arguments);
28342					});
28343
28344					mounted = true;
28345				}
28346			},
28347			p(new_ctx, [dirty]) {
28348				ctx = new_ctx;
28349				if (dirty & /*text*/ 1) set_data(t, /*text*/ ctx[0]);
28350
28351				if (dirty & /*href*/ 2) {
28352					attr(a, "href", /*href*/ ctx[1]);
28353				}
28354			},
28355			i: noop,
28356			o: noop,
28357			d(detaching) {
28358				if (detaching) {
28359					detach(a);
28360				}
28361
28362				mounted = false;
28363				dispose();
28364			}
28365		};
28366	}
28367
28368	function instance$j($$self, $$props, $$invalidate) {
28369		let { text } = $$props;
28370		let { href } = $$props;
28371
28372		let { onClick = () => {
28373			
28374		} } = $$props;
28375
28376		$$self.$$set = $$props => {
28377			if ('text' in $$props) $$invalidate(0, text = $$props.text);
28378			if ('href' in $$props) $$invalidate(1, href = $$props.href);
28379			if ('onClick' in $$props) $$invalidate(2, onClick = $$props.onClick);
28380		};
28381
28382		return [text, href, onClick];
28383	}
28384
28385	class LinkButton extends SvelteComponent {
28386		constructor(options) {
28387			super();
28388			init(this, options, instance$j, create_fragment$j, safe_not_equal, { text: 0, href: 1, onClick: 2 });
28389		}
28390	}
28391
28392	const factory$3 = {
28393	    matches: (sectionElement) => sectionElement.type === elementTypes.LINK_BUTTON,
28394	    create: (form, formState, formActions, elementConfig) => ({
28395	        component: LinkButton,
28396	        props: {
28397	            text: elementConfig.text,
28398	            href: elementConfig.href,
28399	            onClick: () => {
28400	                logDataLayerEvent(form, 'zephr_form_button_press', {
28401	                    sectionId: formState.currentSection.type,
28402	                    buttonType: 'LINK_BUTTON'
28403	                });
28404	            },
28405	        },
28406	    })
28407	};
28408
28409	/* src/components/elements/recipientName/RecipientName.svelte generated by Svelte v4.2.12 */
28410
28411	function create_if_block_1$b(ctx) {
28412		let div;
28413		let t;
28414
28415		return {
28416			c() {
28417				div = element("div");
28418				t = text(/*firstNameError*/ ctx[3]);
28419				attr(div, "class", "error-text svelte-hvl7z2");
28420			},
28421			m(target, anchor) {
28422				insert(target, div, anchor);
28423				append(div, t);
28424			},
28425			p(ctx, dirty) {
28426				if (dirty & /*firstNameError*/ 8) set_data(t, /*firstNameError*/ ctx[3]);
28427			},
28428			d(detaching) {
28429				if (detaching) {
28430					detach(div);
28431				}
28432			}
28433		};
28434	}
28435
28436	// (71:4) {#if lastNameError}
28437	function create_if_block$e(ctx) {
28438		let div;
28439		let t;
28440
28441		return {
28442			c() {
28443				div = element("div");
28444				t = text(/*lastNameError*/ ctx[4]);
28445				attr(div, "class", "error-text svelte-hvl7z2");
28446			},
28447			m(target, anchor) {
28448				insert(target, div, anchor);
28449				append(div, t);
28450			},
28451			p(ctx, dirty) {
28452				if (dirty & /*lastNameError*/ 16) set_data(t, /*lastNameError*/ ctx[4]);
28453			},
28454			d(detaching) {
28455				if (detaching) {
28456					detach(div);
28457				}
28458			}
28459		};
28460	}
28461
28462	function create_fragment$i(ctx) {
28463		let div2;
28464		let div0;
28465		let label0;
28466		let t0_value = /*config*/ ctx[0].firstNameLabel + "";
28467		let t0;
28468		let t1;
28469		let input0;
28470		let input0_placeholder_value;
28471		let t2;
28472		let t3;
28473		let div1;
28474		let label1;
28475		let t4_value = /*config*/ ctx[0].lastNameLabel + "";
28476		let t4;
28477		let t5;
28478		let input1;
28479		let input1_placeholder_value;
28480		let t6;
28481		let mounted;
28482		let dispose;
28483		let if_block0 = /*firstNameError*/ ctx[3] && create_if_block_1$b(ctx);
28484		let if_block1 = /*lastNameError*/ ctx[4] && create_if_block$e(ctx);
28485
28486		return {
28487			c() {
28488				div2 = element("div");
28489				div0 = element("div");
28490				label0 = element("label");
28491				t0 = text(t0_value);
28492				t1 = space();
28493				input0 = element("input");
28494				t2 = space();
28495				if (if_block0) if_block0.c();
28496				t3 = space();
28497				div1 = element("div");
28498				label1 = element("label");
28499				t4 = text(t4_value);
28500				t5 = space();
28501				input1 = element("input");
28502				t6 = space();
28503				if (if_block1) if_block1.c();
28504				attr(label0, "for", "firstName");
28505				attr(label0, "class", "svelte-hvl7z2");
28506				attr(input0, "id", "firstName");
28507				attr(input0, "type", "text");
28508				input0.required = true;
28509				attr(input0, "placeholder", input0_placeholder_value = /*config*/ ctx[0].firstNamePlaceholder);
28510				attr(input0, "class", "svelte-hvl7z2");
28511				toggle_class(input0, "error", !!/*firstNameError*/ ctx[3]);
28512				attr(div0, "class", "field svelte-hvl7z2");
28513				attr(label1, "for", "lastName");
28514				attr(label1, "class", "svelte-hvl7z2");
28515				attr(input1, "id", "lastName");
28516				attr(input1, "type", "text");
28517				input1.required = true;
28518				attr(input1, "placeholder", input1_placeholder_value = /*config*/ ctx[0].lastNamePlaceholder);
28519				attr(input1, "class", "svelte-hvl7z2");
28520				toggle_class(input1, "error", !!/*lastNameError*/ ctx[4]);
28521				attr(div1, "class", "field svelte-hvl7z2");
28522				attr(div2, "class", "recipient-name-section svelte-hvl7z2");
28523			},
28524			m(target, anchor) {
28525				insert(target, div2, anchor);
28526				append(div2, div0);
28527				append(div0, label0);
28528				append(label0, t0);
28529				append(div0, t1);
28530				append(div0, input0);
28531				set_input_value(input0, /*firstName*/ ctx[1]);
28532				append(div0, t2);
28533				if (if_block0) if_block0.m(div0, null);
28534				append(div2, t3);
28535				append(div2, div1);
28536				append(div1, label1);
28537				append(label1, t4);
28538				append(div1, t5);
28539				append(div1, input1);
28540				set_input_value(input1, /*lastName*/ ctx[2]);
28541				append(div1, t6);
28542				if (if_block1) if_block1.m(div1, null);
28543
28544				if (!mounted) {
28545					dispose = [
28546						listen(input0, "input", /*input0_input_handler*/ ctx[8]),
28547						listen(input0, "input", /*updateGiftRecipient*/ ctx[5]),
28548						listen(input1, "input", /*input1_input_handler*/ ctx[9]),
28549						listen(input1, "input", /*updateGiftRecipient*/ ctx[5])
28550					];
28551
28552					mounted = true;
28553				}
28554			},
28555			p(ctx, [dirty]) {
28556				if (dirty & /*config*/ 1 && t0_value !== (t0_value = /*config*/ ctx[0].firstNameLabel + "")) set_data(t0, t0_value);
28557
28558				if (dirty & /*config*/ 1 && input0_placeholder_value !== (input0_placeholder_value = /*config*/ ctx[0].firstNamePlaceholder)) {
28559					attr(input0, "placeholder", input0_placeholder_value);
28560				}
28561
28562				if (dirty & /*firstName*/ 2 && input0.value !== /*firstName*/ ctx[1]) {
28563					set_input_value(input0, /*firstName*/ ctx[1]);
28564				}
28565
28566				if (dirty & /*firstNameError*/ 8) {
28567					toggle_class(input0, "error", !!/*firstNameError*/ ctx[3]);
28568				}
28569
28570				if (/*firstNameError*/ ctx[3]) {
28571					if (if_block0) {
28572						if_block0.p(ctx, dirty);
28573					} else {
28574						if_block0 = create_if_block_1$b(ctx);
28575						if_block0.c();
28576						if_block0.m(div0, null);
28577					}
28578				} else if (if_block0) {
28579					if_block0.d(1);
28580					if_block0 = null;
28581				}
28582
28583				if (dirty & /*config*/ 1 && t4_value !== (t4_value = /*config*/ ctx[0].lastNameLabel + "")) set_data(t4, t4_value);
28584
28585				if (dirty & /*config*/ 1 && input1_placeholder_value !== (input1_placeholder_value = /*config*/ ctx[0].lastNamePlaceholder)) {
28586					attr(input1, "placeholder", input1_placeholder_value);
28587				}
28588
28589				if (dirty & /*lastName*/ 4 && input1.value !== /*lastName*/ ctx[2]) {
28590					set_input_value(input1, /*lastName*/ ctx[2]);
28591				}
28592
28593				if (dirty & /*lastNameError*/ 16) {
28594					toggle_class(input1, "error", !!/*lastNameError*/ ctx[4]);
28595				}
28596
28597				if (/*lastNameError*/ ctx[4]) {
28598					if (if_block1) {
28599						if_block1.p(ctx, dirty);
28600					} else {
28601						if_block1 = create_if_block$e(ctx);
28602						if_block1.c();
28603						if_block1.m(div1, null);
28604					}
28605				} else if (if_block1) {
28606					if_block1.d(1);
28607					if_block1 = null;
28608				}
28609			},
28610			i: noop,
28611			o: noop,
28612			d(detaching) {
28613				if (detaching) {
28614					detach(div2);
28615				}
28616
28617				if (if_block0) if_block0.d();
28618				if (if_block1) if_block1.d();
28619				mounted = false;
28620				run_all(dispose);
28621			}
28622		};
28623	}
28624
28625	function instance$i($$self, $$props, $$invalidate) {
28626		let { formState } = $$props;
28627		let { formActions } = $$props;
28628		let { config } = $$props;
28629		const dispatch = createEventDispatcher();
28630		let firstName = formState.giftRecipient?.firstName || '';
28631		let lastName = formState.giftRecipient?.lastName || '';
28632		let firstNameError = '';
28633		let lastNameError = '';
28634
28635		// Update form state when input changes
28636		const updateGiftRecipient = () => {
28637			const updatedGiftRecipient = {
28638				...formState.giftRecipient || {},
28639				firstName,
28640				lastName
28641			};
28642
28643			formActions.updateFormState({ giftRecipient: updatedGiftRecipient });
28644			validateForm();
28645		};
28646
28647		const validateForm = () => {
28648			const hasValidFirstName = !!firstName.trim();
28649			const hasValidLastName = !!lastName.trim();
28650
28651			if (!hasValidFirstName) {
28652				$$invalidate(3, firstNameError = 'First name is required');
28653			} else {
28654				$$invalidate(3, firstNameError = '');
28655			}
28656
28657			if (!hasValidLastName) {
28658				$$invalidate(4, lastNameError = 'Last name is required');
28659			} else {
28660				$$invalidate(4, lastNameError = '');
28661			}
28662
28663			// Dispatch event for form validity
28664			dispatch('validity', {
28665				isValid: hasValidFirstName && hasValidLastName
28666			});
28667		};
28668
28669		function input0_input_handler() {
28670			firstName = this.value;
28671			$$invalidate(1, firstName);
28672		}
28673
28674		function input1_input_handler() {
28675			lastName = this.value;
28676			$$invalidate(2, lastName);
28677		}
28678
28679		$$self.$$set = $$props => {
28680			if ('formState' in $$props) $$invalidate(6, formState = $$props.formState);
28681			if ('formActions' in $$props) $$invalidate(7, formActions = $$props.formActions);
28682			if ('config' in $$props) $$invalidate(0, config = $$props.config);
28683		};
28684
28685		return [
28686			config,
28687			firstName,
28688			lastName,
28689			firstNameError,
28690			lastNameError,
28691			updateGiftRecipient,
28692			formState,
28693			formActions,
28694			input0_input_handler,
28695			input1_input_handler
28696		];
28697	}
28698
28699	class RecipientName extends SvelteComponent {
28700		constructor(options) {
28701			super();
28702			init(this, options, instance$i, create_fragment$i, safe_not_equal, { formState: 6, formActions: 7, config: 0 });
28703		}
28704	}
28705
28706	const recipientNameFactory = {
28707	    matches: (sectionElement) => sectionElement.type === elementTypes.RECIPIENT_NAME,
28708	    create: (form, formState, formActions, elementConfig) => {
28709	        // Resolve all labels through language pack service
28710	        const resolvedConfig = {
28711	            firstNameLabel: resolveLanguagePackKeyTyped(form, 'forms.gift.recipient-first-name', elementConfig.firstNameLabel),
28712	            lastNameLabel: resolveLanguagePackKeyTyped(form, 'forms.gift.recipient-last-name', elementConfig.lastNameLabel),
28713	            firstNamePlaceholder: resolveLanguagePackKeyTyped(form, 'forms.gift.first-name-placeholder', elementConfig.firstNamePlaceholder),
28714	            lastNamePlaceholder: resolveLanguagePackKeyTyped(form, 'forms.gift.last-name-placeholder', elementConfig.lastNamePlaceholder),
28715	        };
28716	        // Determine if the input is valid
28717	        const giftRecipient = (formState.giftRecipient || {});
28718	        const hasValidFirstName = !!giftRecipient.firstName?.trim();
28719	        const hasValidLastName = !!giftRecipient.lastName?.trim();
28720	        const isValid = hasValidFirstName && hasValidLastName;
28721	        return {
28722	            component: RecipientName,
28723	            props: {
28724	                config: resolvedConfig,
28725	                form,
28726	                formState,
28727	                formActions,
28728	            },
28729	            isValid
28730	        };
28731	    }
28732	};
28733
28734	/* src/components/elements/recipientEmail/RecipientEmail.svelte generated by Svelte v4.2.12 */
28735
28736	function create_if_block$d(ctx) {
28737		let div;
28738		let t;
28739
28740		return {
28741			c() {
28742				div = element("div");
28743				t = text(/*emailError*/ ctx[2]);
28744				attr(div, "class", "error-text svelte-1odylgp");
28745			},
28746			m(target, anchor) {
28747				insert(target, div, anchor);
28748				append(div, t);
28749			},
28750			p(ctx, dirty) {
28751				if (dirty & /*emailError*/ 4) set_data(t, /*emailError*/ ctx[2]);
28752			},
28753			d(detaching) {
28754				if (detaching) {
28755					detach(div);
28756				}
28757			}
28758		};
28759	}
28760
28761	function create_fragment$h(ctx) {
28762		let div1;
28763		let div0;
28764		let label;
28765		let t0_value = /*config*/ ctx[0].emailLabel + "";
28766		let t0;
28767		let t1;
28768		let input;
28769		let input_placeholder_value;
28770		let t2;
28771		let mounted;
28772		let dispose;
28773		let if_block = /*emailError*/ ctx[2] && create_if_block$d(ctx);
28774
28775		return {
28776			c() {
28777				div1 = element("div");
28778				div0 = element("div");
28779				label = element("label");
28780				t0 = text(t0_value);
28781				t1 = space();
28782				input = element("input");
28783				t2 = space();
28784				if (if_block) if_block.c();
28785				attr(label, "for", "recipientEmail");
28786				attr(label, "class", "svelte-1odylgp");
28787				attr(input, "id", "recipientEmail");
28788				attr(input, "type", "email");
28789				input.required = true;
28790				attr(input, "placeholder", input_placeholder_value = /*config*/ ctx[0].emailPlaceholder);
28791				attr(input, "class", "svelte-1odylgp");
28792				toggle_class(input, "error", !!/*emailError*/ ctx[2]);
28793				attr(div0, "class", "field svelte-1odylgp");
28794				attr(div1, "class", "recipient-email-section svelte-1odylgp");
28795			},
28796			m(target, anchor) {
28797				insert(target, div1, anchor);
28798				append(div1, div0);
28799				append(div0, label);
28800				append(label, t0);
28801				append(div0, t1);
28802				append(div0, input);
28803				set_input_value(input, /*recipientEmail*/ ctx[1]);
28804				append(div0, t2);
28805				if (if_block) if_block.m(div0, null);
28806
28807				if (!mounted) {
28808					dispose = [
28809						listen(input, "input", /*input_input_handler*/ ctx[7]),
28810						listen(input, "input", /*updateGiftRecipient*/ ctx[3])
28811					];
28812
28813					mounted = true;
28814				}
28815			},
28816			p(ctx, [dirty]) {
28817				if (dirty & /*config*/ 1 && t0_value !== (t0_value = /*config*/ ctx[0].emailLabel + "")) set_data(t0, t0_value);
28818
28819				if (dirty & /*config*/ 1 && input_placeholder_value !== (input_placeholder_value = /*config*/ ctx[0].emailPlaceholder)) {
28820					attr(input, "placeholder", input_placeholder_value);
28821				}
28822
28823				if (dirty & /*recipientEmail*/ 2 && input.value !== /*recipientEmail*/ ctx[1]) {
28824					set_input_value(input, /*recipientEmail*/ ctx[1]);
28825				}
28826
28827				if (dirty & /*emailError*/ 4) {
28828					toggle_class(input, "error", !!/*emailError*/ ctx[2]);
28829				}
28830
28831				if (/*emailError*/ ctx[2]) {
28832					if (if_block) {
28833						if_block.p(ctx, dirty);
28834					} else {
28835						if_block = create_if_block$d(ctx);
28836						if_block.c();
28837						if_block.m(div0, null);
28838					}
28839				} else if (if_block) {
28840					if_block.d(1);
28841					if_block = null;
28842				}
28843			},
28844			i: noop,
28845			o: noop,
28846			d(detaching) {
28847				if (detaching) {
28848					detach(div1);
28849				}
28850
28851				if (if_block) if_block.d();
28852				mounted = false;
28853				run_all(dispose);
28854			}
28855		};
28856	}
28857
28858	function instance$h($$self, $$props, $$invalidate) {
28859		let { formState } = $$props;
28860		let { formActions } = $$props;
28861		let { config } = $$props;
28862		let { form } = $$props;
28863		const dispatch = createEventDispatcher();
28864		let recipientEmail = formState.giftRecipient?.email || '';
28865		let emailError = '';
28866
28867		// Update form state when input changes
28868		const updateGiftRecipient = () => {
28869			const updatedGiftRecipient = {
28870				...formState.giftRecipient || {},
28871				email: recipientEmail
28872			};
28873
28874			formActions.updateFormState({ giftRecipient: updatedGiftRecipient });
28875			validateForm();
28876		};
28877
28878		const validateForm = () => {
28879			const hasValidEmail = isValidEmail(recipientEmail);
28880
28881			if (recipientEmail && !hasValidEmail) {
28882				$$invalidate(2, emailError = resolveLanguagePackKeyTyped(form, 'forms.errors.email-invalid', 'Please enter a valid email address'));
28883			} else if (!recipientEmail) {
28884				$$invalidate(2, emailError = 'Recipient email is required');
28885			} else {
28886				$$invalidate(2, emailError = '');
28887			}
28888
28889			// Dispatch event for form validity
28890			dispatch('validity', { isValid: hasValidEmail });
28891		};
28892
28893		function input_input_handler() {
28894			recipientEmail = this.value;
28895			$$invalidate(1, recipientEmail);
28896		}
28897
28898		$$self.$$set = $$props => {
28899			if ('formState' in $$props) $$invalidate(4, formState = $$props.formState);
28900			if ('formActions' in $$props) $$invalidate(5, formActions = $$props.formActions);
28901			if ('config' in $$props) $$invalidate(0, config = $$props.config);
28902			if ('form' in $$props) $$invalidate(6, form = $$props.form);
28903		};
28904
28905		return [
28906			config,
28907			recipientEmail,
28908			emailError,
28909			updateGiftRecipient,
28910			formState,
28911			formActions,
28912			form,
28913			input_input_handler
28914		];
28915	}
28916
28917	class RecipientEmail extends SvelteComponent {
28918		constructor(options) {
28919			super();
28920
28921			init(this, options, instance$h, create_fragment$h, safe_not_equal, {
28922				formState: 4,
28923				formActions: 5,
28924				config: 0,
28925				form: 6
28926			});
28927		}
28928	}
28929
28930	const recipientEmailFactory = {
28931	    matches: (sectionElement) => sectionElement.type === elementTypes.RECIPIENT_EMAIL,
28932	    create: (form, formState, formActions, elementConfig) => {
28933	        // Resolve all labels through language pack service
28934	        const resolvedConfig = {
28935	            emailLabel: resolveLanguagePackKeyTyped(form, 'forms.gift.recipient-email', elementConfig.emailLabel),
28936	            emailPlaceholder: resolveLanguagePackKeyTyped(form, 'forms.gift.email-placeholder', elementConfig.emailPlaceholder),
28937	        };
28938	        // Determine if the input is valid
28939	        const giftRecipient = (formState.giftRecipient || {});
28940	        const hasValidEmail = isValidEmail(giftRecipient.email);
28941	        const isValid = hasValidEmail;
28942	        return {
28943	            component: RecipientEmail,
28944	            props: {
28945	                config: resolvedConfig,
28946	                form,
28947	                formState,
28948	                formActions,
28949	            },
28950	            isValid
28951	        };
28952	    }
28953	};
28954
28955	const countries = {
28956	    AF: "Afghanistan",
28957	    AL: "Albania",
28958	    DZ: "Algeria",
28959	    AX: "Åland Islands",
28960	    AS: "American Samoa",
28961	    AD: "Andorra",
28962	    AO: "Angola",
28963	    AI: "Anguilla",
28964	    AQ: "Antarctica",
28965	    AG: "Antigua and Barbuda",
28966	    AR: "Argentina",
28967	    AM: "Armenia",
28968	    AW: "Aruba",
28969	    AU: "Australia",
28970	    AT: "Austria",
28971	    AZ: "Azerbaijan",
28972	    BS: "Bahamas (the)",
28973	    BH: "Bahrain",
28974	    BD: "Bangladesh",
28975	    BB: "Barbados",
28976	    BY: "Belarus",
28977	    BE: "Belgium",
28978	    BZ: "Belize",
28979	    BJ: "Benin",
28980	    BM: "Bermuda",
28981	    BT: "Bhutan",
28982	    BO: "Bolivia (Plurinational State of)",
28983	    BQ: "Bonaire, Sint Eustatius and Saba",
28984	    BA: "Bosnia and Herzegovina",
28985	    BW: "Botswana",
28986	    BV: "Bouvet Island",
28987	    BR: "Brazil",
28988	    IO: "British Indian Ocean Territory (the)",
28989	    BN: "Brunei Darussalam",
28990	    BG: "Bulgaria",
28991	    BF: "Burkina Faso",
28992	    BI: "Burundi",
28993	    CV: "Cabo Verde",
28994	    KH: "Cambodia",
28995	    CM: "Cameroon",
28996	    CA: "Canada",
28997	    KY: "Cayman Islands (the)",
28998	    CF: "Central African Republic (the)",
28999	    TD: "Chad",
29000	    CL: "Chile",
29001	    CN: "China",
29002	    CX: "Christmas Island",
29003	    CC: "Cocos (Keeling) Islands (the)",
29004	    CO: "Colombia",
29005	    KM: "Comoros (the)",
29006	    CD: "Congo (the Democratic Republic of the)",
29007	    CG: "Congo (the)",
29008	    CK: "Cook Islands (the)",
29009	    CR: "Costa Rica",
29010	    CI: "Côte d'Ivoire",
29011	    HR: "Croatia",
29012	    CU: "Cuba",
29013	    CW: "Curaçao",
29014	    CY: "Cyprus",
29015	    CZ: "Czechia",
29016	    DK: "Denmark",
29017	    DJ: "Djibouti",
29018	    DM: "Dominica",
29019	    DO: "Dominican Republic (the)",
29020	    EC: "Ecuador",
29021	    EG: "Egypt",
29022	    SV: "El Salvador",
29023	    GQ: "Equatorial Guinea",
29024	    ER: "Eritrea",
29025	    EE: "Estonia",
29026	    SZ: "Eswatini",
29027	    ET: "Ethiopia",
29028	    FK: "Falkland Islands (the) [Malvinas]",
29029	    FO: "Faroe Islands (the)",
29030	    FJ: "Fiji",
29031	    FI: "Finland",
29032	    FR: "France",
29033	    GF: "French Guiana",
29034	    PF: "French Polynesia",
29035	    TF: "French Southern Territories (the)",
29036	    GA: "Gabon",
29037	    GM: "Gambia (the)",
29038	    GE: "Georgia",
29039	    DE: "Germany",
29040	    GH: "Ghana",
29041	    GI: "Gibraltar",
29042	    GR: "Greece",
29043	    GL: "Greenland",
29044	    GD: "Grenada",
29045	    GP: "Guadeloupe",
29046	    GU: "Guam",
29047	    GT: "Guatemala",
29048	    GG: "Guernsey",
29049	    GN: "Guinea",
29050	    GW: "Guinea-Bissau",
29051	    GY: "Guyana",
29052	    HT: "Haiti",
29053	    HM: "Heard Island and McDonald Islands",
29054	    VA: "Holy See (the)",
29055	    HN: "Honduras",
29056	    HK: "Hong Kong",
29057	    HU: "Hungary",
29058	    IS: "Iceland",
29059	    IN: "India",
29060	    ID: "Indonesia",
29061	    IR: "Iran (Islamic Republic of)",
29062	    IQ: "Iraq",
29063	    IE: "Ireland",
29064	    IM: "Isle of Man",
29065	    IL: "Israel",
29066	    IT: "Italy",
29067	    JM: "Jamaica",
29068	    JP: "Japan",
29069	    JE: "Jersey",
29070	    JO: "Jordan",
29071	    KZ: "Kazakhstan",
29072	    KE: "Kenya",
29073	    KI: "Kiribati",
29074	    KP: "Korea (the Democratic People's Republic of)",
29075	    KR: "Korea (the Republic of)",
29076	    KW: "Kuwait",
29077	    KG: "Kyrgyzstan",
29078	    LA: "Lao People's Democratic Republic (the)",
29079	    LV: "Latvia",
29080	    LB: "Lebanon",
29081	    LS: "Lesotho",
29082	    LR: "Liberia",
29083	    LY: "Libya",
29084	    LI: "Liechtenstein",
29085	    LT: "Lithuania",
29086	    LU: "Luxembourg",
29087	    MO: "Macao",
29088	    MG: "Madagascar",
29089	    MW: "Malawi",
29090	    MY: "Malaysia",
29091	    MV: "Maldives",
29092	    ML: "Mali",
29093	    MT: "Malta",
29094	    MH: "Marshall Islands (the)",
29095	    MQ: "Martinique",
29096	    MR: "Mauritania",
29097	    MU: "Mauritius",
29098	    YT: "Mayotte",
29099	    MX: "Mexico",
29100	    FM: "Micronesia (Federated States of)",
29101	    MD: "Moldova (the Republic of)",
29102	    MC: "Monaco",
29103	    MN: "Mongolia",
29104	    ME: "Montenegro",
29105	    MS: "Montserrat",
29106	    MA: "Morocco",
29107	    MZ: "Mozambique",
29108	    MM: "Myanmar",
29109	    NA: "Namibia",
29110	    NR: "Nauru",
29111	    NP: "Nepal",
29112	    NL: "Netherlands (the)",
29113	    NC: "New Caledonia",
29114	    NZ: "New Zealand",
29115	    NI: "Nicaragua",
29116	    NE: "Niger (the)",
29117	    NG: "Nigeria",
29118	    NU: "Niue",
29119	    NF: "Norfolk Island",
29120	    MK: "North Macedonia",
29121	    MP: "Northern Mariana Islands (the)",
29122	    NO: "Norway",
29123	    OM: "Oman",
29124	    PK: "Pakistan",
29125	    PW: "Palau",
29126	    PS: "Palestine, State of",
29127	    PA: "Panama",
29128	    PG: "Papua New Guinea",
29129	    PY: "Paraguay",
29130	    PE: "Peru",
29131	    PH: "Philippines (the)",
29132	    PN: "Pitcairn",
29133	    PL: "Poland",
29134	    PT: "Portugal",
29135	    PR: "Puerto Rico",
29136	    QA: "Qatar",
29137	    RE: "Réunion",
29138	    RO: "Romania",
29139	    RU: "Russian Federation (the)",
29140	    RW: "Rwanda",
29141	    BL: "Saint Barthélemy",
29142	    SH: "Saint Helena, Ascension and Tristan da Cunha",
29143	    KN: "Saint Kitts and Nevis",
29144	    LC: "Saint Lucia",
29145	    MF: "Saint Martin (French part)",
29146	    PM: "Saint Pierre and Miquelon",
29147	    VC: "Saint Vincent and the Grenadines",
29148	    WS: "Samoa",
29149	    SM: "San Marino",
29150	    ST: "Sao Tome and Principe",
29151	    SA: "Saudi Arabia",
29152	    SN: "Senegal",
29153	    RS: "Serbia",
29154	    SC: "Seychelles",
29155	    SL: "Sierra Leone",
29156	    SG: "Singapore",
29157	    SX: "Sint Maarten (Dutch part)",
29158	    SK: "Slovakia",
29159	    SI: "Slovenia",
29160	    SB: "Solomon Islands",
29161	    SO: "Somalia",
29162	    ZA: "South Africa",
29163	    GS: "South Georgia and the South Sandwich Islands",
29164	    SS: "South Sudan",
29165	    ES: "Spain",
29166	    LK: "Sri Lanka",
29167	    SD: "Sudan (the)",
29168	    SR: "Suriname",
29169	    SJ: "Svalbard and Jan Mayen",
29170	    SE: "Sweden",
29171	    CH: "Switzerland",
29172	    SY: "Syrian Arab Republic",
29173	    TW: "Taiwan (Province of China)",
29174	    TJ: "Tajikistan",
29175	    TZ: "Tanzania, United Republic of",
29176	    TH: "Thailand",
29177	    TL: "Timor-Leste",
29178	    TG: "Togo",
29179	    TK: "Tokelau",
29180	    TO: "Tonga",
29181	    TT: "Trinidad and Tobago",
29182	    TN: "Tunisia",
29183	    TR: "Turkey",
29184	    TM: "Turkmenistan",
29185	    TC: "Turks and Caicos Islands (the)",
29186	    TV: "Tuvalu",
29187	    UG: "Uganda",
29188	    UA: "Ukraine",
29189	    AE: "United Arab Emirates (the)",
29190	    GB: "United Kingdom of Great Britain and Northern Ireland (the)",
29191	    US: "United States of America (the)",
29192	    UM: "United States Minor Outlying Islands (the)",
29193	    UY: "Uruguay",
29194	    UZ: "Uzbekistan",
29195	    VU: "Vanuatu",
29196	    VE: "Venezuela (Bolivarian Republic of)",
29197	    VN: "Viet Nam",
29198	    VG: "Virgin Islands (British)",
29199	    VI: "Virgin Islands (U.S.)",
29200	    WF: "Wallis and Futuna",
29201	    EH: "Western Sahara",
29202	    YE: "Yemen",
29203	    ZM: "Zambia",
29204	    ZW: "Zimbabwe",
29205	};
29206	const statesForUS = {
29207	    AK: "Alaska",
29208	    AL: "Alabama",
29209	    AR: "Arkansas",
29210	    AZ: "Arizona",
29211	    CA: "California",
29212	    CO: "Colorado",
29213	    CT: "Connecticut",
29214	    DC: "District of Columbia",
29215	    DE: "Delaware",
29216	    FL: "Florida",
29217	    GA: "Georgia",
29218	    GU: "Guam",
29219	    HI: "Hawaii",
29220	    IA: "Iowa",
29221	    ID: "Idaho",
29222	    IL: "Illinois",
29223	    IN: "Indiana",
29224	    KS: "Kansas",
29225	    KY: "Kentucky",
29226	    LA: "Louisiana",
29227	    MA: "Massachusetts",
29228	    MD: "Maryland",
29229	    ME: "Maine",
29230	    MI: "Michigan",
29231	    MN: "Minnesota",
29232	    MO: "Missouri",
29233	    MS: "Mississippi",
29234	    MT: "Montana",
29235	    NC: "North Carolina",
29236	    ND: "North Dakota",
29237	    NE: "Nebraska",
29238	    NH: "New Hampshire",
29239	    NJ: "New Jersey",
29240	    NM: "New Mexico",
29241	    NV: "Nevada",
29242	    NY: "New York",
29243	    OH: "Ohio",
29244	    OK: "Oklahoma",
29245	    OR: "Oregon",
29246	    PA: "Pennsylvania",
29247	    PR: "Puerto Rico",
29248	    RI: "Rhode Island",
29249	    SC: "South Carolina",
29250	    SD: "South Dakota",
29251	    TN: "Tennessee",
29252	    TX: "Texas",
29253	    UT: "Utah",
29254	    VA: "Virginia",
29255	    VI: "Virgin Islands",
29256	    VT: "Vermont",
29257	    WA: "Washington",
29258	    WI: "Wisconsin",
29259	    WV: "West Virginia",
29260	    WY: "Wyoming"
29261	};
29262	const provincesForCanada = {
29263	    AB: "Alberta",
29264	    BC: "British Columbia",
29265	    MB: "Manitoba",
29266	    NB: "New Brunswick",
29267	    NL: "Newfoundland and Labrador",
29268	    NT: "Northwest Territories",
29269	    NS: "Nova Scotia",
29270	    NU: "Nunavut",
29271	    ON: "Ontario",
29272	    PE: "Prince Edward Island",
29273	    QC: "Quebec",
29274	    SK: "Saskatchewan",
29275	    YT: "Yukon"
29276	};
29277
29278	/* src/components/elements/billingCountry/BillingCountry.svelte generated by Svelte v4.2.12 */
29279
29280	function get_each_context$6(ctx, list, i) {
29281		const child_ctx = ctx.slice();
29282		child_ctx[14] = list[i];
29283		return child_ctx;
29284	}
29285
29286	// (47:4) {#each countryOptions as option}
29287	function create_each_block$6(ctx) {
29288		let option_1;
29289		let t0_value = /*option*/ ctx[14].label + "";
29290		let t0;
29291		let t1;
29292		let option_1_value_value;
29293		let option_1_selected_value;
29294
29295		return {
29296			c() {
29297				option_1 = element("option");
29298				t0 = text(t0_value);
29299				t1 = space();
29300				option_1.__value = option_1_value_value = /*option*/ ctx[14].value;
29301				set_input_value(option_1, option_1.__value);
29302				option_1.selected = option_1_selected_value = /*value*/ ctx[1] === /*option*/ ctx[14].value;
29303			},
29304			m(target, anchor) {
29305				insert(target, option_1, anchor);
29306				append(option_1, t0);
29307				append(option_1, t1);
29308			},
29309			p(ctx, dirty) {
29310				if (dirty & /*countryOptions*/ 64 && t0_value !== (t0_value = /*option*/ ctx[14].label + "")) set_data(t0, t0_value);
29311
29312				if (dirty & /*countryOptions*/ 64 && option_1_value_value !== (option_1_value_value = /*option*/ ctx[14].value)) {
29313					option_1.__value = option_1_value_value;
29314					set_input_value(option_1, option_1.__value);
29315				}
29316
29317				if (dirty & /*value, countryOptions*/ 66 && option_1_selected_value !== (option_1_selected_value = /*value*/ ctx[1] === /*option*/ ctx[14].value)) {
29318					option_1.selected = option_1_selected_value;
29319				}
29320			},
29321			d(detaching) {
29322				if (detaching) {
29323					detach(option_1);
29324				}
29325			}
29326		};
29327	}
29328
29329	// (26:0) <Label   forInput={id}   label={label + (config.required ? "*" : "")}   {isPaymentForm} >
29330	function create_default_slot$3(ctx) {
29331		let select;
29332		let option_1;
29333		let t;
29334		let select_required_value;
29335		let select_value_value;
29336		let select_disabled_value;
29337		let mounted;
29338		let dispose;
29339		let each_value = ensure_array_like(/*countryOptions*/ ctx[6]);
29340		let each_blocks = [];
29341
29342		for (let i = 0; i < each_value.length; i += 1) {
29343			each_blocks[i] = create_each_block$6(get_each_context$6(ctx, each_value, i));
29344		}
29345
29346		return {
29347			c() {
29348				select = element("select");
29349				option_1 = element("option");
29350				t = text(/*placeholder*/ ctx[7]);
29351
29352				for (let i = 0; i < each_blocks.length; i += 1) {
29353					each_blocks[i].c();
29354				}
29355
29356				option_1.disabled = true;
29357				option_1.__value = "";
29358				set_input_value(option_1, option_1.__value);
29359				attr(select, "id", /*id*/ ctx[10]);
29360				attr(select, "name", "billing-country");
29361				attr(select, "class", "zephr-form-input zephr-form-input-select svelte-dxm1g8");
29362				select.required = select_required_value = /*config*/ ctx[0].required;
29363				select.disabled = select_disabled_value = /*config*/ ctx[0].disabled;
29364				toggle_class(select, "zephr-payment-form-input", /*isPaymentForm*/ ctx[3]);
29365				toggle_class(select, "zephr-payment-form-input-select", /*isPaymentForm*/ ctx[3]);
29366				toggle_class(select, "unselected", !/*value*/ ctx[1]);
29367				toggle_class(select, "error", /*hasError*/ ctx[9]);
29368			},
29369			m(target, anchor) {
29370				insert(target, select, anchor);
29371				append(select, option_1);
29372				append(option_1, t);
29373
29374				for (let i = 0; i < each_blocks.length; i += 1) {
29375					if (each_blocks[i]) {
29376						each_blocks[i].m(select, null);
29377					}
29378				}
29379
29380				select_option(select, /*value*/ ctx[1] || "");
29381
29382				if (!mounted) {
29383					dispose = [
29384						listen(select, "change", /*handleChange*/ ctx[11]),
29385						listen(select, "focus", function () {
29386							if (is_function(/*onFocus*/ ctx[4])) /*onFocus*/ ctx[4].apply(this, arguments);
29387						}),
29388						listen(select, "blur", function () {
29389							if (is_function(/*onBlur*/ ctx[5])) /*onBlur*/ ctx[5].apply(this, arguments);
29390						})
29391					];
29392
29393					mounted = true;
29394				}
29395			},
29396			p(new_ctx, dirty) {
29397				ctx = new_ctx;
29398				if (dirty & /*placeholder*/ 128) set_data(t, /*placeholder*/ ctx[7]);
29399
29400				if (dirty & /*countryOptions, value*/ 66) {
29401					each_value = ensure_array_like(/*countryOptions*/ ctx[6]);
29402					let i;
29403
29404					for (i = 0; i < each_value.length; i += 1) {
29405						const child_ctx = get_each_context$6(ctx, each_value, i);
29406
29407						if (each_blocks[i]) {
29408							each_blocks[i].p(child_ctx, dirty);
29409						} else {
29410							each_blocks[i] = create_each_block$6(child_ctx);
29411							each_blocks[i].c();
29412							each_blocks[i].m(select, null);
29413						}
29414					}
29415
29416					for (; i < each_blocks.length; i += 1) {
29417						each_blocks[i].d(1);
29418					}
29419
29420					each_blocks.length = each_value.length;
29421				}
29422
29423				if (dirty & /*config*/ 1 && select_required_value !== (select_required_value = /*config*/ ctx[0].required)) {
29424					select.required = select_required_value;
29425				}
29426
29427				if (dirty & /*value, countryOptions*/ 66 && select_value_value !== (select_value_value = /*value*/ ctx[1] || "")) {
29428					select_option(select, /*value*/ ctx[1] || "");
29429				}
29430
29431				if (dirty & /*config*/ 1 && select_disabled_value !== (select_disabled_value = /*config*/ ctx[0].disabled)) {
29432					select.disabled = select_disabled_value;
29433				}
29434
29435				if (dirty & /*isPaymentForm*/ 8) {
29436					toggle_class(select, "zephr-payment-form-input", /*isPaymentForm*/ ctx[3]);
29437				}
29438
29439				if (dirty & /*isPaymentForm*/ 8) {
29440					toggle_class(select, "zephr-payment-form-input-select", /*isPaymentForm*/ ctx[3]);
29441				}
29442
29443				if (dirty & /*value*/ 2) {
29444					toggle_class(select, "unselected", !/*value*/ ctx[1]);
29445				}
29446
29447				if (dirty & /*hasError*/ 512) {
29448					toggle_class(select, "error", /*hasError*/ ctx[9]);
29449				}
29450			},
29451			d(detaching) {
29452				if (detaching) {
29453					detach(select);
29454				}
29455
29456				destroy_each(each_blocks, detaching);
29457				mounted = false;
29458				run_all(dispose);
29459			}
29460		};
29461	}
29462
29463	// (55:0) {#if hasError}
29464	function create_if_block$c(ctx) {
29465		let div;
29466		let t;
29467
29468		return {
29469			c() {
29470				div = element("div");
29471				t = text(/*error*/ ctx[2]);
29472				attr(div, "class", "zephr-form-input-error-text svelte-dxm1g8");
29473				toggle_class(div, "zephr-payment-form-input-error-text", /*isPaymentForm*/ ctx[3]);
29474			},
29475			m(target, anchor) {
29476				insert(target, div, anchor);
29477				append(div, t);
29478			},
29479			p(ctx, dirty) {
29480				if (dirty & /*error*/ 4) set_data(t, /*error*/ ctx[2]);
29481
29482				if (dirty & /*isPaymentForm*/ 8) {
29483					toggle_class(div, "zephr-payment-form-input-error-text", /*isPaymentForm*/ ctx[3]);
29484				}
29485			},
29486			d(detaching) {
29487				if (detaching) {
29488					detach(div);
29489				}
29490			}
29491		};
29492	}
29493
29494	function create_fragment$g(ctx) {
29495		let label_1;
29496		let t;
29497		let if_block_anchor;
29498		let current;
29499
29500		label_1 = new Label({
29501				props: {
29502					forInput: /*id*/ ctx[10],
29503					label: /*label*/ ctx[8] + (/*config*/ ctx[0].required ? "*" : ""),
29504					isPaymentForm: /*isPaymentForm*/ ctx[3],
29505					$$slots: { default: [create_default_slot$3] },
29506					$$scope: { ctx }
29507				}
29508			});
29509
29510		let if_block = /*hasError*/ ctx[9] && create_if_block$c(ctx);
29511
29512		return {
29513			c() {
29514				create_component(label_1.$$.fragment);
29515				t = space();
29516				if (if_block) if_block.c();
29517				if_block_anchor = empty();
29518			},
29519			m(target, anchor) {
29520				mount_component(label_1, target, anchor);
29521				insert(target, t, anchor);
29522				if (if_block) if_block.m(target, anchor);
29523				insert(target, if_block_anchor, anchor);
29524				current = true;
29525			},
29526			p(ctx, [dirty]) {
29527				const label_1_changes = {};
29528				if (dirty & /*label, config*/ 257) label_1_changes.label = /*label*/ ctx[8] + (/*config*/ ctx[0].required ? "*" : "");
29529				if (dirty & /*isPaymentForm*/ 8) label_1_changes.isPaymentForm = /*isPaymentForm*/ ctx[3];
29530
29531				if (dirty & /*$$scope, config, value, isPaymentForm, hasError, onFocus, onBlur, countryOptions, placeholder*/ 131835) {
29532					label_1_changes.$$scope = { dirty, ctx };
29533				}
29534
29535				label_1.$set(label_1_changes);
29536
29537				if (/*hasError*/ ctx[9]) {
29538					if (if_block) {
29539						if_block.p(ctx, dirty);
29540					} else {
29541						if_block = create_if_block$c(ctx);
29542						if_block.c();
29543						if_block.m(if_block_anchor.parentNode, if_block_anchor);
29544					}
29545				} else if (if_block) {
29546					if_block.d(1);
29547					if_block = null;
29548				}
29549			},
29550			i(local) {
29551				if (current) return;
29552				transition_in(label_1.$$.fragment, local);
29553				current = true;
29554			},
29555			o(local) {
29556				transition_out(label_1.$$.fragment, local);
29557				current = false;
29558			},
29559			d(detaching) {
29560				if (detaching) {
29561					detach(t);
29562					detach(if_block_anchor);
29563				}
29564
29565				destroy_component(label_1, detaching);
29566				if (if_block) if_block.d(detaching);
29567			}
29568		};
29569	}
29570
29571	function instance$g($$self, $$props, $$invalidate) {
29572		let hasError;
29573		let label;
29574		let placeholder;
29575		let countryOptions;
29576		let { formKey } = $$props;
29577		let { config } = $$props;
29578		let { value } = $$props;
29579		let { error = "" } = $$props;
29580		let { isPaymentForm = false } = $$props;
29581		let { onChange } = $$props;
29582		let { onFocus } = $$props;
29583		let { onBlur } = $$props;
29584		const id = `zephr-form-billing-country-${formKey}`;
29585
29586		const handleChange = e => {
29587			const target = e.target;
29588			onChange(target.value);
29589		};
29590
29591		$$self.$$set = $$props => {
29592			if ('formKey' in $$props) $$invalidate(12, formKey = $$props.formKey);
29593			if ('config' in $$props) $$invalidate(0, config = $$props.config);
29594			if ('value' in $$props) $$invalidate(1, value = $$props.value);
29595			if ('error' in $$props) $$invalidate(2, error = $$props.error);
29596			if ('isPaymentForm' in $$props) $$invalidate(3, isPaymentForm = $$props.isPaymentForm);
29597			if ('onChange' in $$props) $$invalidate(13, onChange = $$props.onChange);
29598			if ('onFocus' in $$props) $$invalidate(4, onFocus = $$props.onFocus);
29599			if ('onBlur' in $$props) $$invalidate(5, onBlur = $$props.onBlur);
29600		};
29601
29602		$$self.$$.update = () => {
29603			if ($$self.$$.dirty & /*error*/ 4) {
29604				$$invalidate(9, hasError = !!error);
29605			}
29606
29607			if ($$self.$$.dirty & /*config*/ 1) {
29608				$$invalidate(8, label = config.label || "Country");
29609			}
29610
29611			if ($$self.$$.dirty & /*config*/ 1) {
29612				$$invalidate(7, placeholder = config.placeholder || "Select your country");
29613			}
29614		};
29615
29616		$$invalidate(6, countryOptions = Object.entries(countries).map(([code, name]) => ({ value: code, label: name })));
29617
29618		return [
29619			config,
29620			value,
29621			error,
29622			isPaymentForm,
29623			onFocus,
29624			onBlur,
29625			countryOptions,
29626			placeholder,
29627			label,
29628			hasError,
29629			id,
29630			handleChange,
29631			formKey,
29632			onChange
29633		];
29634	}
29635
29636	class BillingCountry extends SvelteComponent {
29637		constructor(options) {
29638			super();
29639
29640			init(this, options, instance$g, create_fragment$g, safe_not_equal, {
29641				formKey: 12,
29642				config: 0,
29643				value: 1,
29644				error: 2,
29645				isPaymentForm: 3,
29646				onChange: 13,
29647				onFocus: 4,
29648				onBlur: 5
29649			});
29650		}
29651	}
29652
29653	/* src/components/elements/billingState/BillingState.svelte generated by Svelte v4.2.12 */
29654
29655	function get_each_context$5(ctx, list, i) {
29656		const child_ctx = ctx.slice();
29657		child_ctx[16] = list[i];
29658		return child_ctx;
29659	}
29660
29661	// (44:0) {#if shouldShow}
29662	function create_if_block$b(ctx) {
29663		let label_1;
29664		let t;
29665		let if_block_anchor;
29666		let current;
29667
29668		label_1 = new Label({
29669				props: {
29670					forInput: /*id*/ ctx[11],
29671					label: /*label*/ ctx[9] + (/*config*/ ctx[0].required ? "*" : ""),
29672					isPaymentForm: /*isPaymentForm*/ ctx[3],
29673					$$slots: { default: [create_default_slot$2] },
29674					$$scope: { ctx }
29675				}
29676			});
29677
29678		let if_block = /*hasError*/ ctx[10] && create_if_block_1$a(ctx);
29679
29680		return {
29681			c() {
29682				create_component(label_1.$$.fragment);
29683				t = space();
29684				if (if_block) if_block.c();
29685				if_block_anchor = empty();
29686			},
29687			m(target, anchor) {
29688				mount_component(label_1, target, anchor);
29689				insert(target, t, anchor);
29690				if (if_block) if_block.m(target, anchor);
29691				insert(target, if_block_anchor, anchor);
29692				current = true;
29693			},
29694			p(ctx, dirty) {
29695				const label_1_changes = {};
29696				if (dirty & /*label, config*/ 513) label_1_changes.label = /*label*/ ctx[9] + (/*config*/ ctx[0].required ? "*" : "");
29697				if (dirty & /*isPaymentForm*/ 8) label_1_changes.isPaymentForm = /*isPaymentForm*/ ctx[3];
29698
29699				if (dirty & /*$$scope, config, value, isPaymentForm, hasError, onFocus, onBlur, stateOptions, placeholder*/ 525755) {
29700					label_1_changes.$$scope = { dirty, ctx };
29701				}
29702
29703				label_1.$set(label_1_changes);
29704
29705				if (/*hasError*/ ctx[10]) {
29706					if (if_block) {
29707						if_block.p(ctx, dirty);
29708					} else {
29709						if_block = create_if_block_1$a(ctx);
29710						if_block.c();
29711						if_block.m(if_block_anchor.parentNode, if_block_anchor);
29712					}
29713				} else if (if_block) {
29714					if_block.d(1);
29715					if_block = null;
29716				}
29717			},
29718			i(local) {
29719				if (current) return;
29720				transition_in(label_1.$$.fragment, local);
29721				current = true;
29722			},
29723			o(local) {
29724				transition_out(label_1.$$.fragment, local);
29725				current = false;
29726			},
29727			d(detaching) {
29728				if (detaching) {
29729					detach(t);
29730					detach(if_block_anchor);
29731				}
29732
29733				destroy_component(label_1, detaching);
29734				if (if_block) if_block.d(detaching);
29735			}
29736		};
29737	}
29738
29739	// (66:6) {#each stateOptions as option}
29740	function create_each_block$5(ctx) {
29741		let option_1;
29742		let t0_value = /*option*/ ctx[16].label + "";
29743		let t0;
29744		let t1;
29745		let option_1_value_value;
29746		let option_1_selected_value;
29747
29748		return {
29749			c() {
29750				option_1 = element("option");
29751				t0 = text(t0_value);
29752				t1 = space();
29753				option_1.__value = option_1_value_value = /*option*/ ctx[16].value;
29754				set_input_value(option_1, option_1.__value);
29755				option_1.selected = option_1_selected_value = /*value*/ ctx[1] === /*option*/ ctx[16].value;
29756			},
29757			m(target, anchor) {
29758				insert(target, option_1, anchor);
29759				append(option_1, t0);
29760				append(option_1, t1);
29761			},
29762			p(ctx, dirty) {
29763				if (dirty & /*stateOptions*/ 128 && t0_value !== (t0_value = /*option*/ ctx[16].label + "")) set_data(t0, t0_value);
29764
29765				if (dirty & /*stateOptions*/ 128 && option_1_value_value !== (option_1_value_value = /*option*/ ctx[16].value)) {
29766					option_1.__value = option_1_value_value;
29767					set_input_value(option_1, option_1.__value);
29768				}
29769
29770				if (dirty & /*value, stateOptions*/ 130 && option_1_selected_value !== (option_1_selected_value = /*value*/ ctx[1] === /*option*/ ctx[16].value)) {
29771					option_1.selected = option_1_selected_value;
29772				}
29773			},
29774			d(detaching) {
29775				if (detaching) {
29776					detach(option_1);
29777				}
29778			}
29779		};
29780	}
29781
29782	// (45:2) <Label     forInput={id}     label={label + (config.required ? "*" : "")}     {isPaymentForm}   >
29783	function create_default_slot$2(ctx) {
29784		let select;
29785		let option_1;
29786		let t;
29787		let select_required_value;
29788		let select_value_value;
29789		let select_disabled_value;
29790		let mounted;
29791		let dispose;
29792		let each_value = ensure_array_like(/*stateOptions*/ ctx[7]);
29793		let each_blocks = [];
29794
29795		for (let i = 0; i < each_value.length; i += 1) {
29796			each_blocks[i] = create_each_block$5(get_each_context$5(ctx, each_value, i));
29797		}
29798
29799		return {
29800			c() {
29801				select = element("select");
29802				option_1 = element("option");
29803				t = text(/*placeholder*/ ctx[8]);
29804
29805				for (let i = 0; i < each_blocks.length; i += 1) {
29806					each_blocks[i].c();
29807				}
29808
29809				option_1.disabled = true;
29810				option_1.__value = "";
29811				set_input_value(option_1, option_1.__value);
29812				attr(select, "id", /*id*/ ctx[11]);
29813				attr(select, "name", "billing-state");
29814				attr(select, "class", "zephr-form-input zephr-form-input-select svelte-dxm1g8");
29815				select.required = select_required_value = /*config*/ ctx[0].required;
29816				select.disabled = select_disabled_value = /*config*/ ctx[0].disabled;
29817				toggle_class(select, "zephr-payment-form-input", /*isPaymentForm*/ ctx[3]);
29818				toggle_class(select, "zephr-payment-form-input-select", /*isPaymentForm*/ ctx[3]);
29819				toggle_class(select, "unselected", !/*value*/ ctx[1]);
29820				toggle_class(select, "error", /*hasError*/ ctx[10]);
29821			},
29822			m(target, anchor) {
29823				insert(target, select, anchor);
29824				append(select, option_1);
29825				append(option_1, t);
29826
29827				for (let i = 0; i < each_blocks.length; i += 1) {
29828					if (each_blocks[i]) {
29829						each_blocks[i].m(select, null);
29830					}
29831				}
29832
29833				select_option(select, /*value*/ ctx[1] || "");
29834
29835				if (!mounted) {
29836					dispose = [
29837						listen(select, "change", /*handleChange*/ ctx[12]),
29838						listen(select, "focus", function () {
29839							if (is_function(/*onFocus*/ ctx[4])) /*onFocus*/ ctx[4].apply(this, arguments);
29840						}),
29841						listen(select, "blur", function () {
29842							if (is_function(/*onBlur*/ ctx[5])) /*onBlur*/ ctx[5].apply(this, arguments);
29843						})
29844					];
29845
29846					mounted = true;
29847				}
29848			},
29849			p(new_ctx, dirty) {
29850				ctx = new_ctx;
29851				if (dirty & /*placeholder*/ 256) set_data(t, /*placeholder*/ ctx[8]);
29852
29853				if (dirty & /*stateOptions, value*/ 130) {
29854					each_value = ensure_array_like(/*stateOptions*/ ctx[7]);
29855					let i;
29856
29857					for (i = 0; i < each_value.length; i += 1) {
29858						const child_ctx = get_each_context$5(ctx, each_value, i);
29859
29860						if (each_blocks[i]) {
29861							each_blocks[i].p(child_ctx, dirty);
29862						} else {
29863							each_blocks[i] = create_each_block$5(child_ctx);
29864							each_blocks[i].c();
29865							each_blocks[i].m(select, null);
29866						}
29867					}
29868
29869					for (; i < each_blocks.length; i += 1) {
29870						each_blocks[i].d(1);
29871					}
29872
29873					each_blocks.length = each_value.length;
29874				}
29875
29876				if (dirty & /*config*/ 1 && select_required_value !== (select_required_value = /*config*/ ctx[0].required)) {
29877					select.required = select_required_value;
29878				}
29879
29880				if (dirty & /*value, stateOptions*/ 130 && select_value_value !== (select_value_value = /*value*/ ctx[1] || "")) {
29881					select_option(select, /*value*/ ctx[1] || "");
29882				}
29883
29884				if (dirty & /*config*/ 1 && select_disabled_value !== (select_disabled_value = /*config*/ ctx[0].disabled)) {
29885					select.disabled = select_disabled_value;
29886				}
29887
29888				if (dirty & /*isPaymentForm*/ 8) {
29889					toggle_class(select, "zephr-payment-form-input", /*isPaymentForm*/ ctx[3]);
29890				}
29891
29892				if (dirty & /*isPaymentForm*/ 8) {
29893					toggle_class(select, "zephr-payment-form-input-select", /*isPaymentForm*/ ctx[3]);
29894				}
29895
29896				if (dirty & /*value*/ 2) {
29897					toggle_class(select, "unselected", !/*value*/ ctx[1]);
29898				}
29899
29900				if (dirty & /*hasError*/ 1024) {
29901					toggle_class(select, "error", /*hasError*/ ctx[10]);
29902				}
29903			},
29904			d(detaching) {
29905				if (detaching) {
29906					detach(select);
29907				}
29908
29909				destroy_each(each_blocks, detaching);
29910				mounted = false;
29911				run_all(dispose);
29912			}
29913		};
29914	}
29915
29916	// (74:2) {#if hasError}
29917	function create_if_block_1$a(ctx) {
29918		let div;
29919		let t;
29920
29921		return {
29922			c() {
29923				div = element("div");
29924				t = text(/*error*/ ctx[2]);
29925				attr(div, "class", "zephr-form-input-error-text svelte-dxm1g8");
29926				toggle_class(div, "zephr-payment-form-input-error-text", /*isPaymentForm*/ ctx[3]);
29927			},
29928			m(target, anchor) {
29929				insert(target, div, anchor);
29930				append(div, t);
29931			},
29932			p(ctx, dirty) {
29933				if (dirty & /*error*/ 4) set_data(t, /*error*/ ctx[2]);
29934
29935				if (dirty & /*isPaymentForm*/ 8) {
29936					toggle_class(div, "zephr-payment-form-input-error-text", /*isPaymentForm*/ ctx[3]);
29937				}
29938			},
29939			d(detaching) {
29940				if (detaching) {
29941					detach(div);
29942				}
29943			}
29944		};
29945	}
29946
29947	function create_fragment$f(ctx) {
29948		let if_block_anchor;
29949		let current;
29950		let if_block = /*shouldShow*/ ctx[6] && create_if_block$b(ctx);
29951
29952		return {
29953			c() {
29954				if (if_block) if_block.c();
29955				if_block_anchor = empty();
29956			},
29957			m(target, anchor) {
29958				if (if_block) if_block.m(target, anchor);
29959				insert(target, if_block_anchor, anchor);
29960				current = true;
29961			},
29962			p(ctx, [dirty]) {
29963				if (/*shouldShow*/ ctx[6]) {
29964					if (if_block) {
29965						if_block.p(ctx, dirty);
29966
29967						if (dirty & /*shouldShow*/ 64) {
29968							transition_in(if_block, 1);
29969						}
29970					} else {
29971						if_block = create_if_block$b(ctx);
29972						if_block.c();
29973						transition_in(if_block, 1);
29974						if_block.m(if_block_anchor.parentNode, if_block_anchor);
29975					}
29976				} else if (if_block) {
29977					group_outros();
29978
29979					transition_out(if_block, 1, 1, () => {
29980						if_block = null;
29981					});
29982
29983					check_outros();
29984				}
29985			},
29986			i(local) {
29987				if (current) return;
29988				transition_in(if_block);
29989				current = true;
29990			},
29991			o(local) {
29992				transition_out(if_block);
29993				current = false;
29994			},
29995			d(detaching) {
29996				if (detaching) {
29997					detach(if_block_anchor);
29998				}
29999
30000				if (if_block) if_block.d(detaching);
30001			}
30002		};
30003	}
30004
30005	function instance$f($$self, $$props, $$invalidate) {
30006		let hasError;
30007		let label;
30008		let placeholder;
30009		let shouldShow;
30010		let stateOptions;
30011		let { formKey } = $$props;
30012		let { config } = $$props;
30013		let { value } = $$props;
30014		let { error = "" } = $$props;
30015		let { isPaymentForm = false } = $$props;
30016		let { billingCountry } = $$props;
30017		let { onChange } = $$props;
30018		let { onFocus } = $$props;
30019		let { onBlur } = $$props;
30020		const id = `zephr-form-billing-state-${formKey}`;
30021
30022		const handleChange = e => {
30023			const target = e.target;
30024			onChange(target.value);
30025		};
30026
30027		$$self.$$set = $$props => {
30028			if ('formKey' in $$props) $$invalidate(13, formKey = $$props.formKey);
30029			if ('config' in $$props) $$invalidate(0, config = $$props.config);
30030			if ('value' in $$props) $$invalidate(1, value = $$props.value);
30031			if ('error' in $$props) $$invalidate(2, error = $$props.error);
30032			if ('isPaymentForm' in $$props) $$invalidate(3, isPaymentForm = $$props.isPaymentForm);
30033			if ('billingCountry' in $$props) $$invalidate(14, billingCountry = $$props.billingCountry);
30034			if ('onChange' in $$props) $$invalidate(15, onChange = $$props.onChange);
30035			if ('onFocus' in $$props) $$invalidate(4, onFocus = $$props.onFocus);
30036			if ('onBlur' in $$props) $$invalidate(5, onBlur = $$props.onBlur);
30037		};
30038
30039		$$self.$$.update = () => {
30040			if ($$self.$$.dirty & /*error*/ 4) {
30041				$$invalidate(10, hasError = !!error);
30042			}
30043
30044			if ($$self.$$.dirty & /*config*/ 1) {
30045				$$invalidate(9, label = config.label || "State/Province");
30046			}
30047
30048			if ($$self.$$.dirty & /*config*/ 1) {
30049				$$invalidate(8, placeholder = config.placeholder || "Select your state/province");
30050			}
30051
30052			if ($$self.$$.dirty & /*billingCountry*/ 16384) {
30053				// Only show when country is US or Canada
30054				$$invalidate(6, shouldShow = billingCountry === "US" || billingCountry === "CA");
30055			}
30056
30057			if ($$self.$$.dirty & /*billingCountry*/ 16384) {
30058				// Get appropriate state/province options based on country
30059				$$invalidate(7, stateOptions = (() => {
30060					if (billingCountry === "US") {
30061						return Object.entries(statesForUS).map(([code, name]) => ({ value: code, label: name }));
30062					} else if (billingCountry === "CA") {
30063						return Object.entries(provincesForCanada).map(([code, name]) => ({ value: code, label: name }));
30064					}
30065
30066					return [];
30067				})());
30068			}
30069
30070			if ($$self.$$.dirty & /*shouldShow, value, onChange*/ 32834) {
30071				// Clear value when country changes to non-US/CA
30072				if (!shouldShow && value) {
30073					onChange("");
30074				}
30075			}
30076		};
30077
30078		return [
30079			config,
30080			value,
30081			error,
30082			isPaymentForm,
30083			onFocus,
30084			onBlur,
30085			shouldShow,
30086			stateOptions,
30087			placeholder,
30088			label,
30089			hasError,
30090			id,
30091			handleChange,
30092			formKey,
30093			billingCountry,
30094			onChange
30095		];
30096	}
30097
30098	class BillingState extends SvelteComponent {
30099		constructor(options) {
30100			super();
30101
30102			init(this, options, instance$f, create_fragment$f, safe_not_equal, {
30103				formKey: 13,
30104				config: 0,
30105				value: 1,
30106				error: 2,
30107				isPaymentForm: 3,
30108				billingCountry: 14,
30109				onChange: 15,
30110				onFocus: 4,
30111				onBlur: 5
30112			});
30113		}
30114	}
30115
30116	/* src/components/elements/recipientAddress/RecipientAddress.svelte generated by Svelte v4.2.12 */
30117
30118	function create_if_block$a(ctx) {
30119		let div1;
30120		let label;
30121		let t0_value = /*config*/ ctx[0].label + "";
30122		let t0;
30123		let t1;
30124		let div0;
30125		let t2;
30126		let t3;
30127		let t4;
30128		let t5;
30129		let t6;
30130		let current;
30131		let if_block0 = /*showAddress*/ ctx[3] && create_if_block_6$3(ctx);
30132		let if_block1 = /*showCity*/ ctx[5] && create_if_block_5$3(ctx);
30133		let if_block2 = /*showCountry*/ ctx[7] && create_if_block_4$3(ctx);
30134		let if_block3 = /*showState*/ ctx[6] && create_if_block_3$4(ctx);
30135		let if_block4 = /*showPostalCode*/ ctx[4] && create_if_block_2$7(ctx);
30136		let if_block5 = /*addressError*/ ctx[1] && create_if_block_1$9(ctx);
30137
30138		return {
30139			c() {
30140				div1 = element("div");
30141				label = element("label");
30142				t0 = text(t0_value);
30143				t1 = space();
30144				div0 = element("div");
30145				if (if_block0) if_block0.c();
30146				t2 = space();
30147				if (if_block1) if_block1.c();
30148				t3 = space();
30149				if (if_block2) if_block2.c();
30150				t4 = space();
30151				if (if_block3) if_block3.c();
30152				t5 = space();
30153				if (if_block4) if_block4.c();
30154				t6 = space();
30155				if (if_block5) if_block5.c();
30156				attr(label, "class", "address-main-label svelte-1lcs5wj");
30157				attr(div0, "class", "address-fields svelte-1lcs5wj");
30158				attr(div1, "class", "recipient-address-section svelte-1lcs5wj");
30159			},
30160			m(target, anchor) {
30161				insert(target, div1, anchor);
30162				append(div1, label);
30163				append(label, t0);
30164				append(div1, t1);
30165				append(div1, div0);
30166				if (if_block0) if_block0.m(div0, null);
30167				append(div0, t2);
30168				if (if_block1) if_block1.m(div0, null);
30169				append(div0, t3);
30170				if (if_block2) if_block2.m(div0, null);
30171				append(div0, t4);
30172				if (if_block3) if_block3.m(div0, null);
30173				append(div0, t5);
30174				if (if_block4) if_block4.m(div0, null);
30175				append(div1, t6);
30176				if (if_block5) if_block5.m(div1, null);
30177				current = true;
30178			},
30179			p(ctx, dirty) {
30180				if ((!current || dirty & /*config*/ 1) && t0_value !== (t0_value = /*config*/ ctx[0].label + "")) set_data(t0, t0_value);
30181
30182				if (/*showAddress*/ ctx[3]) {
30183					if (if_block0) {
30184						if_block0.p(ctx, dirty);
30185					} else {
30186						if_block0 = create_if_block_6$3(ctx);
30187						if_block0.c();
30188						if_block0.m(div0, t2);
30189					}
30190				} else if (if_block0) {
30191					if_block0.d(1);
30192					if_block0 = null;
30193				}
30194
30195				if (/*showCity*/ ctx[5]) {
30196					if (if_block1) {
30197						if_block1.p(ctx, dirty);
30198					} else {
30199						if_block1 = create_if_block_5$3(ctx);
30200						if_block1.c();
30201						if_block1.m(div0, t3);
30202					}
30203				} else if (if_block1) {
30204					if_block1.d(1);
30205					if_block1 = null;
30206				}
30207
30208				if (/*showCountry*/ ctx[7]) {
30209					if (if_block2) {
30210						if_block2.p(ctx, dirty);
30211
30212						if (dirty & /*showCountry*/ 128) {
30213							transition_in(if_block2, 1);
30214						}
30215					} else {
30216						if_block2 = create_if_block_4$3(ctx);
30217						if_block2.c();
30218						transition_in(if_block2, 1);
30219						if_block2.m(div0, t4);
30220					}
30221				} else if (if_block2) {
30222					group_outros();
30223
30224					transition_out(if_block2, 1, 1, () => {
30225						if_block2 = null;
30226					});
30227
30228					check_outros();
30229				}
30230
30231				if (/*showState*/ ctx[6]) {
30232					if (if_block3) {
30233						if_block3.p(ctx, dirty);
30234
30235						if (dirty & /*showState*/ 64) {
30236							transition_in(if_block3, 1);
30237						}
30238					} else {
30239						if_block3 = create_if_block_3$4(ctx);
30240						if_block3.c();
30241						transition_in(if_block3, 1);
30242						if_block3.m(div0, t5);
30243					}
30244				} else if (if_block3) {
30245					group_outros();
30246
30247					transition_out(if_block3, 1, 1, () => {
30248						if_block3 = null;
30249					});
30250
30251					check_outros();
30252				}
30253
30254				if (/*showPostalCode*/ ctx[4]) {
30255					if (if_block4) {
30256						if_block4.p(ctx, dirty);
30257					} else {
30258						if_block4 = create_if_block_2$7(ctx);
30259						if_block4.c();
30260						if_block4.m(div0, null);
30261					}
30262				} else if (if_block4) {
30263					if_block4.d(1);
30264					if_block4 = null;
30265				}
30266
30267				if (/*addressError*/ ctx[1]) {
30268					if (if_block5) {
30269						if_block5.p(ctx, dirty);
30270					} else {
30271						if_block5 = create_if_block_1$9(ctx);
30272						if_block5.c();
30273						if_block5.m(div1, null);
30274					}
30275				} else if (if_block5) {
30276					if_block5.d(1);
30277					if_block5 = null;
30278				}
30279			},
30280			i(local) {
30281				if (current) return;
30282				transition_in(if_block2);
30283				transition_in(if_block3);
30284				current = true;
30285			},
30286			o(local) {
30287				transition_out(if_block2);
30288				transition_out(if_block3);
30289				current = false;
30290			},
30291			d(detaching) {
30292				if (detaching) {
30293					detach(div1);
30294				}
30295
30296				if (if_block0) if_block0.d();
30297				if (if_block1) if_block1.d();
30298				if (if_block2) if_block2.d();
30299				if (if_block3) if_block3.d();
30300				if (if_block4) if_block4.d();
30301				if (if_block5) if_block5.d();
30302			}
30303		};
30304	}
30305
30306	// (80:6) {#if showAddress}
30307	function create_if_block_6$3(ctx) {
30308		let div0;
30309		let label0;
30310		let t0_value = /*config*/ ctx[0].addressLine1Label + "";
30311		let t0;
30312		let t1;
30313		let input0;
30314		let input0_placeholder_value;
30315		let t2;
30316		let div1;
30317		let label1;
30318		let t3_value = /*config*/ ctx[0].addressLine2Label + "";
30319		let t3;
30320		let t4;
30321		let input1;
30322		let input1_placeholder_value;
30323		let mounted;
30324		let dispose;
30325
30326		return {
30327			c() {
30328				div0 = element("div");
30329				label0 = element("label");
30330				t0 = text(t0_value);
30331				t1 = space();
30332				input0 = element("input");
30333				t2 = space();
30334				div1 = element("div");
30335				label1 = element("label");
30336				t3 = text(t3_value);
30337				t4 = space();
30338				input1 = element("input");
30339				attr(label0, "for", "addressLine1");
30340				attr(label0, "class", "svelte-1lcs5wj");
30341				attr(input0, "id", "addressLine1");
30342				attr(input0, "type", "text");
30343				input0.required = /*showAddress*/ ctx[3];
30344				attr(input0, "placeholder", input0_placeholder_value = /*config*/ ctx[0].addressLine1Placeholder);
30345				attr(input0, "class", "svelte-1lcs5wj");
30346				attr(div0, "class", "field svelte-1lcs5wj");
30347				attr(label1, "for", "addressLine2");
30348				attr(label1, "class", "svelte-1lcs5wj");
30349				attr(input1, "id", "addressLine2");
30350				attr(input1, "type", "text");
30351				attr(input1, "placeholder", input1_placeholder_value = /*config*/ ctx[0].addressLine2Placeholder);
30352				attr(input1, "class", "svelte-1lcs5wj");
30353				attr(div1, "class", "field svelte-1lcs5wj");
30354			},
30355			m(target, anchor) {
30356				insert(target, div0, anchor);
30357				append(div0, label0);
30358				append(label0, t0);
30359				append(div0, t1);
30360				append(div0, input0);
30361				set_input_value(input0, /*recipientAddress*/ ctx[2].addressLine1);
30362				insert(target, t2, anchor);
30363				insert(target, div1, anchor);
30364				append(div1, label1);
30365				append(label1, t3);
30366				append(div1, t4);
30367				append(div1, input1);
30368				set_input_value(input1, /*recipientAddress*/ ctx[2].addressLine2);
30369
30370				if (!mounted) {
30371					dispose = [
30372						listen(input0, "input", /*input0_input_handler*/ ctx[13]),
30373						listen(input0, "input", /*updateGiftRecipient*/ ctx[9]),
30374						listen(input1, "input", /*input1_input_handler*/ ctx[14]),
30375						listen(input1, "input", /*updateGiftRecipient*/ ctx[9])
30376					];
30377
30378					mounted = true;
30379				}
30380			},
30381			p(ctx, dirty) {
30382				if (dirty & /*config*/ 1 && t0_value !== (t0_value = /*config*/ ctx[0].addressLine1Label + "")) set_data(t0, t0_value);
30383
30384				if (dirty & /*showAddress*/ 8) {
30385					input0.required = /*showAddress*/ ctx[3];
30386				}
30387
30388				if (dirty & /*config*/ 1 && input0_placeholder_value !== (input0_placeholder_value = /*config*/ ctx[0].addressLine1Placeholder)) {
30389					attr(input0, "placeholder", input0_placeholder_value);
30390				}
30391
30392				if (dirty & /*recipientAddress*/ 4 && input0.value !== /*recipientAddress*/ ctx[2].addressLine1) {
30393					set_input_value(input0, /*recipientAddress*/ ctx[2].addressLine1);
30394				}
30395
30396				if (dirty & /*config*/ 1 && t3_value !== (t3_value = /*config*/ ctx[0].addressLine2Label + "")) set_data(t3, t3_value);
30397
30398				if (dirty & /*config*/ 1 && input1_placeholder_value !== (input1_placeholder_value = /*config*/ ctx[0].addressLine2Placeholder)) {
30399					attr(input1, "placeholder", input1_placeholder_value);
30400				}
30401
30402				if (dirty & /*recipientAddress*/ 4 && input1.value !== /*recipientAddress*/ ctx[2].addressLine2) {
30403					set_input_value(input1, /*recipientAddress*/ ctx[2].addressLine2);
30404				}
30405			},
30406			d(detaching) {
30407				if (detaching) {
30408					detach(div0);
30409					detach(t2);
30410					detach(div1);
30411				}
30412
30413				mounted = false;
30414				run_all(dispose);
30415			}
30416		};
30417	}
30418
30419	// (105:6) {#if showCity}
30420	function create_if_block_5$3(ctx) {
30421		let div;
30422		let label;
30423		let t0_value = /*config*/ ctx[0].cityLabel + "";
30424		let t0;
30425		let t1;
30426		let input;
30427		let input_placeholder_value;
30428		let mounted;
30429		let dispose;
30430
30431		return {
30432			c() {
30433				div = element("div");
30434				label = element("label");
30435				t0 = text(t0_value);
30436				t1 = space();
30437				input = element("input");
30438				attr(label, "for", "city");
30439				attr(label, "class", "svelte-1lcs5wj");
30440				attr(input, "id", "city");
30441				attr(input, "type", "text");
30442				input.required = /*showCity*/ ctx[5];
30443				attr(input, "placeholder", input_placeholder_value = /*config*/ ctx[0].cityPlaceholder);
30444				attr(input, "class", "svelte-1lcs5wj");
30445				attr(div, "class", "field svelte-1lcs5wj");
30446			},
30447			m(target, anchor) {
30448				insert(target, div, anchor);
30449				append(div, label);
30450				append(label, t0);
30451				append(div, t1);
30452				append(div, input);
30453				set_input_value(input, /*recipientAddress*/ ctx[2].city);
30454
30455				if (!mounted) {
30456					dispose = [
30457						listen(input, "input", /*input_input_handler*/ ctx[15]),
30458						listen(input, "input", /*updateGiftRecipient*/ ctx[9])
30459					];
30460
30461					mounted = true;
30462				}
30463			},
30464			p(ctx, dirty) {
30465				if (dirty & /*config*/ 1 && t0_value !== (t0_value = /*config*/ ctx[0].cityLabel + "")) set_data(t0, t0_value);
30466
30467				if (dirty & /*showCity*/ 32) {
30468					input.required = /*showCity*/ ctx[5];
30469				}
30470
30471				if (dirty & /*config*/ 1 && input_placeholder_value !== (input_placeholder_value = /*config*/ ctx[0].cityPlaceholder)) {
30472					attr(input, "placeholder", input_placeholder_value);
30473				}
30474
30475				if (dirty & /*recipientAddress*/ 4 && input.value !== /*recipientAddress*/ ctx[2].city) {
30476					set_input_value(input, /*recipientAddress*/ ctx[2].city);
30477				}
30478			},
30479			d(detaching) {
30480				if (detaching) {
30481					detach(div);
30482				}
30483
30484				mounted = false;
30485				run_all(dispose);
30486			}
30487		};
30488	}
30489
30490	// (119:6) {#if showCountry}
30491	function create_if_block_4$3(ctx) {
30492		let div;
30493		let billingcountry;
30494		let current;
30495
30496		billingcountry = new BillingCountry({
30497				props: {
30498					formKey: "gift-recipient",
30499					config: {
30500						label: /*config*/ ctx[0].countryLabel,
30501						placeholder: /*config*/ ctx[0].countryPlaceholder,
30502						required: /*showCountry*/ ctx[7]
30503					},
30504					value: /*recipientAddress*/ ctx[2].country,
30505					error: "",
30506					isPaymentForm: false,
30507					onChange: /*func*/ ctx[16],
30508					onFocus: func_1,
30509					onBlur: func_2
30510				}
30511			});
30512
30513		return {
30514			c() {
30515				div = element("div");
30516				create_component(billingcountry.$$.fragment);
30517				attr(div, "class", "field svelte-1lcs5wj");
30518			},
30519			m(target, anchor) {
30520				insert(target, div, anchor);
30521				mount_component(billingcountry, div, null);
30522				current = true;
30523			},
30524			p(ctx, dirty) {
30525				const billingcountry_changes = {};
30526
30527				if (dirty & /*config, showCountry*/ 129) billingcountry_changes.config = {
30528					label: /*config*/ ctx[0].countryLabel,
30529					placeholder: /*config*/ ctx[0].countryPlaceholder,
30530					required: /*showCountry*/ ctx[7]
30531				};
30532
30533				if (dirty & /*recipientAddress*/ 4) billingcountry_changes.value = /*recipientAddress*/ ctx[2].country;
30534				if (dirty & /*recipientAddress*/ 4) billingcountry_changes.onChange = /*func*/ ctx[16];
30535				billingcountry.$set(billingcountry_changes);
30536			},
30537			i(local) {
30538				if (current) return;
30539				transition_in(billingcountry.$$.fragment, local);
30540				current = true;
30541			},
30542			o(local) {
30543				transition_out(billingcountry.$$.fragment, local);
30544				current = false;
30545			},
30546			d(detaching) {
30547				if (detaching) {
30548					detach(div);
30549				}
30550
30551				destroy_component(billingcountry);
30552			}
30553		};
30554	}
30555
30556	// (141:6) {#if showState}
30557	function create_if_block_3$4(ctx) {
30558		let div;
30559		let billingstate;
30560		let current;
30561
30562		billingstate = new BillingState({
30563				props: {
30564					formKey: "gift-recipient",
30565					config: {
30566						label: /*config*/ ctx[0].stateLabel,
30567						placeholder: /*config*/ ctx[0].statePlaceholder,
30568						required: /*showState*/ ctx[6] && (/*recipientAddress*/ ctx[2].country === 'US' || /*recipientAddress*/ ctx[2].country === 'CA')
30569					},
30570					value: /*recipientAddress*/ ctx[2].state,
30571					error: "",
30572					isPaymentForm: false,
30573					billingCountry: /*recipientAddress*/ ctx[2].country,
30574					onChange: /*func_3*/ ctx[17],
30575					onFocus: func_4,
30576					onBlur: func_5
30577				}
30578			});
30579
30580		return {
30581			c() {
30582				div = element("div");
30583				create_component(billingstate.$$.fragment);
30584				attr(div, "class", "field svelte-1lcs5wj");
30585			},
30586			m(target, anchor) {
30587				insert(target, div, anchor);
30588				mount_component(billingstate, div, null);
30589				current = true;
30590			},
30591			p(ctx, dirty) {
30592				const billingstate_changes = {};
30593
30594				if (dirty & /*config, showState, recipientAddress*/ 69) billingstate_changes.config = {
30595					label: /*config*/ ctx[0].stateLabel,
30596					placeholder: /*config*/ ctx[0].statePlaceholder,
30597					required: /*showState*/ ctx[6] && (/*recipientAddress*/ ctx[2].country === 'US' || /*recipientAddress*/ ctx[2].country === 'CA')
30598				};
30599
30600				if (dirty & /*recipientAddress*/ 4) billingstate_changes.value = /*recipientAddress*/ ctx[2].state;
30601				if (dirty & /*recipientAddress*/ 4) billingstate_changes.billingCountry = /*recipientAddress*/ ctx[2].country;
30602				if (dirty & /*recipientAddress*/ 4) billingstate_changes.onChange = /*func_3*/ ctx[17];
30603				billingstate.$set(billingstate_changes);
30604			},
30605			i(local) {
30606				if (current) return;
30607				transition_in(billingstate.$$.fragment, local);
30608				current = true;
30609			},
30610			o(local) {
30611				transition_out(billingstate.$$.fragment, local);
30612				current = false;
30613			},
30614			d(detaching) {
30615				if (detaching) {
30616					detach(div);
30617				}
30618
30619				destroy_component(billingstate);
30620			}
30621		};
30622	}
30623
30624	// (164:6) {#if showPostalCode}
30625	function create_if_block_2$7(ctx) {
30626		let div;
30627		let label;
30628		let t0_value = /*config*/ ctx[0].postalCodeLabel + "";
30629		let t0;
30630		let t1;
30631		let input;
30632		let input_placeholder_value;
30633		let mounted;
30634		let dispose;
30635
30636		return {
30637			c() {
30638				div = element("div");
30639				label = element("label");
30640				t0 = text(t0_value);
30641				t1 = space();
30642				input = element("input");
30643				attr(label, "for", "postalCode");
30644				attr(label, "class", "svelte-1lcs5wj");
30645				attr(input, "id", "postalCode");
30646				attr(input, "type", "text");
30647				input.required = /*showPostalCode*/ ctx[4];
30648				attr(input, "placeholder", input_placeholder_value = /*config*/ ctx[0].postalCodePlaceholder);
30649				attr(input, "class", "svelte-1lcs5wj");
30650				attr(div, "class", "field svelte-1lcs5wj");
30651			},
30652			m(target, anchor) {
30653				insert(target, div, anchor);
30654				append(div, label);
30655				append(label, t0);
30656				append(div, t1);
30657				append(div, input);
30658				set_input_value(input, /*recipientAddress*/ ctx[2].postalCode);
30659
30660				if (!mounted) {
30661					dispose = [
30662						listen(input, "input", /*input_input_handler_1*/ ctx[18]),
30663						listen(input, "input", /*updateGiftRecipient*/ ctx[9])
30664					];
30665
30666					mounted = true;
30667				}
30668			},
30669			p(ctx, dirty) {
30670				if (dirty & /*config*/ 1 && t0_value !== (t0_value = /*config*/ ctx[0].postalCodeLabel + "")) set_data(t0, t0_value);
30671
30672				if (dirty & /*showPostalCode*/ 16) {
30673					input.required = /*showPostalCode*/ ctx[4];
30674				}
30675
30676				if (dirty & /*config*/ 1 && input_placeholder_value !== (input_placeholder_value = /*config*/ ctx[0].postalCodePlaceholder)) {
30677					attr(input, "placeholder", input_placeholder_value);
30678				}
30679
30680				if (dirty & /*recipientAddress*/ 4 && input.value !== /*recipientAddress*/ ctx[2].postalCode) {
30681					set_input_value(input, /*recipientAddress*/ ctx[2].postalCode);
30682				}
30683			},
30684			d(detaching) {
30685				if (detaching) {
30686					detach(div);
30687				}
30688
30689				mounted = false;
30690				run_all(dispose);
30691			}
30692		};
30693	}
30694
30695	// (178:4) {#if addressError}
30696	function create_if_block_1$9(ctx) {
30697		let div;
30698		let t;
30699
30700		return {
30701			c() {
30702				div = element("div");
30703				t = text(/*addressError*/ ctx[1]);
30704				attr(div, "class", "error-text svelte-1lcs5wj");
30705			},
30706			m(target, anchor) {
30707				insert(target, div, anchor);
30708				append(div, t);
30709			},
30710			p(ctx, dirty) {
30711				if (dirty & /*addressError*/ 2) set_data(t, /*addressError*/ ctx[1]);
30712			},
30713			d(detaching) {
30714				if (detaching) {
30715					detach(div);
30716				}
30717			}
30718		};
30719	}
30720
30721	function create_fragment$e(ctx) {
30722		let if_block_anchor;
30723		let current;
30724		let if_block = /*showAnyAddress*/ ctx[8] && create_if_block$a(ctx);
30725
30726		return {
30727			c() {
30728				if (if_block) if_block.c();
30729				if_block_anchor = empty();
30730			},
30731			m(target, anchor) {
30732				if (if_block) if_block.m(target, anchor);
30733				insert(target, if_block_anchor, anchor);
30734				current = true;
30735			},
30736			p(ctx, [dirty]) {
30737				if (/*showAnyAddress*/ ctx[8]) {
30738					if (if_block) {
30739						if_block.p(ctx, dirty);
30740
30741						if (dirty & /*showAnyAddress*/ 256) {
30742							transition_in(if_block, 1);
30743						}
30744					} else {
30745						if_block = create_if_block$a(ctx);
30746						if_block.c();
30747						transition_in(if_block, 1);
30748						if_block.m(if_block_anchor.parentNode, if_block_anchor);
30749					}
30750				} else if (if_block) {
30751					group_outros();
30752
30753					transition_out(if_block, 1, 1, () => {
30754						if_block = null;
30755					});
30756
30757					check_outros();
30758				}
30759			},
30760			i(local) {
30761				if (current) return;
30762				transition_in(if_block);
30763				current = true;
30764			},
30765			o(local) {
30766				transition_out(if_block);
30767				current = false;
30768			},
30769			d(detaching) {
30770				if (detaching) {
30771					detach(if_block_anchor);
30772				}
30773
30774				if (if_block) if_block.d(detaching);
30775			}
30776		};
30777	}
30778
30779	const func_1 = () => {
30780		
30781	};
30782
30783	const func_2 = () => {
30784		
30785	};
30786
30787	const func_4 = () => {
30788		
30789	};
30790
30791	const func_5 = () => {
30792		
30793	};
30794
30795	function instance$e($$self, $$props, $$invalidate) {
30796		let showAddress;
30797		let showPostalCode;
30798		let showCountry;
30799		let showState;
30800		let showCity;
30801		let showAnyAddress;
30802		let { formState } = $$props;
30803		let { formActions } = $$props;
30804		let { config } = $$props;
30805		let { form } = $$props;
30806		const dispatch = createEventDispatcher();
30807		let addressError = '';
30808
30809		// Initialize recipient address fields
30810		let recipientAddress = {
30811			addressLine1: formState.giftRecipient?.recipientAddress?.addressLine1 || '',
30812			addressLine2: formState.giftRecipient?.recipientAddress?.addressLine2 || '',
30813			city: formState.giftRecipient?.recipientAddress?.city || '',
30814			state: formState.giftRecipient?.recipientAddress?.state || '',
30815			country: formState.giftRecipient?.recipientAddress?.country || '',
30816			postalCode: formState.giftRecipient?.recipientAddress?.postalCode || ''
30817		};
30818
30819		// Update form state when inputs change
30820		const updateGiftRecipient = () => {
30821			const updatedGiftRecipient = {
30822				...formState.giftRecipient || {},
30823				recipientAddress
30824			};
30825
30826			formActions.updateFormState({ giftRecipient: updatedGiftRecipient });
30827			validateForm();
30828		};
30829
30830		const validateForm = () => {
30831			let isValid = true;
30832			let errorMessage = '';
30833
30834			// Validate country if shown
30835			if (showCountry && !recipientAddress.country.trim()) {
30836				isValid = false;
30837				errorMessage = config.countryRequiredError;
30838			}
30839
30840			// Validate state if shown and country requires it
30841			if (showState && (recipientAddress.country === 'US' || recipientAddress.country === 'CA') && !recipientAddress.state.trim()) {
30842				isValid = false;
30843				errorMessage = config.stateRequiredError;
30844			}
30845
30846			// Validate city if shown
30847			if (showCity && !recipientAddress.city.trim()) {
30848				isValid = false;
30849				errorMessage = config.cityRequiredError;
30850			}
30851
30852			// Validate postal code if shown
30853			if (showPostalCode && !errorMessage) {
30854				if (!recipientAddress.postalCode.trim()) {
30855					isValid = false;
30856					errorMessage = config.postalCodeRequiredError;
30857				}
30858			}
30859
30860			// Validate street address if shown
30861			if (showAddress && !errorMessage) {
30862				if (!recipientAddress.addressLine1.trim()) {
30863					isValid = false;
30864					errorMessage = config.addressRequiredError;
30865				}
30866			}
30867
30868			$$invalidate(1, addressError = errorMessage);
30869
30870			// Dispatch event for form validity
30871			dispatch('validity', { isValid });
30872		};
30873
30874		function input0_input_handler() {
30875			recipientAddress.addressLine1 = this.value;
30876			$$invalidate(2, recipientAddress);
30877		}
30878
30879		function input1_input_handler() {
30880			recipientAddress.addressLine2 = this.value;
30881			$$invalidate(2, recipientAddress);
30882		}
30883
30884		function input_input_handler() {
30885			recipientAddress.city = this.value;
30886			$$invalidate(2, recipientAddress);
30887		}
30888
30889		const func = value => {
30890			$$invalidate(2, recipientAddress.country = value, recipientAddress);
30891			updateGiftRecipient();
30892		};
30893
30894		const func_3 = value => {
30895			$$invalidate(2, recipientAddress.state = value, recipientAddress);
30896			updateGiftRecipient();
30897		};
30898
30899		function input_input_handler_1() {
30900			recipientAddress.postalCode = this.value;
30901			$$invalidate(2, recipientAddress);
30902		}
30903
30904		$$self.$$set = $$props => {
30905			if ('formState' in $$props) $$invalidate(10, formState = $$props.formState);
30906			if ('formActions' in $$props) $$invalidate(11, formActions = $$props.formActions);
30907			if ('config' in $$props) $$invalidate(0, config = $$props.config);
30908			if ('form' in $$props) $$invalidate(12, form = $$props.form);
30909		};
30910
30911		$$self.$$.update = () => {
30912			if ($$self.$$.dirty & /*config*/ 1) {
30913				// Use config values directly - they are reactive props
30914				$$invalidate(3, showAddress = config?.showAddress ?? false);
30915			}
30916
30917			if ($$self.$$.dirty & /*config*/ 1) {
30918				$$invalidate(4, showPostalCode = config?.showPostalCode ?? false);
30919			}
30920
30921			if ($$self.$$.dirty & /*config*/ 1) {
30922				$$invalidate(7, showCountry = config?.showCountry ?? false);
30923			}
30924
30925			if ($$self.$$.dirty & /*config*/ 1) {
30926				$$invalidate(6, showState = config?.showState ?? false);
30927			}
30928
30929			if ($$self.$$.dirty & /*config*/ 1) {
30930				$$invalidate(5, showCity = config?.showCity ?? false);
30931			}
30932		};
30933
30934		$$invalidate(8, showAnyAddress = true);
30935
30936		return [
30937			config,
30938			addressError,
30939			recipientAddress,
30940			showAddress,
30941			showPostalCode,
30942			showCity,
30943			showState,
30944			showCountry,
30945			showAnyAddress,
30946			updateGiftRecipient,
30947			formState,
30948			formActions,
30949			form,
30950			input0_input_handler,
30951			input1_input_handler,
30952			input_input_handler,
30953			func,
30954			func_3,
30955			input_input_handler_1
30956		];
30957	}
30958
30959	class RecipientAddress extends SvelteComponent {
30960		constructor(options) {
30961			super();
30962
30963			init(this, options, instance$e, create_fragment$e, safe_not_equal, {
30964				formState: 10,
30965				formActions: 11,
30966				config: 0,
30967				form: 12
30968			});
30969		}
30970	}
30971
30972	const recipientAddressFactory = {
30973	    matches: (sectionElement) => sectionElement.type === elementTypes.RECIPIENT_ADDRESS,
30974	    create: (form, formState, formActions, elementConfig) => {
30975	        // Determine if address is required from form configuration
30976	        const typeConfiguration = formConfigAs(form);
30977	        const requires_address = typeConfiguration.requires_address;
30978	        // If requires_address is false, don't render the component at all
30979	        if (requires_address === false) {
30980	            return {
30981	                component: null,
30982	                props: {},
30983	                isValid: true
30984	            };
30985	        }
30986	        // Resolve all labels and error messages through language pack service
30987	        const resolvedConfig = {
30988	            label: resolveLanguagePackKeyTyped(form, 'forms.gift.recipient-address', elementConfig.label),
30989	            addressLine1Label: resolveLanguagePackKeyTyped(form, 'forms.gift.address-line1', elementConfig.addressLine1Label),
30990	            addressLine2Label: resolveLanguagePackKeyTyped(form, 'forms.gift.address-line2', elementConfig.addressLine2Label),
30991	            cityLabel: resolveLanguagePackKeyTyped(form, 'forms.gift.city', elementConfig.cityLabel),
30992	            stateLabel: resolveLanguagePackKeyTyped(form, 'forms.gift.state', elementConfig.stateLabel),
30993	            countryLabel: resolveLanguagePackKeyTyped(form, 'forms.gift.country', elementConfig.countryLabel),
30994	            postalCodeLabel: resolveLanguagePackKeyTyped(form, 'forms.gift.postal-code', elementConfig.postalCodeLabel),
30995	            addressRequiredError: resolveLanguagePackKeyTyped(form, 'forms.gift.address-required', elementConfig.addressRequiredError),
30996	            countryRequiredError: resolveLanguagePackKeyTyped(form, 'forms.gift.country-required', elementConfig.countryRequiredError),
30997	            stateRequiredError: resolveLanguagePackKeyTyped(form, 'forms.gift.state-required', elementConfig.stateRequiredError),
30998	            cityRequiredError: resolveLanguagePackKeyTyped(form, 'forms.gift.city-required', elementConfig.cityRequiredError),
30999	            postalCodeRequiredError: resolveLanguagePackKeyTyped(form, 'forms.gift.postal-code-required', elementConfig.postalCodeRequiredError),
31000	            addressLine1Placeholder: resolveLanguagePackKeyTyped(form, 'forms.gift.address-line1-placeholder', elementConfig.addressLine1Placeholder),
31001	            addressLine2Placeholder: resolveLanguagePackKeyTyped(form, 'forms.gift.address-line2-placeholder', elementConfig.addressLine2Placeholder),
31002	            cityPlaceholder: resolveLanguagePackKeyTyped(form, 'forms.gift.city-placeholder', elementConfig.cityPlaceholder),
31003	            statePlaceholder: resolveLanguagePackKeyTyped(form, 'forms.gift.state-placeholder', elementConfig.statePlaceholder),
31004	            countryPlaceholder: resolveLanguagePackKeyTyped(form, 'forms.gift.country-placeholder', elementConfig.countryPlaceholder),
31005	            postalCodePlaceholder: resolveLanguagePackKeyTyped(form, 'forms.gift.postal-code-placeholder', elementConfig.postalCodePlaceholder),
31006	            // Field visibility controls - pass through from element config
31007	            showAddress: elementConfig.showAddress,
31008	            showPostalCode: elementConfig.showPostalCode,
31009	            showCountry: elementConfig.showCountry,
31010	            showState: elementConfig.showState,
31011	            showCity: elementConfig.showCity,
31012	        };
31013	        // Determine if the input is valid based on granular field requirements
31014	        const giftRecipient = (formState.giftRecipient || {});
31015	        const recipientAddress = giftRecipient.recipientAddress || {};
31016	        let isValid = true;
31017	        // Calculate which fields are shown (same logic as component)
31018	        const showAddress = elementConfig.showAddress ?? false;
31019	        const showPostalCode = elementConfig.showPostalCode ?? false;
31020	        const showCountry = elementConfig.showCountry ?? false;
31021	        const showState = elementConfig.showState ?? false;
31022	        const showCity = elementConfig.showCity ?? false;
31023	        // Validate address if required
31024	        if (showAddress && !recipientAddress.addressLine1?.trim()) {
31025	            isValid = false;
31026	        }
31027	        // Validate postal code if required
31028	        if (showPostalCode && !recipientAddress.postalCode?.trim()) {
31029	            isValid = false;
31030	        }
31031	        // Validate country if required
31032	        if (showCountry && !recipientAddress.country?.trim()) {
31033	            isValid = false;
31034	        }
31035	        // Validate state if required (only for US/CA when showState is enabled)
31036	        if (showState && (recipientAddress.country === 'US' || recipientAddress.country === 'CA') && !recipientAddress.state?.trim()) {
31037	            isValid = false;
31038	        }
31039	        // Validate city if required
31040	        if (showCity && !recipientAddress.city?.trim()) {
31041	            isValid = false;
31042	        }
31043	        return {
31044	            component: RecipientAddress,
31045	            props: {
31046	                config: resolvedConfig,
31047	                form,
31048	                formState,
31049	                formActions,
31050	            },
31051	            isValid
31052	        };
31053	    }
31054	};
31055
31056	/* src/components/elements/recipientMessage/RecipientMessage.svelte generated by Svelte v4.2.12 */
31057
31058	function create_fragment$d(ctx) {
31059		let div1;
31060		let div0;
31061		let label;
31062		let t0_value = /*config*/ ctx[0].messageLabel + "";
31063		let t0;
31064		let t1;
31065		let textarea;
31066		let textarea_placeholder_value;
31067		let mounted;
31068		let dispose;
31069
31070		return {
31071			c() {
31072				div1 = element("div");
31073				div0 = element("div");
31074				label = element("label");
31075				t0 = text(t0_value);
31076				t1 = space();
31077				textarea = element("textarea");
31078				attr(label, "for", "customMessage");
31079				attr(label, "class", "svelte-h6tpk7");
31080				attr(textarea, "id", "customMessage");
31081				attr(textarea, "placeholder", textarea_placeholder_value = /*config*/ ctx[0].messagePlaceholder);
31082				attr(textarea, "class", "svelte-h6tpk7");
31083				attr(div0, "class", "field svelte-h6tpk7");
31084				attr(div1, "class", "recipient-message-section svelte-h6tpk7");
31085			},
31086			m(target, anchor) {
31087				insert(target, div1, anchor);
31088				append(div1, div0);
31089				append(div0, label);
31090				append(label, t0);
31091				append(div0, t1);
31092				append(div0, textarea);
31093				set_input_value(textarea, /*customMessage*/ ctx[1]);
31094
31095				if (!mounted) {
31096					dispose = [
31097						listen(textarea, "input", /*textarea_input_handler*/ ctx[5]),
31098						listen(textarea, "input", /*updateGiftRecipient*/ ctx[2])
31099					];
31100
31101					mounted = true;
31102				}
31103			},
31104			p(ctx, [dirty]) {
31105				if (dirty & /*config*/ 1 && t0_value !== (t0_value = /*config*/ ctx[0].messageLabel + "")) set_data(t0, t0_value);
31106
31107				if (dirty & /*config*/ 1 && textarea_placeholder_value !== (textarea_placeholder_value = /*config*/ ctx[0].messagePlaceholder)) {
31108					attr(textarea, "placeholder", textarea_placeholder_value);
31109				}
31110
31111				if (dirty & /*customMessage*/ 2) {
31112					set_input_value(textarea, /*customMessage*/ ctx[1]);
31113				}
31114			},
31115			i: noop,
31116			o: noop,
31117			d(detaching) {
31118				if (detaching) {
31119					detach(div1);
31120				}
31121
31122				mounted = false;
31123				run_all(dispose);
31124			}
31125		};
31126	}
31127
31128	function instance$d($$self, $$props, $$invalidate) {
31129		let { formState } = $$props;
31130		let { formActions } = $$props;
31131		let { config } = $$props;
31132		const dispatch = createEventDispatcher();
31133		let customMessage = formState.giftRecipient?.customMessage || '';
31134
31135		// Update form state when input changes
31136		const updateGiftRecipient = () => {
31137			const updatedGiftRecipient = {
31138				...formState.giftRecipient || {},
31139				customMessage
31140			};
31141
31142			formActions.updateFormState({ giftRecipient: updatedGiftRecipient });
31143		};
31144
31145		// Initial validation
31146		onMount(() => {
31147			// Message is always valid as it's optional
31148			dispatch('validity', { isValid: true });
31149		});
31150
31151		function textarea_input_handler() {
31152			customMessage = this.value;
31153			$$invalidate(1, customMessage);
31154		}
31155
31156		$$self.$$set = $$props => {
31157			if ('formState' in $$props) $$invalidate(3, formState = $$props.formState);
31158			if ('formActions' in $$props) $$invalidate(4, formActions = $$props.formActions);
31159			if ('config' in $$props) $$invalidate(0, config = $$props.config);
31160		};
31161
31162		return [
31163			config,
31164			customMessage,
31165			updateGiftRecipient,
31166			formState,
31167			formActions,
31168			textarea_input_handler
31169		];
31170	}
31171
31172	class RecipientMessage extends SvelteComponent {
31173		constructor(options) {
31174			super();
31175			init(this, options, instance$d, create_fragment$d, safe_not_equal, { formState: 3, formActions: 4, config: 0 });
31176		}
31177	}
31178
31179	const recipientMessageFactory = {
31180	    matches: (sectionElement) => sectionElement.type === elementTypes.RECIPIENT_MESSAGE,
31181	    create: (form, formState, formActions, elementConfig) => {
31182	        // Resolve all labels through language pack service
31183	        const resolvedConfig = {
31184	            messageLabel: resolveLanguagePackKeyTyped(form, 'forms.gift.custom-message', elementConfig.messageLabel),
31185	            messagePlaceholder: resolveLanguagePackKeyTyped(form, 'forms.gift.message-placeholder', elementConfig.messagePlaceholder),
31186	        };
31187	        // Message is always valid as it's optional
31188	        const isValid = true;
31189	        return {
31190	            component: RecipientMessage,
31191	            props: {
31192	                config: resolvedConfig,
31193	                form,
31194	                formState,
31195	                formActions,
31196	            },
31197	            isValid
31198	        };
31199	    }
31200	};
31201
31202	/* src/components/elements/giftCode/GiftCode.svelte generated by Svelte v4.2.12 */
31203
31204	function create_if_block_1$8(ctx) {
31205		let label_1;
31206		let t0;
31207		let t1;
31208		let if_block = /*required*/ ctx[3] && create_if_block_2$6();
31209
31210		return {
31211			c() {
31212				label_1 = element("label");
31213				t0 = text(/*label*/ ctx[1]);
31214				t1 = space();
31215				if (if_block) if_block.c();
31216				attr(label_1, "for", "zephr-form-gift-code");
31217				attr(label_1, "class", "svelte-764k6k");
31218			},
31219			m(target, anchor) {
31220				insert(target, label_1, anchor);
31221				append(label_1, t0);
31222				append(label_1, t1);
31223				if (if_block) if_block.m(label_1, null);
31224			},
31225			p(ctx, dirty) {
31226				if (dirty & /*label*/ 2) set_data(t0, /*label*/ ctx[1]);
31227
31228				if (/*required*/ ctx[3]) {
31229					if (if_block) ; else {
31230						if_block = create_if_block_2$6();
31231						if_block.c();
31232						if_block.m(label_1, null);
31233					}
31234				} else if (if_block) {
31235					if_block.d(1);
31236					if_block = null;
31237				}
31238			},
31239			d(detaching) {
31240				if (detaching) {
31241					detach(label_1);
31242				}
31243
31244				if (if_block) if_block.d();
31245			}
31246		};
31247	}
31248
31249	// (22:6) {#if required}
31250	function create_if_block_2$6(ctx) {
31251		let span;
31252
31253		return {
31254			c() {
31255				span = element("span");
31256				span.textContent = "*";
31257				attr(span, "class", "required svelte-764k6k");
31258			},
31259			m(target, anchor) {
31260				insert(target, span, anchor);
31261			},
31262			d(detaching) {
31263				if (detaching) {
31264					detach(span);
31265				}
31266			}
31267		};
31268	}
31269
31270	// (40:2) {#if errorMessage}
31271	function create_if_block$9(ctx) {
31272		let div;
31273		let t;
31274
31275		return {
31276			c() {
31277				div = element("div");
31278				t = text(/*errorMessage*/ ctx[7]);
31279				attr(div, "class", "error-message svelte-764k6k");
31280			},
31281			m(target, anchor) {
31282				insert(target, div, anchor);
31283				append(div, t);
31284			},
31285			p(ctx, dirty) {
31286				if (dirty & /*errorMessage*/ 128) set_data(t, /*errorMessage*/ ctx[7]);
31287			},
31288			d(detaching) {
31289				if (detaching) {
31290					detach(div);
31291				}
31292			}
31293		};
31294	}
31295
31296	function create_fragment$c(ctx) {
31297		let div;
31298		let t0;
31299		let input;
31300		let t1;
31301		let mounted;
31302		let dispose;
31303		let if_block0 = /*label*/ ctx[1] && create_if_block_1$8(ctx);
31304		let if_block1 = /*errorMessage*/ ctx[7] && create_if_block$9(ctx);
31305
31306		return {
31307			c() {
31308				div = element("div");
31309				if (if_block0) if_block0.c();
31310				t0 = space();
31311				input = element("input");
31312				t1 = space();
31313				if (if_block1) if_block1.c();
31314				attr(input, "id", "zephr-form-gift-code");
31315				attr(input, "type", "text");
31316				attr(input, "placeholder", /*placeholder*/ ctx[2]);
31317				input.disabled = /*disabled*/ ctx[4];
31318				input.required = /*required*/ ctx[3];
31319				input.value = /*value*/ ctx[0];
31320				attr(input, "maxlength", "16");
31321				attr(input, "class", "svelte-764k6k");
31322				toggle_class(input, "error", !!/*errorMessage*/ ctx[7]);
31323				attr(div, "class", "zephr-form-input-wrapper svelte-764k6k");
31324			},
31325			m(target, anchor) {
31326				insert(target, div, anchor);
31327				if (if_block0) if_block0.m(div, null);
31328				append(div, t0);
31329				append(div, input);
31330				append(div, t1);
31331				if (if_block1) if_block1.m(div, null);
31332
31333				if (!mounted) {
31334					dispose = [
31335						listen(input, "input", /*handleChange*/ ctx[8]),
31336						listen(input, "focus", function () {
31337							if (is_function(/*onFocus*/ ctx[5])) /*onFocus*/ ctx[5].apply(this, arguments);
31338						}),
31339						listen(input, "blur", function () {
31340							if (is_function(/*onBlur*/ ctx[6])) /*onBlur*/ ctx[6].apply(this, arguments);
31341						})
31342					];
31343
31344					mounted = true;
31345				}
31346			},
31347			p(new_ctx, [dirty]) {
31348				ctx = new_ctx;
31349
31350				if (/*label*/ ctx[1]) {
31351					if (if_block0) {
31352						if_block0.p(ctx, dirty);
31353					} else {
31354						if_block0 = create_if_block_1$8(ctx);
31355						if_block0.c();
31356						if_block0.m(div, t0);
31357					}
31358				} else if (if_block0) {
31359					if_block0.d(1);
31360					if_block0 = null;
31361				}
31362
31363				if (dirty & /*placeholder*/ 4) {
31364					attr(input, "placeholder", /*placeholder*/ ctx[2]);
31365				}
31366
31367				if (dirty & /*disabled*/ 16) {
31368					input.disabled = /*disabled*/ ctx[4];
31369				}
31370
31371				if (dirty & /*required*/ 8) {
31372					input.required = /*required*/ ctx[3];
31373				}
31374
31375				if (dirty & /*value*/ 1 && input.value !== /*value*/ ctx[0]) {
31376					input.value = /*value*/ ctx[0];
31377				}
31378
31379				if (dirty & /*errorMessage*/ 128) {
31380					toggle_class(input, "error", !!/*errorMessage*/ ctx[7]);
31381				}
31382
31383				if (/*errorMessage*/ ctx[7]) {
31384					if (if_block1) {
31385						if_block1.p(ctx, dirty);
31386					} else {
31387						if_block1 = create_if_block$9(ctx);
31388						if_block1.c();
31389						if_block1.m(div, null);
31390					}
31391				} else if (if_block1) {
31392					if_block1.d(1);
31393					if_block1 = null;
31394				}
31395			},
31396			i: noop,
31397			o: noop,
31398			d(detaching) {
31399				if (detaching) {
31400					detach(div);
31401				}
31402
31403				if (if_block0) if_block0.d();
31404				if (if_block1) if_block1.d();
31405				mounted = false;
31406				run_all(dispose);
31407			}
31408		};
31409	}
31410
31411	function instance$c($$self, $$props, $$invalidate) {
31412		let errorMessage;
31413		let { value = "" } = $$props;
31414		let { label = "" } = $$props;
31415		let { placeholder = "" } = $$props;
31416		let { required = false } = $$props;
31417		let { disabled = false } = $$props;
31418		let { hasError = false } = $$props;
31419		let { error = false } = $$props;
31420
31421		let { onChange = _value => {
31422			
31423		} } = $$props;
31424
31425		let { onFocus = () => {
31426			
31427		} } = $$props;
31428
31429		let { onBlur = () => {
31430			
31431		} } = $$props;
31432
31433		const handleChange = event => {
31434			const newValue = event.target.value;
31435			onChange(newValue);
31436		};
31437
31438		$$self.$$set = $$props => {
31439			if ('value' in $$props) $$invalidate(0, value = $$props.value);
31440			if ('label' in $$props) $$invalidate(1, label = $$props.label);
31441			if ('placeholder' in $$props) $$invalidate(2, placeholder = $$props.placeholder);
31442			if ('required' in $$props) $$invalidate(3, required = $$props.required);
31443			if ('disabled' in $$props) $$invalidate(4, disabled = $$props.disabled);
31444			if ('hasError' in $$props) $$invalidate(9, hasError = $$props.hasError);
31445			if ('error' in $$props) $$invalidate(10, error = $$props.error);
31446			if ('onChange' in $$props) $$invalidate(11, onChange = $$props.onChange);
31447			if ('onFocus' in $$props) $$invalidate(5, onFocus = $$props.onFocus);
31448			if ('onBlur' in $$props) $$invalidate(6, onBlur = $$props.onBlur);
31449		};
31450
31451		$$self.$$.update = () => {
31452			if ($$self.$$.dirty & /*hasError, error*/ 1536) {
31453				$$invalidate(7, errorMessage = hasError || error);
31454			}
31455		};
31456
31457		return [
31458			value,
31459			label,
31460			placeholder,
31461			required,
31462			disabled,
31463			onFocus,
31464			onBlur,
31465			errorMessage,
31466			handleChange,
31467			hasError,
31468			error,
31469			onChange
31470		];
31471	}
31472
31473	class GiftCode extends SvelteComponent {
31474		constructor(options) {
31475			super();
31476
31477			init(this, options, instance$c, create_fragment$c, safe_not_equal, {
31478				value: 0,
31479				label: 1,
31480				placeholder: 2,
31481				required: 3,
31482				disabled: 4,
31483				hasError: 9,
31484				error: 10,
31485				onChange: 11,
31486				onFocus: 5,
31487				onBlur: 6
31488			});
31489		}
31490	}
31491
31492	const factory$2 = {
31493	    matches: (sectionElement) => sectionElement.type === elementTypes.GIFT_CODE,
31494	    create: (form, formState, formActions, config) => {
31495	        const { disabled, label, placeholder, required } = config;
31496	        const error = serverErrorForElement(elementTypes.GIFT_CODE, formState);
31497	        const onChange = (value) => {
31498	            formActions.updateFormState({
31499	                giftCode: value,
31500	                giftCodeError: undefined,
31501	            });
31502	            logDataLayerEvent(form, 'zephr_form_input_change', {
31503	                field: 'gift-code',
31504	                inputName: `zephr-form-gift-code-${form.uniqueKey}`,
31505	                sectionId: formState.currentSection.type,
31506	            });
31507	        };
31508	        const onFocus = () => logDataLayerEvent(form, 'zephr_form_input_focus', {
31509	            field: 'gift-code',
31510	            inputName: `zephr-form-gift-code-${form.uniqueKey}`,
31511	            sectionId: formState.currentSection.type,
31512	        });
31513	        const onBlur = () => logDataLayerEvent(form, 'zephr_form_input_blur', {
31514	            field: 'gift-code',
31515	            inputName: `zephr-form-gift-code-${form.uniqueKey}`,
31516	            sectionId: formState.currentSection.type,
31517	        });
31518	        const giftCode = formState.giftCode || '';
31519	        const isValid = (!required || !!giftCode) && giftCode.length === 16;
31520	        const errorMessage = error
31521	            ? resolveErrorLanguagePackKey(form, error)
31522	            : formState.giftCodeError;
31523	        return {
31524	            component: GiftCode,
31525	            props: {
31526	                hasError: errorMessage,
31527	                label,
31528	                placeholder,
31529	                required,
31530	                disabled,
31531	                onChange,
31532	                onFocus,
31533	                onBlur,
31534	                value: formState.giftCode || '',
31535	            },
31536	            isValid,
31537	        };
31538	    },
31539	};
31540
31541	/* src/components/elements/giftSubscriptionsList/GiftSubscriptionsListBoxItem.svelte generated by Svelte v4.2.12 */
31542
31543	function get_each_context$4(ctx, list, i) {
31544		const child_ctx = ctx.slice();
31545		child_ctx[25] = list[i];
31546		return child_ctx;
31547	}
31548
31549	// (30:39) 
31550	function create_if_block_14(ctx) {
31551		let div;
31552		let t;
31553
31554		return {
31555			c() {
31556				div = element("div");
31557				t = text(/*redeemedBannerText*/ ctx[5]);
31558				attr(div, "class", "zephr-banner-top svelte-srvimy");
31559			},
31560			m(target, anchor) {
31561				insert(target, div, anchor);
31562				append(div, t);
31563			},
31564			p(ctx, dirty) {
31565				if (dirty & /*redeemedBannerText*/ 32) set_data(t, /*redeemedBannerText*/ ctx[5]);
31566			},
31567			d(detaching) {
31568				if (detaching) {
31569					detach(div);
31570				}
31571			}
31572		};
31573	}
31574
31575	// (26:2) {#if gift.status === 'PENDING'}
31576	function create_if_block_13(ctx) {
31577		let div;
31578		let t0;
31579		let t1;
31580		let t2_value = /*gift*/ ctx[0].subscriptionStartDate + "";
31581		let t2;
31582
31583		return {
31584			c() {
31585				div = element("div");
31586				t0 = text(/*pendingBannerText*/ ctx[4]);
31587				t1 = space();
31588				t2 = text(t2_value);
31589				attr(div, "class", "zephr-banner-top svelte-srvimy");
31590			},
31591			m(target, anchor) {
31592				insert(target, div, anchor);
31593				append(div, t0);
31594				append(div, t1);
31595				append(div, t2);
31596			},
31597			p(ctx, dirty) {
31598				if (dirty & /*pendingBannerText*/ 16) set_data(t0, /*pendingBannerText*/ ctx[4]);
31599				if (dirty & /*gift*/ 1 && t2_value !== (t2_value = /*gift*/ ctx[0].subscriptionStartDate + "")) set_data(t2, t2_value);
31600			},
31601			d(detaching) {
31602				if (detaching) {
31603					detach(div);
31604				}
31605			}
31606		};
31607	}
31608
31609	// (38:6) {#if element === 'subscription_information' && !elementsHide.subscriptionInformation}
31610	function create_if_block_8(ctx) {
31611		let t0;
31612		let t1;
31613		let t2;
31614		let if_block3_anchor;
31615		let if_block0 = (/*gift*/ ctx[0].recipientFirstName || /*gift*/ ctx[0].recipientLastName || /*gift*/ ctx[0].is_recipient) && create_if_block_12(ctx);
31616		let if_block1 = /*gift*/ ctx[0].subscriptionType && create_if_block_11(ctx);
31617		let if_block2 = /*gift*/ ctx[0].subscriptionStartDate && create_if_block_10(ctx);
31618		let if_block3 = /*gift*/ ctx[0].subscriptionEndDate && create_if_block_9(ctx);
31619
31620		return {
31621			c() {
31622				if (if_block0) if_block0.c();
31623				t0 = space();
31624				if (if_block1) if_block1.c();
31625				t1 = space();
31626				if (if_block2) if_block2.c();
31627				t2 = space();
31628				if (if_block3) if_block3.c();
31629				if_block3_anchor = empty();
31630			},
31631			m(target, anchor) {
31632				if (if_block0) if_block0.m(target, anchor);
31633				insert(target, t0, anchor);
31634				if (if_block1) if_block1.m(target, anchor);
31635				insert(target, t1, anchor);
31636				if (if_block2) if_block2.m(target, anchor);
31637				insert(target, t2, anchor);
31638				if (if_block3) if_block3.m(target, anchor);
31639				insert(target, if_block3_anchor, anchor);
31640			},
31641			p(ctx, dirty) {
31642				if (/*gift*/ ctx[0].recipientFirstName || /*gift*/ ctx[0].recipientLastName || /*gift*/ ctx[0].is_recipient) {
31643					if (if_block0) {
31644						if_block0.p(ctx, dirty);
31645					} else {
31646						if_block0 = create_if_block_12(ctx);
31647						if_block0.c();
31648						if_block0.m(t0.parentNode, t0);
31649					}
31650				} else if (if_block0) {
31651					if_block0.d(1);
31652					if_block0 = null;
31653				}
31654
31655				if (/*gift*/ ctx[0].subscriptionType) {
31656					if (if_block1) {
31657						if_block1.p(ctx, dirty);
31658					} else {
31659						if_block1 = create_if_block_11(ctx);
31660						if_block1.c();
31661						if_block1.m(t1.parentNode, t1);
31662					}
31663				} else if (if_block1) {
31664					if_block1.d(1);
31665					if_block1 = null;
31666				}
31667
31668				if (/*gift*/ ctx[0].subscriptionStartDate) {
31669					if (if_block2) {
31670						if_block2.p(ctx, dirty);
31671					} else {
31672						if_block2 = create_if_block_10(ctx);
31673						if_block2.c();
31674						if_block2.m(t2.parentNode, t2);
31675					}
31676				} else if (if_block2) {
31677					if_block2.d(1);
31678					if_block2 = null;
31679				}
31680
31681				if (/*gift*/ ctx[0].subscriptionEndDate) {
31682					if (if_block3) {
31683						if_block3.p(ctx, dirty);
31684					} else {
31685						if_block3 = create_if_block_9(ctx);
31686						if_block3.c();
31687						if_block3.m(if_block3_anchor.parentNode, if_block3_anchor);
31688					}
31689				} else if (if_block3) {
31690					if_block3.d(1);
31691					if_block3 = null;
31692				}
31693			},
31694			d(detaching) {
31695				if (detaching) {
31696					detach(t0);
31697					detach(t1);
31698					detach(t2);
31699					detach(if_block3_anchor);
31700				}
31701
31702				if (if_block0) if_block0.d(detaching);
31703				if (if_block1) if_block1.d(detaching);
31704				if (if_block2) if_block2.d(detaching);
31705				if (if_block3) if_block3.d(detaching);
31706			}
31707		};
31708	}
31709
31710	// (39:8) {#if gift.recipientFirstName || gift.recipientLastName || gift.is_recipient}
31711	function create_if_block_12(ctx) {
31712		let div2;
31713		let span;
31714		let t0;
31715		let t1;
31716		let div0;
31717		let t2_value = (/*gift*/ ctx[0].recipientFirstName || '') + "";
31718		let t2;
31719		let t3;
31720		let t4_value = (/*gift*/ ctx[0].recipientLastName || '') + "";
31721		let t4;
31722		let t5;
31723		let div1;
31724
31725		let t6_value = (/*gift*/ ctx[0].status === 'REDEEMED'
31726		? /*activeStatusText*/ ctx[6]
31727		: /*pendingStatusText*/ ctx[7]) + "";
31728
31729		let t6;
31730
31731		return {
31732			c() {
31733				div2 = element("div");
31734				span = element("span");
31735				t0 = text(/*giftRecipientText*/ ctx[1]);
31736				t1 = space();
31737				div0 = element("div");
31738				t2 = text(t2_value);
31739				t3 = space();
31740				t4 = text(t4_value);
31741				t5 = space();
31742				div1 = element("div");
31743				t6 = text(t6_value);
31744				attr(span, "class", "svelte-srvimy");
31745				attr(div0, "class", "zephr-box-item-information svelte-srvimy");
31746				attr(div1, "class", "zephr-status-pill svelte-srvimy");
31747				attr(div2, "class", "zephr-section zephr-header-section svelte-srvimy");
31748			},
31749			m(target, anchor) {
31750				insert(target, div2, anchor);
31751				append(div2, span);
31752				append(span, t0);
31753				append(div2, t1);
31754				append(div2, div0);
31755				append(div0, t2);
31756				append(div0, t3);
31757				append(div0, t4);
31758				append(div2, t5);
31759				append(div2, div1);
31760				append(div1, t6);
31761			},
31762			p(ctx, dirty) {
31763				if (dirty & /*giftRecipientText*/ 2) set_data(t0, /*giftRecipientText*/ ctx[1]);
31764				if (dirty & /*gift*/ 1 && t2_value !== (t2_value = (/*gift*/ ctx[0].recipientFirstName || '') + "")) set_data(t2, t2_value);
31765				if (dirty & /*gift*/ 1 && t4_value !== (t4_value = (/*gift*/ ctx[0].recipientLastName || '') + "")) set_data(t4, t4_value);
31766
31767				if (dirty & /*gift, activeStatusText, pendingStatusText*/ 193 && t6_value !== (t6_value = (/*gift*/ ctx[0].status === 'REDEEMED'
31768				? /*activeStatusText*/ ctx[6]
31769				: /*pendingStatusText*/ ctx[7]) + "")) set_data(t6, t6_value);
31770			},
31771			d(detaching) {
31772				if (detaching) {
31773					detach(div2);
31774				}
31775			}
31776		};
31777	}
31778
31779	// (51:8) {#if gift.subscriptionType}
31780	function create_if_block_11(ctx) {
31781		let div1;
31782		let span;
31783		let t0;
31784		let t1;
31785		let div0;
31786		let t2_value = /*gift*/ ctx[0].subscriptionType + "";
31787		let t2;
31788
31789		return {
31790			c() {
31791				div1 = element("div");
31792				span = element("span");
31793				t0 = text(/*subscriptionTypeText*/ ctx[13]);
31794				t1 = space();
31795				div0 = element("div");
31796				t2 = text(t2_value);
31797				attr(span, "class", "svelte-srvimy");
31798				attr(div0, "class", "");
31799				attr(div1, "class", "zephr-section svelte-srvimy");
31800			},
31801			m(target, anchor) {
31802				insert(target, div1, anchor);
31803				append(div1, span);
31804				append(span, t0);
31805				append(div1, t1);
31806				append(div1, div0);
31807				append(div0, t2);
31808			},
31809			p(ctx, dirty) {
31810				if (dirty & /*subscriptionTypeText*/ 8192) set_data(t0, /*subscriptionTypeText*/ ctx[13]);
31811				if (dirty & /*gift*/ 1 && t2_value !== (t2_value = /*gift*/ ctx[0].subscriptionType + "")) set_data(t2, t2_value);
31812			},
31813			d(detaching) {
31814				if (detaching) {
31815					detach(div1);
31816				}
31817			}
31818		};
31819	}
31820
31821	// (60:8) {#if gift.subscriptionStartDate}
31822	function create_if_block_10(ctx) {
31823		let div1;
31824		let span;
31825		let t0;
31826		let t1;
31827		let div0;
31828		let t2_value = /*gift*/ ctx[0].subscriptionStartDate + "";
31829		let t2;
31830
31831		return {
31832			c() {
31833				div1 = element("div");
31834				span = element("span");
31835				t0 = text(/*startDateText*/ ctx[2]);
31836				t1 = space();
31837				div0 = element("div");
31838				t2 = text(t2_value);
31839				attr(span, "class", "svelte-srvimy");
31840				attr(div0, "class", "");
31841				attr(div1, "class", "zephr-section svelte-srvimy");
31842			},
31843			m(target, anchor) {
31844				insert(target, div1, anchor);
31845				append(div1, span);
31846				append(span, t0);
31847				append(div1, t1);
31848				append(div1, div0);
31849				append(div0, t2);
31850			},
31851			p(ctx, dirty) {
31852				if (dirty & /*startDateText*/ 4) set_data(t0, /*startDateText*/ ctx[2]);
31853				if (dirty & /*gift*/ 1 && t2_value !== (t2_value = /*gift*/ ctx[0].subscriptionStartDate + "")) set_data(t2, t2_value);
31854			},
31855			d(detaching) {
31856				if (detaching) {
31857					detach(div1);
31858				}
31859			}
31860		};
31861	}
31862
31863	// (69:8) {#if gift.subscriptionEndDate}
31864	function create_if_block_9(ctx) {
31865		let div1;
31866		let span;
31867		let t0;
31868		let t1;
31869		let div0;
31870		let t2_value = /*gift*/ ctx[0].subscriptionEndDate + "";
31871		let t2;
31872
31873		return {
31874			c() {
31875				div1 = element("div");
31876				span = element("span");
31877				t0 = text(/*endDateText*/ ctx[3]);
31878				t1 = space();
31879				div0 = element("div");
31880				t2 = text(t2_value);
31881				attr(span, "class", "svelte-srvimy");
31882				attr(div0, "class", "");
31883				attr(div1, "class", "zephr-section svelte-srvimy");
31884			},
31885			m(target, anchor) {
31886				insert(target, div1, anchor);
31887				append(div1, span);
31888				append(span, t0);
31889				append(div1, t1);
31890				append(div1, div0);
31891				append(div0, t2);
31892			},
31893			p(ctx, dirty) {
31894				if (dirty & /*endDateText*/ 8) set_data(t0, /*endDateText*/ ctx[3]);
31895				if (dirty & /*gift*/ 1 && t2_value !== (t2_value = /*gift*/ ctx[0].subscriptionEndDate + "")) set_data(t2, t2_value);
31896			},
31897			d(detaching) {
31898				if (detaching) {
31899					detach(div1);
31900				}
31901			}
31902		};
31903	}
31904
31905	// (78:6) {#if element === 'billing_history' && !elementsHide.billingHistory && gift.status === "PENDING"}
31906	function create_if_block_6$2(ctx) {
31907		let if_block_anchor;
31908		let current;
31909		let if_block = /*billingHistoryLink*/ ctx[16] && create_if_block_7(ctx);
31910
31911		return {
31912			c() {
31913				if (if_block) if_block.c();
31914				if_block_anchor = empty();
31915			},
31916			m(target, anchor) {
31917				if (if_block) if_block.m(target, anchor);
31918				insert(target, if_block_anchor, anchor);
31919				current = true;
31920			},
31921			p(ctx, dirty) {
31922				if (/*billingHistoryLink*/ ctx[16]) {
31923					if (if_block) {
31924						if_block.p(ctx, dirty);
31925
31926						if (dirty & /*billingHistoryLink*/ 65536) {
31927							transition_in(if_block, 1);
31928						}
31929					} else {
31930						if_block = create_if_block_7(ctx);
31931						if_block.c();
31932						transition_in(if_block, 1);
31933						if_block.m(if_block_anchor.parentNode, if_block_anchor);
31934					}
31935				} else if (if_block) {
31936					group_outros();
31937
31938					transition_out(if_block, 1, 1, () => {
31939						if_block = null;
31940					});
31941
31942					check_outros();
31943				}
31944			},
31945			i(local) {
31946				if (current) return;
31947				transition_in(if_block);
31948				current = true;
31949			},
31950			o(local) {
31951				transition_out(if_block);
31952				current = false;
31953			},
31954			d(detaching) {
31955				if (detaching) {
31956					detach(if_block_anchor);
31957				}
31958
31959				if (if_block) if_block.d(detaching);
31960			}
31961		};
31962	}
31963
31964	// (79:6) {#if billingHistoryLink}
31965	function create_if_block_7(ctx) {
31966		let tablink;
31967		let current;
31968
31969		tablink = new Tablink({
31970				props: {
31971					text: /*billingHistoryLink*/ ctx[16],
31972					onClick: /*func*/ ctx[21]
31973				}
31974			});
31975
31976		return {
31977			c() {
31978				create_component(tablink.$$.fragment);
31979			},
31980			m(target, anchor) {
31981				mount_component(tablink, target, anchor);
31982				current = true;
31983			},
31984			p(ctx, dirty) {
31985				const tablink_changes = {};
31986				if (dirty & /*billingHistoryLink*/ 65536) tablink_changes.text = /*billingHistoryLink*/ ctx[16];
31987				if (dirty & /*onViewHistory, gift*/ 131073) tablink_changes.onClick = /*func*/ ctx[21];
31988				tablink.$set(tablink_changes);
31989			},
31990			i(local) {
31991				if (current) return;
31992				transition_in(tablink.$$.fragment, local);
31993				current = true;
31994			},
31995			o(local) {
31996				transition_out(tablink.$$.fragment, local);
31997				current = false;
31998			},
31999			d(detaching) {
32000				destroy_component(tablink, detaching);
32001			}
32002		};
32003	}
32004
32005	// (83:4) {#if element === 'change_payment' && !elementsHide.changePayment && gift.status === "PENDING"}
32006	function create_if_block_4$2(ctx) {
32007		let if_block_anchor;
32008		let current;
32009		let if_block = /*changePaymentMethodText*/ ctx[9] && create_if_block_5$2(ctx);
32010
32011		return {
32012			c() {
32013				if (if_block) if_block.c();
32014				if_block_anchor = empty();
32015			},
32016			m(target, anchor) {
32017				if (if_block) if_block.m(target, anchor);
32018				insert(target, if_block_anchor, anchor);
32019				current = true;
32020			},
32021			p(ctx, dirty) {
32022				if (/*changePaymentMethodText*/ ctx[9]) {
32023					if (if_block) {
32024						if_block.p(ctx, dirty);
32025
32026						if (dirty & /*changePaymentMethodText*/ 512) {
32027							transition_in(if_block, 1);
32028						}
32029					} else {
32030						if_block = create_if_block_5$2(ctx);
32031						if_block.c();
32032						transition_in(if_block, 1);
32033						if_block.m(if_block_anchor.parentNode, if_block_anchor);
32034					}
32035				} else if (if_block) {
32036					group_outros();
32037
32038					transition_out(if_block, 1, 1, () => {
32039						if_block = null;
32040					});
32041
32042					check_outros();
32043				}
32044			},
32045			i(local) {
32046				if (current) return;
32047				transition_in(if_block);
32048				current = true;
32049			},
32050			o(local) {
32051				transition_out(if_block);
32052				current = false;
32053			},
32054			d(detaching) {
32055				if (detaching) {
32056					detach(if_block_anchor);
32057				}
32058
32059				if (if_block) if_block.d(detaching);
32060			}
32061		};
32062	}
32063
32064	// (84:6) {#if changePaymentMethodText}
32065	function create_if_block_5$2(ctx) {
32066		let tablink;
32067		let current;
32068
32069		tablink = new Tablink({
32070				props: {
32071					text: /*changePaymentMethodText*/ ctx[9],
32072					onClick: /*func_1*/ ctx[22]
32073				}
32074			});
32075
32076		return {
32077			c() {
32078				create_component(tablink.$$.fragment);
32079			},
32080			m(target, anchor) {
32081				mount_component(tablink, target, anchor);
32082				current = true;
32083			},
32084			p(ctx, dirty) {
32085				const tablink_changes = {};
32086				if (dirty & /*changePaymentMethodText*/ 512) tablink_changes.text = /*changePaymentMethodText*/ ctx[9];
32087				if (dirty & /*onChangePayment, gift*/ 262145) tablink_changes.onClick = /*func_1*/ ctx[22];
32088				tablink.$set(tablink_changes);
32089			},
32090			i(local) {
32091				if (current) return;
32092				transition_in(tablink.$$.fragment, local);
32093				current = true;
32094			},
32095			o(local) {
32096				transition_out(tablink.$$.fragment, local);
32097				current = false;
32098			},
32099			d(detaching) {
32100				destroy_component(tablink, detaching);
32101			}
32102		};
32103	}
32104
32105	// (88:4) {#if element === 'change_subscription' && !elementsHide.changeSubscription && gift.status === "PENDING"}
32106	function create_if_block_2$5(ctx) {
32107		let if_block_anchor;
32108		let current;
32109		let if_block = /*changeSubscriptionText*/ ctx[10] && create_if_block_3$3(ctx);
32110
32111		return {
32112			c() {
32113				if (if_block) if_block.c();
32114				if_block_anchor = empty();
32115			},
32116			m(target, anchor) {
32117				if (if_block) if_block.m(target, anchor);
32118				insert(target, if_block_anchor, anchor);
32119				current = true;
32120			},
32121			p(ctx, dirty) {
32122				if (/*changeSubscriptionText*/ ctx[10]) {
32123					if (if_block) {
32124						if_block.p(ctx, dirty);
32125
32126						if (dirty & /*changeSubscriptionText*/ 1024) {
32127							transition_in(if_block, 1);
32128						}
32129					} else {
32130						if_block = create_if_block_3$3(ctx);
32131						if_block.c();
32132						transition_in(if_block, 1);
32133						if_block.m(if_block_anchor.parentNode, if_block_anchor);
32134					}
32135				} else if (if_block) {
32136					group_outros();
32137
32138					transition_out(if_block, 1, 1, () => {
32139						if_block = null;
32140					});
32141
32142					check_outros();
32143				}
32144			},
32145			i(local) {
32146				if (current) return;
32147				transition_in(if_block);
32148				current = true;
32149			},
32150			o(local) {
32151				transition_out(if_block);
32152				current = false;
32153			},
32154			d(detaching) {
32155				if (detaching) {
32156					detach(if_block_anchor);
32157				}
32158
32159				if (if_block) if_block.d(detaching);
32160			}
32161		};
32162	}
32163
32164	// (89:6) {#if changeSubscriptionText}
32165	function create_if_block_3$3(ctx) {
32166		let tablink;
32167		let current;
32168
32169		tablink = new Tablink({
32170				props: {
32171					text: /*changeSubscriptionText*/ ctx[10],
32172					path: `${/*changeSubscriptionPath*/ ctx[8]}?subscription=${/*gift*/ ctx[0].externalId}`,
32173					logDlEvent: /*func_2*/ ctx[23]
32174				}
32175			});
32176
32177		return {
32178			c() {
32179				create_component(tablink.$$.fragment);
32180			},
32181			m(target, anchor) {
32182				mount_component(tablink, target, anchor);
32183				current = true;
32184			},
32185			p(ctx, dirty) {
32186				const tablink_changes = {};
32187				if (dirty & /*changeSubscriptionText*/ 1024) tablink_changes.text = /*changeSubscriptionText*/ ctx[10];
32188				if (dirty & /*changeSubscriptionPath, gift*/ 257) tablink_changes.path = `${/*changeSubscriptionPath*/ ctx[8]}?subscription=${/*gift*/ ctx[0].externalId}`;
32189				if (dirty & /*logChangeSubscription, gift*/ 524289) tablink_changes.logDlEvent = /*func_2*/ ctx[23];
32190				tablink.$set(tablink_changes);
32191			},
32192			i(local) {
32193				if (current) return;
32194				transition_in(tablink.$$.fragment, local);
32195				current = true;
32196			},
32197			o(local) {
32198				transition_out(tablink.$$.fragment, local);
32199				current = false;
32200			},
32201			d(detaching) {
32202				destroy_component(tablink, detaching);
32203			}
32204		};
32205	}
32206
32207	// (93:4) {#if element === 'cancel_subscription' && !elementsHide.cancelSubscription && gift.status === "PENDING"}
32208	function create_if_block$8(ctx) {
32209		let if_block_anchor;
32210		let current;
32211		let if_block = /*cancelSubscriptionText*/ ctx[11] && create_if_block_1$7(ctx);
32212
32213		return {
32214			c() {
32215				if (if_block) if_block.c();
32216				if_block_anchor = empty();
32217			},
32218			m(target, anchor) {
32219				if (if_block) if_block.m(target, anchor);
32220				insert(target, if_block_anchor, anchor);
32221				current = true;
32222			},
32223			p(ctx, dirty) {
32224				if (/*cancelSubscriptionText*/ ctx[11]) {
32225					if (if_block) {
32226						if_block.p(ctx, dirty);
32227
32228						if (dirty & /*cancelSubscriptionText*/ 2048) {
32229							transition_in(if_block, 1);
32230						}
32231					} else {
32232						if_block = create_if_block_1$7(ctx);
32233						if_block.c();
32234						transition_in(if_block, 1);
32235						if_block.m(if_block_anchor.parentNode, if_block_anchor);
32236					}
32237				} else if (if_block) {
32238					group_outros();
32239
32240					transition_out(if_block, 1, 1, () => {
32241						if_block = null;
32242					});
32243
32244					check_outros();
32245				}
32246			},
32247			i(local) {
32248				if (current) return;
32249				transition_in(if_block);
32250				current = true;
32251			},
32252			o(local) {
32253				transition_out(if_block);
32254				current = false;
32255			},
32256			d(detaching) {
32257				if (detaching) {
32258					detach(if_block_anchor);
32259				}
32260
32261				if (if_block) if_block.d(detaching);
32262			}
32263		};
32264	}
32265
32266	// (94:6) {#if cancelSubscriptionText}
32267	function create_if_block_1$7(ctx) {
32268		let tablink;
32269		let current;
32270
32271		tablink = new Tablink({
32272				props: {
32273					text: /*cancelSubscriptionText*/ ctx[11],
32274					path: `${/*cancelSubscriptionPath*/ ctx[12]}?subscription=${/*gift*/ ctx[0].externalId}`,
32275					logDlEvent: /*func_3*/ ctx[24]
32276				}
32277			});
32278
32279		return {
32280			c() {
32281				create_component(tablink.$$.fragment);
32282			},
32283			m(target, anchor) {
32284				mount_component(tablink, target, anchor);
32285				current = true;
32286			},
32287			p(ctx, dirty) {
32288				const tablink_changes = {};
32289				if (dirty & /*cancelSubscriptionText*/ 2048) tablink_changes.text = /*cancelSubscriptionText*/ ctx[11];
32290				if (dirty & /*cancelSubscriptionPath, gift*/ 4097) tablink_changes.path = `${/*cancelSubscriptionPath*/ ctx[12]}?subscription=${/*gift*/ ctx[0].externalId}`;
32291				if (dirty & /*logCancelSubscription, gift*/ 1048577) tablink_changes.logDlEvent = /*func_3*/ ctx[24];
32292				tablink.$set(tablink_changes);
32293			},
32294			i(local) {
32295				if (current) return;
32296				transition_in(tablink.$$.fragment, local);
32297				current = true;
32298			},
32299			o(local) {
32300				transition_out(tablink.$$.fragment, local);
32301				current = false;
32302			},
32303			d(detaching) {
32304				destroy_component(tablink, detaching);
32305			}
32306		};
32307	}
32308
32309	// (37:4) {#each elementsOrder as element}
32310	function create_each_block$4(ctx) {
32311		let t0;
32312		let t1;
32313		let t2;
32314		let t3;
32315		let if_block4_anchor;
32316		let current;
32317		let if_block0 = /*element*/ ctx[25] === 'subscription_information' && !/*elementsHide*/ ctx[14].subscriptionInformation && create_if_block_8(ctx);
32318		let if_block1 = /*element*/ ctx[25] === 'billing_history' && !/*elementsHide*/ ctx[14].billingHistory && /*gift*/ ctx[0].status === "PENDING" && create_if_block_6$2(ctx);
32319		let if_block2 = /*element*/ ctx[25] === 'change_payment' && !/*elementsHide*/ ctx[14].changePayment && /*gift*/ ctx[0].status === "PENDING" && create_if_block_4$2(ctx);
32320		let if_block3 = /*element*/ ctx[25] === 'change_subscription' && !/*elementsHide*/ ctx[14].changeSubscription && /*gift*/ ctx[0].status === "PENDING" && create_if_block_2$5(ctx);
32321		let if_block4 = /*element*/ ctx[25] === 'cancel_subscription' && !/*elementsHide*/ ctx[14].cancelSubscription && /*gift*/ ctx[0].status === "PENDING" && create_if_block$8(ctx);
32322
32323		return {
32324			c() {
32325				if (if_block0) if_block0.c();
32326				t0 = space();
32327				if (if_block1) if_block1.c();
32328				t1 = space();
32329				if (if_block2) if_block2.c();
32330				t2 = space();
32331				if (if_block3) if_block3.c();
32332				t3 = space();
32333				if (if_block4) if_block4.c();
32334				if_block4_anchor = empty();
32335			},
32336			m(target, anchor) {
32337				if (if_block0) if_block0.m(target, anchor);
32338				insert(target, t0, anchor);
32339				if (if_block1) if_block1.m(target, anchor);
32340				insert(target, t1, anchor);
32341				if (if_block2) if_block2.m(target, anchor);
32342				insert(target, t2, anchor);
32343				if (if_block3) if_block3.m(target, anchor);
32344				insert(target, t3, anchor);
32345				if (if_block4) if_block4.m(target, anchor);
32346				insert(target, if_block4_anchor, anchor);
32347				current = true;
32348			},
32349			p(ctx, dirty) {
32350				if (/*element*/ ctx[25] === 'subscription_information' && !/*elementsHide*/ ctx[14].subscriptionInformation) {
32351					if (if_block0) {
32352						if_block0.p(ctx, dirty);
32353					} else {
32354						if_block0 = create_if_block_8(ctx);
32355						if_block0.c();
32356						if_block0.m(t0.parentNode, t0);
32357					}
32358				} else if (if_block0) {
32359					if_block0.d(1);
32360					if_block0 = null;
32361				}
32362
32363				if (/*element*/ ctx[25] === 'billing_history' && !/*elementsHide*/ ctx[14].billingHistory && /*gift*/ ctx[0].status === "PENDING") {
32364					if (if_block1) {
32365						if_block1.p(ctx, dirty);
32366
32367						if (dirty & /*elementsOrder, elementsHide, gift*/ 49153) {
32368							transition_in(if_block1, 1);
32369						}
32370					} else {
32371						if_block1 = create_if_block_6$2(ctx);
32372						if_block1.c();
32373						transition_in(if_block1, 1);
32374						if_block1.m(t1.parentNode, t1);
32375					}
32376				} else if (if_block1) {
32377					group_outros();
32378
32379					transition_out(if_block1, 1, 1, () => {
32380						if_block1 = null;
32381					});
32382
32383					check_outros();
32384				}
32385
32386				if (/*element*/ ctx[25] === 'change_payment' && !/*elementsHide*/ ctx[14].changePayment && /*gift*/ ctx[0].status === "PENDING") {
32387					if (if_block2) {
32388						if_block2.p(ctx, dirty);
32389
32390						if (dirty & /*elementsOrder, elementsHide, gift*/ 49153) {
32391							transition_in(if_block2, 1);
32392						}
32393					} else {
32394						if_block2 = create_if_block_4$2(ctx);
32395						if_block2.c();
32396						transition_in(if_block2, 1);
32397						if_block2.m(t2.parentNode, t2);
32398					}
32399				} else if (if_block2) {
32400					group_outros();
32401
32402					transition_out(if_block2, 1, 1, () => {
32403						if_block2 = null;
32404					});
32405
32406					check_outros();
32407				}
32408
32409				if (/*element*/ ctx[25] === 'change_subscription' && !/*elementsHide*/ ctx[14].changeSubscription && /*gift*/ ctx[0].status === "PENDING") {
32410					if (if_block3) {
32411						if_block3.p(ctx, dirty);
32412
32413						if (dirty & /*elementsOrder, elementsHide, gift*/ 49153) {
32414							transition_in(if_block3, 1);
32415						}
32416					} else {
32417						if_block3 = create_if_block_2$5(ctx);
32418						if_block3.c();
32419						transition_in(if_block3, 1);
32420						if_block3.m(t3.parentNode, t3);
32421					}
32422				} else if (if_block3) {
32423					group_outros();
32424
32425					transition_out(if_block3, 1, 1, () => {
32426						if_block3 = null;
32427					});
32428
32429					check_outros();
32430				}
32431
32432				if (/*element*/ ctx[25] === 'cancel_subscription' && !/*elementsHide*/ ctx[14].cancelSubscription && /*gift*/ ctx[0].status === "PENDING") {
32433					if (if_block4) {
32434						if_block4.p(ctx, dirty);
32435
32436						if (dirty & /*elementsOrder, elementsHide, gift*/ 49153) {
32437							transition_in(if_block4, 1);
32438						}
32439					} else {
32440						if_block4 = create_if_block$8(ctx);
32441						if_block4.c();
32442						transition_in(if_block4, 1);
32443						if_block4.m(if_block4_anchor.parentNode, if_block4_anchor);
32444					}
32445				} else if (if_block4) {
32446					group_outros();
32447
32448					transition_out(if_block4, 1, 1, () => {
32449						if_block4 = null;
32450					});
32451
32452					check_outros();
32453				}
32454			},
32455			i(local) {
32456				if (current) return;
32457				transition_in(if_block1);
32458				transition_in(if_block2);
32459				transition_in(if_block3);
32460				transition_in(if_block4);
32461				current = true;
32462			},
32463			o(local) {
32464				transition_out(if_block1);
32465				transition_out(if_block2);
32466				transition_out(if_block3);
32467				transition_out(if_block4);
32468				current = false;
32469			},
32470			d(detaching) {
32471				if (detaching) {
32472					detach(t0);
32473					detach(t1);
32474					detach(t2);
32475					detach(t3);
32476					detach(if_block4_anchor);
32477				}
32478
32479				if (if_block0) if_block0.d(detaching);
32480				if (if_block1) if_block1.d(detaching);
32481				if (if_block2) if_block2.d(detaching);
32482				if (if_block3) if_block3.d(detaching);
32483				if (if_block4) if_block4.d(detaching);
32484			}
32485		};
32486	}
32487
32488	function create_fragment$b(ctx) {
32489		let div1;
32490		let t;
32491		let div0;
32492		let current;
32493
32494		function select_block_type(ctx, dirty) {
32495			if (/*gift*/ ctx[0].status === 'PENDING') return create_if_block_13;
32496			if (/*gift*/ ctx[0].status === 'REDEEMED') return create_if_block_14;
32497		}
32498
32499		let current_block_type = select_block_type(ctx);
32500		let if_block = current_block_type && current_block_type(ctx);
32501		let each_value = ensure_array_like(/*elementsOrder*/ ctx[15]);
32502		let each_blocks = [];
32503
32504		for (let i = 0; i < each_value.length; i += 1) {
32505			each_blocks[i] = create_each_block$4(get_each_context$4(ctx, each_value, i));
32506		}
32507
32508		const out = i => transition_out(each_blocks[i], 1, 1, () => {
32509			each_blocks[i] = null;
32510		});
32511
32512		return {
32513			c() {
32514				div1 = element("div");
32515				if (if_block) if_block.c();
32516				t = space();
32517				div0 = element("div");
32518
32519				for (let i = 0; i < each_blocks.length; i += 1) {
32520					each_blocks[i].c();
32521				}
32522
32523				attr(div0, "class", "zephr-inner-box svelte-srvimy");
32524				attr(div1, "class", "zephr-gift-list-box-item svelte-srvimy");
32525			},
32526			m(target, anchor) {
32527				insert(target, div1, anchor);
32528				if (if_block) if_block.m(div1, null);
32529				append(div1, t);
32530				append(div1, div0);
32531
32532				for (let i = 0; i < each_blocks.length; i += 1) {
32533					if (each_blocks[i]) {
32534						each_blocks[i].m(div0, null);
32535					}
32536				}
32537
32538				current = true;
32539			},
32540			p(ctx, [dirty]) {
32541				if (current_block_type === (current_block_type = select_block_type(ctx)) && if_block) {
32542					if_block.p(ctx, dirty);
32543				} else {
32544					if (if_block) if_block.d(1);
32545					if_block = current_block_type && current_block_type(ctx);
32546
32547					if (if_block) {
32548						if_block.c();
32549						if_block.m(div1, t);
32550					}
32551				}
32552
32553				if (dirty & /*cancelSubscriptionText, cancelSubscriptionPath, gift, logCancelSubscription, elementsOrder, elementsHide, changeSubscriptionText, changeSubscriptionPath, logChangeSubscription, changePaymentMethodText, onChangePayment, billingHistoryLink, onViewHistory, endDateText, startDateText, subscriptionTypeText, activeStatusText, pendingStatusText, giftRecipientText*/ 2097103) {
32554					each_value = ensure_array_like(/*elementsOrder*/ ctx[15]);
32555					let i;
32556
32557					for (i = 0; i < each_value.length; i += 1) {
32558						const child_ctx = get_each_context$4(ctx, each_value, i);
32559
32560						if (each_blocks[i]) {
32561							each_blocks[i].p(child_ctx, dirty);
32562							transition_in(each_blocks[i], 1);
32563						} else {
32564							each_blocks[i] = create_each_block$4(child_ctx);
32565							each_blocks[i].c();
32566							transition_in(each_blocks[i], 1);
32567							each_blocks[i].m(div0, null);
32568						}
32569					}
32570
32571					group_outros();
32572
32573					for (i = each_value.length; i < each_blocks.length; i += 1) {
32574						out(i);
32575					}
32576
32577					check_outros();
32578				}
32579			},
32580			i(local) {
32581				if (current) return;
32582
32583				for (let i = 0; i < each_value.length; i += 1) {
32584					transition_in(each_blocks[i]);
32585				}
32586
32587				current = true;
32588			},
32589			o(local) {
32590				each_blocks = each_blocks.filter(Boolean);
32591
32592				for (let i = 0; i < each_blocks.length; i += 1) {
32593					transition_out(each_blocks[i]);
32594				}
32595
32596				current = false;
32597			},
32598			d(detaching) {
32599				if (detaching) {
32600					detach(div1);
32601				}
32602
32603				if (if_block) {
32604					if_block.d();
32605				}
32606
32607				destroy_each(each_blocks, detaching);
32608			}
32609		};
32610	}
32611
32612	function instance$b($$self, $$props, $$invalidate) {
32613		let { gift } = $$props;
32614		let { giftRecipientText } = $$props;
32615		let { startDateText } = $$props;
32616		let { endDateText } = $$props;
32617		let { pendingBannerText } = $$props;
32618		let { redeemedBannerText } = $$props;
32619		let { activeStatusText } = $$props;
32620		let { pendingStatusText } = $$props;
32621		let { changeSubscriptionPath } = $$props;
32622		let { changePaymentMethodText } = $$props;
32623		let { changeSubscriptionText } = $$props;
32624		let { cancelSubscriptionText } = $$props;
32625		let { cancelSubscriptionPath } = $$props;
32626		let { subscriptionTypeText } = $$props;
32627		let { elementsHide } = $$props;
32628		let { elementsOrder = [] } = $$props;
32629		let { billingHistoryLink } = $$props;
32630		let { onViewHistory } = $$props;
32631		let { onChangePayment } = $$props;
32632		let { logChangeSubscription } = $$props;
32633		let { logCancelSubscription } = $$props;
32634		const func = () => onViewHistory(gift);
32635		const func_1 = () => onChangePayment(gift);
32636		const func_2 = () => logChangeSubscription(gift);
32637		const func_3 = () => logCancelSubscription(gift);
32638
32639		$$self.$$set = $$props => {
32640			if ('gift' in $$props) $$invalidate(0, gift = $$props.gift);
32641			if ('giftRecipientText' in $$props) $$invalidate(1, giftRecipientText = $$props.giftRecipientText);
32642			if ('startDateText' in $$props) $$invalidate(2, startDateText = $$props.startDateText);
32643			if ('endDateText' in $$props) $$invalidate(3, endDateText = $$props.endDateText);
32644			if ('pendingBannerText' in $$props) $$invalidate(4, pendingBannerText = $$props.pendingBannerText);
32645			if ('redeemedBannerText' in $$props) $$invalidate(5, redeemedBannerText = $$props.redeemedBannerText);
32646			if ('activeStatusText' in $$props) $$invalidate(6, activeStatusText = $$props.activeStatusText);
32647			if ('pendingStatusText' in $$props) $$invalidate(7, pendingStatusText = $$props.pendingStatusText);
32648			if ('changeSubscriptionPath' in $$props) $$invalidate(8, changeSubscriptionPath = $$props.changeSubscriptionPath);
32649			if ('changePaymentMethodText' in $$props) $$invalidate(9, changePaymentMethodText = $$props.changePaymentMethodText);
32650			if ('changeSubscriptionText' in $$props) $$invali
32650date(10, changeSubscriptionText = $$props.changeSubscriptionText);
32651			if ('cancelSubscriptionText' in $$props) $$invalidate(11, cancelSubscriptionText = $$props.cancelSubscriptionText);
32652			if ('cancelSubscriptionPath' in $$props) $$invalidate(12, cancelSubscriptionPath = $$props.cancelSubscriptionPath);
32653			if ('subscriptionTypeText' in $$props) $$invalidate(13, subscriptionTypeText = $$props.subscriptionTypeText);
32654			if ('elementsHide' in $$props) $$invalidate(14, elementsHide = $$props.elementsHide);
32655			if ('elementsOrder' in $$props) $$invalidate(15, elementsOrder = $$props.elementsOrder);
32656			if ('billingHistoryLink' in $$props) $$invalidate(16, billingHistoryLink = $$props.billingHistoryLink);
32657			if ('onViewHistory' in $$props) $$invalidate(17, onViewHistory = $$props.onViewHistory);
32658			if ('onChangePayment' in $$props) $$invalidate(18, onChangePayment = $$props.onChangePayment);
32659			if ('logChangeSubscription' in $$props) $$invalidate(19, logChangeSubscription = $$props.logChangeSubscription);
32660			if ('logCancelSubscription' in $$props) $$invali
32660date(20, logCancelSubscription = $$props.logCancelSubscription);
32661		};
32662
32663		return [
32664			gift,
32665			giftRecipientText,
32666			startDateText,
32667			endDateText,
32668			pendingBannerText,
32669			redeemedBannerText,
32670			activeStatusText,
32671			pendingStatusText,
32672			changeSubscriptionPath,
32673			changePaymentMethodText,
32674			changeSubscriptionText,
32675			cancelSubscriptionText,
32676			cancelSubscriptionPath,
32677			subscriptionTypeText,
32678			elementsHide,
32679			elementsOrder,
32680			billingHistoryLink,
32681			onViewHistory,
32682			onChangePayment,
32683			logChangeSubscription,
32684			logCancelSubscription,
32685			func,
32686			func_1,
32687			func_2,
32688			func_3
32689		];
32690	}
32691
32692	class GiftSubscriptionsListBoxItem extends SvelteComponent {
32693		constructor(options) {
32694			super();
32695
32696			init(this, options, instance$b, create_fragment$b, safe_not_equal, {
32697				gift: 0,
32698				giftRecipientText: 1,
32699				startDateText: 2,
32700				endDateText: 3,
32701				pendingBannerText: 4,
32702				redeemedBannerText: 5,
32703				activeStatusText: 6,
32704				pendingStatusText: 7,
32705				changeSubscriptionPath: 8,
32706				changePaymentMethodText: 9,
32707				changeSubscriptionText: 10,
32708				cancelSubscriptionText: 11,
32709				cancelSubscriptionPath: 12,
32710				subscriptionTypeText: 13,
32711				elementsHide: 14,
32712				elementsOrder: 15,
32713				billingHistoryLink: 16,
32714				onViewHistory: 17,
32715				onChangePayment: 18,
32716				logChangeSubscription: 19,
32717				logCancelSubscription: 20
32718			});
32719		}
32720	}
32721
32722	/* src/components/elements/giftSubscriptionsList/GiftSubscriptionsList.svelte generated by Svelte v4.2.12 */
32723
32724	function get_each_context$3(ctx, list, i) {
32725		const child_ctx = ctx.slice();
32726		child_ctx[24] = list[i];
32727		return child_ctx;
32728	}
32729
32730	// (36:2) {#if loading}
32731	function create_if_block_2$4(ctx) {
32732		let spinner;
32733		let current;
32734		spinner = new Spinner({});
32735
32736		return {
32737			c() {
32738				create_component(spinner.$$.fragment);
32739			},
32740			m(target, anchor) {
32741				mount_component(spinner, target, anchor);
32742				current = true;
32743			},
32744			i(local) {
32745				if (current) return;
32746				transition_in(spinner.$$.fragment, local);
32747				current = true;
32748			},
32749			o(local) {
32750				transition_out(spinner.$$.fragment, local);
32751				current = false;
32752			},
32753			d(detaching) {
32754				destroy_component(spinner, detaching);
32755			}
32756		};
32757	}
32758
32759	// (40:2) {#if !loading && !gifts.length}
32760	function create_if_block_1$6(ctx) {
32761		let div;
32762		let raw_value = (/*noSubscriptionsMessage*/ ctx[1] || /*emptyMessage*/ ctx[0]) + "";
32763
32764		return {
32765			c() {
32766				div = element("div");
32767			},
32768			m(target, anchor) {
32769				insert(target, div, anchor);
32770				div.innerHTML = raw_value;
32771			},
32772			p(ctx, dirty) {
32773				if (dirty & /*noSubscriptionsMessage, emptyMessage*/ 3 && raw_value !== (raw_value = (/*noSubscriptionsMessage*/ ctx[1] || /*emptyMessage*/ ctx[0]) + "")) div.innerHTML = raw_value;		},
32774			d(detaching) {
32775				if (detaching) {
32776					detach(div);
32777				}
32778			}
32779		};
32780	}
32781
32782	// (46:2) {#if !loading && gifts.length > 0}
32783	function create_if_block$7(ctx) {
32784		let each_1_anchor;
32785		let current;
32786		let each_value = ensure_array_like(/*gifts*/ ctx[3]);
32787		let each_blocks = [];
32788
32789		for (let i = 0; i < each_value.length; i += 1) {
32790			each_blocks[i] = create_each_block$3(get_each_context$3(ctx, each_value, i));
32791		}
32792
32793		const out = i => transition_out(each_blocks[i], 1, 1, () => {
32794			each_blocks[i] = null;
32795		});
32796
32797		return {
32798			c() {
32799				for (let i = 0; i < each_blocks.length; i += 1) {
32800					each_blocks[i].c();
32801				}
32802
32803				each_1_anchor = empty();
32804			},
32805			m(target, anchor) {
32806				for (let i = 0; i < each_blocks.length; i += 1) {
32807					if (each_blocks[i]) {
32808						each_blocks[i].m(target, anchor);
32809					}
32810				}
32811
32812				insert(target, each_1_anchor, anchor);
32813				current = true;
32814			},
32815			p(ctx, dirty) {
32816				if (dirty & /*gifts, giftRecipientText, startDateText, endDateText, pendingBannerText, redeemedBannerText, activeStatusText, pendingStatusText, onChangePayment, logChangeSubscription, logCancelSubscription, onViewHistory, changePaymentMethodText, changeSubscriptionText, cancelSubscriptionText, changeSubscriptionPath, cancelSubscriptionPath, elementsHide, subscriptionTypeText, elementsOrder, billingHistoryLink*/ 16777208) {
32817					each_value = ensure_array_like(/*gifts*/ ctx[3]);
32818					let i;
32819
32820					for (i = 0; i < each_value.length; i += 1) {
32821						const child_ctx = get_each_context$3(ctx, each_value, i);
32822
32823						if (each_blocks[i]) {
32824							each_blocks[i].p(child_ctx, dirty);
32825							transition_in(each_blocks[i], 1);
32826						} else {
32827							each_blocks[i] = create_each_block$3(child_ctx);
32828							each_blocks[i].c();
32829							transition_in(each_blocks[i], 1);
32830							each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor);
32831						}
32832					}
32833
32834					group_outros();
32835
32836					for (i = each_value.length; i < each_blocks.length; i += 1) {
32837						out(i);
32838					}
32839
32840					check_outros();
32841				}
32842			},
32843			i(local) {
32844				if (current) return;
32845
32846				for (let i = 0; i < each_value.length; i += 1) {
32847					transition_in(each_blocks[i]);
32848				}
32849
32850				current = true;
32851			},
32852			o(local) {
32853				each_blocks = each_blocks.filter(Boolean);
32854
32855				for (let i = 0; i < each_blocks.length; i += 1) {
32856					transition_out(each_blocks[i]);
32857				}
32858
32859				current = false;
32860			},
32861			d(detaching) {
32862				if (detaching) {
32863					detach(each_1_anchor);
32864				}
32865
32866				destroy_each(each_blocks, detaching);
32867			}
32868		};
32869	}
32870
32871	// (47:4) {#each gifts as gift}
32872	function create_each_block$3(ctx) {
32873		let giftsubscriptionslistboxitem;
32874		let current;
32875
32876		giftsubscriptionslistboxitem = new GiftSubscriptionsListBoxItem({
32877				props: {
32878					gift: /*gift*/ ctx[24],
32879					giftRecipientText: /*giftRecipientText*/ ctx[14],
32880					startDateText: /*startDateText*/ ctx[15],
32881					endDateText: /*endDateText*/ ctx[16],
32882					pendingBannerText: /*pendingBannerText*/ ctx[18],
32883					redeemedBannerText: /*redeemedBannerText*/ ctx[19],
32884					activeStatusText: /*activeStatusText*/ ctx[20],
32885					pendingStatusText: /*pendingStatusText*/ ctx[21],
32886					onChangePayment: /*onChangePayment*/ ctx[6],
32887					logChangeSubscription: /*logChangeSubscription*/ ctx[7],
32888					logCancelSubscription: /*logCancelSubscription*/ ctx[8],
32889					onViewHistory: /*onViewHistory*/ ctx[9],
32890					changePaymentMethodText: /*changePaymentMethodText*/ ctx[10],
32891					changeSubscriptionText: /*changeSubscriptionText*/ ctx[11],
32892					cancelSubscriptionText: /*cancelSubscriptionText*/ ctx[12],
32893					changeSubscriptionPath: /*changeSubscriptionPath*/ ctx[5],
32894					cancelSubscriptionPath: /*cancelSubscriptionPath*/ ctx[4],
32895					elementsHide: /*elementsHide*/ ctx[23],
32896					subscriptionTypeText: /*subscriptionTypeText*/ ctx[17],
32897					elementsOrder: /*elementsOrder*/ ctx[22],
32898					billingHistoryLink: /*billingHistoryLink*/ ctx[13]
32899				}
32900			});
32901
32902		return {
32903			c() {
32904				create_component(giftsubscriptionslistboxitem.$$.fragment);
32905			},
32906			m(target, anchor) {
32907				mount_component(giftsubscriptionslistboxitem, target, anchor);
32908				current = true;
32909			},
32910			p(ctx, dirty) {
32911				const giftsubscriptionslistboxitem_changes = {};
32912				if (dirty & /*gifts*/ 8) giftsubscriptionslistboxitem_changes.gift = /*gift*/ ctx[24];
32913				if (dirty & /*giftRecipientText*/ 16384) giftsubscriptionslistboxitem_changes.giftRecipientText = /*giftRecipientText*/ ctx[14];
32914				if (dirty & /*startDateText*/ 32768) giftsubscriptionslistboxitem_changes.startDateText = /*startDateText*/ ctx[15];
32915				if (dirty & /*endDateText*/ 65536) giftsubscriptionslistboxitem_changes.endDateText = /*endDateText*/ ctx[16];
32916				if (dirty & /*pendingBannerText*/ 262144) giftsubscriptionslistboxitem_changes.pendingBannerText = /*pendingBannerText*/ ctx[18];
32917				if (dirty & /*redeemedBannerText*/ 524288) giftsubscriptionslistboxitem_changes.redeemedBannerText = /*redeemedBannerText*/ ctx[19];
32918				if (dirty & /*activeStatusText*/ 1048576) giftsubscriptionslistboxitem_changes.activeStatusText = /*activeStatusText*/ ctx[20];
32919				if (dirty & /*pendingStatusText*/ 2097152) giftsubscriptionslistboxitem_changes.pendingStatusText = /*pendingStatusText*/ ctx[21];
32920				if (dirty & /*onChangePayment*/ 64) giftsubscriptionslistboxitem_changes.onChangePayment = /*onChangePayment*/ ctx[6];
32921				if (dirty & /*logChangeSubscription*/ 128) giftsubscriptionslistboxitem_changes.logChangeSubscription = /*logChangeSubscription*/ ctx[7];
32922				if (dirty & /*logCancelSubscription*/ 256) giftsubscriptionslistboxitem_changes.logCancelSubscription = /*logCancelSubscription*/ ctx[8];
32923				if (dirty & /*onViewHistory*/ 512) giftsubscriptionslistboxitem_changes.onViewHistory = /*onViewHistory*/ ctx[9];
32924				if (dirty & /*changePaymentMethodText*/ 1024) giftsubscriptionslistboxitem_changes.changePaymentMethodText = /*changePaymentMethodText*/ ctx[10];
32925				if (dirty & /*changeSubscriptionText*/ 2048) giftsubscriptionslistboxitem_changes.changeSubscriptionText = /*changeSubscriptionText*/ ctx[11];
32926				if (dirty & /*cancelSubscriptionText*/ 4096) giftsubscriptionslistboxitem_changes.cancelSubscriptionText = /*cancelSubscriptionText*/ ctx[12];
32927				if (dirty & /*changeSubscriptionPath*/ 32) giftsubscriptionslistboxitem_changes.changeSubscriptionPath = /*changeSubscriptionPath*/ ctx[5];
32928				if (dirty & /*cancelSubscriptionPath*/ 16) giftsubscriptionslistboxitem_changes.cancelSubscriptionPath = /*cancelSubscriptionPath*/ ctx[4];
32929				if (dirty & /*elementsHide*/ 8388608) giftsubscriptionslistboxitem_changes.elementsHide = /*elementsHide*/ ctx[23];
32930				if (dirty & /*subscriptionTypeText*/ 131072) giftsubscriptionslistboxitem_changes.subscriptionTypeText = /*subscriptionTypeText*/ ctx[17];
32931				if (dirty & /*elementsOrder*/ 4194304) giftsubscriptionslistboxitem_changes.elementsOrder = /*elementsOrder*/ ctx[22];
32932				if (dirty & /*billingHistoryLink*/ 8192) giftsubscriptionslistboxitem_changes.billingHistoryLink = /*billingHistoryLink*/ ctx[13];
32933				giftsubscriptionslistboxitem.$set(giftsubscriptionslistboxitem_changes);
32934			},
32935			i(local) {
32936				if (current) return;
32937				transition_in(giftsubscriptionslistboxitem.$$.fragment, local);
32938				current = true;
32939			},
32940			o(local) {
32941				transition_out(giftsubscriptionslistboxitem.$$.fragment, local);
32942				current = false;
32943			},
32944			d(detaching) {
32945				destroy_component(giftsubscriptionslistboxitem, detaching);
32946			}
32947		};
32948	}
32949
32950	function create_fragment$a(ctx) {
32951		let div;
32952		let t0;
32953		let t1;
32954		let current;
32955		let if_block0 = /*loading*/ ctx[2] && create_if_block_2$4();
32956		let if_block1 = !/*loading*/ ctx[2] && !/*gifts*/ ctx[3].length && create_if_block_1$6(ctx);
32957		let if_block2 = !/*loading*/ ctx[2] && /*gifts*/ ctx[3].length > 0 && create_if_block$7(ctx);
32958
32959		return {
32960			c() {
32961				div = element("div");
32962				if (if_block0) if_block0.c();
32963				t0 = space();
32964				if (if_block1) if_block1.c();
32965				t1 = space();
32966				if (if_block2) if_block2.c();
32967				attr(div, "class", "subscriptions-list-container svelte-ldb1rq");
32968			},
32969			m(target, anchor) {
32970				insert(target, div, anchor);
32971				if (if_block0) if_block0.m(div, null);
32972				append(div, t0);
32973				if (if_block1) if_block1.m(div, null);
32974				append(div, t1);
32975				if (if_block2) if_block2.m(div, null);
32976				current = true;
32977			},
32978			p(ctx, [dirty]) {
32979				if (/*loading*/ ctx[2]) {
32980					if (if_block0) {
32981						if (dirty & /*loading*/ 4) {
32982							transition_in(if_block0, 1);
32983						}
32984					} else {
32985						if_block0 = create_if_block_2$4();
32986						if_block0.c();
32987						transition_in(if_block0, 1);
32988						if_block0.m(div, t0);
32989					}
32990				} else if (if_block0) {
32991					group_outros();
32992
32993					transition_out(if_block0, 1, 1, () => {
32994						if_block0 = null;
32995					});
32996
32997					check_outros();
32998				}
32999
33000				if (!/*loading*/ ctx[2] && !/*gifts*/ ctx[3].length) {
33001					if (if_block1) {
33002						if_block1.p(ctx, dirty);
33003					} else {
33004						if_block1 = create_if_block_1$6(ctx);
33005						if_block1.c();
33006						if_block1.m(div, t1);
33007					}
33008				} else if (if_block1) {
33009					if_block1.d(1);
33010					if_block1 = null;
33011				}
33012
33013				if (!/*loading*/ ctx[2] && /*gifts*/ ctx[3].length > 0) {
33014					if (if_block2) {
33015						if_block2.p(ctx, dirty);
33016
33017						if (dirty & /*loading, gifts*/ 12) {
33018							transition_in(if_block2, 1);
33019						}
33020					} else {
33021						if_block2 = create_if_block$7(ctx);
33022						if_block2.c();
33023						transition_in(if_block2, 1);
33024						if_block2.m(div, null);
33025					}
33026				} else if (if_block2) {
33027					group_outros();
33028
33029					transition_out(if_block2, 1, 1, () => {
33030						if_block2 = null;
33031					});
33032
33033					check_outros();
33034				}
33035			},
33036			i(local) {
33037				if (current) return;
33038				transition_in(if_block0);
33039				transition_in(if_block2);
33040				current = true;
33041			},
33042			o(local) {
33043				transition_out(if_block0);
33044				transition_out(if_block2);
33045				current = false;
33046			},
33047			d(detaching) {
33048				if (detaching) {
33049					detach(div);
33050				}
33051
33052				if (if_block0) if_block0.d();
33053				if (if_block1) if_block1.d();
33054				if (if_block2) if_block2.d();
33055			}
33056		};
33057	}
33058
33059	function instance$a($$self, $$props, $$invalidate) {
33060		let { emptyMessage } = $$props;
33061		let { noSubscriptionsMessage } = $$props;
33062		let { loading } = $$props;
33063		let { gifts = [] } = $$props;
33064		let { cancelSubscriptionPath } = $$props;
33065		let { changeSubscriptionPath } = $$props;
33066		let { onChangePayment } = $$props;
33067		let { logChangeSubscription } = $$props;
33068		let { logCancelSubscription } = $$props;
33069		let { onViewHistory } = $$props;
33070		let { changePaymentMethodText } = $$props;
33071		let { changeSubscriptionText } = $$props;
33072		let { cancelSubscriptionText } = $$props;
33073		let { billingHistoryLink } = $$props;
33074		let { giftRecipientText } = $$props;
33075		let { startDateText } = $$props;
33076		let { endDateText } = $$props;
33077		let { subscriptionTypeText } = $$props;
33078		let { pendingBannerText } = $$props;
33079		let { redeemedBannerText } = $$props;
33080		let { activeStatusText } = $$props;
33081		let { pendingStatusText } = $$props;
33082		let { elementsOrder = [] } = $$props;
33083
33084		let { elementsHide = {
33085			subscriptionInformation: undefined,
33086			changePayment: undefined,
33087			changeSubscription: undefined,
33088			cancelSubscription: undefined,
33089			billingHistory: undefined
33090		} } = $$props;
33091
33092		$$self.$$set = $$props => {
33093			if ('emptyMessage' in $$props) $$invalidate(0, emptyMessage = $$props.emptyMessage);
33094			if ('noSubscriptionsMessage' in $$props) $$invalidate(1, noSubscriptionsMessage = $$props.noSubscriptionsMessage);
33095			if ('loading' in $$props) $$invalidate(2, loading = $$props.loading);
33096			if ('gifts' in $$props) $$invalidate(3, gifts = $$props.gifts);
33097			if ('cancelSubscriptionPath' in $$props) $$invalidate(4, cancelSubscriptionPath = $$props.cancelSubscriptionPath);
33098			if ('changeSubscriptionPath' in $$props) $$invalidate(5, changeSubscriptionPath = $$props.changeSubscriptionPath);
33099			if ('onChangePayment' in $$props) $$invalidate(6, onChangePayment = $$props.onChangePayment);
33100			if ('logChangeSubscription' in $$props) $$invalidate(7, logChangeSubscription = $$props.logChangeSubscription);
33101			if ('logCancelSubscription' in $$props) $$invalidate(8, logCancelSubscription = $$props.logCancelSubscription);
33102			if ('onViewHistory' in $$props) $$invalidate(9, onViewHistory = $$props.onViewHistory);
33103			if ('changePaymentMethodText' in $$props) $$invali
33103date(10, changePaymentMethodText = $$props.changePaymentMethodText);
33104			if ('changeSubscriptionText' in $$props) $$invalidate(11, changeSubscriptionText = $$props.changeSubscriptionText);
33105			if ('cancelSubscriptionText' in $$props) $$invalidate(12, cancelSubscriptionText = $$props.cancelSubscriptionText);
33106			if ('billingHistoryLink' in $$props) $$invalidate(13, billingHistoryLink = $$props.billingHistoryLink);
33107			if ('giftRecipientText' in $$props) $$invalidate(14, giftRecipientText = $$props.giftRecipientText);
33108			if ('startDateText' in $$props) $$invalidate(15, startDateText = $$props.startDateText);
33109			if ('endDateText' in $$props) $$invalidate(16, endDateText = $$props.endDateText);
33110			if ('subscriptionTypeText' in $$props) $$invalidate(17, subscriptionTypeText = $$props.subscriptionTypeText);
33111			if ('pendingBannerText' in $$props) $$invalidate(18, pendingBannerText = $$props.pendingBannerText);
33112			if ('redeemedBannerText' in $$props) $$invalidate(19, redeemedBannerText = $$props.redeemedBannerText);
33113			if ('activeStatusText' in $$props) $$invali
33113date(20, activeStatusText = $$props.activeStatusText);
33114			if ('pendingStatusText' in $$props) $$invalidate(21, pendingStatusText = $$props.pendingStatusText);
33115			if ('elementsOrder' in $$props) $$invalidate(22, elementsOrder = $$props.elementsOrder);
33116			if ('elementsHide' in $$props) $$invalidate(23, elementsHide = $$props.elementsHide);
33117		};
33118
33119		return [
33120			emptyMessage,
33121			noSubscriptionsMessage,
33122			loading,
33123			gifts,
33124			cancelSubscriptionPath,
33125			changeSubscriptionPath,
33126			onChangePayment,
33127			logChangeSubscription,
33128			logCancelSubscription,
33129			onViewHistory,
33130			changePaymentMethodText,
33131			changeSubscriptionText,
33132			cancelSubscriptionText,
33133			billingHistoryLink,
33134			giftRecipientText,
33135			startDateText,
33136			endDateText,
33137			subscriptionTypeText,
33138			pendingBannerText,
33139			redeemedBannerText,
33140			activeStatusText,
33141			pendingStatusText,
33142			elementsOrder,
33143			elementsHide
33144		];
33145	}
33146
33147	class GiftSubscriptionsList extends SvelteComponent {
33148		constructor(options) {
33149			super();
33150
33151			init(this, options, instance$a, create_fragment$a, safe_not_equal, {
33152				emptyMessage: 0,
33153				noSubscriptionsMessage: 1,
33154				loading: 2,
33155				gifts: 3,
33156				cancelSubscriptionPath: 4,
33157				changeSubscriptionPath: 5,
33158				onChangePayment: 6,
33159				logChangeSubscription: 7,
33160				logCancelSubscription: 8,
33161				onViewHistory: 9,
33162				changePaymentMethodText: 10,
33163				changeSubscriptionText: 11,
33164				cancelSubscriptionText: 12,
33165				billingHistoryLink: 13,
33166				giftRecipientText: 14,
33167				startDateText: 15,
33168				endDateText: 16,
33169				subscriptionTypeText: 17,
33170				pendingBannerText: 18,
33171				redeemedBannerText: 19,
33172				activeStatusText: 20,
33173				pendingStatusText: 21,
33174				elementsOrder: 22,
33175				elementsHide: 23
33176			});
33177		}
33178	}
33179
33180	const giftSubscriptionsListFactory = {
33181	    matches: (sectionElement, _form, _currentPart, _currentSection) => sectionElement.type === elementTypes.GIFT_SUBSCRIPTIONS_LIST,
33182	    create: (form, formState, formActions, elementConfig) => {
33183	        // Get all gift subscriptions from form state 
33184	        const giftSubscriptions = formState.giftSubscriptions || [];
33185	        // filter to only show sent gifts (where user is purchaser)
33186	        const activeGifts = giftSubscriptions.filter(gift => gift.is_purchaser === true);
33187	        const logEditSubscription = (gift) => {
33188	            logDataLayerEvent(form, 'zephr_form_subscription_change_clicked', {
33189	                productId: gift.subscription_type || 'gift',
33190	                planId: gift.subscription_number || gift.gift_code || ''
33191	            });
33192	        };
33193	        const logCancelSubscription = (gift) => {
33194	            logDataLayerEvent(form, 'zephr_form_cancel_subscription_clicked', {
33195	                productId: gift.subscription_type || 'gift',
33196	                planId: gift.subscription_number || gift.gift_code || ''
33197	            });
33198	        };
33199	        // Create elements hide object to match SubscriptionElementsHide
33200	        const elementsHide = {
33201	            subscriptionInformation: elementConfig?.hideSubscriptionInformation,
33202	            changePayment: elementConfig?.hideChangePayment,
33203	            changeSubscription: elementConfig?.hideChangeSubscription,
33204	            cancelSubscription: elementConfig?.hideCancelSubscription,
33205	            suspendResumeSubscription: elementConfig?.hideSuspendResumeSubscription,
33206	            billingHistory: elementConfig?.hideBillingHistory,
33207	            subscriptionCustomFields: elementConfig?.hideSubscriptionCustomFields,
33208	            updateBillToContact: elementConfig?.hideUpdateBillToContact
33209	        };
33210	        const cancelSubscriptionPath = elementConfig.cancelSubscriptionPath || '';
33211	        const changePaymentPath = ''; // Default empty string if not available in config
33212	        return {
33213	            component: GiftSubscriptionsList,
33214	            props: {
33215	                isPastSubscriptions: elementConfig.isPastSubscriptions,
33216	                billingHistoryText: elementConfig.billingHistoryText,
33217	                billingHistoryLink: elementConfig.billingHistoryLink,
33218	                changeSubscriptionPath: elementConfig.changeSubscriptionPath,
33219	                noSubscriptionsMessage: elementConfig.noSubscriptionsMessage || elementConfig.emptyMessage,
33220	                emptyMessage: elementConfig.emptyMessage,
33221	                loading: !formState.giftSubscriptions || formState.loadingGiftSubscriptions,
33222	                gifts: activeGifts,
33223	                changePaymentPath,
33224	                cancelSubscriptionPath,
33225	                changePaymentMethodText: elementConfig.changePaymentMethodText,
33226	                changeSubscriptionText: elementConfig.changeSubscriptionText,
33227	                cancelSubscriptionText: elementConfig.cancelSubscriptionText,
33228	                giftRecipientText: elementConfig.giftRecipientText,
33229	                startDateText: elementConfig.startDateText,
33230	                endDateText: elementConfig.endDateText,
33231	                pendingBannerText: elementConfig.pendingBannerText,
33232	                redeemedBannerText: elementConfig.redeemedBannerText,
33233	                activeStatusText: elementConfig.activeStatusText,
33234	                pendingStatusText: elementConfig.pendingStatusText,
33235	                subscriptionTypeText: elementConfig.subscriptionTypeText,
33236	                elementsOrder: elementConfig.elementsOrder,
33237	                elementsHide,
33238	                onSelectGift: (gift) => {
33239	                    formActions.updateFormState({
33240	                        selectedGiftSubscription: gift
33241	                    });
33242	                    formActions.jumpToPartStart('gift-details');
33243	                },
33244	                onEditSubscription: logEditSubscription,
33245	                onViewHistory: (subscription) => {
33246	                    formActions.updateFormState({
33247	                        selectedSubscription: subscription,
33248	                        selectedGiftSubscription: subscription
33249	                    });
33250	                    formActions.jumpToPartStart('billing-history');
33251	                    logDataLayerEvent(form, 'zephr_form_billing_history_view', null);
33252	                },
33253	                onCancelSubscription: logCancelSubscription,
33254	                onChangePayment: (subscription) => {
33255	                    formActions.updateFormState({
33256	                        selectedSubscription: subscription,
33257	                        selectedGiftSubscription: subscription
33258	                    });
33259	                    logDataLayerEvent(form, 'zephr_form_button_press', {
33260	                        sectionId: formState.currentSection.type,
33261	                        buttonType: 'SUBMIT'
33262	                    });
33263	                    formActions.completeSection();
33264	                },
33265	                logChangeSubscription: (subscription) => {
33266	                    logDataLayerEvent(form, 'zephr_form_subscription_change_clicked', {
33267	                        productId: subscription.productId,
33268	                        planId: subscription.externalId
33269	                    });
33270	                },
33271	                logCancelSubscription: (subscription) => {
33272	                    logDataLayerEvent(form, 'zephr_form_cancel_subscription_clicked', {
33273	                        productId: subscription.productId,
33274	                        planId: subscription.externalId
33275	                    });
33276	                },
33277	            }
33278	        };
33279	    }
33280	};
33281
33282	/* src/components/elements/giftToggle/GiftToggle.svelte generated by Svelte v4.2.12 */
33283
33284	function create_fragment$9(ctx) {
33285		let div;
33286		let checkbox;
33287		let current;
33288
33289		checkbox = new Checkbox({
33290				props: {
33291					id: "gift-toggle-checkbox",
33292					name: "gift-toggle",
33293					label: /*config*/ ctx[0]?.label || '',
33294					value: "true",
33295					checked: /*checked*/ ctx[1],
33296					disabled: /*disabled*/ ctx[2],
33297					required: false
33298				}
33299			});
33300
33301		checkbox.$on("change", /*handleChange*/ ctx[3]);
33302
33303		return {
33304			c() {
33305				div = element("div");
33306				create_component(checkbox.$$.fragment);
33307				attr(div, "class", "zephr-form-gift-toggle svelte-93167f");
33308			},
33309			m(target, anchor) {
33310				insert(target, div, anchor);
33311				mount_component(checkbox, div, null);
33312				current = true;
33313			},
33314			p(ctx, [dirty]) {
33315				const checkbox_changes = {};
33316				if (dirty & /*config*/ 1) checkbox_changes.label = /*config*/ ctx[0]?.label || '';
33317				if (dirty & /*checked*/ 2) checkbox_changes.checked = /*checked*/ ctx[1];
33318				if (dirty & /*disabled*/ 4) checkbox_changes.disabled = /*disabled*/ ctx[2];
33319				checkbox.$set(checkbox_changes);
33320			},
33321			i(local) {
33322				if (current) return;
33323				transition_in(checkbox.$$.fragment, local);
33324				current = true;
33325			},
33326			o(local) {
33327				transition_out(checkbox.$$.fragment, local);
33328				current = false;
33329			},
33330			d(detaching) {
33331				if (detaching) {
33332					detach(div);
33333				}
33334
33335				destroy_component(checkbox);
33336			}
33337		};
33338	}
33339
33340	function instance$9($$self, $$props, $$invalidate) {
33341		let { config } = $$props;
33342		let { checked = false } = $$props;
33343		let { disabled = false } = $$props;
33344		let { onChange } = $$props;
33345
33346		const handleChange = event => {
33347			const isChecked = event.detail;
33348			onChange(isChecked);
33349		};
33350
33351		$$self.$$set = $$props => {
33352			if ('config' in $$props) $$invalidate(0, config = $$props.config);
33353			if ('checked' in $$props) $$invalidate(1, checked = $$props.checked);
33354			if ('disabled' in $$props) $$invalidate(2, disabled = $$props.disabled);
33355			if ('onChange' in $$props) $$invalidate(4, onChange = $$props.onChange);
33356		};
33357
33358		return [config, checked, disabled, handleChange, onChange];
33359	}
33360
33361	class GiftToggle extends SvelteComponent {
33362		constructor(options) {
33363			super();
33364
33365			init(this, options, instance$9, create_fragment$9, safe_not_equal, {
33366				config: 0,
33367				checked: 1,
33368				disabled: 2,
33369				onChange: 4
33370			});
33371		}
33372	}
33373
33374	const giftToggleFactory = {
33375	    matches: (sectionElement) => sectionElement.type === elementTypes.GIFT_TOGGLE,
33376	    create: (form, formState, formActions, elementConfig) => {
33377	        // Only show if enabled
33378	        if (!elementConfig.enabled) {
33379	            return null;
33380	        }
33381	        const handleToggleChange = (isChecked) => {
33382	            const previousIsGiftForm = formState.isGiftForm;
33383	            formActions.updateFormState({
33384	                isGiftForm: isChecked
33385	            });
33386	            if (!isChecked && previousIsGiftForm) {
33387	                // When deselecting gift mode, only navigate if we're on gift-specific sections
33388	                if (formState.currentSection.type === 'recipient_details' && formState.giftTogglePreviousSection) {
33389	                    // If on recipient details, go back to where they were before enabling gift mode
33390	                    formActions.jumpToSection(formState.giftTogglePreviousSection);
33391	                }
33392	                // If on any other section (email, password, payment), stay on current section
33393	                // Clear the stored section
33394	                formActions.updateFormState({
33395	                    giftTogglePreviousSection: undefined
33396	                });
33397	            }
33398	            else if (isChecked && !previousIsGiftForm) {
33399	                // When enabling gift mode, always store current section (update it each time)
33400	                formActions.updateFormState({
33401	                    giftTogglePreviousSection: formState.currentSection.type
33402	                });
33403	                // Check if recipient details are valid before jumping
33404	                const recipientDetailsElementTypes = [
33405	                    elementTypes.RECIPIENT_NAME,
33406	                    elementTypes.RECIPIENT_EMAIL,
33407	                    elementTypes.RECIPIENT_ADDRESS,
33408	                    elementTypes.RECIPIENT_MESSAGE
33409	                ];
33410	                // Check if all recipient details elements are valid
33411	                const recipientDetailsValid = recipientDetailsElementTypes.every(elementType => {
33412	                    const elementValidity = formState.elementValidity.find(e => e.elementType === elementType &&
33413	                        e.sectionType === 'recipient_details');
33414	                    return elementValidity ? elementValidity.isValid : false;
33415	                });
33416	                // Only jump to recipient details if they are not valid
33417	                if (!recipientDetailsValid) {
33418	                    formActions.jumpToSection('recipient_details');
33419	                }
33420	                // If recipient details are valid, stay on current step
33421	            }
33422	            logDataLayerEvent(form, 'zephr_form_input_change', {
33423	                field: 'gift-toggle',
33424	                inputName: 'gift-toggle-checkbox',
33425	                sectionId: formState.currentSection.type,
33426	            });
33427	        };
33428	        return {
33429	            component: GiftToggle,
33430	            props: {
33431	                config: elementConfig,
33432	                checked: formState.isGiftForm || false,
33433	                disabled: formState.isBusy || formState.paymentProviderFormBusy || false,
33434	                onChange: handleToggleChange,
33435	            },
33436	            isValid: true,
33437	        };
33438	    },
33439	};
33440
33441	/* src/components/elements/giftFutureDateToggle/GiftFutureDateToggle.svelte generated by Svelte v4.2.12 */
33442
33443	function create_if_block$6(ctx) {
33444		let p;
33445		let t_value = /*config*/ ctx[0].description + "";
33446		let t;
33447
33448		return {
33449			c() {
33450				p = element("p");
33451				t = text(t_value);
33452				attr(p, "class", "zephr-form-gift-future-date-toggle-description svelte-c9nudz");
33453			},
33454			m(target, anchor) {
33455				insert(target, p, anchor);
33456				append(p, t);
33457			},
33458			p(ctx, dirty) {
33459				if (dirty & /*config*/ 1 && t_value !== (t_value = /*config*/ ctx[0].description + "")) set_data(t, t_value);
33460			},
33461			d(detaching) {
33462				if (detaching) {
33463					detach(p);
33464				}
33465			}
33466		};
33467	}
33468
33469	function create_fragment$8(ctx) {
33470		let div;
33471		let checkbox;
33472		let t;
33473		let current;
33474
33475		checkbox = new Checkbox({
33476				props: {
33477					id: "gift-future-date-toggle-checkbox",
33478					name: "gift-future-date-toggle",
33479					label: /*config*/ ctx[0]?.label || '',
33480					value: "true",
33481					checked: /*checked*/ ctx[1],
33482					disabled: /*disabled*/ ctx[2],
33483					required: false
33484				}
33485			});
33486
33487		checkbox.$on("change", /*handleChange*/ ctx[3]);
33488		let if_block = /*config*/ ctx[0]?.description && create_if_block$6(ctx);
33489
33490		return {
33491			c() {
33492				div = element("div");
33493				create_component(checkbox.$$.fragment);
33494				t = space();
33495				if (if_block) if_block.c();
33496				attr(div, "class", "zephr-form-gift-future-date-toggle svelte-c9nudz");
33497			},
33498			m(target, anchor) {
33499				insert(target, div, anchor);
33500				mount_component(checkbox, div, null);
33501				append(div, t);
33502				if (if_block) if_block.m(div, null);
33503				current = true;
33504			},
33505			p(ctx, [dirty]) {
33506				const checkbox_changes = {};
33507				if (dirty & /*config*/ 1) checkbox_changes.label = /*config*/ ctx[0]?.label || '';
33508				if (dirty & /*checked*/ 2) checkbox_changes.checked = /*checked*/ ctx[1];
33509				if (dirty & /*disabled*/ 4) checkbox_changes.disabled = /*disabled*/ ctx[2];
33510				checkbox.$set(checkbox_changes);
33511
33512				if (/*config*/ ctx[0]?.description) {
33513					if (if_block) {
33514						if_block.p(ctx, dirty);
33515					} else {
33516						if_block = create_if_block$6(ctx);
33517						if_block.c();
33518						if_block.m(div, null);
33519					}
33520				} else if (if_block) {
33521					if_block.d(1);
33522					if_block = null;
33523				}
33524			},
33525			i(local) {
33526				if (current) return;
33527				transition_in(checkbox.$$.fragment, local);
33528				current = true;
33529			},
33530			o(local) {
33531				transition_out(checkbox.$$.fragment, local);
33532				current = false;
33533			},
33534			d(detaching) {
33535				if (detaching) {
33536					detach(div);
33537				}
33538
33539				destroy_component(checkbox);
33540				if (if_block) if_block.d();
33541			}
33542		};
33543	}
33544
33545	function instance$8($$self, $$props, $$invalidate) {
33546		let { config } = $$props;
33547		let { checked = false } = $$props;
33548		let { disabled = false } = $$props;
33549		let { onChange } = $$props;
33550
33551		const handleChange = event => {
33552			const isChecked = event.detail;
33553			onChange(isChecked);
33554		};
33555
33556		$$self.$$set = $$props => {
33557			if ('config' in $$props) $$invalidate(0, config = $$props.config);
33558			if ('checked' in $$props) $$invalidate(1, checked = $$props.checked);
33559			if ('disabled' in $$props) $$invalidate(2, disabled = $$props.disabled);
33560			if ('onChange' in $$props) $$invalidate(4, onChange = $$props.onChange);
33561		};
33562
33563		return [config, checked, disabled, handleChange, onChange];
33564	}
33565
33566	class GiftFutureDateToggle extends SvelteComponent {
33567		constructor(options) {
33568			super();
33569
33570			init(this, options, instance$8, create_fragment$8, safe_not_equal, {
33571				config: 0,
33572				checked: 1,
33573				disabled: 2,
33574				onChange: 4
33575			});
33576		}
33577	}
33578
33579	const giftFutureDateToggleFactory = {
33580	    matches: (sectionElement) => sectionElement.type === elementTypes.GIFT_FUTURE_DATE_TOGGLE,
33581	    create: (form, formState, formActions, elementConfig) => {
33582	        // Only show if enabled and in gift mode
33583	        if (!elementConfig.enabled || !formState.isGiftForm) {
33584	            return null;
33585	        }
33586	        const handleToggleChange = (isChecked) => {
33587	            formActions.updateFormState({
33588	                giftRecipient: {
33589	                    ...formState.giftRecipient,
33590	                    futureDeliveryEnabled: isChecked,
33591	                    // Clear the date if toggling off
33592	                    futureDeliveryDate: isChecked ? formState.giftRecipient?.futureDeliveryDate || '' : ''
33593	                }
33594	            });
33595	            logDataLayerEvent(form, 'zephr_form_input_change', {
33596	                field: 'gift-future-date-toggle',
33597	                inputName: 'gift-future-date-toggle-checkbox',
33598	                sectionId: formState.currentSection.type,
33599	            });
33600	        };
33601	        return {
33602	            component: GiftFutureDateToggle,
33603	            props: {
33604	                config: elementConfig,
33605	                checked: formState.giftRecipient?.futureDeliveryEnabled || false,
33606	                disabled: formState.isBusy || formState.paymentProviderFormBusy || false,
33607	                onChange: handleToggleChange,
33608	            },
33609	            isValid: true,
33610	        };
33611	    },
33612	};
33613
33614	/* src/components/elements/giftFutureDateInput/GiftFutureDateInput.svelte generated by Svelte v4.2.12 */
33615
33616	function create_if_block_1$5(ctx) {
33617		let label;
33618		let current;
33619
33620		label = new Label({
33621				props: {
33622					for: "gift-future-date-input",
33623					required: /*config*/ ctx[0].required || false,
33624					$$slots: { default: [create_default_slot$1] },
33625					$$scope: { ctx }
33626				}
33627			});
33628
33629		return {
33630			c() {
33631				create_component(label.$$.fragment);
33632			},
33633			m(target, anchor) {
33634				mount_component(label, target, anchor);
33635				current = true;
33636			},
33637			p(ctx, dirty) {
33638				const label_changes = {};
33639				if (dirty & /*config*/ 1) label_changes.required = /*config*/ ctx[0].required || false;
33640
33641				if (dirty & /*$$scope, config*/ 513) {
33642					label_changes.$$scope = { dirty, ctx };
33643				}
33644
33645				label.$set(label_changes);
33646			},
33647			i(local) {
33648				if (current) return;
33649				transition_in(label.$$.fragment, local);
33650				current = true;
33651			},
33652			o(local) {
33653				transition_out(label.$$.fragment, local);
33654				current = false;
33655			},
33656			d(detaching) {
33657				destroy_component(label, detaching);
33658			}
33659		};
33660	}
33661
33662	// (25:4) <Label        for="gift-future-date-input"       required={config.required || false}     >
33663	function create_default_slot$1(ctx) {
33664		let t_value = /*config*/ ctx[0].label + "";
33665		let t;
33666
33667		return {
33668			c() {
33669				t = text(t_value);
33670			},
33671			m(target, anchor) {
33672				insert(target, t, anchor);
33673			},
33674			p(ctx, dirty) {
33675				if (dirty & /*config*/ 1 && t_value !== (t_value = /*config*/ ctx[0].label + "")) set_data(t, t_value);
33676			},
33677			d(detaching) {
33678				if (detaching) {
33679					detach(t);
33680				}
33681			}
33682		};
33683	}
33684
33685	// (47:2) {#if config?.description}
33686	function create_if_block$5(ctx) {
33687		let p;
33688		let t_value = /*config*/ ctx[0].description + "";
33689		let t;
33690
33691		return {
33692			c() {
33693				p = element("p");
33694				t = text(t_value);
33695				attr(p, "class", "zephr-form-gift-future-date-input-description svelte-1vykgtl");
33696			},
33697			m(target, anchor) {
33698				insert(target, p, anchor);
33699				append(p, t);
33700			},
33701			p(ctx, dirty) {
33702				if (dirty & /*config*/ 1 && t_value !== (t_value = /*config*/ ctx[0].description + "")) set_data(t, t_value);
33703			},
33704			d(detaching) {
33705				if (detaching) {
33706					detach(p);
33707				}
33708			}
33709		};
33710	}
33711
33712	function create_fragment$7(ctx) {
33713		let div;
33714		let t0;
33715		let input;
33716		let t1;
33717		let current;
33718		let if_block0 = /*config*/ ctx[0]?.label && create_if_block_1$5(ctx);
33719
33720		input = new Input({
33721				props: {
33722					id: "gift-future-date-input",
33723					name: "gift-future-date",
33724					type: "date",
33725					value: /*value*/ ctx[1],
33726					disabled: /*disabled*/ ctx[2],
33727					hasError: /*hasError*/ ctx[3],
33728					errorMessage: /*errorMessage*/ ctx[4],
33729					placeholder: /*config*/ ctx[0]?.placeholder || '',
33730					required: /*config*/ ctx[0]?.required || false,
33731					min: /*minDate*/ ctx[6]
33732				}
33733			});
33734
33735		input.$on("change", /*handleChange*/ ctx[5]);
33736		let if_block1 = /*config*/ ctx[0]?.description && create_if_block$5(ctx);
33737
33738		return {
33739			c() {
33740				div = element("div");
33741				if (if_block0) if_block0.c();
33742				t0 = space();
33743				create_component(input.$$.fragment);
33744				t1 = space();
33745				if (if_block1) if_block1.c();
33746				attr(div, "class", "zephr-form-gift-future-date-input svelte-1vykgtl");
33747			},
33748			m(target, anchor) {
33749				insert(target, div, anchor);
33750				if (if_block0) if_block0.m(div, null);
33751				append(div, t0);
33752				mount_component(input, div, null);
33753				append(div, t1);
33754				if (if_block1) if_block1.m(div, null);
33755				current = true;
33756			},
33757			p(ctx, [dirty]) {
33758				if (/*config*/ ctx[0]?.label) {
33759					if (if_block0) {
33760						if_block0.p(ctx, dirty);
33761
33762						if (dirty & /*config*/ 1) {
33763							transition_in(if_block0, 1);
33764						}
33765					} else {
33766						if_block0 = create_if_block_1$5(ctx);
33767						if_block0.c();
33768						transition_in(if_block0, 1);
33769						if_block0.m(div, t0);
33770					}
33771				} else if (if_block0) {
33772					group_outros();
33773
33774					transition_out(if_block0, 1, 1, () => {
33775						if_block0 = null;
33776					});
33777
33778					check_outros();
33779				}
33780
33781				const input_changes = {};
33782				if (dirty & /*value*/ 2) input_changes.value = /*value*/ ctx[1];
33783				if (dirty & /*disabled*/ 4) input_changes.disabled = /*disabled*/ ctx[2];
33784				if (dirty & /*hasError*/ 8) input_changes.hasError = /*hasError*/ ctx[3];
33785				if (dirty & /*errorMessage*/ 16) input_changes.errorMessage = /*errorMessage*/ ctx[4];
33786				if (dirty & /*config*/ 1) input_changes.placeholder = /*config*/ ctx[0]?.placeholder || '';
33787				if (dirty & /*config*/ 1) input_changes.required = /*config*/ ctx[0]?.required || false;
33788				input.$set(input_changes);
33789
33790				if (/*config*/ ctx[0]?.description) {
33791					if (if_block1) {
33792						if_block1.p(ctx, dirty);
33793					} else {
33794						if_block1 = create_if_block$5(ctx);
33795						if_block1.c();
33796						if_block1.m(div, null);
33797					}
33798				} else if (if_block1) {
33799					if_block1.d(1);
33800					if_block1 = null;
33801				}
33802			},
33803			i(local) {
33804				if (current) return;
33805				transition_in(if_block0);
33806				transition_in(input.$$.fragment, local);
33807				current = true;
33808			},
33809			o(local) {
33810				transition_out(if_block0);
33811				transition_out(input.$$.fragment, local);
33812				current = false;
33813			},
33814			d(detaching) {
33815				if (detaching) {
33816					detach(div);
33817				}
33818
33819				if (if_block0) if_block0.d();
33820				destroy_component(input);
33821				if (if_block1) if_block1.d();
33822			}
33823		};
33824	}
33825
33826	function instance$7($$self, $$props, $$invalidate) {
33827		let { config } = $$props;
33828		let { value = '' } = $$props;
33829		let { disabled = false } = $$props;
33830		let { hasError = false } = $$props;
33831		let { errorMessage = '' } = $$props;
33832		let { onChange } = $$props;
33833
33834		// Calculate tomorrow's date in YYYY-MM-DD format
33835		const getTomorrowDate = () => {
33836			const tomorrow = new Date();
33837			tomorrow.setDate(tomorrow.getDate() + 1);
33838			return tomorrow.toISOString().split('T')[0];
33839		};
33840
33841		const handleChange = event => {
33842			const inputValue = event.detail;
33843			onChange(inputValue);
33844		};
33845
33846		// Set minimum date to tomorrow
33847		const minDate = getTomorrowDate();
33848
33849		$$self.$$set = $$props => {
33850			if ('config' in $$props) $$invalidate(0, config = $$props.config);
33851			if ('value' in $$props) $$invalidate(1, value = $$props.value);
33852			if ('disabled' in $$props) $$invalidate(2, disabled = $$props.disabled);
33853			if ('hasError' in $$props) $$invalidate(3, hasError = $$props.hasError);
33854			if ('errorMessage' in $$props) $$invalidate(4, errorMessage = $$props.errorMessage);
33855			if ('onChange' in $$props) $$invalidate(7, onChange = $$props.onChange);
33856		};
33857
33858		return [
33859			config,
33860			value,
33861			disabled,
33862			hasError,
33863			errorMessage,
33864			handleChange,
33865			minDate,
33866			onChange
33867		];
33868	}
33869
33870	class GiftFutureDateInput extends SvelteComponent {
33871		constructor(options) {
33872			super();
33873
33874			init(this, options, instance$7, create_fragment$7, safe_not_equal, {
33875				config: 0,
33876				value: 1,
33877				disabled: 2,
33878				hasError: 3,
33879				errorMessage: 4,
33880				onChange: 7
33881			});
33882		}
33883	}
33884
33885	const giftFutureDateInputFactory = {
33886	    matches: (sectionElement) => sectionElement.type === elementTypes.GIFT_FUTURE_DATE_INPUT,
33887	    create: (form, formState, formActions, elementConfig) => {
33888	        // Only show if enabled, in gift mode, and future delivery is enabled
33889	        if (!elementConfig.enabled || !formState.isGiftForm || !formState.giftRecipient?.futureDeliveryEnabled) {
33890	            return null;
33891	        }
33892	        // Validation function
33893	        const validateDate = (value) => {
33894	            if (!value) {
33895	                return resolveLanguagePackKeyTyped(form, 'forms.errors.future-delivery-date-required', 'Please select a future delivery date');
33896	            }
33897	            if (value) {
33898	                const selectedDate = new Date(value);
33899	                const tomorrow = new Date();
33900	                tomorrow.setDate(tomorrow.getDate() + 1);
33901	                tomorrow.setHours(0, 0, 0, 0); // Reset time for date comparison
33902	                if (selectedDate < tomorrow) {
33903	                    return resolveLanguagePackKeyTyped(form, 'forms.errors.future-delivery-date-too-early', 'Delivery date must be at least 24 hours in the future');
33904	                }
33905	            }
33906	            return null;
33907	        };
33908	        const handleChange = (value) => {
33909	            formActions.updateFormState({
33910	                giftRecipient: {
33911	                    ...formState.giftRecipient,
33912	                    futureDeliveryDate: value
33913	                }
33914	            });
33915	            logDataLayerEvent(form, 'zephr_form_input_change', {
33916	                field: 'gift-future-date',
33917	                inputName: 'gift-future-date-input',
33918	                sectionId: formState.currentSection.type,
33919	            });
33920	        };
33921	        const currentValue = formState.giftRecipient?.futureDeliveryDate || '';
33922	        const errorMessage = validateDate(currentValue);
33923	        const isValid = !errorMessage;
33924	        return {
33925	            component: GiftFutureDateInput,
33926	            props: {
33927	                config: elementConfig,
33928	                value: currentValue,
33929	                disabled: formState.isBusy || formState.paymentProviderFormBusy || false,
33930	                hasError: !isValid,
33931	                errorMessage: errorMessage || '',
33932	                onChange: handleChange,
33933	            },
33934	            isValid,
33935	        };
33936	    },
33937	};
33938
33939	/* src/components/elements/suspendResumeSubscription/SuspendResumeSubscription.svelte generated by Svelte v4.2.12 */
33940
33941	function create_if_block_2$3(ctx) {
33942		let div;
33943		let t;
33944
33945		return {
33946			c() {
33947				div = element("div");
33948				t = text(/*suspensionDateError*/ ctx[3]);
33949				attr(div, "class", "error-text svelte-1hog2jr");
33950			},
33951			m(target, anchor) {
33952				insert(target, div, anchor);
33953				append(div, t);
33954			},
33955			p(ctx, dirty) {
33956				if (dirty & /*suspensionDateError*/ 8) set_data(t, /*suspensionDateError*/ ctx[3]);
33957			},
33958			d(detaching) {
33959				if (detaching) {
33960					detach(div);
33961				}
33962			}
33963		};
33964	}
33965
33966	// (88:6) {#if resumeDateError}
33967	function create_if_block_1$4(ctx) {
33968		let div;
33969		let t;
33970
33971		return {
33972			c() {
33973				div = element("div");
33974				t = text(/*resumeDateError*/ ctx[4]);
33975				attr(div, "class", "error-text svelte-1hog2jr");
33976			},
33977			m(target, anchor) {
33978				insert(target, div, anchor);
33979				append(div, t);
33980			},
33981			p(ctx, dirty) {
33982				if (dirty & /*resumeDateError*/ 16) set_data(t, /*resumeDateError*/ ctx[4]);
33983			},
33984			d(detaching) {
33985				if (detaching) {
33986					detach(div);
33987				}
33988			}
33989		};
33990	}
33991
33992	// (92:4) {#if generalError}
33993	function create_if_block$4(ctx) {
33994		let div;
33995		let t;
33996
33997		return {
33998			c() {
33999				div = element("div");
34000				t = text(/*generalError*/ ctx[5]);
34001				attr(div, "class", "error-text svelte-1hog2jr");
34002			},
34003			m(target, anchor) {
34004				insert(target, div, anchor);
34005				append(div, t);
34006			},
34007			p(ctx, dirty) {
34008				if (dirty & /*generalError*/ 32) set_data(t, /*generalError*/ ctx[5]);
34009			},
34010			d(detaching) {
34011				if (detaching) {
34012					detach(div);
34013				}
34014			}
34015		};
34016	}
34017
34018	function create_fragment$6(ctx) {
34019		let div2;
34020		let div0;
34021		let label0;
34022		let t0_value = /*config*/ ctx[0].suspensionDateLabel + "";
34023		let t0;
34024		let t1;
34025		let input0;
34026		let t2;
34027		let t3;
34028		let div1;
34029		let label1;
34030		let t4_value = /*config*/ ctx[0].resumeDateLabel + "";
34031		let t4;
34032		let t5;
34033		let input1;
34034		let t6;
34035		let t7;
34036		let mounted;
34037		let dispose;
34038		let if_block0 = /*suspensionDateError*/ ctx[3] && create_if_block_2$3(ctx);
34039		let if_block1 = /*resumeDateError*/ ctx[4] && create_if_block_1$4(ctx);
34040		let if_block2 = /*generalError*/ ctx[5] && create_if_block$4(ctx);
34041
34042		return {
34043			c() {
34044				div2 = element("div");
34045				div0 = element("div");
34046				label0 = element("label");
34047				t0 = text(t0_value);
34048				t1 = space();
34049				input0 = element("input");
34050				t2 = space();
34051				if (if_block0) if_block0.c();
34052				t3 = space();
34053				div1 = element("div");
34054				label1 = element("label");
34055				t4 = text(t4_value);
34056				t5 = space();
34057				input1 = element("input");
34058				t6 = space();
34059				if (if_block1) if_block1.c();
34060				t7 = space();
34061				if (if_block2) if_block2.c();
34062				attr(label0, "for", "suspensionDate");
34063				attr(label0, "class", "svelte-1hog2jr");
34064				attr(input0, "id", "suspensionDate");
34065				attr(input0, "type", "date");
34066				input0.required = true;
34067				attr(input0, "class", "svelte-1hog2jr");
34068				toggle_class(input0, "error", !!/*suspensionDateError*/ ctx[3]);
34069				attr(div0, "class", "field svelte-1hog2jr");
34070				attr(label1, "for", "resumeDate");
34071				attr(label1, "class", "svelte-1hog2jr");
34072				attr(input1, "id", "resumeDate");
34073				attr(input1, "type", "date");
34074				input1.required = true;
34075				attr(input1, "class", "svelte-1hog2jr");
34076				toggle_class(input1, "error", !!/*resumeDateError*/ ctx[4]);
34077				attr(div1, "class", "field svelte-1hog2jr");
34078				attr(div2, "class", "suspend-resume-subscription-section svelte-1hog2jr");
34079			},
34080			m(target, anchor) {
34081				insert(target, div2, anchor);
34082				append(div2, div0);
34083				append(div0, label0);
34084				append(label0, t0);
34085				append(div0, t1);
34086				append(div0, input0);
34087				set_input_value(input0, /*suspensionDate*/ ctx[1]);
34088				append(div0, t2);
34089				if (if_block0) if_block0.m(div0, null);
34090				append(div2, t3);
34091				append(div2, div1);
34092				append(div1, label1);
34093				append(label1, t4);
34094				append(div1, t5);
34095				append(div1, input1);
34096				set_input_value(input1, /*resumeDate*/ ctx[2]);
34097				append(div1, t6);
34098				if (if_block1) if_block1.m(div1, null);
34099				append(div2, t7);
34100				if (if_block2) if_block2.m(div2, null);
34101
34102				if (!mounted) {
34103					dispose = [
34104						listen(input0, "input", /*input0_input_handler*/ ctx[9]),
34105						listen(input0, "input", /*updateSuspendResumeSubscription*/ ctx[6]),
34106						listen(input1, "input", /*input1_input_handler*/ ctx[10]),
34107						listen(input1, "input", /*updateSuspendResumeSubscription*/ ctx[6])
34108					];
34109
34110					mounted = true;
34111				}
34112			},
34113			p(ctx, [dirty]) {
34114				if (dirty & /*config*/ 1 && t0_value !== (t0_value = /*config*/ ctx[0].suspensionDateLabel + "")) set_data(t0, t0_value);
34115
34116				if (dirty & /*suspensionDate*/ 2) {
34117					set_input_value(input0, /*suspensionDate*/ ctx[1]);
34118				}
34119
34120				if (dirty & /*suspensionDateError*/ 8) {
34121					toggle_class(input0, "error", !!/*suspensionDateError*/ ctx[3]);
34122				}
34123
34124				if (/*suspensionDateError*/ ctx[3]) {
34125					if (if_block0) {
34126						if_block0.p(ctx, dirty);
34127					} else {
34128						if_block0 = create_if_block_2$3(ctx);
34129						if_block0.c();
34130						if_block0.m(div0, null);
34131					}
34132				} else if (if_block0) {
34133					if_block0.d(1);
34134					if_block0 = null;
34135				}
34136
34137				if (dirty & /*config*/ 1 && t4_value !== (t4_value = /*config*/ ctx[0].resumeDateLabel + "")) set_data(t4, t4_value);
34138
34139				if (dirty & /*resumeDate*/ 4) {
34140					set_input_value(input1, /*resumeDate*/ ctx[2]);
34141				}
34142
34143				if (dirty & /*resumeDateError*/ 16) {
34144					toggle_class(input1, "error", !!/*resumeDateError*/ ctx[4]);
34145				}
34146
34147				if (/*resumeDateError*/ ctx[4]) {
34148					if (if_block1) {
34149						if_block1.p(ctx, dirty);
34150					} else {
34151						if_block1 = create_if_block_1$4(ctx);
34152						if_block1.c();
34153						if_block1.m(div1, null);
34154					}
34155				} else if (if_block1) {
34156					if_block1.d(1);
34157					if_block1 = null;
34158				}
34159
34160				if (/*generalError*/ ctx[5]) {
34161					if (if_block2) {
34162						if_block2.p(ctx, dirty);
34163					} else {
34164						if_block2 = create_if_block$4(ctx);
34165						if_block2.c();
34166						if_block2.m(div2, null);
34167					}
34168				} else if (if_block2) {
34169					if_block2.d(1);
34170					if_block2 = null;
34171				}
34172			},
34173			i: noop,
34174			o: noop,
34175			d(detaching) {
34176				if (detaching) {
34177					detach(div2);
34178				}
34179
34180				if (if_block0) if_block0.d();
34181				if (if_block1) if_block1.d();
34182				if (if_block2) if_block2.d();
34183				mounted = false;
34184				run_all(dispose);
34185			}
34186		};
34187	}
34188
34189	function instance$6($$self, $$props, $$invalidate) {
34190		let { formState } = $$props;
34191		let { formActions } = $$props;
34192		let { config } = $$props;
34193		const dispatch = createEventDispatcher();
34194		let suspensionDate = formState.suspendResumeSubscription?.suspensionDate || '';
34195		let resumeDate = formState.suspendResumeSubscription?.resumeDate || '';
34196		let suspensionDateError = '';
34197		let resumeDateError = '';
34198		let generalError = '';
34199
34200		// Update form state when input changes
34201		const updateSuspendResumeSubscription = () => {
34202			const updatedSuspendResumeSubscription = {
34203				...formState.suspendResumeSubscription || {},
34204				suspensionDate,
34205				resumeDate
34206			};
34207
34208			formActions.updateFormState({
34209				suspendResumeSubscription: updatedSuspendResumeSubscription
34210			});
34211
34212			validateForm();
34213		};
34214
34215		const validateForm = () => {
34216			const hasValidSuspensionDate = !!suspensionDate.trim();
34217			const hasValidResumeDate = !!resumeDate.trim();
34218			const today = new Date();
34219			today.setHours(0, 0, 0, 0); // Reset time to start of day for accurate comparison
34220			const suspensionDateObj = new Date(suspensionDate);
34221			const resumeDateObj = new Date(resumeDate);
34222			const isSuspensionDateInPast = hasValidSuspensionDate && suspensionDateObj < today;
34223			const isSuspensionDateBeforeResumeDate = hasValidSuspensionDate && hasValidResumeDate && suspensionDateObj < resumeDateObj;
34224
34225			// Reset errors
34226			$$invalidate(3, suspensionDateError = '');
34227
34228			$$invalidate(4, resumeDateError = '');
34229			$$invalidate(5, generalError = '');
34230
34231			if (!hasValidSuspensionDate) {
34232				$$invalidate(3, suspensionDateError = 'Suspension date is required');
34233			} else if (isSuspensionDateInPast) {
34234				$$invalidate(3, suspensionDateError = 'Suspension date cannot be in the past');
34235			}
34236
34237			if (!hasValidResumeDate) {
34238				$$invalidate(4, resumeDateError = 'Resume date is required');
34239			}
34240
34241			if (hasValidSuspensionDate && hasValidResumeDate && !isSuspensionDateBeforeResumeDate) {
34242				$$invalidate(5, generalError = 'Resume date must be after suspension date');
34243			}
34244
34245			// Dispatch event for form validity
34246			const isValid = hasValidSuspensionDate && hasValidResumeDate && !isSuspensionDateInPast && isSuspensionDateBeforeResumeDate;
34247
34248			dispatch('validity', { isValid });
34249		};
34250
34251		// Run validation on mount to ensure initial state is validated
34252		onMount(() => {
34253			validateForm();
34254		});
34255
34256		function input0_input_handler() {
34257			suspensionDate = this.value;
34258			$$invalidate(1, suspensionDate);
34259		}
34260
34261		function input1_input_handler() {
34262			resumeDate = this.value;
34263			$$invalidate(2, resumeDate);
34264		}
34265
34266		$$self.$$set = $$props => {
34267			if ('formState' in $$props) $$invalidate(7, formState = $$props.formState);
34268			if ('formActions' in $$props) $$invalidate(8, formActions = $$props.formActions);
34269			if ('config' in $$props) $$invalidate(0, config = $$props.config);
34270		};
34271
34272		return [
34273			config,
34274			suspensionDate,
34275			resumeDate,
34276			suspensionDateError,
34277			resumeDateError,
34278			generalError,
34279			updateSuspendResumeSubscription,
34280			formState,
34281			formActions,
34282			input0_input_handler,
34283			input1_input_handler
34284		];
34285	}
34286
34287	class SuspendResumeSubscription extends SvelteComponent {
34288		constructor(options) {
34289			super();
34290			init(this, options, instance$6, create_fragment$6, safe_not_equal, { formState: 7, formActions: 8, config: 0 });
34291		}
34292	}
34293
34294	const suspendResumeSubscriptionFactory = {
34295	    matches: (sectionElement) => sectionElement.type === elementTypes.SUSPEND_RESUME_SUBSCRIPTION,
34296	    create: (form, formState, formActions, elementConfig) => {
34297	        // Resolve all labels through language pack service
34298	        const resolvedConfig = {
34299	            suspensionDateLabel: resolveLanguagePackKeyTyped(form, 'forms.suspend-resume-subscription.suspension-date-label', elementConfig.suspensionDateLabel),
34300	            resumeDateLabel: resolveLanguagePackKeyTyped(form, 'forms.suspend-resume-subscription.resume-date-label', elementConfig.resumeDateLabel),
34301	        };
34302	        // Determine if the input is valid
34303	        const suspendResumeSubscription = (formState.suspendResumeSubscription || {});
34304	        const hasValidSuspensionDate = !!suspendResumeSubscription.suspensionDate?.trim();
34305	        const hasValidResumeDate = !!suspendResumeSubscription.resumeDate?.trim();
34306	        // Check if suspension date is in the past
34307	        const today = new Date();
34308	        today.setHours(0, 0, 0, 0); // Reset time to start of day for accurate comparison
34309	        const suspensionDateObj = new Date(suspendResumeSubscription.suspensionDate);
34310	        const isSuspensionDateInPast = hasValidSuspensionDate && suspensionDateObj < today;
34311	        const resumeDateObj = new Date(suspendResumeSubscription.resumeDate);
34312	        const isSuspensionDateBeforeResumeDate = hasValidSuspensionDate && hasValidResumeDate && suspensionDateObj < resumeDateObj;
34313	        const isValid = hasValidSuspensionDate &&
34314	            hasValidResumeDate &&
34315	            !isSuspensionDateInPast &&
34316	            isSuspensionDateBeforeResumeDate;
34317	        return {
34318	            component: SuspendResumeSubscription,
34319	            props: {
34320	                config: resolvedConfig,
34321	                form,
34322	                formState,
34323	                formActions,
34324	            },
34325	            isValid
34326	        };
34327	    }
34328	};
34329
34330	/* src/components/elements/subscriptionCustomFieldsList/SubscriptionCustomFieldsList.svelte generated by Svelte v4.2.12 */
34331
34332	function get_each_context$2(ctx, list, i) {
34333		const child_ctx = ctx.slice();
34334		child_ctx[30] = list[i][0];
34335		child_ctx[31] = list[i][1];
34336		return child_ctx;
34337	}
34338
34339	function get_each_context_1(ctx, list, i) {
34340		const child_ctx = ctx.slice();
34341		child_ctx[34] = list[i];
34342		return child_ctx;
34343	}
34344
34345	// (142:2) {#if formTitle}
34346	function create_if_block_6$1(ctx) {
34347		let h2;
34348		let t;
34349
34350		return {
34351			c() {
34352				h2 = element("h2");
34353				t = text(/*formTitle*/ ctx[2]);
34354				attr(h2, "class", "form-title svelte-uox0m2");
34355			},
34356			m(target, anchor) {
34357				insert(target, h2, anchor);
34358				append(h2, t);
34359			},
34360			p(ctx, dirty) {
34361				if (dirty[0] & /*formTitle*/ 4) set_data(t, /*formTitle*/ ctx[2]);
34362			},
34363			d(detaching) {
34364				if (detaching) {
34365					detach(h2);
34366				}
34367			}
34368		};
34369	}
34370
34371	// (146:2) {#if formDescription}
34372	function create_if_block_5$1(ctx) {
34373		let p;
34374		let t;
34375
34376		return {
34377			c() {
34378				p = element("p");
34379				t = text(/*formDescription*/ ctx[3]);
34380				attr(p, "class", "form-description svelte-uox0m2");
34381			},
34382			m(target, anchor) {
34383				insert(target, p, anchor);
34384				append(p, t);
34385			},
34386			p(ctx, dirty) {
34387				if (dirty[0] & /*formDescription*/ 8) set_data(t, /*formDescription*/ ctx[3]);
34388			},
34389			d(detaching) {
34390				if (detaching) {
34391					detach(p);
34392				}
34393			}
34394		};
34395	}
34396
34397	// (152:52) 
34398	function create_if_block_1$3(ctx) {
34399		let form;
34400		let t0;
34401		let t1;
34402		let t2;
34403		let mounted;
34404		let dispose;
34405		let each_value = ensure_array_like(/*activeFieldGroups*/ ctx[9]);
34406		let each_blocks = [];
34407
34408		for (let i = 0; i < each_value.length; i += 1) {
34409			each_blocks[i] = create_each_block$2(get_each_context$2(ctx, each_value, i));
34410		}
34411
34412		let if_block0 = /*successMessage*/ ctx[6] && create_if_block_4$1(ctx);
34413		let if_block1 = /*errorMessage*/ ctx[7] && create_if_block_3$2(ctx);
34414		let if_block2 = /*editableFieldNames*/ ctx[1].length > 0 && create_if_block_2$2(ctx);
34415
34416		return {
34417			c() {
34418				form = element("form");
34419
34420				for (let i = 0; i < each_blocks.length; i += 1) {
34421					each_blocks[i].c();
34422				}
34423
34424				t0 = space();
34425				if (if_block0) if_block0.c();
34426				t1 = space();
34427				if (if_block1) if_block1.c();
34428				t2 = space();
34429				if (if_block2) if_block2.c();
34430				attr(form, "class", "custom-fields-form svelte-uox0m2");
34431			},
34432			m(target, anchor) {
34433				insert(target, form, anchor);
34434
34435				for (let i = 0; i < each_blocks.length; i += 1) {
34436					if (each_blocks[i]) {
34437						each_blocks[i].m(form, null);
34438					}
34439				}
34440
34441				append(form, t0);
34442				if (if_block0) if_block0.m(form, null);
34443				append(form, t1);
34444				if (if_block1) if_block1.m(form, null);
34445				append(form, t2);
34446				if (if_block2) if_block2.m(form, null);
34447
34448				if (!mounted) {
34449					dispose = listen(form, "submit", prevent_default(/*handleSubmit*/ ctx[13]));
34450					mounted = true;
34451				}
34452			},
34453			p(ctx, dirty) {
34454				if (dirty[0] & /*activeFieldGroups, fieldValues, isFieldEditable, handleInputEvent*/ 21248) {
34455					each_value = ensure_array_like(/*activeFieldGroups*/ ctx[9]);
34456					let i;
34457
34458					for (i = 0; i < each_value.length; i += 1) {
34459						const child_ctx = get_each_context$2(ctx, each_value, i);
34460
34461						if (each_blocks[i]) {
34462							each_blocks[i].p(child_ctx, dirty);
34463						} else {
34464							each_blocks[i] = create_each_block$2(child_ctx);
34465							each_blocks[i].c();
34466							each_blocks[i].m(form, t0);
34467						}
34468					}
34469
34470					for (; i < each_blocks.length; i += 1) {
34471						each_blocks[i].d(1);
34472					}
34473
34474					each_blocks.length = each_value.length;
34475				}
34476
34477				if (/*successMessage*/ ctx[6]) {
34478					if (if_block0) {
34479						if_block0.p(ctx, dirty);
34480					} else {
34481						if_block0 = create_if_block_4$1(ctx);
34482						if_block0.c();
34483						if_block0.m(form, t1);
34484					}
34485				} else if (if_block0) {
34486					if_block0.d(1);
34487					if_block0 = null;
34488				}
34489
34490				if (/*errorMessage*/ ctx[7]) {
34491					if (if_block1) {
34492						if_block1.p(ctx, dirty);
34493					} else {
34494						if_block1 = create_if_block_3$2(ctx);
34495						if_block1.c();
34496						if_block1.m(form, t2);
34497					}
34498				} else if (if_block1) {
34499					if_block1.d(1);
34500					if_block1 = null;
34501				}
34502
34503				if (/*editableFieldNames*/ ctx[1].length > 0) {
34504					if (if_block2) {
34505						if_block2.p(ctx, dirty);
34506					} else {
34507						if_block2 = create_if_block_2$2(ctx);
34508						if_block2.c();
34509						if_block2.m(form, null);
34510					}
34511				} else if (if_block2) {
34512					if_block2.d(1);
34513					if_block2 = null;
34514				}
34515			},
34516			d(detaching) {
34517				if (detaching) {
34518					detach(form);
34519				}
34520
34521				destroy_each(each_blocks, detaching);
34522				if (if_block0) if_block0.d();
34523				if (if_block1) if_block1.d();
34524				if (if_block2) if_block2.d();
34525				mounted = false;
34526				dispose();
34527			}
34528		};
34529	}
34530
34531	// (150:2) {#if loading}
34532	function create_if_block$3(ctx) {
34533		let div;
34534
34535		return {
34536			c() {
34537				div = element("div");
34538				div.textContent = "Loading custom fields...";
34539				attr(div, "class", "loading svelte-uox0m2");
34540			},
34541			m(target, anchor) {
34542				insert(target, div, anchor);
34543			},
34544			p: noop,
34545			d(detaching) {
34546				if (detaching) {
34547					detach(div);
34548				}
34549			}
34550		};
34551	}
34552
34553	// (158:10) {#each group.fields as field}
34554	function create_each_block_1(ctx) {
34555		let div;
34556		let label;
34557		let t0_value = /*field*/ ctx[34].label + "";
34558		let t0;
34559		let label_for_value;
34560		let t1;
34561		let input;
34562		let input_id_value;
34563		let input_name_value;
34564		let input_value_value;
34565		let input_disabled_value;
34566		let mounted;
34567		let dispose;
34568
34569		function input_handler(...args) {
34570			return /*input_handler*/ ctx[20](/*field*/ ctx[34], ...args);
34571		}
34572
34573		return {
34574			c() {
34575				div = element("div");
34576				label = element("label");
34577				t0 = text(t0_value);
34578				t1 = space();
34579				input = element("input");
34580				attr(label, "for", label_for_value = /*field*/ ctx[34].name);
34581				attr(label, "class", "field-label svelte-uox0m2");
34582				attr(input, "id", input_id_value = /*field*/ ctx[34].name);
34583				attr(input, "name", input_name_value = /*field*/ ctx[34].name);
34584				attr(input, "type", "text");
34585				input.value = input_value_value = /*fieldValues*/ ctx[8][/*field*/ ctx[34].name];
34586				input.disabled = input_disabled_value = !/*isFieldEditable*/ ctx[12](/*field*/ ctx[34].name);
34587				attr(input, "class", "field-input svelte-uox0m2");
34588				attr(div, "class", "field-item svelte-uox0m2");
34589			},
34590			m(target, anchor) {
34591				insert(target, div, anchor);
34592				append(div, label);
34593				append(label, t0);
34594				append(div, t1);
34595				append(div, input);
34596
34597				if (!mounted) {
34598					dispose = listen(input, "input", input_handler);
34599					mounted = true;
34600				}
34601			},
34602			p(new_ctx, dirty) {
34603				ctx = new_ctx;
34604				if (dirty[0] & /*activeFieldGroups*/ 512 && t0_value !== (t0_value = /*field*/ ctx[34].label + "")) set_data(t0, t0_value);
34605
34606				if (dirty[0] & /*activeFieldGroups*/ 512 && label_for_value !== (label_for_value = /*field*/ ctx[34].name)) {
34607					attr(label, "for", label_for_value);
34608				}
34609
34610				if (dirty[0] & /*activeFieldGroups*/ 512 && input_id_value !== (input_id_value = /*field*/ ctx[34].name)) {
34611					attr(input, "id", input_id_value);
34612				}
34613
34614				if (dirty[0] & /*activeFieldGroups*/ 512 && input_name_value !== (input_name_value = /*field*/ ctx[34].name)) {
34615					attr(input, "name", input_name_value);
34616				}
34617
34618				if (dirty[0] & /*fieldValues, activeFieldGroups*/ 768 && input_value_value !== (input_value_value = /*fieldValues*/ ctx[8][/*field*/ ctx[34].name]) && input.value !== input_value_value) {
34619					input.value = input_value_value;
34620				}
34621
34622				if (dirty[0] & /*activeFieldGroups*/ 512 && input_disabled_value !== (input_disabled_value = !/*isFieldEditable*/ ctx[12](/*field*/ ctx[34].name))) {
34623					input.disabled = input_disabled_value;
34624				}
34625			},
34626			d(detaching) {
34627				if (detaching) {
34628					detach(div);
34629				}
34630
34631				mounted = false;
34632				dispose();
34633			}
34634		};
34635	}
34636
34637	// (156:6) {#each activeFieldGroups as [_groupKey, group]}
34638	function create_each_block$2(ctx) {
34639		let div;
34640		let t;
34641		let each_value_1 = ensure_array_like(/*group*/ ctx[31].fields);
34642		let each_blocks = [];
34643
34644		for (let i = 0; i < each_value_1.length; i += 1) {
34645			each_blocks[i] = create_each_block_1(get_each_context_1(ctx, each_value_1, i));
34646		}
34647
34648		return {
34649			c() {
34650				div = element("div");
34651
34652				for (let i = 0; i < each_blocks.length; i += 1) {
34653					each_blocks[i].c();
34654				}
34655
34656				t = space();
34657				attr(div, "class", "simple-field-group svelte-uox0m2");
34658			},
34659			m(target, anchor) {
34660				insert(target, div, anchor);
34661
34662				for (let i = 0; i < each_blocks.length; i += 1) {
34663					if (each_blocks[i]) {
34664						each_blocks[i].m(div, null);
34665					}
34666				}
34667
34668				append(div, t);
34669			},
34670			p(ctx, dirty) {
34671				if (dirty[0] & /*activeFieldGroups, fieldValues, isFieldEditable, handleInputEvent*/ 21248) {
34672					each_value_1 = ensure_array_like(/*group*/ ctx[31].fields);
34673					let i;
34674
34675					for (i = 0; i < each_value_1.length; i += 1) {
34676						const child_ctx = get_each_context_1(ctx, each_value_1, i);
34677
34678						if (each_blocks[i]) {
34679							each_blocks[i].p(child_ctx, dirty);
34680						} else {
34681							each_blocks[i] = create_each_block_1(child_ctx);
34682							each_blocks[i].c();
34683							each_blocks[i].m(div, t);
34684						}
34685					}
34686
34687					for (; i < each_blocks.length; i += 1) {
34688						each_blocks[i].d(1);
34689					}
34690
34691					each_blocks.length = each_value_1.length;
34692				}
34693			},
34694			d(detaching) {
34695				if (detaching) {
34696					detach(div);
34697				}
34698
34699				destroy_each(each_blocks, detaching);
34700			}
34701		};
34702	}
34703
34704	// (179:6) {#if successMessage}
34705	function create_if_block_4$1(ctx) {
34706		let div;
34707		let t0;
34708		let t1;
34709
34710		return {
34711			c() {
34712				div = element("div");
34713				t0 = text("✓ ");
34714				t1 = text(/*successMessage*/ ctx[6]);
34715				attr(div, "class", "success-message svelte-uox0m2");
34716			},
34717			m(target, anchor) {
34718				insert(target, div, anchor);
34719				append(div, t0);
34720				append(div, t1);
34721			},
34722			p(ctx, dirty) {
34723				if (dirty[0] & /*successMessage*/ 64) set_data(t1, /*successMessage*/ ctx[6]);
34724			},
34725			d(detaching) {
34726				if (detaching) {
34727					detach(div);
34728				}
34729			}
34730		};
34731	}
34732
34733	// (185:6) {#if errorMessage}
34734	function create_if_block_3$2(ctx) {
34735		let div;
34736		let t0;
34737		let t1;
34738
34739		return {
34740			c() {
34741				div = element("div");
34742				t0 = text("✗ ");
34743				t1 = text(/*errorMessage*/ ctx[7]);
34744				attr(div, "class", "error-message svelte-uox0m2");
34745			},
34746			m(target, anchor) {
34747				insert(target, div, anchor);
34748				append(div, t0);
34749				append(div, t1);
34750			},
34751			p(ctx, dirty) {
34752				if (dirty[0] & /*errorMessage*/ 128) set_data(t1, /*errorMessage*/ ctx[7]);
34753			},
34754			d(detaching) {
34755				if (detaching) {
34756					detach(div);
34757				}
34758			}
34759		};
34760	}
34761
34762	// (192:6) {#if editableFieldNames.length > 0}
34763	function create_if_block_2$2(ctx) {
34764		let div;
34765		let button;
34766
34767		let t_value = (/*submitting*/ ctx[11]
34768		? 'Updating...'
34769		: /*loading*/ ctx[5]
34770			? 'Loading...'
34771			: /*submitButtonText*/ ctx[4]) + "";
34772
34773		let t;
34774		let button_disabled_value;
34775
34776		return {
34777			c() {
34778				div = element("div");
34779				button = element("button");
34780				t = text(t_value);
34781				attr(button, "type", "submit");
34782				attr(button, "class", "submit-button svelte-uox0m2");
34783				button.disabled = button_disabled_value = /*loading*/ ctx[5] || /*submitting*/ ctx[11] || !/*hasChanges*/ ctx[10];
34784				attr(div, "class", "form-actions svelte-uox0m2");
34785			},
34786			m(target, anchor) {
34787				insert(target, div, anchor);
34788				append(div, button);
34789				append(button, t);
34790			},
34791			p(ctx, dirty) {
34792				if (dirty[0] & /*submitting, loading, submitButtonText*/ 2096 && t_value !== (t_value = (/*submitting*/ ctx[11]
34793				? 'Updating...'
34794				: /*loading*/ ctx[5]
34795					? 'Loading...'
34796					: /*submitButtonText*/ ctx[4]) + "")) set_data(t, t_value);
34797
34798				if (dirty[0] & /*loading, submitting, hasChanges*/ 3104 && button_disabled_value !== (button_disabled_value = /*loading*/ ctx[5] || /*submitting*/ ctx[11] || !/*hasChanges*/ ctx[10])) {
34799					button.disabled = button_disabled_value;
34800				}
34801			},
34802			d(detaching) {
34803				if (detaching) {
34804					detach(div);
34805				}
34806			}
34807		};
34808	}
34809
34810	function create_fragment$5(ctx) {
34811		let div;
34812		let t0;
34813		let t1;
34814		let if_block0 = /*formTitle*/ ctx[2] && create_if_block_6$1(ctx);
34815		let if_block1 = /*formDescription*/ ctx[3] && create_if_block_5$1(ctx);
34816
34817		function select_block_type(ctx, dirty) {
34818			if (/*loading*/ ctx[5]) return create_if_block$3;
34819			if (/*customFields*/ ctx[0] && /*customFields*/ ctx[0].length > 0) return create_if_block_1$3;
34820		}
34821
34822		let current_block_type = select_block_type(ctx);
34823		let if_block2 = current_block_type && current_block_type(ctx);
34824
34825		return {
34826			c() {
34827				div = element("div");
34828				if (if_block0) if_block0.c();
34829				t0 = space();
34830				if (if_block1) if_block1.c();
34831				t1 = space();
34832				if (if_block2) if_block2.c();
34833				attr(div, "class", "subscription-custom-fields-container svelte-uox0m2");
34834			},
34835			m(target, anchor) {
34836				insert(target, div, anchor);
34837				if (if_block0) if_block0.m(div, null);
34838				append(div, t0);
34839				if (if_block1) if_block1.m(div, null);
34840				append(div, t1);
34841				if (if_block2) if_block2.m(div, null);
34842			},
34843			p(ctx, dirty) {
34844				if (/*formTitle*/ ctx[2]) {
34845					if (if_block0) {
34846						if_block0.p(ctx, dirty);
34847					} else {
34848						if_block0 = create_if_block_6$1(ctx);
34849						if_block0.c();
34850						if_block0.m(div, t0);
34851					}
34852				} else if (if_block0) {
34853					if_block0.d(1);
34854					if_block0 = null;
34855				}
34856
34857				if (/*formDescription*/ ctx[3]) {
34858					if (if_block1) {
34859						if_block1.p(ctx, dirty);
34860					} else {
34861						if_block1 = create_if_block_5$1(ctx);
34862						if_block1.c();
34863						if_block1.m(div, t1);
34864					}
34865				} else if (if_block1) {
34866					if_block1.d(1);
34867					if_block1 = null;
34868				}
34869
34870				if (current_block_type === (current_block_type = select_block_type(ctx)) && if_block2) {
34871					if_block2.p(ctx, dirty);
34872				} else {
34873					if (if_block2) if_block2.d(1);
34874					if_block2 = current_block_type && current_block_type(ctx);
34875
34876					if (if_block2) {
34877						if_block2.c();
34878						if_block2.m(div, null);
34879					}
34880				}
34881			},
34882			i: noop,
34883			o: noop,
34884			d(detaching) {
34885				if (detaching) {
34886					detach(div);
34887				}
34888
34889				if (if_block0) if_block0.d();
34890				if (if_block1) if_block1.d();
34891
34892				if (if_block2) {
34893					if_block2.d();
34894				}
34895			}
34896		};
34897	}
34898
34899	function instance$5($$self, $$props, $$invalidate) {
34900		let hasChanges;
34901		let changedFields;
34902		let fieldGroups;
34903		let activeFieldGroups;
34904		let { customFields } = $$props;
34905		let { editableFieldNames } = $$props;
34906		let { formTitle } = $$props;
34907		let { formDescription } = $$props;
34908		let { submitButtonText } = $$props;
34909		let { onUpdateCustomFields } = $$props;
34910		let { loading = false } = $$props;
34911
34912		// New props for API call states
34913		let submitting = false;
34914
34915		let successMessage = '';
34916		let errorMessage = '';
34917		let fieldValues = {};
34918		let originalFieldValues = {}; // Track original values to detect changes
34919
34920		// Custom validation function that only validates sections with changes
34921		const validateChangedSections = () => {
34922			// Custom fields don't have validation requirements
34923			return [];
34924		};
34925
34926		// Initialize/reset form values when component mounts or custom fields change
34927		let lastCustomFieldsLength = 0;
34928
34929		// eslint-disable-next-line no-inner-declarations
34930		function initializeFormValues() {
34931			// Reset/initialize field values to original values
34932			$$invalidate(8, fieldValues = {});
34933
34934			$$invalidate(16, originalFieldValues = {});
34935
34936			customFields.forEach(field => {
34937				const originalValue = field.value || '';
34938				$$invalidate(8, fieldValues[field.name] = originalValue, fieldValues);
34939				$$invalidate(16, originalFieldValues[field.name] = originalValue, originalFieldValues);
34940			});
34941
34942			// Clear any messages and states
34943			$$invalidate(6, successMessage = '');
34944
34945			$$invalidate(7, errorMessage = '');
34946			$$invalidate(11, submitting = false);
34947		}
34948
34949		// Check if a field is editable
34950		const isFieldEditable = fieldName => {
34951			return editableFieldNames.includes(fieldName);
34952		};
34953
34954		const handleSubmit = async () => {
34955			// Validate only the sections that have changes
34956			const validationErrors = validateChangedSections();
34957
34958			if (validationErrors.length > 0) {
34959				$$invalidate(7, errorMessage = validationErrors.join(', '));
34960				return;
34961			}
34962
34963			$$invalidate(11, submitting = true);
34964			$$invalidate(6, successMessage = '');
34965			$$invalidate(7, errorMessage = '');
34966
34967			try {
34968				// Only send the fields that have actually changed
34969				const changedFieldValues = {};
34970
34971				changedFields.forEach(fieldName => {
34972					changedFieldValues[fieldName] = fieldValues[fieldName];
34973				});
34974
34975				await onUpdateCustomFields(changedFieldValues);
34976				$$invalidate(6, successMessage = 'Successfully updated subscription details!');
34977
34978				// Clear all input boxes after successful update
34979				Object.keys(fieldValues).forEach(fieldName => {
34980					$$invalidate(8, fieldValues[fieldName] = '', fieldValues);
34981					$$invalidate(16, originalFieldValues[fieldName] = '', originalFieldValues);
34982				});
34983
34984				// Clear success message after 5 seconds
34985				setTimeout(
34986					() => {
34987						$$invalidate(6, successMessage = '');
34988					},
34989					5000
34990				);
34991			} catch(error) {
34992				$$invalidate(7, errorMessage = error.message || 'Failed to update subscription details. Please try again.');
34993			} finally {
34994				$$invalidate(11, submitting = false);
34995			}
34996		};
34997
34998		const handleFieldChange = (fieldName, value) => {
34999			$$invalidate(8, fieldValues[fieldName] = value, fieldValues);
35000		};
35001
35002		const handleInputEvent = (fieldName, event) => {
35003			handleFieldChange(fieldName, event.target.value);
35004		};
35005
35006		const addressFieldNames = [
35007			'DeliveryAddressLine1__c',
35008			'DeliveryAddressLine2__c',
35009			'DeliveryCity__c',
35010			'DeliveryPostcode__c',
35011			'DeliveryZipcode__c',
35012			'DeliveryState__c',
35013			'DeliveryCountry__c'
35014		];
35015
35016		addressFieldNames.some(name => isFieldEditable(name));
35017		addressFieldNames.some(name => fieldValues[name]);
35018		const input_handler = (field, e) => handleInputEvent(field.name, e);
35019
35020		$$self.$$set = $$props => {
35021			if ('customFields' in $$props) $$invalidate(0, customFields = $$props.customFields);
35022			if ('editableFieldNames' in $$props) $$invalidate(1, editableFieldNames = $$props.editableFieldNames);
35023			if ('formTitle' in $$props) $$invalidate(2, formTitle = $$props.formTitle);
35024			if ('formDescription' in $$props) $$invalidate(3, formDescription = $$props.formDescription);
35025			if ('submitButtonText' in $$props) $$invalidate(4, submitButtonText = $$props.submitButtonText);
35026			if ('onUpdateCustomFields' in $$props) $$invalidate(15, onUpdateCustomFields = $$props.onUpdateCustomFields);
35027			if ('loading' in $$props) $$invalidate(5, loading = $$props.loading);
35028		};
35029
35030		$$self.$$.update = () => {
35031			if ($$self.$$.dirty[0] & /*fieldValues, originalFieldValues*/ 65792) {
35032				// Check if any field values have been modified
35033				$$invalidate(10, hasChanges = Object.keys(fieldValues).some(key => {
35034					const current = fieldValues[key];
35035					const original = originalFieldValues[key];
35036
35037					// Handle array values (multiselect)
35038					if (Array.isArray(current) && Array.isArray(original)) {
35039						return JSON.stringify(current.sort()) !== JSON.stringify(original.sort());
35040					}
35041
35042					// Handle regular values
35043					return current !== original;
35044				}));
35045			}
35046
35047			if ($$self.$$.dirty[0] & /*fieldValues, originalFieldValues*/ 65792) {
35048				// Get the fields that have been changed (and thus the sections that should be validated)
35049				$$invalidate(19, changedFields = Object.keys(fieldValues).filter(key => {
35050					const current = fieldValues[key];
35051					const original = originalFieldValues[key];
35052
35053					// Handle array values (multiselect)
35054					if (Array.isArray(current) && Array.isArray(original)) {
35055						return JSON.stringify(current.sort()) !== JSON.stringify(original.sort());
35056					}
35057
35058					// Handle regular values
35059					return current !== original;
35060				}));
35061			}
35062
35063			if ($$self.$$.dirty[0] & /*customFields*/ 1) {
35064				// Group fields by category - include all fields for display
35065				$$invalidate(18, fieldGroups = { all: { fields: customFields || [] } });
35066			}
35067
35068			if ($$self.$$.dirty[0] & /*fieldGroups*/ 262144) {
35069				// Get only field groups that have fields
35070				$$invalidate(9, activeFieldGroups = Object.entries(fieldGroups).filter(([_key, group]) => group.fields.length > 0));
35071			}
35072
35073			if ($$self.$$.dirty[0] & /*activeFieldGroups, changedFields*/ 524800) {
35074				// Get the sections that have changes and need validation
35075				activeFieldGroups.filter(([_groupKey, group]) => {
35076					return group.fields.some(field => changedFields.includes(field.name));
35077				});
35078			}
35079
35080			if ($$self.$$.dirty[0] & /*hasChanges, successMessage, errorMessage*/ 1216) {
35081				// Clear messages when user starts making changes
35082				if (hasChanges && (successMessage || errorMessage)) {
35083					$$invalidate(6, successMessage = '');
35084					$$invalidate(7, errorMessage = '');
35085				}
35086			}
35087
35088			if ($$self.$$.dirty[0] & /*customFields, lastCustomFieldsLength*/ 131073) {
35089				if (customFields && customFields.length !== lastCustomFieldsLength) {
35090					initializeFormValues();
35091					$$invalidate(17, lastCustomFieldsLength = customFields.length);
35092				}
35093			}
35094		};
35095
35096		return [
35097			customFields,
35098			editableFieldNames,
35099			formTitle,
35100			formDescription,
35101			submitButtonText,
35102			loading,
35103			successMessage,
35104			errorMessage,
35105			fieldValues,
35106			activeFieldGroups,
35107			hasChanges,
35108			submitting,
35109			isFieldEditable,
35110			handleSubmit,
35111			handleInputEvent,
35112			onUpdateCustomFields,
35113			originalFieldValues,
35114			lastCustomFieldsLength,
35115			fieldGroups,
35116			changedFields,
35117			input_handler
35118		];
35119	}
35120
35121	class SubscriptionCustomFieldsList extends SvelteComponent {
35122		constructor(options) {
35123			super();
35124
35125			init(
35126				this,
35127				options,
35128				instance$5,
35129				create_fragment$5,
35130				safe_not_equal,
35131				{
35132					customFields: 0,
35133					editableFieldNames: 1,
35134					formTitle: 2,
35135					formDescription: 3,
35136					submitButtonText: 4,
35137					onUpdateCustomFields: 15,
35138					loading: 5
35139				},
35140				null,
35141				[-1, -1]
35142			);
35143		}
35144	}
35145
35146	const subscriptionCustomFieldsListFactory = {
35147	    matches: (sectionElement) => sectionElement.type === elementTypes.SUBSCRIPTION_CUSTOM_FIELDS_LIST,
35148	    create: (form, formState, formActions, elementConfig) => {
35149	        // Get the selected subscription's custom fields data
35150	        const selectedSubscription = formState.selectedSubscription || formState.existingSubscriptions?.[0];
35151	        // Create custom fields array from field definitions and subscription data
35152	        // Include all field definitions so both read-only and editable fields are available
35153	        const customFields = (elementConfig.customFieldDefinitions || []).map(fieldDef => ({
35154	            ...fieldDef,
35155	            value: selectedSubscription?.[fieldDef.name] || ''
35156	        }));
35157	        return {
35158	            component: SubscriptionCustomFieldsList,
35159	            props: {
35160	                customFields,
35161	                editableFieldNames: elementConfig.enabledCustomFields || [],
35162	                formTitle: elementConfig.formTitle || 'Update Subscription Details',
35163	                formDescription: elementConfig.formDescription || 'Update your subscription information below',
35164	                submitButtonText: elementConfig.submitButtonText || 'Update Details',
35165	                loading: formState.loadingSubscriptionCustomFields || false,
35166	                onBack: () => {
35167	                    // Navigate back to the main subscription list
35168	                    formActions.jumpToPartStart(partTypes.LIST_SUBSCRIPTIONS.type);
35169	                },
35170	                onUpdateCustomFields: async (fieldValues) => {
35171	                    // Check if we have a selected subscription with ID
35172	                    if (!selectedSubscription?.externalId) {
35173	                        throw new Error('No subscription selected for update');
35174	                    }
35175	                    // Check if we have accountId for ownership verification
35176	                    if (!selectedSubscription?.accountId) {
35177	                        throw new Error('Subscription account information is missing. Please try again.');
35178	                    }
35179	                    const subscriptionId = selectedSubscription.externalId;
35180	                    const accountId = selectedSubscription.accountId;
35181	                    // Set loading state
35182	                    formActions.updateFormState({
35183	                        loadingSubscriptionCustomFields: true
35184	                    });
35185	                    // Handle preview mode with mock API response
35186	                    if (form.environment?.previewMode) {
35187	                        // Simulate API delay
35188	                        await new Promise(resolve => setTimeout(resolve, 1000));
35189	                        // Update form state with the new values
35190	                        formActions.updateFormState({
35191	                            selectedSubscription: {
35192	                                ...selectedSubscription,
35193	                                ...fieldValues
35194	                            },
35195	                            loadingSubscriptionCustomFields: false
35196	                        });
35197	                        // Return mock success response
35198	                        return { success: true, message: 'Custom fields updated successfully (preview mode)' };
35199	                    }
35200	                    try {
35201	                        // Make real API call to update subscription custom fields
35202	                        const response = await fetch(`/zephr/subscriptions/${subscriptionId}/custom-fields`, {
35203	                            method: 'PATCH',
35204	                            headers: {
35205	                                'Content-Type': 'application/json',
35206	                            },
35207	                            body: JSON.stringify({
35208	                                accountId: accountId, // Required for backend ownership verification
35209	                                customFields: fieldValues
35210	                            })
35211	                        });
35212	                        if (!response.ok) {
35213	                            const errorData = await response.json().catch(() => ({}));
35214	                            throw new Error(errorData.message || `Failed to update subscription: ${response.status} ${response.statusText}`);
35215	                        }
35216	                        const result = await response.json();
35217	                        // Update form state with the new values
35218	                        formActions.updateFormState({
35219	                            selectedSubscription: {
35220	                                ...selectedSubscription,
35221	                                ...fieldValues
35222	                            },
35223	                            loadingSubscriptionCustomFields: false
35224	                        });
35225	                        // Return success - the component will handle showing success message
35226	                        return result;
35227	                    }
35228	                    catch (error) {
35229	                        console.error('Error updating subscription custom fields:', error);
35230	                        // Clear loading state on error
35231	                        formActions.updateFormState({
35232	                            loadingSubscriptionCustomFields: false
35233	                        });
35234	                        throw error; // Re-throw so component can handle it
35235	                    }
35236	                }
35237	            }
35238	        };
35239	    }
35240	};
35241
35242	// TODO: This is a temporary list of countries that are accepted by Zuora.
35243	// We need to get this from the Contact metadata endpoint.
35244	const ZUORA_BILLING_COUNTRIES = [
35245	    "Afghanistan",
35246	    "Aland Islands",
35247	    "Albania",
35248	    "Algeria",
35249	    "American Samoa",
35250	    "Andorra",
35251	    "Angola",
35252	    "Anguilla",
35253	    "Antarctica",
35254	    "Antigua And Barbuda",
35255	    "Argentina",
35256	    "Armenia",
35257	    "Aruba",
35258	    "Australia",
35259	    "Austria",
35260	    "Azerbaijan",
35261	    "Bahamas",
35262	    "Bahrain",
35263	    "Bangladesh",
35264	    "Barbados",
35265	    "Belarus",
35266	    "Belgium",
35267	    "Belize",
35268	    "Benin",
35269	    "Bermuda",
35270	    "Bhutan",
35271	    "Bolivia",
35272	    "Bonaire, Saint Eustatius and Saba",
35273	    "Bosnia and Herzegovina",
35274	    "Botswana",
35275	    "Bouvet Island",
35276	    "Brazil",
35277	    "British Indian Ocean Territory",
35278	    "Brunei Darussalam",
35279	    "Bulgaria",
35280	    "Burkina Faso",
35281	    "Burundi",
35282	    "Cambodia",
35283	    "Cameroon",
35284	    "Canada",
35285	    "Cape Verde",
35286	    "Cayman Islands",
35287	    "Central African Republic",
35288	    "Chad",
35289	    "Chile",
35290	    "China",
35291	    "Christmas Island",
35292	    "Cocos (Keeling) Islands",
35293	    "Colombia",
35294	    "Comoros",
35295	    "Congo",
35296	    "Congo, the Democratic Republic of the",
35297	    "Cook Islands",
35298	    "Costa Rica",
35299	    "Cote d'Ivoire",
35300	    "Croatia",
35301	    "Cuba",
35302	    "Curacao",
35303	    "Cyprus",
35304	    "Czech Republic",
35305	    "Denmark",
35306	    "Djibouti",
35307	    "Dominica",
35308	    "Dominican Republic",
35309	    "Ecuador",
35310	    "Egypt",
35311	    "El Salvador",
35312	    "Equatorial Guinea",
35313	    "Eritrea",
35314	    "Estonia",
35315	    "Ethiopia",
35316	    "Falkland Islands (Malvinas)",
35317	    "Faroe Islands",
35318	    "Fiji",
35319	    "Finland",
35320	    "France",
35321	    "French Guiana",
35322	    "French Polynesia",
35323	    "French Southern Territories",
35324	    "Gabon",
35325	    "Gambia",
35326	    "Georgia",
35327	    "Germany",
35328	    "Ghana",
35329	    "Gibraltar",
35330	    "Greece",
35331	    "Greenland",
35332	    "Grenada",
35333	    "Guadeloupe",
35334	    "Guam",
35335	    "Guatemala",
35336	    "Guernsey",
35337	    "Guinea",
35338	    "Guinea-Bissau",
35339	    "Guyana",
35340	    "Haiti",
35341	    "Heard Island and McDonald Islands",
35342	    "Holy See (Vatican City State)",
35343	    "Honduras",
35344	    "Hong Kong",
35345	    "Hungary",
35346	    "Iceland",
35347	    "India",
35348	    "Indonesia",
35349	    "Iran, Islamic Republic of",
35350	    "Iraq",
35351	    "Ireland",
35352	    "Isle of Man",
35353	    "Israel",
35354	    "Italy",
35355	    "Jamaica",
35356	    "Japan",
35357	    "Jersey",
35358	    "Jordan",
35359	    "Kazakhstan",
35360	    "Kenya",
35361	    "Kiribati",
35362	    "Korea, Democratic People's Republic of",
35363	    "Korea, Republic of",
35364	    "Kosovo",
35365	    "Kuwait",
35366	    "Kyrgyzstan",
35367	    "Lao People's Democratic Republic",
35368	    "Latvia",
35369	    "Lebanon",
35370	    "Lesotho",
35371	    "Liberia",
35372	    "Libyan Arab Jamahiriya",
35373	    "Liechtenstein",
35374	    "Lithuania",
35375	    "Luxembourg",
35376	    "Macao",
35377	    "Macedonia, the former Yugoslav Republic of",
35378	    "Madagascar",
35379	    "Malawi",
35380	    "Malaysia",
35381	    "Maldives",
35382	    "Mali",
35383	    "Malta",
35384	    "Marshall Islands",
35385	    "Martinique",
35386	    "Mauritania",
35387	    "Mauritius",
35388	    "Mayotte",
35389	    "Mexico",
35390	    "Micronesia, Federated States of",
35391	    "Moldova, Republic of",
35392	    "Monaco",
35393	    "Mongolia",
35394	    "Montenegro",
35395	    "Montserrat",
35396	    "Morocco",
35397	    "Mozambique",
35398	    "Myanmar",
35399	    "Namibia",
35400	    "Nauru",
35401	    "Nepal",
35402	    "Netherlands",
35403	    "Netherlands Antilles",
35404	    "New Caledonia",
35405	    "New Zealand",
35406	    "Nicaragua",
35407	    "Niger",
35408	    "Nigeria",
35409	    "Niue",
35410	    "Norfolk Island",
35411	    "Northern Mariana Islands",
35412	    "Norway",
35413	    "Oman",
35414	    "Pakistan",
35415	    "Palau",
35416	    "Palestinian Territory, Occupied",
35417	    "Panama",
35418	    "Papua New Guinea",
35419	    "Paraguay",
35420	    "Peru",
35421	    "Philippines",
35422	    "Pitcairn",
35423	    "Poland",
35424	    "Portugal",
35425	    "Puerto Rico",
35426	    "Qatar",
35427	    "Reunion",
35428	    "Romania",
35429	    "Russian Federation",
35430	    "Rwanda",
35431	    "Saint Barthelemy",
35432	    "Saint Helena",
35433	    "Saint Kitts and Nevis",
35434	    "Saint Lucia",
35435	    "Saint Martin (French part)",
35436	    "Saint Pierre and Miquelon",
35437	    "Saint Vincent and the Grenadines",
35438	    "Samoa",
35439	    "San Marino",
35440	    "Sao Tome and Principe",
35441	    "Saudi Arabia",
35442	    "Senegal",
35443	    "Serbia",
35444	    "Seychelles",
35445	    "Sierra Leone",
35446	    "Singapore",
35447	    "Sint Maarten",
35448	    "Slovakia",
35449	    "Slovenia",
35450	    "Solomon Islands",
35451	    "Somalia",
35452	    "South Africa",
35453	    "South Georgia and the South Sandwich Islands",
35454	    "South Sudan",
35455	    "Spain",
35456	    "Sri Lanka",
35457	    "Sudan",
35458	    "Suriname",
35459	    "Svalbard and Jan Mayen",
35460	    "Swaziland",
35461	    "Sweden",
35462	    "Switzerland",
35463	    "Syrian Arab Republic",
35464	    "Taiwan",
35465	    "Tajikistan",
35466	    "Tanzania, United Republic of",
35467	    "Thailand",
35468	    "Timor-Leste",
35469	    "Togo",
35470	    "Tokelau",
35471	    "Tonga",
35472	    "Trinidad and Tobago",
35473	    "Tunisia",
35474	    "Turkey",
35475	    "Turkmenistan",
35476	    "Turks and Caicos Islands",
35477	    "Tuvalu",
35478	    "Uganda",
35479	    "Ukraine",
35480	    "United Arab Emirates",
35481	    "United Kingdom",
35482	    "United States",
35483	    "United States Minor Outlying Islands",
35484	    "Uruguay",
35485	    "Uzbekistan",
35486	    "Vanuatu",
35487	    "Venezuela",
35488	    "Viet Nam",
35489	    "Virgin Islands, British",
35490	    "Virgin Islands, U.S.",
35491	    "Wallis and Futuna",
35492	    "Western Sahara",
35493	    "Yemen",
35494	    "Zambia",
35495	    "Zimbabwe"
35496	];
35497
35498	/* src/components/elements/billToContact/BillToContact.svelte generated by Svelte v4.2.12 */
35499
35500	function get_each_context$1(ctx, list, i) {
35501		const child_ctx = ctx.slice();
35502		child_ctx[17] = list[i];
35503		return child_ctx;
35504	}
35505
35506	// (63:6) {#each ZUORA_BILLING_COUNTRIES as country}
35507	function create_each_block$1(ctx) {
35508		let option;
35509		let t0;
35510		let t1;
35511		let option_selected_value;
35512
35513		return {
35514			c() {
35515				option = element("option");
35516				t0 = text(/*country*/ ctx[17]);
35517				t1 = space();
35518				option.__value = /*country*/ ctx[17];
35519				set_input_value(option, option.__value);
35520				option.selected = option_selected_value = /*billToContact*/ ctx[0].country === /*country*/ ctx[17];
35521			},
35522			m(target, anchor) {
35523				insert(target, option, anchor);
35524				append(option, t0);
35525				append(option, t1);
35526			},
35527			p(ctx, dirty) {
35528				if (dirty & /*billToContact*/ 1 && option_selected_value !== (option_selected_value = /*billToContact*/ ctx[0].country === /*country*/ ctx[17])) {
35529					option.selected = option_selected_value;
35530				}
35531			},
35532			d(detaching) {
35533				if (detaching) {
35534					detach(option);
35535				}
35536			}
35537		};
35538	}
35539
35540	// (83:4) {#if errors["address1"]}
35541	function create_if_block_6(ctx) {
35542		let div;
35543		let t_value = /*errors*/ ctx[1]["address1"] + "";
35544		let t;
35545
35546		return {
35547			c() {
35548				div = element("div");
35549				t = text(t_value);
35550				attr(div, "class", "error-text svelte-z564ap");
35551			},
35552			m(target, anchor) {
35553				insert(target, div, anchor);
35554				append(div, t);
35555			},
35556			p(ctx, dirty) {
35557				if (dirty & /*errors*/ 2 && t_value !== (t_value = /*errors*/ ctx[1]["address1"] + "")) set_data(t, t_value);
35558			},
35559			d(detaching) {
35560				if (detaching) {
35561					detach(div);
35562				}
35563			}
35564		};
35565	}
35566
35567	// (97:4) {#if errors["address2"]}
35568	function create_if_block_5(ctx) {
35569		let div;
35570		let t_value = /*errors*/ ctx[1]["address2"] + "";
35571		let t;
35572
35573		return {
35574			c() {
35575				div = element("div");
35576				t = text(t_value);
35577				attr(div, "class", "error-text svelte-z564ap");
35578			},
35579			m(target, anchor) {
35580				insert(target, div, anchor);
35581				append(div, t);
35582			},
35583			p(ctx, dirty) {
35584				if (dirty & /*errors*/ 2 && t_value !== (t_value = /*errors*/ ctx[1]["address2"] + "")) set_data(t, t_value);
35585			},
35586			d(detaching) {
35587				if (detaching) {
35588					detach(div);
35589				}
35590			}
35591		};
35592	}
35593
35594	// (111:4) {#if errors["city"]}
35595	function create_if_block_4(ctx) {
35596		let div;
35597		let t_value = /*errors*/ ctx[1]["city"] + "";
35598		let t;
35599
35600		return {
35601			c() {
35602				div = element("div");
35603				t = text(t_value);
35604				attr(div, "class", "error-text svelte-z564ap");
35605			},
35606			m(target, anchor) {
35607				insert(target, div, anchor);
35608				append(div, t);
35609			},
35610			p(ctx, dirty) {
35611				if (dirty & /*errors*/ 2 && t_value !== (t_value = /*errors*/ ctx[1]["city"] + "")) set_data(t, t_value);
35612			},
35613			d(detaching) {
35614				if (detaching) {
35615					detach(div);
35616				}
35617			}
35618		};
35619	}
35620
35621	// (125:4) {#if errors["state"]}
35622	function create_if_block_3$1(ctx) {
35623		let div;
35624		let t_value = /*errors*/ ctx[1]["state"] + "";
35625		let t;
35626
35627		return {
35628			c() {
35629				div = element("div");
35630				t = text(t_value);
35631				attr(div, "class", "error-text svelte-z564ap");
35632			},
35633			m(target, anchor) {
35634				insert(target, div, anchor);
35635				append(div, t);
35636			},
35637			p(ctx, dirty) {
35638				if (dirty & /*errors*/ 2 && t_value !== (t_value = /*errors*/ ctx[1]["state"] + "")) set_data(t, t_value);
35639			},
35640			d(detaching) {
35641				if (detaching) {
35642					detach(div);
35643				}
35644			}
35645		};
35646	}
35647
35648	// (139:4) {#if errors["zipCode"]}
35649	function create_if_block_2$1(ctx) {
35650		let div;
35651		let t_value = /*errors*/ ctx[1]["zipCode"] + "";
35652		let t;
35653
35654		return {
35655			c() {
35656				div = element("div");
35657				t = text(t_value);
35658				attr(div, "class", "error-text svelte-z564ap");
35659			},
35660			m(target, anchor) {
35661				insert(target, div, anchor);
35662				append(div, t);
35663			},
35664			p(ctx, dirty) {
35665				if (dirty & /*errors*/ 2 && t_value !== (t_value = /*errors*/ ctx[1]["zipCode"] + "")) set_data(t, t_value);
35666			},
35667			d(detaching) {
35668				if (detaching) {
35669					detach(div);
35670				}
35671			}
35672		};
35673	}
35674
35675	// (153:4) {#if errors["county"]}
35676	function create_if_block_1$2(ctx) {
35677		let div;
35678		let t_value = /*errors*/ ctx[1]["county"] + "";
35679		let t;
35680
35681		return {
35682			c() {
35683				div = element("div");
35684				t = text(t_value);
35685				attr(div, "class", "error-text svelte-z564ap");
35686			},
35687			m(target, anchor) {
35688				insert(target, div, anchor);
35689				append(div, t);
35690			},
35691			p(ctx, dirty) {
35692				if (dirty & /*errors*/ 2 && t_value !== (t_value = /*errors*/ ctx[1]["county"] + "")) set_data(t, t_value);
35693			},
35694			d(detaching) {
35695				if (detaching) {
35696					detach(div);
35697				}
35698			}
35699		};
35700	}
35701
35702	// (167:4) {#if errors["taxRegion"]}
35703	function create_if_block$2(ctx) {
35704		let div;
35705		let t_value = /*errors*/ ctx[1]["taxRegion"] + "";
35706		let t;
35707
35708		return {
35709			c() {
35710				div = element("div");
35711				t = text(t_value);
35712				attr(div, "class", "error-text svelte-z564ap");
35713			},
35714			m(target, anchor) {
35715				insert(target, div, anchor);
35716				append(div, t);
35717			},
35718			p(ctx, dirty) {
35719				if (dirty & /*errors*/ 2 && t_value !== (t_value = /*errors*/ ctx[1]["taxRegion"] + "")) set_data(t, t_value);
35720			},
35721			d(detaching) {
35722				if (detaching) {
35723					detach(div);
35724				}
35725			}
35726		};
35727	}
35728
35729	function create_fragment$4(ctx) {
35730		let div8;
35731		let div0;
35732		let label0;
35733		let t1;
35734		let select;
35735		let option;
35736		let select_value_value;
35737		let t3;
35738		let div1;
35739		let label1;
35740		let t5;
35741		let input0;
35742		let t6;
35743		let t7;
35744		let div2;
35745		let label2;
35746		let t9;
35747		let input1;
35748		let t10;
35749		let t11;
35750		let div3;
35751		let label3;
35752		let t13;
35753		let input2;
35754		let t14;
35755		let t15;
35756		let div4;
35757		let label4;
35758		let t17;
35759		let input3;
35760		let t18;
35761		let t19;
35762		let div5;
35763		let label5;
35764		let t21;
35765		let input4;
35766		let t22;
35767		let t23;
35768		let div6;
35769		let label6;
35770		let t25;
35771		let input5;
35772		let t26;
35773		let t27;
35774		let div7;
35775		let label7;
35776		let t29;
35777		let input6;
35778		let t30;
35779		let mounted;
35780		let dispose;
35781		let each_value = ensure_array_like(ZUORA_BILLING_COUNTRIES);
35782		let each_blocks = [];
35783
35784		for (let i = 0; i < each_value.length; i += 1) {
35785			each_blocks[i] = create_each_block$1(get_each_context$1(ctx, each_value, i));
35786		}
35787
35788		let if_block0 = /*errors*/ ctx[1]["address1"] && create_if_block_6(ctx);
35789		let if_block1 = /*errors*/ ctx[1]["address2"] && create_if_block_5(ctx);
35790		let if_block2 = /*errors*/ ctx[1]["city"] && create_if_block_4(ctx);
35791		let if_block3 = /*errors*/ ctx[1]["state"] && create_if_block_3$1(ctx);
35792		let if_block4 = /*errors*/ ctx[1]["zipCode"] && create_if_block_2$1(ctx);
35793		let if_block5 = /*errors*/ ctx[1]["county"] && create_if_block_1$2(ctx);
35794		let if_block6 = /*errors*/ ctx[1]["taxRegion"] && create_if_block$2(ctx);
35795
35796		return {
35797			c() {
35798				div8 = element("div");
35799				div0 = element("div");
35800				label0 = element("label");
35801				label0.textContent = "Country";
35802				t1 = space();
35803				select = element("select");
35804				option = element("option");
35805				option.textContent = "Select a Country";
35806
35807				for (let i = 0; i < each_blocks.length; i += 1) {
35808					each_blocks[i].c();
35809				}
35810
35811				t3 = space();
35812				div1 = element("div");
35813				label1 = element("label");
35814				label1.textContent = "Address 1";
35815				t5 = space();
35816				input0 = element("input");
35817				t6 = space();
35818				if (if_block0) if_block0.c();
35819				t7 = space();
35820				div2 = element("div");
35821				label2 = element("label");
35822				label2.textContent = "Address 2";
35823				t9 = space();
35824				input1 = element("input");
35825				t10 = space();
35826				if (if_block1) if_block1.c();
35827				t11 = space();
35828				div3 = element("div");
35829				label3 = element("label");
35830				label3.textContent = "City";
35831				t13 = space();
35832				input2 = element("input");
35833				t14 = space();
35834				if (if_block2) if_block2.c();
35835				t15 = space();
35836				div4 = element("div");
35837				label4 = element("label");
35838				label4.textContent = "State/Province";
35839				t17 = space();
35840				input3 = element("input");
35841				t18 = space();
35842				if (if_block3) if_block3.c();
35843				t19 = space();
35844				div5 = element("div");
35845				label5 = element("label");
35846				label5.textContent = "Postal Code";
35847				t21 = space();
35848				input4 = element("input");
35849				t22 = space();
35850				if (if_block4) if_block4.c();
35851				t23 = space();
35852				div6 = element("div");
35853				label6 = element("label");
35854				label6.textContent = "County";
35855				t25 = space();
35856				input5 = element("input");
35857				t26 = space();
35858				if (if_block5) if_block5.c();
35859				t27 = space();
35860				div7 = element("div");
35861				label7 = element("label");
35862				label7.textContent = "Tax Region";
35863				t29 = space();
35864				input6 = element("input");
35865				t30 = space();
35866				if (if_block6) if_block6.c();
35867				attr(label0, "for", "address1");
35868				attr(label0, "class", "svelte-z564ap");
35869				option.disabled = true;
35870				option.__value = "";
35871				set_input_value(option, option.__value);
35872				attr(select, "name", "country");
35873				attr(select, "class", "zephr-form-input zephr-form-input-select svelte-z564ap");
35874				toggle_class(select, "unselected", !/*billToContact*/ ctx[0].country);
35875				attr(div0, "class", "field svelte-z564ap");
35876				attr(label1, "for", "address1");
35877				attr(label1, "class", "svelte-z564ap");
35878				attr(input0, "id", "address1");
35879				attr(input0, "type", "text");
35880				input0.required = true;
35881				attr(input0, "class", "svelte-z564ap");
35882				toggle_class(input0, "error", !!/*errors*/ ctx[1]["address1"]);
35883				attr(div1, "class", "field svelte-z564ap");
35884				attr(label2, "for", "address2");
35885				attr(label2, "class", "svelte-z564ap");
35886				attr(input1, "id", "address2");
35887				attr(input1, "type", "text");
35888				input1.required = true;
35889				attr(input1, "class", "svelte-z564ap");
35890				toggle_class(input1, "error", !!/*errors*/ ctx[1]["address2"]);
35891				attr(div2, "class", "field svelte-z564ap");
35892				attr(label3, "for", "city");
35893				attr(label3, "class", "svelte-z564ap");
35894				attr(input2, "id", "city");
35895				attr(input2, "type", "text");
35896				input2.required = true;
35897				attr(input2, "class", "svelte-z564ap");
35898				toggle_class(input2, "error", !!/*errors*/ ctx[1]["city"]);
35899				attr(div3, "class", "field svelte-z564ap");
35900				attr(label4, "for", "state");
35901				attr(label4, "class", "svelte-z564ap");
35902				attr(input3, "id", "state");
35903				attr(input3, "type", "text");
35904				input3.required = true;
35905				attr(input3, "class", "svelte-z564ap");
35906				toggle_class(input3, "error", !!/*errors*/ ctx[1]["state"]);
35907				attr(div4, "class", "field svelte-z564ap");
35908				attr(label5, "for", "zipCode");
35909				attr(label5, "class", "svelte-z564ap");
35910				attr(input4, "id", "zipCode");
35911				attr(input4, "type", "text");
35912				input4.required = true;
35913				attr(input4, "class", "svelte-z564ap");
35914				toggle_class(input4, "error", !!/*errors*/ ctx[1]["zipCode"]);
35915				attr(div5, "class", "field svelte-z564ap");
35916				attr(label6, "for", "county");
35917				attr(label6, "class", "svelte-z564ap");
35918				attr(input5, "id", "county");
35919				attr(input5, "type", "text");
35920				input5.required = true;
35921				attr(input5, "class", "svelte-z564ap");
35922				toggle_class(input5, "error", !!/*errors*/ ctx[1]["county"]);
35923				attr(div6, "class", "field svelte-z564ap");
35924				attr(label7, "for", "taxRegion");
35925				attr(label7, "class", "svelte-z564ap");
35926				attr(input6, "id", "taxRegion");
35927				attr(input6, "type", "text");
35928				input6.required = true;
35929				attr(input6, "class", "svelte-z564ap");
35930				toggle_class(input6, "error", !!/*errors*/ ctx[1]["taxRegion"]);
35931				attr(div7, "class", "field svelte-z564ap");
35932				attr(div8, "class", "bill-to-contact-section svelte-z564ap");
35933			},
35934			m(target, anchor) {
35935				insert(target, div8, anchor);
35936				append(div8, div0);
35937				append(div0, label0);
35938				append(div0, t1);
35939				append(div0, select);
35940				append(select, option);
35941
35942				for (let i = 0; i < each_blocks.length; i += 1) {
35943					if (each_blocks[i]) {
35944						each_blocks[i].m(select, null);
35945					}
35946				}
35947
35948				select_option(select, /*billToContact*/ ctx[0].country ?? "");
35949				append(div8, t3);
35950				append(div8, div1);
35951				append(div1, label1);
35952				append(div1, t5);
35953				append(div1, input0);
35954				set_input_value(input0, /*billToContact*/ ctx[0].address1);
35955				append(div1, t6);
35956				if (if_block0) if_block0.m(div1, null);
35957				append(div8, t7);
35958				append(div8, div2);
35959				append(div2, label2);
35960				append(div2, t9);
35961				append(div2, input1);
35962				set_input_value(input1, /*billToContact*/ ctx[0].address2);
35963				append(div2, t10);
35964				if (if_block1) if_block1.m(div2, null);
35965				append(div8, t11);
35966				append(div8, div3);
35967				append(div3, label3);
35968				append(div3, t13);
35969				append(div3, input2);
35970				set_input_value(input2, /*billToContact*/ ctx[0].city);
35971				append(div3, t14);
35972				if (if_block2) if_block2.m(div3, null);
35973				append(div8, t15);
35974				append(div8, div4);
35975				append(div4, label4);
35976				append(div4, t17);
35977				append(div4, input3);
35978				set_input_value(input3, /*billToContact*/ ctx[0].state);
35979				append(div4, t18);
35980				if (if_block3) if_block3.m(div4, null);
35981				append(div8, t19);
35982				append(div8, div5);
35983				append(div5, label5);
35984				append(div5, t21);
35985				append(div5, input4);
35986				set_input_value(input4, /*billToContact*/ ctx[0].zipCode);
35987				append(div5, t22);
35988				if (if_block4) if_block4.m(div5, null);
35989				append(div8, t23);
35990				append(div8, div6);
35991				append(div6, label6);
35992				append(div6, t25);
35993				append(div6, input5);
35994				set_input_value(input5, /*billToContact*/ ctx[0].county);
35995				append(div6, t26);
35996				if (if_block5) if_block5.m(div6, null);
35997				append(div8, t27);
35998				append(div8, div7);
35999				append(div7, label7);
36000				append(div7, t29);
36001				append(div7, input6);
36002				set_input_value(input6, /*billToContact*/ ctx[0].taxRegion);
36003				append(div7, t30);
36004				if (if_block6) if_block6.m(div7, null);
36005
36006				if (!mounted) {
36007					dispose = [
36008						listen(select, "change", /*onCountrySelect*/ ctx[3]),
36009						listen(input0, "input", /*input0_input_handler*/ ctx[6]),
36010						listen(input0, "input", /*updateSuspendResumeSubscription*/ ctx[2]),
36011						listen(input1, "input", /*input1_input_handler*/ ctx[7]),
36012						listen(input1, "input", /*updateSuspendResumeSubscription*/ ctx[2]),
36013						listen(input2, "input", /*input2_input_handler*/ ctx[8]),
36014						listen(input2, "input", /*updateSuspendResumeSubscription*/ ctx[2]),
36015						listen(input3, "input", /*input3_input_handler*/ ctx[9]),
36016						listen(input3, "input", /*updateSuspendResumeSubscription*/ ctx[2]),
36017						listen(input4, "input", /*input4_input_handler*/ ctx[10]),
36018						listen(input4, "input", /*updateSuspendResumeSubscription*/ ctx[2]),
36019						listen(input5, "input", /*input5_input_handler*/ ctx[11]),
36020						listen(input5, "input", /*updateSuspendResumeSubscription*/ ctx[2]),
36021						listen(input6, "input", /*input6_input_handler*/ ctx[12]),
36022						listen(input6, "input", /*updateSuspendResumeSubscription*/ ctx[2])
36023					];
36024
36025					mounted = true;
36026				}
36027			},
36028			p(ctx, [dirty]) {
36029				if (dirty & /*billToContact*/ 1) {
36030					each_value = ensure_array_like(ZUORA_BILLING_COUNTRIES);
36031					let i;
36032
36033					for (i = 0; i < each_value.length; i += 1) {
36034						const child_ctx = get_each_context$1(ctx, each_value, i);
36035
36036						if (each_blocks[i]) {
36037							each_blocks[i].p(child_ctx, dirty);
36038						} else {
36039							each_blocks[i] = create_each_block$1(child_ctx);
36040							each_blocks[i].c();
36041							each_blocks[i].m(select, null);
36042						}
36043					}
36044
36045					for (; i < each_blocks.length; i += 1) {
36046						each_blocks[i].d(1);
36047					}
36048
36049					each_blocks.length = each_value.length;
36050				}
36051
36052				if (dirty & /*billToContact*/ 1 && select_value_value !== (select_value_value = /*billToContact*/ ctx[0].country ?? "")) {
36053					select_option(select, /*billToContact*/ ctx[0].country ?? "");
36054				}
36055
36056				if (dirty & /*billToContact*/ 1) {
36057					toggle_class(select, "unselected", !/*billToContact*/ ctx[0].country);
36058				}
36059
36060				if (dirty & /*billToContact*/ 1 && input0.value !== /*billToContact*/ ctx[0].address1) {
36061					set_input_value(input0, /*billToContact*/ ctx[0].address1);
36062				}
36063
36064				if (dirty & /*errors*/ 2) {
36065					toggle_class(input0, "error", !!/*errors*/ ctx[1]["address1"]);
36066				}
36067
36068				if (/*errors*/ ctx[1]["address1"]) {
36069					if (if_block0) {
36070						if_block0.p(ctx, dirty);
36071					} else {
36072						if_block0 = create_if_block_6(ctx);
36073						if_block0.c();
36074						if_block0.m(div1, null);
36075					}
36076				} else if (if_block0) {
36077					if_block0.d(1);
36078					if_block0 = null;
36079				}
36080
36081				if (dirty & /*billToContact*/ 1 && input1.value !== /*billToContact*/ ctx[0].address2) {
36082					set_input_value(input1, /*billToContact*/ ctx[0].address2);
36083				}
36084
36085				if (dirty & /*errors*/ 2) {
36086					toggle_class(input1, "error", !!/*errors*/ ctx[1]["address2"]);
36087				}
36088
36089				if (/*errors*/ ctx[1]["address2"]) {
36090					if (if_block1) {
36091						if_block1.p(ctx, dirty);
36092					} else {
36093						if_block1 = create_if_block_5(ctx);
36094						if_block1.c();
36095						if_block1.m(div2, null);
36096					}
36097				} else if (if_block1) {
36098					if_block1.d(1);
36099					if_block1 = null;
36100				}
36101
36102				if (dirty & /*billToContact*/ 1 && input2.value !== /*billToContact*/ ctx[0].city) {
36103					set_input_value(input2, /*billToContact*/ ctx[0].city);
36104				}
36105
36106				if (dirty & /*errors*/ 2) {
36107					toggle_class(input2, "error", !!/*errors*/ ctx[1]["city"]);
36108				}
36109
36110				if (/*errors*/ ctx[1]["city"]) {
36111					if (if_block2) {
36112						if_block2.p(ctx, dirty);
36113					} else {
36114						if_block2 = create_if_block_4(ctx);
36115						if_block2.c();
36116						if_block2.m(div3, null);
36117					}
36118				} else if (if_block2) {
36119					if_block2.d(1);
36120					if_block2 = null;
36121				}
36122
36123				if (dirty & /*billToContact*/ 1 && input3.value !== /*billToContact*/ ctx[0].state) {
36124					set_input_value(input3, /*billToContact*/ ctx[0].state);
36125				}
36126
36127				if (dirty & /*errors*/ 2) {
36128					toggle_class(input3, "error", !!/*errors*/ ctx[1]["state"]);
36129				}
36130
36131				if (/*errors*/ ctx[1]["state"]) {
36132					if (if_block3) {
36133						if_block3.p(ctx, dirty);
36134					} else {
36135						if_block3 = create_if_block_3$1(ctx);
36136						if_block3.c();
36137						if_block3.m(div4, null);
36138					}
36139				} else if (if_block3) {
36140					if_block3.d(1);
36141					if_block3 = null;
36142				}
36143
36144				if (dirty & /*billToContact*/ 1 && input4.value !== /*billToContact*/ ctx[0].zipCode) {
36145					set_input_value(input4, /*billToContact*/ ctx[0].zipCode);
36146				}
36147
36148				if (dirty & /*errors*/ 2) {
36149					toggle_class(input4, "error", !!/*errors*/ ctx[1]["zipCode"]);
36150				}
36151
36152				if (/*errors*/ ctx[1]["zipCode"]) {
36153					if (if_block4) {
36154						if_block4.p(ctx, dirty);
36155					} else {
36156						if_block4 = create_if_block_2$1(ctx);
36157						if_block4.c();
36158						if_block4.m(div5, null);
36159					}
36160				} else if (if_block4) {
36161					if_block4.d(1);
36162					if_block4 = null;
36163				}
36164
36165				if (dirty & /*billToContact*/ 1 && input5.value !== /*billToContact*/ ctx[0].county) {
36166					set_input_value(input5, /*billToContact*/ ctx[0].county);
36167				}
36168
36169				if (dirty & /*errors*/ 2) {
36170					toggle_class(input5, "error", !!/*errors*/ ctx[1]["county"]);
36171				}
36172
36173				if (/*errors*/ ctx[1]["county"]) {
36174					if (if_block5) {
36175						if_block5.p(ctx, dirty);
36176					} else {
36177						if_block5 = create_if_block_1$2(ctx);
36178						if_block5.c();
36179						if_block5.m(div6, null);
36180					}
36181				} else if (if_block5) {
36182					if_block5.d(1);
36183					if_block5 = null;
36184				}
36185
36186				if (dirty & /*billToContact*/ 1 && input6.value !== /*billToContact*/ ctx[0].taxRegion) {
36187					set_input_value(input6, /*billToContact*/ ctx[0].taxRegion);
36188				}
36189
36190				if (dirty & /*errors*/ 2) {
36191					toggle_class(input6, "error", !!/*errors*/ ctx[1]["taxRegion"]);
36192				}
36193
36194				if (/*errors*/ ctx[1]["taxRegion"]) {
36195					if (if_block6) {
36196						if_block6.p(ctx, dirty);
36197					} else {
36198						if_block6 = create_if_block$2(ctx);
36199						if_block6.c();
36200						if_block6.m(div7, null);
36201					}
36202				} else if (if_block6) {
36203					if_block6.d(1);
36204					if_block6 = null;
36205				}
36206			},
36207			i: noop,
36208			o: noop,
36209			d(detaching) {
36210				if (detaching) {
36211					detach(div8);
36212				}
36213
36214				destroy_each(each_blocks, detaching);
36215				if (if_block0) if_block0.d();
36216				if (if_block1) if_block1.d();
36217				if (if_block2) if_block2.d();
36218				if (if_block3) if_block3.d();
36219				if (if_block4) if_block4.d();
36220				if (if_block5) if_block5.d();
36221				if (if_block6) if_block6.d();
36222				mounted = false;
36223				run_all(dispose);
36224			}
36225		};
36226	}
36227
36228	function instance$4($$self, $$props, $$invalidate) {
36229		let { formState } = $$props;
36230		let { formActions } = $$props;
36231		const dispatch = createEventDispatcher();
36232		let billToContact = {};
36233		const sourceContact = formState.selectedSubscription?.billToContact || {};
36234
36235		const fieldsToExtract = [
36236			'country',
36237			'address1',
36238			'address2',
36239			'city',
36240			'state',
36241			'zipCode',
36242			'county',
36243			'taxRegion'
36244		];
36245
36246		for (const field of fieldsToExtract) {
36247			if (sourceContact[field] != null) {
36248				billToContact[field] = sourceContact[field];
36249			}
36250		}
36251
36252		let errors = {};
36253
36254		// Update form state when input changes
36255		const updateSuspendResumeSubscription = () => {
36256			formActions.updateFormState({ billToContact });
36257			validateForm();
36258		};
36259
36260		const onCountrySelect = e => {
36261			$$invalidate(0, billToContact.country = e.target.value, billToContact);
36262			updateSuspendResumeSubscription();
36263		};
36264
36265		const validateForm = () => {
36266			// Reset errors
36267			$$invalidate(1, errors = {});
36268
36269			if (!!billToContact.address1 && billToContact.address1.length > 255) {
36270				$$invalidate(1, errors["address1"] = "Address 1 should be 255 characters or less", errors);
36271			}
36272
36273			if (!!billToContact.address2 && billToContact.address2.length > 255) {
36274				$$invalidate(1, errors["address2"] = "Address 2 should be 255 characters or less", errors);
36275			}
36276
36277			if (!!billToContact.city && billToContact.city.length > 40) {
36278				$$invalidate(1, errors["city"] = "City should be 40 characters or less", errors);
36279			}
36280
36281			if (!!billToContact.county && billToContact.county.length > 32) {
36282				$$invalidate(1, errors["county"] = "County should be 32 characters or less", errors);
36283			}
36284
36285			if (!!billToContact.zipCode && billToContact.zipCode.length > 20) {
36286				$$invalidate(1, errors["zipCode"] = "Postal code should be 20 characters or less", errors);
36287			}
36288
36289			// Dispatch event for form validity
36290			const isValid = Object.keys(errors).length === 0;
36291
36292			dispatch("validity", { isValid });
36293		};
36294
36295		function input0_input_handler() {
36296			billToContact.address1 = this.value;
36297			$$invalidate(0, billToContact);
36298		}
36299
36300		function input1_input_handler() {
36301			billToContact.address2 = this.value;
36302			$$invalidate(0, billToContact);
36303		}
36304
36305		function input2_input_handler() {
36306			billToContact.city = this.value;
36307			$$invalidate(0, billToContact);
36308		}
36309
36310		function input3_input_handler() {
36311			billToContact.state = this.value;
36312			$$invalidate(0, billToContact);
36313		}
36314
36315		function input4_input_handler() {
36316			billToContact.zipCode = this.value;
36317			$$invalidate(0, billToContact);
36318		}
36319
36320		function input5_input_handler() {
36321			billToContact.county = this.value;
36322			$$invalidate(0, billToContact);
36323		}
36324
36325		function input6_input_handler() {
36326			billToContact.taxRegion = this.value;
36327			$$invalidate(0, billToContact);
36328		}
36329
36330		$$self.$$set = $$props => {
36331			if ('formState' in $$props) $$invalidate(4, formState = $$props.formState);
36332			if ('formActions' in $$props) $$invalidate(5, formActions = $$props.formActions);
36333		};
36334
36335		return [
36336			billToContact,
36337			errors,
36338			updateSuspendResumeSubscription,
36339			onCountrySelect,
36340			formState,
36341			formActions,
36342			input0_input_handler,
36343			input1_input_handler,
36344			input2_input_handler,
36345			input3_input_handler,
36346			input4_input_handler,
36347			input5_input_handler,
36348			input6_input_handler
36349		];
36350	}
36351
36352	class BillToContact extends SvelteComponent {
36353		constructor(options) {
36354			super();
36355			init(this, options, instance$4, create_fragment$4, safe_not_equal, { formState: 4, formActions: 5 });
36356		}
36357	}
36358
36359	const billToContactFactory = {
36360	    matches: (sectionElement) => sectionElement.type === elementTypes.BILL_TO_CONTACT,
36361	    create: (form, formState, formActions) => {
36362	        return {
36363	            component: BillToContact,
36364	            props: {
36365	                form,
36366	                formState,
36367	                formActions,
36368	            }
36369	        };
36370	    }
36371	};
36372
36373	const factory$1 = {
36374	    matches: (sectionElement) => sectionElement.type === elementTypes.BILLING_COUNTRY,
36375	    create: (form, formState, formActions, elementConfig) => {
36376	        const disabled = elementConfig.disabled || formState.isBusy;
36377	        // Only show for zuora-billing payment provider AND when countryLabel is configured
36378	        if (form.organisationConfiguration.paymentProvider !== 'zuora-billing') {
36379	            return null;
36380	        }
36381	        const paymentConfig = formConfigAs(form);
36382	        // Don't render if countryLabel is not configured in admin console
36383	        if (!paymentConfig.countryLabel) {
36384	            return null;
36385	        }
36386	        const configuredLabel = paymentConfig.countryLabel || elementConfig.label || "Country";
36387	        return ({
36388	            component: BillingCountry,
36389	            props: {
36390	                formKey: form.uniqueKey,
36391	                config: {
36392	                    ...elementConfig,
36393	                    label: configuredLabel
36394	                },
36395	                value: formState.billingCountry || "",
36396	                disabled,
36397	                onChange: (value) => {
36398	                    if (!disabled) {
36399	                        formActions.updateFormState({
36400	                            billingCountry: value,
36401	                            // Clear state when country changes (always clear to avoid US/CA state conflicts)
36402	                            billingState: "",
36403	                            serverErrors: []
36404	                        });
36405	                        logDataLayerEvent(form, 'zephr_form_input_change', {
36406	                            inputName: `zephr-form-billing-country-${form.uniqueKey}`,
36407	                            sectionId: formState.currentSection.type,
36408	                            field: 'billing_country'
36409	                        });
36410	                    }
36411	                },
36412	                onFocus: () => logDataLayerEvent(form, 'zephr_form_input_focus', {
36413	                    inputName: `zephr-form-billing-country-${form.uniqueKey}`,
36414	                    sectionId: formState.currentSection.type,
36415	                    field: 'billing_country'
36416	                }),
36417	                onBlur: () => logDataLayerEvent(form, 'zephr_form_input_blur', {
36418	                    inputName: `zephr-form-billing-country-${form.uniqueKey}`,
36419	                    sectionId: formState.currentSection.type,
36420	                    field: 'billing_country'
36421	                }),
36422	                isPaymentForm: form.formType === FormType.PAYMENT,
36423	            },
36424	            isValid: !elementConfig.required || !!formState.billingCountry
36425	        });
36426	    }
36427	};
36428
36429	const factory = {
36430	    matches: (sectionElement) => sectionElement.type === elementTypes.BILLING_STATE,
36431	    create: (form, formState, formActions, elementConfig) => {
36432	        const disabled = elementConfig.disabled || formState.isBusy;
36433	        // Only show for zuora-billing payment provider AND when stateLabel is configured
36434	        if (form.organisationConfiguration.paymentProvider !== 'zuora-billing') {
36435	            return null;
36436	        }
36437	        const paymentConfig = formConfigAs(form);
36438	        // Don't render if stateLabel is not configured in admin console
36439	        if (!paymentConfig.stateLabel) {
36440	            return null;
36441	        }
36442	        const configuredLabel = paymentConfig.stateLabel || elementConfig.label || "State";
36443	        return ({
36444	            component: BillingState,
36445	            props: {
36446	                formKey: form.uniqueKey,
36447	                config: {
36448	                    ...elementConfig,
36449	                    label: configuredLabel
36450	                },
36451	                value: formState.billingState || "",
36452	                billingCountry: formState.billingCountry || "",
36453	                disabled,
36454	                onChange: (value) => {
36455	                    if (!disabled) {
36456	                        formActions.updateFormState({
36457	                            billingState: value,
36458	                            serverErrors: []
36459	                        });
36460	                        logDataLayerEvent(form, 'zephr_form_input_change', {
36461	                            inputName: `zephr-form-billing-state-${form.uniqueKey}`,
36462	                            sectionId: formState.currentSection.type,
36463	                            field: 'billing_state'
36464	                        });
36465	                    }
36466	                },
36467	                onFocus: () => logDataLayerEvent(form, 'zephr_form_input_focus', {
36468	                    inputName: `zephr-form-billing-state-${form.uniqueKey}`,
36469	                    sectionId: formState.currentSection.type,
36470	                    field: 'billing_state'
36471	                }),
36472	                onBlur: () => logDataLayerEvent(form, 'zephr_form_input_blur', {
36473	                    inputName: `zephr-form-billing-state-${form.uniqueKey}`,
36474	                    sectionId: formState.currentSection.type,
36475	                    field: 'billing_state'
36476	                }),
36477	                isPaymentForm: form.formType === FormType.PAYMENT,
36478	            },
36479	            isValid: !elementConfig.required ||
36480	                (formState.billingCountry === "US" || formState.billingCountry === "CA"
36481	                    ? !!formState.billingState
36482	                    : true) // Not required if country is not US or CA
36483	        });
36484	    }
36485	};
36486
36487	const elementFactories = [
36488	    factory$u,
36489	    factory$t,
36490	    factory$s,
36491	    factory$r,
36492	    factory$q,
36493	    factory$p,
36494	    factory$o,
36495	    factory$n,
36496	    paymentAutoRenewToggleFactory,
36497	    factory$m,
36498	    factory$l,
36499	    factory$k,
36500	    factory$j,
36501	    factory$i,
36502	    factory$h,
36503	    factory$g,
36504	    factory$f,
36505	    factory$e,
36506	    factory$d,
36507	    factory$c,
36508	    factory$b,
36509	    factory$a,
36510	    factory$9,
36511	    factory$8,
36512	    factory$7,
36513	    subscriptionSelectFactory,
36514	    subscriptionsListFactory,
36515	    pastSubscriptionsLinkFactory,
36516	    changePaymentMethodButtonFactory,
36517	    eventLinkFactory,
36518	    factory$6,
36519	    factory$5,
36520	    readOnlyUserAttributeFactory,
36521	    deviceSessionsFactory,
36522	    deviceSessionsSignOutAll,
36523	    billingHistoryFactory,
36524	    factory$4,
36525	    factory$3,
36526	    recipientNameFactory,
36527	    recipientEmailFactory,
36528	    recipientAddressFactory,
36529	    recipientMessageFactory,
36530	    factory$2,
36531	    giftSubscriptionsListFactory,
36532	    giftToggleFactory,
36533	    giftFutureDateToggleFactory,
36534	    giftFutureDateInputFactory,
36535	    suspendResumeSubscriptionFactory,
36536	    subscriptionCustomFieldsUpdateFactory,
36537	    subscriptionCustomFieldsListFactory,
36538	    billToContactFactory,
36539	    factory$1,
36540	    factory,
36541	];
36542
36543	/* src/components/ElementResolver.svelte generated by Svelte v4.2.12 */
36544
36545	function create_if_block$1(ctx) {
36546		let switch_instance;
36547		let t;
36548		let if_block_anchor;
36549		let current;
36550
36551		const switch_instance_spread_levels = [
36552			/*enrichPropsWithServerError*/ ctx[4](/*element*/ ctx[2].props, /*formState*/ ctx[0], /*sectionElement*/ ctx[1])
36553		];
36554
36555		var switch_value = /*element*/ ctx[2].component;
36556
36557		function switch_props(ctx, dirty) {
36558			let switch_instance_props = {};
36559
36560			for (let i = 0; i < switch_instance_spread_levels.length; i += 1) {
36561				switch_instance_props = assign(switch_instance_props, switch_instance_spread_levels[i]);
36562			}
36563
36564			if (dirty !== undefined && dirty & /*enrichPropsWithServerError, element, formState, sectionElement*/ 23) {
36565				switch_instance_props = assign(switch_instance_props, get_spread_update(switch_instance_spread_levels, [
36566					get_spread_object(/*enrichPropsWithServerError*/ ctx[4](/*element*/ ctx[2].props, /*formState*/ ctx[0], /*sectionElement*/ ctx[1]))
36567				]));
36568			}
36569
36570			return { props: switch_instance_props };
36571		}
36572
36573		if (switch_value) {
36574			switch_instance = construct_svelte_component(switch_value, switch_props(ctx));
36575		}
36576
36577		let if_block = /*element*/ ctx[2].isValid === false && /*formState*/ ctx[0].showFieldErrors && create_if_block_1$1(ctx);
36578
36579		return {
36580			c() {
36581				if (switch_instance) create_component(switch_instance.$$.fragment);
36582				t = space();
36583				if (if_block) if_block.c();
36584				if_block_anchor = empty();
36585			},
36586			m(target, anchor) {
36587				if (switch_instance) mount_component(switch_instance, target, anchor);
36588				insert(target, t, anchor);
36589				if (if_block) if_block.m(target, anchor);
36590				insert(target, if_block_anchor, anchor);
36591				current = true;
36592			},
36593			p(ctx, dirty) {
36594				if (dirty & /*element*/ 4 && switch_value !== (switch_value = /*element*/ ctx[2].component)) {
36595					if (switch_instance) {
36596						group_outros();
36597						const old_component = switch_instance;
36598
36599						transition_out(old_component.$$.fragment, 1, 0, () => {
36600							destroy_component(old_component, 1);
36601						});
36602
36603						check_outros();
36604					}
36605
36606					if (switch_value) {
36607						switch_instance = construct_svelte_component(switch_value, switch_props(ctx, dirty));
36608						create_component(switch_instance.$$.fragment);
36609						transition_in(switch_instance.$$.fragment, 1);
36610						mount_component(switch_instance, t.parentNode, t);
36611					} else {
36612						switch_instance = null;
36613					}
36614				} else if (switch_value) {
36615					const switch_instance_changes = (dirty & /*enrichPropsWithServerError, element, formState, sectionElement*/ 23)
36616					? get_spread_update(switch_instance_spread_levels, [
36617							get_spread_object(/*enrichPropsWithServerError*/ ctx[4](/*element*/ ctx[2].props, /*formState*/ ctx[0], /*sectionElement*/ ctx[1]))
36618						])
36619					: {};
36620
36621					switch_instance.$set(switch_instance_changes);
36622				}
36623
36624				if (/*element*/ ctx[2].isValid === false && /*formState*/ ctx[0].showFieldErrors) {
36625					if (if_block) {
36626						if_block.p(ctx, dirty);
36627
36628						if (dirty & /*element, formState*/ 5) {
36629							transition_in(if_block, 1);
36630						}
36631					} else {
36632						if_block = create_if_block_1$1(ctx);
36633						if_block.c();
36634						transition_in(if_block, 1);
36635						if_block.m(if_block_anchor.parentNode, if_block_anchor);
36636					}
36637				} else if (if_block) {
36638					group_outros();
36639
36640					transition_out(if_block, 1, 1, () => {
36641						if_block = null;
36642					});
36643
36644					check_outros();
36645				}
36646			},
36647			i(local) {
36648				if (current) return;
36649				if (switch_instance) transition_in(switch_instance.$$.fragment, local);
36650				transition_in(if_block);
36651				current = true;
36652			},
36653			o(local) {
36654				if (switch_instance) transition_out(switch_instance.$$.fragment, local);
36655				transition_out(if_block);
36656				current = false;
36657			},
36658			d(detaching) {
36659				if (detaching) {
36660					detach(t);
36661					detach(if_block_anchor);
36662				}
36663
36664				if (switch_instance) destroy_component(switch_instance, detaching);
36665				if (if_block) if_block.d(detaching);
36666			}
36667		};
36668	}
36669
36670	// (61:2) {#if element.isValid === false && formState.showFieldErrors}
36671	function create_if_block_1$1(ctx) {
36672		let errormessage;
36673		let current;
36674
36675		errormessage = new ErrorMessage({
36676				props: {
36677					error: "Field is invalid",
36678					isPaymentForm: /*isPaymentForm*/ ctx[3]
36679				}
36680			});
36681
36682		return {
36683			c() {
36684				create_component(errormessage.$$.fragment);
36685			},
36686			m(target, anchor) {
36687				mount_component(errormessage, target, anchor);
36688				current = true;
36689			},
36690			p: noop,
36691			i(local) {
36692				if (current) return;
36693				transition_in(errormessage.$$.fragment, local);
36694				current = true;
36695			},
36696			o(local) {
36697				transition_out(errormessage.$$.fragment, local);
36698				current = false;
36699			},
36700			d(detaching) {
36701				destroy_component(errormessage, detaching);
36702			}
36703		};
36704	}
36705
36706	function create_fragment$3(ctx) {
36707		let if_block_anchor;
36708		let current;
36709		let if_block = /*element*/ ctx[2] && create_if_block$1(ctx);
36710
36711		return {
36712			c() {
36713				if (if_block) if_block.c();
36714				if_block_anchor = empty();
36715			},
36716			m(target, anchor) {
36717				if (if_block) if_block.m(target, anchor);
36718				insert(target, if_block_anchor, anchor);
36719				current = true;
36720			},
36721			p(ctx, [dirty]) {
36722				if (/*element*/ ctx[2]) {
36723					if (if_block) {
36724						if_block.p(ctx, dirty);
36725
36726						if (dirty & /*element*/ 4) {
36727							transition_in(if_block, 1);
36728						}
36729					} else {
36730						if_block = create_if_block$1(ctx);
36731						if_block.c();
36732						transition_in(if_block, 1);
36733						if_block.m(if_block_anchor.parentNode, if_block_anchor);
36734					}
36735				} else if (if_block) {
36736					group_outros();
36737
36738					transition_out(if_block, 1, 1, () => {
36739						if_block = null;
36740					});
36741
36742					check_outros();
36743				}
36744			},
36745			i(local) {
36746				if (current) return;
36747				transition_in(if_block);
36748				current = true;
36749			},
36750			o(local) {
36751				transition_out(if_block);
36752				current = false;
36753			},
36754			d(detaching) {
36755				if (detaching) {
36756					detach(if_block_anchor);
36757				}
36758
36759				if (if_block) if_block.d(detaching);
36760			}
36761		};
36762	}
36763
36764	function instance$3($$self, $$props, $$invalidate) {
36765		let element;
36766		let { form } = $$props;
36767		let { formActions } = $$props;
36768		let isPaymentForm = form.formType === "PAYMENT";
36769		let { formState } = $$props;
36770		let { sectionElement } = $$props;
36771
36772		const enrichPropsWithServerError = (props, _formState, _sectionElement) => {
36773			const serverErrorForElementValue = serverErrorForElement(_sectionElement.type, _formState);
36774			const error = ServerErrors[serverErrorForElementValue];
36775
36776			if (error) {
36777				// send message to app saying payment form has errored
36778				const formErrorMessage = {
36779					error: ServerError[serverErrorForElementValue],
36780					errorMessage: resolveErrorLanguagePackKey(form, serverErrorForElementValue),
36781					success: false,
36782					formSlug: form.id
36783				};
36784
36785				const formEventPayload = JSON.stringify(formErrorMessage);
36786
36787				// handle ios message
36788				window?.webkit?.messageHandlers?.messageHandler?.postMessage(formEventPayload);
36789
36790				// handle android message
36791				window?.AndroidFormEventListener?.processFormEvent(formEventPayload);
36792			}
36793
36794			return error
36795			? {
36796					...element.props,
36797					error: element.props.error ?? (error.useDymamicMessage
36798					? _formState.dynamicServerErrorMessage
36799					: resolveErrorLanguagePackKey(form, serverErrorForElementValue))
36800				}
36801			: props;
36802		};
36803
36804		const buildElement = (_formState, _sectionElement) => {
36805			if (_sectionElement.config?.enabled === false || _sectionElement.hidden === true) {
36806				return null;
36807			}
36808
36809			const factory = elementFactories.find(f => f.matches(_sectionElement, form, _formState.currentPart, _formState.currentSection));
36810
36811			if (!factory) {
36812				throw `Unknown element ${JSON.stringify(_sectionElement)}`;
36813			}
36814
36815			const element = factory.create(form, _formState, formActions, _sectionElement.config);
36816			updateElementValidity(element, _formState, _sectionElement, formActions);
36817			return element;
36818		};
36819
36820		$$self.$$set = $$props => {
36821			if ('form' in $$props) $$invalidate(5, form = $$props.form);
36822			if ('formActions' in $$props) $$invalidate(6, formActions = $$props.formActions);
36823			if ('formState' in $$props) $$invalidate(0, formState = $$props.formState);
36824			if ('sectionElement' in $$props) $$invalidate(1, sectionElement = $$props.sectionElement);
36825		};
36826
36827		$$self.$$.update = () => {
36828			if ($$self.$$.dirty & /*formState, sectionElement*/ 3) {
36829				$$invalidate(2, element = buildElement(formState, sectionElement));
36830			}
36831		};
36832
36833		return [
36834			formState,
36835			sectionElement,
36836			element,
36837			isPaymentForm,
36838			enrichPropsWithServerError,
36839			form,
36840			formActions
36841		];
36842	}
36843
36844	class ElementResolver extends SvelteComponent {
36845		constructor(options) {
36846			super();
36847
36848			init(this, options, instance$3, create_fragment$3, safe_not_equal, {
36849				form: 5,
36850				formActions: 6,
36851				formState: 0,
36852				sectionElement: 1
36853			});
36854		}
36855	}
36856
36857	const extractDefaultUserAttributes = (form) => form.parts
36858	    .flatMap((p) => p.sections)
36859	    .flatMap((s) => s.elements)
36860	    .filter((e) => e.type === elementTypes.USER_ATTRIBUTE)
36861	    .map(e => e.config)
36862	    .reduce((attributes, config) => {
36863	    const schemafield = form.organisationConfiguration.schemaFields.find(s => s.slug === config.slug);
36864	    if (schemafield) {
36865	        return {
36866	            ...attributes,
36867	            [config.slug]: (config.defaultValue || (schemafield["select-options"]?.find(o => o.default)?.value)) ?? undefined
36868	        };
36869	    }
36870	    else {
36871	        return {
36872	            ...attributes
36873	        };
36874	    }
36875	}, {});
36876
36877	/**
36878	 * Sort all items in the Form by their order properties
36879	 */
36880	const sortForm = (form) => ({
36881	    ...form,
36882	    parts: form.parts
36883	        .sort((a, b) => partTypeFor(a.type).order - partTypeFor(b.type).order)
36884	        .map((p) => ({
36885	        ...p,
36886	        sections: p.sections
36887	            .sort((a, b) => a.order - b.order)
36888	            .map((s) => ({
36889	            ...s,
36890	            elements: s.elements.sort((a, b) => a.order - b.order),
36891	        })),
36892	    }))
36893	});
36894
36895	const addFormProcessorsToWindow = () => {
36896	    if (!window.Blaize) {
36897	        window.Blaize = {
36898	            formPreProcessors: {},
36899	            formPostProcessors: {},
36900	            registerFormPreProcessor: function (formSlug, processor) {
36901	                if (!window.Blaize.formPreProcessors[formSlug])
36902	                    window.Blaize.formPreProcessors[formSlug] = [];
36903	                if (typeof processor === "function") {
36904	                    window.Blaize.formPreProcessors[formSlug].push(processor);
36905	                }
36906	            },
36907	            registerFormPostProcessor: function (formSlug, processor) {
36908	                if (!window.Blaize.formPostProcessors[formSlug])
36909	                    window.Blaize.formPostProcessors[formSlug] = [];
36910	                if (typeof processor === "function") {
36911	                    window.Blaize.formPostProcessors[formSlug].push(processor);
36912	                }
36913	            },
36914	            preProcessFormData: function (formSlug, formData) {
36915	                if (window.Blaize.formPreProcessors[formSlug] ||
36916	                    window.Blaize.formPreProcessors["*"]) {
36917	                    const processors = [];
36918	                    if (window.Blaize.formPreProcessors["*"]) {
36919	                        window.Blaize.formPreProcessors["*"].forEach(function (processor) {
36920	                            processors.push(processor);
36921	                        });
36922	                    }
36923	                    if (window.Blaize.formPreProcessors[formSlug]) {
36924	                        window.Blaize.formPreProcessors[formSlug].forEach(function (processor) {
36925	                            processors.push(processor);
36926	                        });
36927	                    }
36928	                    processors.forEach(function (processor) {
36929	                        const processedFormData = processor(formData);
36930	                        if (processedFormData != undefined) {
36931	                            formData = processedFormData;
36932	                        }
36933	                    });
36934	                }
36935	                return formData;
36936	            },
36937	            postProcessFormData: function (formSlug, formData, response) {
36938	                if (window.Blaize.formPostProcessors[formSlug] ||
36939	                    window.Blaize.formPostProcessors["*"]) {
36940	                    const processors = [];
36941	                    if (window.Blaize.formPostProcessors["*"]) {
36942	                        window.Blaize.formPostProcessors["*"].forEach(function (processor) {
36943	                            processors.push(processor);
36944	                        });
36945	                    }
36946	                    if (window.Blaize.formPostProcessors[formSlug]) {
36947	                        window.Blaize.formPostProcessors[formSlug].forEach(function (processor) {
36948	                            processors.push(processor);
36949	                        });
36950	                    }
36951	                    processors.forEach(function (processor) {
36952	                        processor(formData, response);
36953	                    });
36954	                }
36955	            },
36956	        };
36957	    }
36958	};
36959
36960	/* src/components/FormViewedDetect.svelte generated by Svelte v4.2.12 */
36961
36962	function create_fragment$2(ctx) {
36963		let div;
36964		let current;
36965		const default_slot_template = /*#slots*/ ctx[3].default;
36966		const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[2], null);
36967
36968		return {
36969			c() {
36970				div = element("div");
36971				if (default_slot) default_slot.c();
36972			},
36973			m(target, anchor) {
36974				insert(target, div, anchor);
36975
36976				if (default_slot) {
36977					default_slot.m(div, null);
36978				}
36979
36980				/*div_binding*/ ctx[4](div);
36981				current = true;
36982			},
36983			p(ctx, [dirty]) {
36984				if (default_slot) {
36985					if (default_slot.p && (!current || dirty & /*$$scope*/ 4)) {
36986						update_slot_base(
36987							default_slot,
36988							default_slot_template,
36989							ctx,
36990							/*$$scope*/ ctx[2],
36991							!current
36992							? get_all_dirty_from_scope(/*$$scope*/ ctx[2])
36993							: get_slot_changes(default_slot_template, /*$$scope*/ ctx[2], dirty, null),
36994							null
36995						);
36996					}
36997				}
36998			},
36999			i(local) {
37000				if (current) return;
37001				transition_in(default_slot, local);
37002				current = true;
37003			},
37004			o(local) {
37005				transition_out(default_slot, local);
37006				current = false;
37007			},
37008			d(detaching) {
37009				if (detaching) {
37010					detach(div);
37011				}
37012
37013				if (default_slot) default_slot.d(detaching);
37014				/*div_binding*/ ctx[4](null);
37015			}
37016		};
37017	}
37018
37019	function instance$2($$self, $$props, $$invalidate) {
37020		let { $$slots: slots = {}, $$scope } = $$props;
37021		let { form } = $$props;
37022		let intersecting = false;
37023		let element;
37024		let observer;
37025		const dispatch = createEventDispatcher();
37026
37027		onMount(() => {
37028			if (typeof IntersectionObserver !== 'undefined') {
37029				observer = new IntersectionObserver(entries => {
37030						const entry = entries[0];
37031						intersecting = entry?.isIntersecting;
37032						dispatch('observe', entry);
37033
37034						if (intersecting && form) {
37035							logDataLayerEvent(form, 'zephr_form_view', null);
37036							observer.unobserve(element);
37037						}
37038					},
37039				{ threshold: 0.75 });
37040
37041				if (element) {
37042					observer.observe(element);
37043				}
37044			}
37045
37046			return () => {
37047				if (observer) {
37048					observer.disconnect();
37049				}
37050			};
37051		});
37052
37053		function div_binding($$value) {
37054			binding_callbacks[$$value ? 'unshift' : 'push'](() => {
37055				element = $$value;
37056				$$invalidate(0, element);
37057			});
37058		}
37059
37060		$$self.$$set = $$props => {
37061			if ('form' in $$props) $$invalidate(1, form = $$props.form);
37062			if ('$$scope' in $$props) $$invalidate(2, $$scope = $$props.$$scope);
37063		};
37064
37065		return [element, form, $$scope, slots, div_binding];
37066	}
37067
37068	class FormViewedDetect extends SvelteComponent {
37069		constructor(options) {
37070			super();
37071			init(this, options, instance$2, create_fragment$2, safe_not_equal, { form: 1 });
37072		}
37073	}
37074
37075	const checkForRegisteredUser = async (formActions) => {
37076	    if (!document.cookie?.includes("blaize_session")) {
37077	        formActions.updateFormState({
37078	            userSession: false,
37079	        });
37080	        return false;
37081	    }
37082	    let response;
37083	    try {
37084	        response = await request('blaize/account', { method: "GET" }, formActions);
37085	    }
37086	    catch (err) {
37087	        console.error(err);
37088	    }
37089	    if (response?.ok) {
37090	        const responseJson = await response.json();
37091	        formActions.updateFormState({
37092	            userExists: true,
37093	            emailIsContact: false,
37094	            emailAddress: responseJson.identifiers?.email_address,
37095	            userSession: true,
37096	            loginRegistrationComplete: true
37097	        });
37098	    }
37099	    else {
37100	        formActions.updateFormState({
37101	            userSession: false,
37102	        });
37103	    }
37104	    return response?.ok;
37105	};
37106
37107	/* src/components/FormRoot.svelte generated by Svelte v4.2.12 */
37108
37109	function get_each_context(ctx, list, i) {
37110		const child_ctx = ctx.slice();
37111		child_ctx[21] = list[i];
37112		return child_ctx;
37113	}
37114
37115	// (206:2) {#if formCanBeManuallyClosed}
37116	function create_if_block_3(ctx) {
37117		let div;
37118		let button;
37119		let fa;
37120		let current;
37121		let mounted;
37122		let dispose;
37123		fa = new Fa({ props: { icon: faTimesCircle } });
37124
37125		return {
37126			c() {
37127				div = element("div");
37128				button = element("button");
37129				create_component(fa.$$.fragment);
37130				attr(button, "type", "button");
37131				attr(button, "class", "close-button svelte-j7lu48");
37132				attr(div, "class", "close-button-container svelte-j7lu48");
37133			},
37134			m(target, anchor) {
37135				insert(target, div, anchor);
37136				append(div, button);
37137				mount_component(fa, button, null);
37138				current = true;
37139
37140				if (!mounted) {
37141					dispose = listen(button, "click", /*closeForm*/ ctx[8]);
37142					mounted = true;
37143				}
37144			},
37145			p: noop,
37146			i(local) {
37147				if (current) return;
37148				transition_in(fa.$$.fragment, local);
37149				current = true;
37150			},
37151			o(local) {
37152				transition_out(fa.$$.fragment, local);
37153				current = false;
37154			},
37155			d(detaching) {
37156				if (detaching) {
37157					detach(div);
37158				}
37159
37160				destroy_component(fa);
37161				mounted = false;
37162				dispose();
37163			}
37164		};
37165	}
37166
37167	// (219:2) {:else}
37168	function create_else_block(ctx) {
37169		let formvieweddetect;
37170		let t;
37171		let if_block_anchor;
37172		let current;
37173
37174		formvieweddetect = new FormViewedDetect({
37175				props: {
37176					form: /*form*/ ctx[5],
37177					$$slots: { default: [create_default_slot] },
37178					$$scope: { ctx }
37179				}
37180			});
37181
37182		let if_block = /*topLevelError*/ ctx[3] && create_if_block_2(ctx);
37183
37184		return {
37185			c() {
37186				create_component(formvieweddetect.$$.fragment);
37187				t = space();
37188				if (if_block) if_block.c();
37189				if_block_anchor = empty();
37190			},
37191			m(target, anchor) {
37192				mount_component(formvieweddetect, target, anchor);
37193				insert(target, t, anchor);
37194				if (if_block) if_block.m(target, anchor);
37195				insert(target, if_block_anchor, anchor);
37196				current = true;
37197			},
37198			p(ctx, dirty) {
37199				const formvieweddetect_changes = {};
37200
37201				if (dirty & /*$$scope, isFullWidth, formState*/ 16777221) {
37202					formvieweddetect_changes.$$scope = { dirty, ctx };
37203				}
37204
37205				formvieweddetect.$set(formvieweddetect_changes);
37206
37207				if (/*topLevelError*/ ctx[3]) {
37208					if (if_block) {
37209						if_block.p(ctx, dirty);
37210
37211						if (dirty & /*topLevelError*/ 8) {
37212							transition_in(if_block, 1);
37213						}
37214					} else {
37215						if_block = create_if_block_2(ctx);
37216						if_block.c();
37217						transition_in(if_block, 1);
37218						if_block.m(if_block_anchor.parentNode, if_block_anchor);
37219					}
37220				} else if (if_block) {
37221					group_outros();
37222
37223					transition_out(if_block, 1, 1, () => {
37224						if_block = null;
37225					});
37226
37227					check_outros();
37228				}
37229			},
37230			i(local) {
37231				if (current) return;
37232				transition_in(formvieweddetect.$$.fragment, local);
37233				transition_in(if_block);
37234				current = true;
37235			},
37236			o(local) {
37237				transition_out(formvieweddetect.$$.fragment, local);
37238				transition_out(if_block);
37239				current = false;
37240			},
37241			d(detaching) {
37242				if (detaching) {
37243					detach(t);
37244					detach(if_block_anchor);
37245				}
37246
37247				destroy_component(formvieweddetect, detaching);
37248				if (if_block) if_block.d(detaching);
37249			}
37250		};
37251	}
37252
37253	// (215:69) 
37254	function create_if_block_1(ctx) {
37255		let div;
37256		let spinner;
37257		let current;
37258		spinner = new Spinner({});
37259
37260		return {
37261			c() {
37262				div = element("div");
37263				create_component(spinner.$$.fragment);
37264				attr(div, "class", "loading-placeholder svelte-j7lu48");
37265			},
37266			m(target, anchor) {
37267				insert(target, div, anchor);
37268				mount_component(spinner, div, null);
37269				current = true;
37270			},
37271			p: noop,
37272			i(local) {
37273				if (current) return;
37274				transition_in(spinner.$$.fragment, local);
37275				current = true;
37276			},
37277			o(local) {
37278				transition_out(spinner.$$.fragment, local);
37279				current = false;
37280			},
37281			d(detaching) {
37282				if (detaching) {
37283					detach(div);
37284				}
37285
37286				destroy_component(spinner);
37287			}
37288		};
37289	}
37290
37291	// (213:2) {#if formHasCrashed}
37292	function create_if_block(ctx) {
37293		let div;
37294
37295		return {
37296			c() {
37297				div = element("div");
37298				div.textContent = `${resolveErrorLanguagePackKey(/*form*/ ctx[5], ServerError.UNKNOWN)}`;
37299			},
37300			m(target, anchor) {
37301				insert(target, div, anchor);
37302			},
37303			p: noop,
37304			i: noop,
37305			o: noop,
37306			d(detaching) {
37307				if (detaching) {
37308					detach(div);
37309				}
37310			}
37311		};
37312	}
37313
37314	// (226:8) {#each form.sectionFlow.extraElements.concat(formState.currentSection.elements || []) as element}
37315	function create_each_block(ctx) {
37316		let elementresolver;
37317		let current;
37318
37319		elementresolver = new ElementResolver({
37320				props: {
37321					form: /*form*/ ctx[5],
37322					formState: /*formState*/ ctx[0],
37323					formActions: /*formActions*/ ctx[7],
37324					sectionElement: /*element*/ ctx[21]
37325				}
37326			});
37327
37328		return {
37329			c() {
37330				create_component(elementresolver.$$.fragment);
37331			},
37332			m(target, anchor) {
37333				mount_component(elementresolver, target, anchor);
37334				current = true;
37335			},
37336			p(ctx, dirty) {
37337				const elementresolver_changes = {};
37338				if (dirty & /*formState*/ 1) elementresolver_changes.formState = /*formState*/ ctx[0];
37339				if (dirty & /*formState*/ 1) elementresolver_changes.sectionElement = /*element*/ ctx[21];
37340				elementresolver.$set(elementresolver_changes);
37341			},
37342			i(local) {
37343				if (current) return;
37344				transition_in(elementresolver.$$.fragment, local);
37345				current = true;
37346			},
37347			o(local) {
37348				transition_out(elementresolver.$$.fragment, local);
37349				current = false;
37350			},
37351			d(detaching) {
37352				destroy_component(elementresolver, detaching);
37353			}
37354		};
37355	}
37356
37357	// (220:4) <FormViewedDetect form={form}>
37358	function create_default_slot(ctx) {
37359		let form_1;
37360		let current;
37361		let mounted;
37362		let dispose;
37363		let each_value = ensure_array_like(/*form*/ ctx[5].sectionFlow.extraElements.concat(/*formState*/ ctx[0].currentSection.elements || []));
37364		let each_blocks = [];
37365
37366		for (let i = 0; i < each_value.length; i += 1) {
37367			each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i));
37368		}
37369
37370		const out = i => transition_out(each_blocks[i], 1, 1, () => {
37371			each_blocks[i] = null;
37372		});
37373
37374		return {
37375			c() {
37376				form_1 = element("form");
37377
37378				for (let i = 0; i < each_blocks.length; i += 1) {
37379					each_blocks[i].c();
37380				}
37381
37382				attr(form_1, "class", "zephr-form-content svelte-j7lu48");
37383				toggle_class(form_1, "zephr-payment-options-content", /*isFullWidth*/ ctx[2]);
37384			},
37385			m(target, anchor) {
37386				insert(target, form_1, anchor);
37387
37388				for (let i = 0; i < each_blocks.length; i += 1) {
37389					if (each_blocks[i]) {
37390						each_blocks[i].m(form_1, null);
37391					}
37392				}
37393
37394				current = true;
37395
37396				if (!mounted) {
37397					dispose = listen(form_1, "submit", submit_handler);
37398					mounted = true;
37399				}
37400			},
37401			p(ctx, dirty) {
37402				if (dirty & /*form, formState, formActions*/ 161) {
37403					each_value = ensure_array_like(/*form*/ ctx[5].sectionFlow.extraElements.concat(/*formState*/ ctx[0].currentSection.elements || []));
37404					let i;
37405
37406					for (i = 0; i < each_value.length; i += 1) {
37407						const child_ctx = get_each_context(ctx, each_value, i);
37408
37409						if (each_blocks[i]) {
37410							each_blocks[i].p(child_ctx, dirty);
37411							transition_in(each_blocks[i], 1);
37412						} else {
37413							each_blocks[i] = create_each_block(child_ctx);
37414							each_blocks[i].c();
37415							transition_in(each_blocks[i], 1);
37416							each_blocks[i].m(form_1, null);
37417						}
37418					}
37419
37420					group_outros();
37421
37422					for (i = each_value.length; i < each_blocks.length; i += 1) {
37423						out(i);
37424					}
37425
37426					check_outros();
37427				}
37428
37429				if (!current || dirty & /*isFullWidth*/ 4) {
37430					toggle_class(form_1, "zephr-payment-options-content", /*isFullWidth*/ ctx[2]);
37431				}
37432			},
37433			i(local) {
37434				if (current) return;
37435
37436				for (let i = 0; i < each_value.length; i += 1) {
37437					transition_in(each_blocks[i]);
37438				}
37439
37440				current = true;
37441			},
37442			o(local) {
37443				each_blocks = each_blocks.filter(Boolean);
37444
37445				for (let i = 0; i < each_blocks.length; i += 1) {
37446					transition_out(each_blocks[i]);
37447				}
37448
37449				current = false;
37450			},
37451			d(detaching) {
37452				if (detaching) {
37453					detach(form_1);
37454				}
37455
37456				destroy_each(each_blocks, detaching);
37457				mounted = false;
37458				dispose();
37459			}
37460		};
37461	}
37462
37463	// (236:4) {#if topLevelError}
37464	function create_if_block_2(ctx) {
37465		let errormessage;
37466		let current;
37467
37468		errormessage = new ErrorMessage({
37469				props: {
37470					error: resolveErrorLanguagePackKey(/*form*/ ctx[5], /*topLevelError*/ ctx[3]),
37471					isPaymentForm: /*isPaymentForm*/ ctx[6]
37472				}
37473			});
37474
37475		return {
37476			c() {
37477				create_component(errormessage.$$.fragment);
37478			},
37479			m(target, anchor) {
37480				mount_component(errormessage, target, anchor);
37481				current = true;
37482			},
37483			p(ctx, dirty) {
37484				const errormessage_changes = {};
37485				if (dirty & /*topLevelError*/ 8) errormessage_changes.error = resolveErrorLanguagePackKey(/*form*/ ctx[5], /*topLevelError*/ ctx[3]);
37486				errormessage.$set(errormessage_changes);
37487			},
37488			i(local) {
37489				if (current) return;
37490				transition_in(errormessage.$$.fragment, local);
37491				current = true;
37492			},
37493			o(local) {
37494				transition_out(errormessage.$$.fragment, local);
37495				current = false;
37496			},
37497			d(detaching) {
37498				destroy_component(errormessage, detaching);
37499			}
37500		};
37501	}
37502
37503	function create_fragment$1(ctx) {
37504		let div;
37505		let t;
37506		let current_block_type_index;
37507		let if_block1;
37508		let accordion_action;
37509		let current;
37510		let mounted;
37511		let dispose;
37512		let if_block0 = /*formCanBeManuallyClosed*/ ctx[9] && create_if_block_3(ctx);
37513		const if_block_creators = [create_if_block, create_if_block_1, create_else_block];
37514		const if_blocks = [];
37515
37516		function select_block_type(ctx, dirty) {
37517			if (/*form*/ ctx[5].formType === "GIFT_REDEMPTION" && !/*isSessionChecked*/ ctx[1]) return 1;
37518			return 2;
37519		}
37520
37521		current_block_type_index = select_block_type(ctx);
37522		if_block1 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
37523
37524		return {
37525			c() {
37526				div = element("div");
37527				if (if_block0) if_block0.c();
37528				t = space();
37529				if_block1.c();
37530				toggle_class(div, "zephr-form-max-width", !/*isFullWidth*/ ctx[2]);
37531				toggle_class(div, "zephr-payment-form-max-width", !/*isFullWidth*/ ctx[2]);
37532			},
37533			m(target, anchor) {
37534				insert(target, div, anchor);
37535				if (if_block0) if_block0.m(div, null);
37536				append(div, t);
37537				if_blocks[current_block_type_index].m(div, null);
37538				current = true;
37539
37540				if (!mounted) {
37541					dispose = action_destroyer(accordion_action = accordion.call(null, div, /*formIsOpen*/ ctx[4]));
37542					mounted = true;
37543				}
37544			},
37545			p(ctx, [dirty]) {
37546				if (/*formCanBeManuallyClosed*/ ctx[9]) if_block0.p(ctx, dirty);
37547				let previous_block_index = current_block_type_index;
37548				current_block_type_index = select_block_type(ctx);
37549
37550				if (current_block_type_index === previous_block_index) {
37551					if_blocks[current_block_type_index].p(ctx, dirty);
37552				} else {
37553					group_outros();
37554
37555					transition_out(if_blocks[previous_block_index], 1, 1, () => {
37556						if_blocks[previous_block_index] = null;
37557					});
37558
37559					check_outros();
37560					if_block1 = if_blocks[current_block_type_index];
37561
37562					if (!if_block1) {
37563						if_block1 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
37564						if_block1.c();
37565					} else {
37566						if_block1.p(ctx, dirty);
37567					}
37568
37569					transition_in(if_block1, 1);
37570					if_block1.m(div, null);
37571				}
37572
37573				if (accordion_action && is_function(accordion_action.update) && dirty & /*formIsOpen*/ 16) accordion_action.update.call(null, /*formIsOpen*/ ctx[4]);
37574
37575				if (!current || dirty & /*isFullWidth*/ 4) {
37576					toggle_class(div, "zephr-form-max-width", !/*isFullWidth*/ ctx[2]);
37577				}
37578
37579				if (!current || dirty & /*isFullWidth*/ 4) {
37580					toggle_class(div, "zephr-payment-form-max-width", !/*isFullWidth*/ ctx[2]);
37581				}
37582			},
37583			i(local) {
37584				if (current) return;
37585				transition_in(if_block0);
37586				transition_in(if_block1);
37587				current = true;
37588			},
37589			o(local) {
37590				transition_out(if_block0);
37591				transition_out(if_block1);
37592				current = false;
37593			},
37594			d(detaching) {
37595				if (detaching) {
37596					detach(div);
37597				}
37598
37599				if (if_block0) if_block0.d();
37600				if_blocks[current_block_type_index].d();
37601				mounted = false;
37602				dispose();
37603			}
37604		};
37605	}
37606	const defaultBusyKey = "default";
37607	const submit_handler = e => e?.preventDefault();
37608
37609	function instance$1($$self, $$props, $$invalidate) {
37610		let formIsOpen;
37611		let topLevelError;
37612		let isFullWidth;
37613		onMount(addFormProcessorsToWindow);
37614		let { formConfiguration } = $$props;
37615		let form = sortForm(formConfiguration);
37616
37617		if (form.environment.debugLogging) {
37618			console.log(form);
37619		}
37620
37621		// variable
37622		let isPaymentForm = form.formType === "PAYMENT";
37623
37624		let requestCountByKey = {};
37625		let isSessionChecked = false;
37626
37627		const previewSection = form.environment.previewMode && form.environment.previewInitialState
37628		? findSectionByAddress(form.environment.previewInitialState, form)
37629		: null;
37630
37631		let formState = Object.freeze({
37632			currentPart: previewSection?.part ?? form.parts[0],
37633			currentSection: previewSection?.section ?? form.parts[0].sections[0],
37634			paymentOption: null,
37635			paymentOptionPrices: null,
37636			emailAddress: "",
37637			billingCountry: "",
37638			billingState: "",
37639			createPassword: "",
37640			password: "",
37641			confirmCreatePassword: "",
37642			accountMembershipCode: "",
37643			passwordIsValid: false,
37644			elementValidity: [],
37645			canAttemptSectionCompletion: true,
37646			showFieldErrors: false,
37647			loginRegistrationComplete: false,
37648			serverErrors: [],
37649			isBusy: false,
37650			isBusyByKey: [],
37651			formCannotBeActioned: false,
37652			forgotPassword: false,
37653			promoCode: "",
37654			addons: [],
37655			discountedPlanPrices: [],
37656			paymentProviderFormLoaded: false,
37657			paymentProviderError: null,
37658			paymentFormComplete: false,
37659			paymentProviderVendorFields: null,
37660			verificationCode: "",
37661			userAttributes: extractDefaultUserAttributes(form),
37662			socialSignin: false,
37663			paymentProcessed: false,
37664			invitationEmail: "",
37665			invitationSent: false,
37666			validChangeFromPlans: [],
37667			taxCalculations: {},
37668			billingAddress: { country: null, postalCode: null },
37669			formPrerequisiteLoaded: !form.sectionFlow.formRequiresPrerequisiteLoading(form),
37670			dynamicOfferResult: null,
37671			originalDynamicOfferResult: null,
37672			giftCode: new URLSearchParams(window.location.search).get('giftCode') || '',
37673			giftRecipient: {
37674				name: '',
37675				email: '',
37676				customMessage: '',
37677				recipientAddress: {
37678					addressLine1: '',
37679					addressLine2: '',
37680					city: '',
37681					state: '',
37682					country: '',
37683					postalCode: ''
37684				}
37685			}
37686		});
37687
37688		// actions
37689		const updateFormState = update => {
37690			$$invalidate(0, formState = Object.freeze({ ...formState, ...update }));
37691			form.environment.debugLogging && console.log(formState);
37692			form.environment.onStateChanged(update, formState);
37693			return formState;
37694		};
37695
37696		const _attemptCompleteSection = () => {
37697			void attemptCompleteSection(form, formState, formActions);
37698		};
37699
37700		const _completeSection = () => {
37701			void completeSection(form, formState, formActions);
37702		};
37703
37704		const jumpToPartStart = partType => {
37705			void jumpToPart(partType, form, formActions);
37706		};
37707
37708		const _jumpToSection = sectionType => {
37709			void jumpToSection(sectionType, form, formActions);
37710		};
37711
37712		const onEvent = formEvent => {
37713			if (form.environment.previewMode) {
37714				return;
37715			}
37716
37717			void form.sectionFlow.eventHandlers[formEvent]?.(form, formState, formActions);
37718		};
37719
37720		const modifyRequestCount = (by, busyKey) => {
37721			const key = busyKey ?? defaultBusyKey;
37722
37723			if (requestCountByKey[key] === undefined) {
37724				requestCountByKey[key] = 0;
37725			}
37726
37727			requestCountByKey[key] += by;
37728
37729			if (requestCountByKey[key] < 0) {
37730				throw "Negative request count";
37731			}
37732
37733			const isBusy = Object.values(requestCountByKey).some(v => v > 0);
37734
37735			if (isBusy !== formState.isBusy) {
37736				updateFormState({ isBusy });
37737			}
37738
37739			const isBusyByKey = requestCountByKey[key] > 0;
37740
37741			if (isBusyByKey !== formState.isBusyByKey[key]) {
37742				updateFormState({
37743					isBusyByKey: {
37744						...formState.isBusyByKey,
37745						[key]: isBusyByKey
37746					}
37747				});
37748			}
37749		};
37750
37751		const formActions = {
37752			updateFormState,
37753			attemptCompleteSection: _attemptCompleteSection,
37754			completeSection: _completeSection,
37755			jumpToPartStart,
37756			jumpToSection: _jumpToSection,
37757			onEvent,
37758			incrementRequestCount: (busyKey = null) => modifyRequestCount(+1, busyKey),
37759			decrementRequestCount: (busyKey = null) => modifyRequestCount(-1, busyKey),
37760			getFormState: () => formState,
37761			apiUrlBase: form.environment.apiUrlBase
37762		};
37763
37764		// Preview
37765		if (form.environment.previewMode) {
37766			form.environment.previewBundle?.setupPreviewMode(form, formActions);
37767		}
37768
37769		// When the form first loads, check if this is a currently-registered user
37770		onMount(async () => {
37771			if (form.formType === "GIFT_REDEMPTION") {
37772				// Check user session before triggering form start
37773				await checkForRegisteredUser(formActions);
37774
37775				$$invalidate(1, isSessionChecked = true);
37776			}
37777
37778			formActions.onEvent(FormEvent.FORM_START);
37779			logDataLayerEvent(form, 'zephr_form_render', null);
37780		});
37781
37782		let formManuallyClosed = false;
37783		const closeForm = () => $$invalidate(11, formManuallyClosed = true);
37784		const formCanBeManuallyClosed = form.sectionFlow.canDismissFormManually(form) && form.formType !== 'CHANGE_SUBSCRIPTION';
37785
37786		$$self.$$set = $$props => {
37787			if ('formConfiguration' in $$props) $$invalidate(10, formConfiguration = $$props.formConfiguration);
37788		};
37789
37790		$$self.$$.update = () => {
37791			if ($$self.$$.dirty & /*formState*/ 1) {
37792				{
37793					const canAttemptSectionCompletion = form.sectionFlow.canAttemptSectionCompletion(form, formState);
37794
37795					if (canAttemptSectionCompletion != formState.canAttemptSectionCompletion) {
37796						updateFormState({ canAttemptSectionCompletion });
37797					}
37798				}
37799			}
37800
37801			if ($$self.$$.dirty & /*formManuallyClosed, formState*/ 2049) {
37802				$$invalidate(4, formIsOpen = !formManuallyClosed && formState.formPrerequisiteLoaded && !formState.formCannotBeActioned);
37803			}
37804
37805			if ($$self.$$.dirty & /*formState*/ 1) {
37806				// Unshown errors
37807				$$invalidate(3, topLevelError = formState.serverErrors[0] && (formState.currentSection.elements || []).filter(e => serverErrorForElement(e.type, formState)).length === 0
37808				? formState.serverErrors[0]
37809				: null);
37810			}
37811
37812			if ($$self.$$.dirty & /*formState*/ 1) {
37813				$$invalidate(2, isFullWidth = [...Object.values(sectionTypes)].find(s => s.type === formState.currentSection.type)?.fullWidth);
37814			}
37815		};
37816
37817		return [
37818			formState,
37819			isSessionChecked,
37820			isFullWidth,
37821			topLevelError,
37822			formIsOpen,
37823			form,
37824			isPaymentForm,
37825			formActions,
37826			closeForm,
37827			formCanBeManuallyClosed,
37828			formConfiguration,
37829			formManuallyClosed
37830		];
37831	}
37832
37833	class FormRoot extends SvelteComponent {
37834		constructor(options) {
37835			super();
37836			init(this, options, instance$1, create_fragment$1, safe_not_equal, { formConfiguration: 10 });
37837		}
37838	}
37839
37840	const defaultCssVariables = {
37841	    "--zephr-button-borderRadius": "9",
37842	    "--zephr-button-borderWidth": "0",
37843	    "--zephr-button-fontSize": "16",
37844	    "--zephr-button-fontWeight": "normal",
37845	    "--zephr-button-height": "50",
37846	    "--zephr-color-accent-main": "#dcf1fb",
37847	    "--zephr-color-accent-tinted": "#81cdf1",
37848	    "--zephr-color-action-main": "#006edb",
37849	    "--zephr-color-action-tinted": "#0f87ff",
37850	    "--zephr-color-background-main": "#fff",
37851	    "--zephr-color-background-tinted": "#ccc",
37852	    "--zephr-color-text-main": "#000",
37853	    "--zephr-color-text-tinted": "#333",
37854	    "--zephr-color-warning-main": "#d90b00",
37855	    "--zephr-color-warning-tinted": "#ff190d",
37856	    "--zephr-input-borderColor": "#333",
37857	    "--zephr-input-borderRadius": "5",
37858	    "--zephr-input-borderWidth": "1",
37859	    "--zephr-input-height": "50",
37860	    "--zephr-typography-title-fallbackFont": "sans-serif",
37861	    "--zephr-typography-title-font": "Roboto",
37862	    "--zephr-typography-body-fallbackFont": "sans-serif",
37863	    "--zephr-typography-body-font": "Roboto",
37864	};
37865	/* eslint-disable @typescript-eslint/restrict-template-expressions */
37866	const convertSiteStylesToCssVariables = (siteStyles) => {
37867	    const styles = {};
37868	    const convertToCssVariables = (styleGuide, variablePrefix) => {
37869	        if (styleGuide !== null && typeof styleGuide == "object") {
37870	            Object.entries(styleGuide).forEach(([key, value]) => {
37871	                convertToCssVariables(value, variablePrefix.concat(`${variablePrefix ? "-" : ""}${key}`));
37872	            });
37873	        }
37874	        else {
37875	            styles[`--zephr-${variablePrefix}`] = styleGuide;
37876	        }
37877	    };
37878	    convertToCssVariables(siteStyles, "");
37879	    return Object.entries({ ...defaultCssVariables, ...styles })
37880	        .map(([key, value]) => `${key}: ${value}`)
37881	        .join(';\n');
37882	};
37883
37884	function formTypeClass(formType) {
37885	    switch (formType) {
37886	        case FormType.CHANGE_SUBSCRIPTION:
37887	        case FormType.PAYMENT:
37888	        case FormType.GIFT_SUBSCRIPTION:
37889	            return "zephr-payment-form";
37890	        case FormType.REGISTRATION:
37891	        case FormType.COMPLETE_REGISTRATION:
37892	        case FormType.GIFT_REDEMPTION:
37893	            return "zephr-registration-form";
37894	        case FormType.CONTACT:
37895	            return "zephr-contact-form";
37896	        case FormType.DATA_CAPTURE:
37897	            return "zephr-data-capture-form";
37898	        default:
37899	            return "";
37900	    }
37901	}
37902
37903	const userAttributesValuesForPart = (partType, form, formState) => form.parts.find(p => p.type === partType)
37904	    .sections.flatMap(s => s.elements)
37905	    .filter(e => e.type === elementTypes.USER_ATTRIBUTE)
37906	    .map(e => e.config)
37907	    .reduce((current, elementConfig) => {
37908	    if (formState.userAttributes) {
37909	        return ({
37910	            ...current,
37911	            [elementConfig.slug]: formState.userAttributes[elementConfig.slug]
37912	        });
37913	    }
37914	    else {
37915	        return ({
37916	            ...current
37917	        });
37918	    }
37919	}, {});
37920
37921	const mapToServerError = (responseCode, responseMessage, formState) => {
37922	    if (responseCode === 401) {
37923	        if (responseMessage.indexOf("verification is required") > -1) {
37924	            return ServerError.EMAIL_VERIFICATION_REQUIRED;
37925	        }
37926	        if (responseMessage.indexOf("session must be authenticated") > -1) {
37927	            return ServerError.NO_AUTHENTICATED_SESSION;
37928	        }
37929	        if (formState.verificationCode) {
37930	            return ServerError.VERIFICATION_CODE_OR_PASSWORD_INCORRECT;
37931	        }
37932	        return ServerError.LOGIN_FAILED;
37933	    }
37934	    if (responseCode === 402 && responseMessage?.includes('this domain is not supported.')) {
37935	        return ServerError.BLOCKED_EMAIL_DOMAIN;
37936	    }
37937	    if (responseCode === 409) {
37938	        return ServerError.USER_ALREADY_EXISTS;
37939	    }
37940	    if (responseCode === 400 && responseMessage?.includes("The provided password is not strong enough")) {
37941	        return ServerError.PASSWORD_NOT_STRONG_ENOUGH;
37942	    }
37943	    if (responseCode === 404 && responseMessage?.includes("account")) {
37944	        return ServerError.ACCOUNT_NOT_FOUND;
37945	    }
37946	    if (responseCode === 404)
37947	        return ServerError.USER_DOES_NOT_EXIST;
37948	    if (responseCode === 429 && responseMessage?.includes("sessions limit reached")) {
37949	        return ServerError.TOO_MANY_SESSIONS;
37950	    }
37951	    if (responseCode === 429)
37952	        return ServerError.NO_ACCOUNT_ACCESS;
37953	    if (formState.socialSignin)
37954	        return ServerError.SOCIAL_SIGNIN_REGISTRATION_LOGIN_ERROR;
37955	    if (responseCode === 403 && responseMessage?.includes("Contact creation not enabled")) {
37956	        return ServerError.CONTACT_CREATION_NOT_ENABLED;
37957	    }
37958	    return ServerError.UNKNOWN_LOGIN_REGISTER_ERROR;
37959	};
37960
37961	const logConversion = (conversion, form, formActions) => {
37962	    if (!form.organisationConfiguration.ruleAnalyticsEnabled) {
37963	        return;
37964	    }
37965	    void request('zephr/public/rule-outcomes/v1/conversions', {
37966	        method: 'POST',
37967	        bodyObject: {
37968	            "conversion": conversion,
37969	            "ruleId": form.ruleId,
37970	            "outcomeId": form.outcomeId
37971	        }
37972	    }, formActions);
37973	};
37974
37975	const logConversionAfterRegistration = (form, formActions) => logConversion("REGISTERED", form, formActions);
37976
37977	const PATH_PARAM_NAME = "sharing_id";
37978	/**
37979	 * Extract a sharing ID from the page URL.
37980	 */
37981	const getProductSharingInvite = () => {
37982	    try {
37983	        const sharingId = new URLSearchParams(window.location.search).get(PATH_PARAM_NAME);
37984	        return sharingId ? { product_sharing_id: sharingId } : null;
37985	    }
37986	    catch {
37987	        // If there is any browser compatibility issue, ignore it
37988	        return null;
37989	    }
37990	};
37991	const removeSharingInviteFromUrl = (url) => {
37992	    try {
37993	        const r = new URL(url);
37994	        if (!r.searchParams.has(PATH_PARAM_NAME)) {
37995	            return url;
37996	        }
37997	        r.searchParams.delete(PATH_PARAM_NAME);
37998	        return r.href;
37999	    }
38000	    catch {
38001	        // If there is any browser compatibility issue, ignore it
38002	        return url;
38003	    }
38004	};
38005
38006	const toLoginPayload = (formState) => ({
38007	    identifiers: { email_address: formState.emailAddress },
38008	    validators: {
38009	        password: formState.password || undefined,
38010	        email_otp: formState.verificationCode || undefined,
38011	        token_exchange: formState.socialSigninToken || undefined
38012	    }
38013	});
38014	const preprocessorIdentity$2 = (slug, t) => t;
38015	const toRegistrationPayload = (form, formState) => {
38016	    const autoAppliedAttributes = formConfigAs(form).autoApplyAttributes ?? {};
38017	    const preprocessor = window.Blaize?.preProcessFormData ?? preprocessorIdentity$2;
38018	    const attributes = userAttributesValuesForPart(partTypes.ACCOUNT_VERIFICATION.type, form, formState);
38019	    const attributesWithAutoApplied = {
38020	        ...attributes,
38021	        ...autoAppliedAttributes
38022	    };
38023	    const productSharingData = getProductSharingInvite();
38024	    return preprocessor(form.id, {
38025	        identifiers: formState.socialSignin ? {} : { email_address: formState.emailAddress },
38026	        validators: {
38027	            password: formState.createPassword || undefined,
38028	            email_otp: formState.verificationCode || undefined,
38029	            token_exchange: formState.socialSigninToken || undefined
38030	        },
38031	        attributes: Object.keys(attributesWithAutoApplied).length ? attributesWithAutoApplied : undefined,
38032	        account_membership_code: formState.accountMembershipCode || undefined,
38033	        ...(productSharingData ?? {})
38034	    });
38035	};
38036	const register = async (form, formState, formActions) => {
38037	    const payload = toRegistrationPayload(form, formState);
38038	    const response = await request('blaize/register', {
38039	        method: "POST",
38040	        bodyObject: payload
38041	    }, formActions);
38042	    return processResponse$2(payload, response, form, formState, formActions);
38043	};
38044	const login = async (form, formState, formActions) => {
38045	    const payload = toLoginPayload(formState);
38046	    const response = await request('blaize/login', {
38047	        method: "POST",
38048	        bodyObject: payload
38049	    }, formActions);
38050	    return processResponse$2(null, response, form, formState, formActions);
38051	};
38052	const processResponse$2 = async (registrationPayload, response, form, formState, formActions) => {
38053	    registrationPayload ?
38054	        logDataLayerEvent(form, 'zephr_form_register', {
38055	            success: response?.ok
38056	        }) :
38057	        logDataLayerEvent(form, 'zephr_form_login', {
38058	            success: response?.ok
38059	        });
38060	    if (!response?.ok) {
38061	        if (formState.verificationCode) {
38062	            formActions.updateFormState({
38063	                verificationCodeValid: false
38064	            });
38065	        }
38066	        const responseMessage = (await response.json())?.message;
38067	        const serverError = mapToServerError(response.status, responseMessage, formState);
38068	        logDataLayerEvent(form, 'zephr_form_error', {
38069	            error: ServerError[serverError],
38070	        });
38071	        if (serverError === ServerError.PASSWORD_NOT_STRONG_ENOUGH) {
38072	            formActions.updateFormState({
38073	                dynamicServerErrorMessage: responseMessage,
38074	            });
38075	        }
38076	        formActions.updateFormState({
38077	            serverErrors: [serverError]
38078	        });
38079	        if (ServerErrors[serverError].jumpToPart) {
38080	            formActions.jumpToPartStart(ServerErrors[serverError].jumpToPart);
38081	        }
38082	        return Promise.resolve();
38083	    }
38084	    if (!formState.userExists) {
38085	        logConversionAfterRegistration(form, formActions);
38086	    }
38087	    return response.json()
38088	        .then(async (json) => {
38089	        const cookieInResponse = json.cookie?.includes("blaize_session");
38090	        if (cookieInResponse) {
38091	            document.cookie = json.cookie;
38092	        }
38093	        else {
38094	            if (!form.sectionFlow.canPartiallyRegister) {
38095	                console.warn("No cookie returned from login/register endpoint - most likely incorrect form configuration.");
38096	                formActions.updateFormState({
38097	                    serverErrors: [ServerError.NO_COOKIE_FROM_LOGIN_REGISTER_ERROR],
38098	                });
38099	                return Promise.resolve();
38100	            }
38101	        }
38102	        registrationPayload && window.Blaize?.postProcessFormData && window.Blaize.postProcessFormData(form.id, registrationPayload, json);
38103	        if (formState.verificationCode && formState.currentSection.elements.some(e => e.type === elementTypes.VERIFICATION_CODE)) {
38104	            formActions.updateFormState({
38105	                verificationCodeValid: true
38106	            });
38107	            await waitAfterCode(form);
38108	        }
38109	        formActions.updateFormState({
38110	            loginRegistrationComplete: true
38111	        });
38112	        return formActions.onEvent(FormEvent.LOGIN_REGISTRATION_COMPLETE);
38113	    });
38114	};
38115
38116	/**
38117	 * Submit user attributes in sections that are not part of registration.
38118	 */
38119	const submitUserAttributesForPart = async (partType, form, formState, formActions) => {
38120	    const attributes = userAttributesValuesForPart(partType, form, formState);
38121	    if (Object.keys(attributes).length === 0) {
38122	        return Promise.resolve();
38123	    }
38124	    const response = await request('blaize/profile', {
38125	        method: "PATCH",
38126	        bodyObject: attributes
38127	    }, formActions);
38128	    if (!response.ok) {
38129	        formActions.updateFormState({
38130	            serverErrors: [ServerError.INVALID_USER_ATTRIBUTES]
38131	        });
38132	        logDataLayerEvent(form, 'zephr_form_error', {
38133	            error: ServerError[ServerError.INVALID_USER_ATTRIBUTES],
38134	        });
38135	        throw `Error submitting user attributes ${JSON.stringify(response)}`;
38136	    }
38137	    return Promise.resolve();
38138	};
38139
38140	const CHANGE_SUBSCRIPTION_DEFAULT_CONVERSION_NAME = "CHANGE_SUBSCRIPTION";
38141	const logConversionAfterPurchase = (form, formActions) => logConversion(formConfigAs(form).changeSubscriptionMode
38142	    ? (formConfigAs(form).changeSubscriptionConversionName ?? CHANGE_SUBSCRIPTION_DEFAULT_CONVERSION_NAME)
38143	    : "CUSTOMER", form, formActions);
38144
38145	// Unique ID creation requires a high quality random # generator. In the browser we therefore
38146	// require the crypto API and do not support built-in fallback to lower quality random number
38147	// generators (like Math.random()).
38148	let getRandomValues;
38149	const rnds8 = new Uint8Array(16);
38150	function rng() {
38151	  // lazy load so that environments that need to polyfill have a chance to do so
38152	  if (!getRandomValues) {
38153	    // getRandomValues needs to be invoked in a context where "this" is a Crypto implementation.
38154	    getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);
38155
38156	    if (!getRandomValues) {
38157	      throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');
38158	    }
38159	  }
38160
38161	  return getRandomValues(rnds8);
38162	}
38163
38164	/**
38165	 * Convert array of 16 byte values to UUID string format of the form:
38166	 * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
38167	 */
38168
38169	const byteToHex = [];
38170
38171	for (let i = 0; i < 256; ++i) {
38172	  byteToHex.push((i + 0x100).toString(16).slice(1));
38173	}
38174
38175	function unsafeStringify(arr, offset = 0) {
38176	  // Note: Be careful editing this code!  It's been tuned for performance
38177	  // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434
38178	  return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];
38179	}
38180
38181	const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);
38182	var native = {
38183	  randomUUID
38184	};
38185
38186	function v4(options, buf, offset) {
38187	  if (native.randomUUID && !buf && !options) {
38188	    return native.randomUUID();
38189	  }
38190
38191	  options = options || {};
38192	  const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
38193
38194	  rnds[6] = rnds[6] & 0x0f | 0x40;
38195	  rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided
38196
38197	  if (buf) {
38198	    offset = offset || 0;
38199
38200	    for (let i = 0; i < 16; ++i) {
38201	      buf[offset + i] = rnds[i];
38202	    }
38203
38204	    return buf;
38205	  }
38206
38207	  return unsafeStringify(rnds);
38208	}
38209
38210	const pay = (form, formState, formActions) => submitUserAttributesForPart(partTypes.PAYMENT.type, form, formState, formActions)
38211	    .then(() => {
38212	    const completer = formState.mobilePaymentService == null
38213	        ? paymentProviderFor(form.organisationConfiguration.paymentProvider).completer
38214	        : mobilePaymentServiceFor(form.organisationConfiguration.paymentProvider).completer;
38215	    return completer(form, formState, formActions)
38216	        .then(() => {
38217	        const postFormSubmitMessage = {
38218	            error: null,
38219	            errorMessage: "",
38220	            success: true,
38221	            formSlug: form.id
38222	        };
38223	        const formEventPayload = JSON.stringify(postFormSubmitMessage);
38224	        // handle ios message
38225	        window?.webkit?.messageHandlers?.messageHandler?.postMessage(formEventPayload);
38226	        // handle android message
38227	        window?.AndroidFormEventListener?.processFormEvent(formEventPayload);
38228	        logConversionAfterPurchase(form, formActions);
38229	        formActions.updateFormState({
38230	            paymentProcessed: true
38231	        });
38232	        logDataLayerEvent(form, 'zephr_form_purchase', {
38233	            productId: formState.paymentOption.productId,
38234	            planId: formState.paymentOption.slug,
38235	            price: formState.paymentOptionPrices?.totalPrice
38236	        });
38237	        logDataLayerEvent(form, 'purchase', {
38238	            ecommerce: {
38239	                transaction_id: v4(),
38240	                value: formState.paymentOptionPrices?.totalPrice,
38241	                tax: formState.paymentOptionPrices?.taxPrice,
38242	                currency: getRelevantCurrency(form, formState),
38243	                coupon: formState.promoCode,
38244	                items: [{
38245	                        item_id: formState.paymentOption.slug,
38246	                        item_name: formState.paymentOption.productId,
38247	                        price: formState.paymentOptionPrices?.totalPrice,
38248	                        quantity: 1
38249	                    }]
38250	            }
38251	        });
38252	        if (formState.convertCancelSubscriptionToAcceptOffer) {
38253	            logDataLayerEvent(form, 'zephr_form_subscription_cancel_accept_offer', {
38254	                canceledProductId: formState.selectedSubscription.productId,
38255	                acceptedProductId: formState.paymentOption.productId,
38256	                productLabel: formState.paymentOption.label,
38257	                currency: formState.paymentOption.currencyCode,
38258	                amount: formState.paymentOptionPrices?.totalPrice
38259	            });
38260	        }
38261	        formActions.jumpToPartStart(partTypes.SUCCESS.type);
38262	        if (formConfigAs(form).changeSubscriptionMode) {
38263	            const changingFromSubscription = formState
38264	                .validChangeFromPlans
38265	                .find(plan => formState.paymentOption.slug === plan.planSlug && formState.paymentOption.productId === plan.productId)
38266	                .changesFromSubscription;
38267	            logDataLayerEvent(form, 'zephr_form_subscription_change', {
38268	                fromProductId: changingFromSubscription.productId,
38269	                fromProductAmount: changingFromSubscription.amount,
38270	                toProductId: formState.paymentOption.productId,
38271	                toProductAmount: formState.paymentOptionPrices.netPriceFormattedString,
38272	            });
38273	        }
38274	    }).catch(err => {
38275	        const serverError = formState.mobilePaymentService == null
38276	            ? ServerError.PAYMENT_PROCESSING_ERROR
38277	            : ServerError.MOBILE_PAYMENT_PROCESSING_ERROR;
38278	        console.error("Error completing payment", err);
38279	        logDataLayerEvent(form, 'zephr_form_payment_failure', {
38280	            reason: err
38281	        });
38282	        formActions.updateFormState({
38283	            mobilePaymentService: null,
38284	            serverErrors: [serverError]
38285	        });
38286	        logDataLayerEvent(form, 'zephr_form_error', {
38287	            error: ServerError[serverError],
38288	        });
38289	    });
38290	});
38291
38292	const calculateChangeSubscriptionProrate = async (form, formState, formActions) => {
38293	    if (!formConfigAs(form).changeSubscriptionMode) {
38294	        return;
38295	    }
38296	    formActions.updateFormState({
38297	        changeSubscriptionProrate: null
38298	    });
38299	    const prorateCalculator = paymentProviderFor(form.organisationConfiguration.paymentProvider)
38300	        .changeSubscriptionProrateCalculator;
38301	    if (!prorateCalculator) {
38302	        return;
38303	    }
38304	    const prorate = await prorateCalculator(form, formState, formActions);
38305	    formActions.updateFormState({
38306	        changeSubscriptionProrate: prorate
38307	    });
38308	};
38309
38310	const getSubscriptionParam = (url) => {
38311	    const urlObj = new URL(url);
38312	    return urlObj.searchParams.get("subscription");
38313	};
38314
38315	/**
38316	 * Checks if the current user has payment methods stored in their Zuora billing account
38317	 * Only runs for zuora-billing payment provider
38318	 */
38319	const checkUserHasPaymentMethods = async (form, formActions) => {
38320	    // Only check for zuora-billing provider
38321	    if (form.organisationConfiguration.paymentProvider !== 'zuora-billing') {
38322	        return true; // Assume other providers have payment methods or don't need this check
38323	    }
38324	    try {
38325	        const response = await request('plugins/public/zuora-billing/payment-methods', {
38326	            method: 'GET'
38327	        }, formActions);
38328	        const data = await response.json();
38329	        // Check if user has any credit cards stored
38330	        return data.creditCards && data.creditCards[0]?.id;
38331	    }
38332	    catch (error) {
38333	        console.warn('Unable to check payment methods, assuming user has payment methods:', error);
38334	        // If we can't check, assume they have payment methods to avoid blocking the flow
38335	        return true;
38336	    }
38337	};
38338
38339	const getChangeFromPlans = (subscriptions, form) => {
38340	    return subscriptions.length === 0 ? [] :
38341	        formConfigAs(form).paymentOptions.map(paymentOption => {
38342	            const mapping = (formConfigAs(form).changeSubscriptionPlanMappings ?? [])
38343	                .find(mapping => mapping.toPlan.planSlug === paymentOption.slug
38344	                && mapping.toPlan.productId === paymentOption.productId);
38345	            if (!mapping) {
38346	                return;
38347	            }
38348	            const validSubscriptions = subscriptions.filter(subscription => 
38349	            // Ignore if subscription is for the destination payment option
38350	            !(subscription.planId === paymentOption.slug && subscription.productId === paymentOption.productId)
38351	                &&
38352	                    (
38353	                    // Ignore if subscription plan is not in 'fromPlans', unless allowing any plan
38354	                    mapping.fromAnyPlan ||
38355	                        mapping.fromPlans.some(fromPlan => ((!subscription.multiphasePlan && fromPlan.planSlug === subscription.planId) ||
38356	                            subscriptionMatchesMultiphasePlan(fromPlan, subscription))
38357	                            && fromPlan.productId === subscription.productId)));
38358	            if (validSubscriptions.length === 0) {
38359	                return;
38360	            }
38361	            if (validSubscriptions.length > 1) {
38362	                console.log("Found multiple valid subscriptions to move to payment option, selecting the first", paymentOption);
38363	            }
38364	            return {
38365	                planSlug: paymentOption.slug,
38366	                productId: paymentOption.productId,
38367	                changesFromSubscription: subscriptions[0],
38368	            };
38369	        }
38369).filter(Boolean);
38370	};
38371	const subscriptionMatchesMultiphasePlan = (fromPlan, subscription) => {
38372	    if (!subscription.multiphasePlan) {
38373	        return false;
38374	    }
38375	    const planSlug = fromPlan.planSlug;
38376	    const multiphasePlan = subscription.multiphasePlanMappings?.[planSlug];
38377	    if (!multiphasePlan) {
38378	        return false;
38379	    }
38380	    return multiphasePlan.phases.some(phase => phase.planId === subscription.planId);
38381	};
38382	const loadExistingSubscriptions$1 = async (form, formState, formActions, hasDynamicOfferAttached, validPlansRequired) => {
38383	    const subscriptionLoader = paymentProviderFor(form.organisationConfiguration.paymentProvider).existingSubscriptionLoader;
38384	    if (!subscriptionLoader) {
38385	        console.error(`Existing subscription loader not configured for ${form.organisationConfiguration.paymentProvider}`);
38386	        formActions.updateFormState({
38387	            formCannotBeActioned: true
38388	        });
38389	        return;
38390	    }
38391	    let subscriptions;
38392	    try {
38393	        subscriptions = await subscriptionLoader(form, formState, formActions, true);
38394	    }
38395	    catch (err) {
38396	        console.error("Unable to load subscriptions", err);
38397	        formActions.updateFormState({
38398	            formCannotBeActioned: true
38399	        });
38400	        return;
38401	    }
38402	    // Check if payment method setup is required
38403	    const paymentConfig = formConfigAs(form);
38404	    let requiresPaymentMethodSetup = false;
38405	    if (paymentConfig.allowNoPaymentMethodUpgrade && form.organisationConfiguration.paymentProvider === 'zuora-billing') {
38406	        const hasPaymentMethods = await checkUserHasPaymentMethods(form, formActions);
38407	        if (!hasPaymentMethods) {
38408	            requiresPaymentMethodSetup = true;
38409	        }
38410	    }
38411	    const subscriptionQueryParamId = getSubscriptionParam(window.location.href);
38412	    if (subscriptionQueryParamId) {
38413	        const subscriptionMatched = subscriptions.filter(sub => sub.externalId === subscriptionQueryParamId);
38414	        if (subscriptionMatched.length && getChangeFromPlans(subscriptionMatched, form).length) {
38415	            subscriptions = subscriptionMatched;
38416	        }
38417	    }
38418	    if (hasDynamicOfferAttached) {
38419	        filterDynamicOfferChangeFromPlans(subscriptions, formState, formActions, requiresPaymentMethodSetup);
38420	        return subscriptions;
38421	    }
38422	    const changeFromPlans = getChangeFromPlans(subscriptions, form);
38423	    const selectionMode = formConfigAs(form).subscriptionSelectionMode;
38424	    if (subscriptions.length === 0) {
38425	        console.warn("Not showing form as user has no active subscriptions");
38426	    }
38427	    else if (changeFromPlans.length === 0 && !selectionMode && validPlansRequired) {
38428	        console.warn("Not showing form as no payment options can be actioned with the user's current subscriptions");
38429	    }
38430	    if (selectionMode) {
38431	        subscriptions = subscriptions.map(subscription => {
38432	            if (formConfigAs(form).changeSubscriptionPlanMappings.some(m => m.fromAnyPlan || m.fromPlans.some(fromPlan => ((!subscription.multiphasePlan && fromPlan.planSlug === subscription.planId) ||
38433	                subscriptionMatchesMultiphasePlan(fromPlan, subscription))
38434	                && fromPlan.productId === subscription.productId))) {
38435	                subscription.cannotBeChanged = false;
38436	            }
38437	            else {
38438	                subscription.cannotBeChanged = true;
38439	            }
38440	            return subscription;
38441	        });
38442	    }
38443	    formActions.updateFormState({
38444	        existingSubscriptions: subscriptions,
38445	        formCannotBeActioned: changeFromPlans.length === 0 && !selectionMode && validPlansRequired && !requiresPaymentMethodSetup,
38446	        validChangeFromPlans: changeFromPlans,
38447	        formPrerequisiteLoaded: true,
38448	        requiresPaymentMethodSetup,
38449	        showPaymentMethodFlowFirst: requiresPaymentMethodSetup,
38450	    });
38451	    return subscriptions;
38452	};
38453	const filterDynamicOfferChangeFromPlans = (subscriptions, formState, formActions, requiresPaymentMethodSetup) => {
38454	    if (subscriptions.length === 0) {
38455	        console.log("No subscriptions available.");
38456	        formActions.updateFormState({
38457	            existingSubscriptions: [],
38458	            formCannotBeActioned: true,
38459	            validChangeFromPlans: [],
38460	            formPrerequisiteLoaded: true,
38461	            requiresPaymentMethodSetup,
38462	            showPaymentMethodFlowFirst: requiresPaymentMethodSetup,
38463	        });
38464	        return;
38465	    }
38466	    const dynamicOffer = formState.dynamicOfferResult;
38467	    if (!dynamicOffer) {
38468	        console.log("No dynamic offer result available.");
38469	    }
38470	    // Filter payment plans from dynamic offers that the user is not already subscribed to and matches the currency of existing subscriptions.
38471	    const changeFromPlans = dynamicOffer?.products?.flatMap(product => product.paymentPlans.filter(plan => {
38472	        const isSubscribed = subscriptions.some(sub => sub.planId === plan.planId && sub.productId === product.id);
38473	        const currencyMatch = subscriptions.every(sub => plan.charges.every(charge => charge.prices?.some(price => price.currency === sub.currency)));
38474	        return !isSubscribed && currencyMatch;
38475	    }
38475).map(plan => ({
38476	        planSlug: plan.planId,
38477	        productId: product.id,
38478	        changesFromSubscription: subscriptions.find(sub => plan.charges.every(charge => charge.prices?.some(price => price.currency === sub.currency)))
38479	    })).filter(plan => {
38480	        const hasChangesFromSubscription = !!plan.changesFromSubscription;
38481	        return hasChangesFromSubscription;
38482	    })) ?? [];
38483	    formActions.updateFormState({
38484	        existingSubscriptions: subscriptions,
38485	        formCannotBeActioned: changeFromPlans.length === 0 && !requiresPaymentMethodSetup,
38486	        validChangeFromPlans: changeFromPlans,
38487	        formPrerequisiteLoaded: true,
38488	        requiresPaymentMethodSetup,
38489	        showPaymentMethodFlowFirst: requiresPaymentMethodSetup,
38490	    });
38491	};
38492
38493	const loadExistingSubscriptions = async (form, formState, formActions, activeOnly) => {
38494	    const provider = form.organisationConfiguration.paymentProvider;
38495	    const loader = paymentProviderFor(provider)?.existingSubscriptionLoader;
38496	    if (!loader) {
38497	        console.error(`❌ [loadExistingSubscriptions] Existing subscription loader not configured for ${provider}`);
38498	        return [];
38499	    }
38500	    const existingSubscriptions = loader ? await loader(form, formState, formActions, activeOnly) : [];
38501	    formActions.updateFormState({
38502	        existingSubscriptions
38503	    });
38504	    return existingSubscriptions;
38505	};
38506
38507	const formStartAction$9 = async (form, formState, formActions) => {
38508	    const hasGifts = form.formType === FormType.LIST_GIFT_SUBSCRIPTIONS_SENT
38509	        || (form.formType === FormType.LIST_SUBSCRIPTIONS && form.organisationConfiguration.paymentProvider.includes('zuora-billing'));
38510	    // Load gift subscriptions if applicable (for sent gifts or regular subscriptions that need to show received gifts)
38511	    if (hasGifts) {
38512	        // Set loading state to true first
38513	        formActions.updateFormState({
38514	            loadingGiftSubscriptions: true
38515	        });
38516	        // Get the mock data outside the try block so it's accessible in the catch block
38517	        let allGiftSubscriptionsData = [];
38518	        // For preview mode, we can skip the API call and use the mock data directly
38519	        if (form.environment?.previewMode) {
38520	            allGiftSubscriptionsData = [
38521	                // Received gift (current user is recipient)
38522	                {
38523	                    gift_code: "GIFT-PREVIEW-1",
38524	                    subscription_number: "gift-sub-preview-1",
38525	                    status: "REDEEMED",
38526	                    is_purchaser: false,
38527	                    is_recipient: true,
38528	                    amount: "GBP 99/year",
38529	                    currency: "GBP",
38530	                    currentTermPeriodType: "Year",
38531	                    tenant_id: "organization_tenant_id",
38532	                    purchaser_user_id: "user_sender_12345",
38533	                    recipient_user_id: "user_current",
38534	                    recipient_email: "[email protected]",
38535	                    recipientFirstName: "John",
38536	                    recipientLastName: "Smith",
38537	                    message: "Enjoy your premium gift subscription!",
38538	                    subscriptionType: "Premium Digital",
38539	                    subscriptionStartDate: "January 1, 2025",
38540	                    subscriptionEndDate: "January 1, 2026",
38541	                    error_reason: null,
38542	                    host: "example.com",
38543	                    recipient_zuora_account_id: "account_123"
38544	                },
38545	                // Sent gift (current user is purchaser)
38546	                {
38547	                    gift_code: "GIFT-PREVIEW-2",
38548	                    subscription_number: "gift-sub-preview-2",
38549	                    status: "REDEEMED",
38550	                    is_purchaser: true,
38551	                    is_recipient: false,
38552	                    amount: "GBP 50/year",
38553	                    currency: "GBP",
38554	                    currentTermPeriodType: "Year",
38555	                    tenant_id: "organization_tenant_id",
38556	                    purchaser_user_id: "user_current",
38557	                    recipient_user_id: "user_recipient_12345",
38558	                    recipient_email: "[email protected]",
38559	                    recipientFirstName: "Jane",
38560	                    recipientLastName: "Doe",
38561	                    message: "Here's your gift subscription!",
38562	                    subscriptionType: "Basic Digital",
38563	                    subscriptionStartDate: "February 15, 2025",
38564	                    subscriptionEndDate: "February 15, 2026",
38565	                    error_reason: null,
38566	                    host: "example.com",
38567	                    recipient_zuora_account_id: "account_456"
38568	                },
38569	                // Pending gift (not yet redeemed)
38570	                {
38571	                    gift_code: "GIFT-PREVIEW-3",
38572	                    subscription_number: "gift-sub-preview-3",
38573	                    status: "PENDING",
38574	                    is_purchaser: true,
38575	                    is_recipient: false,
38576	                    amount: "GBP 50/year",
38577	                    currency: "GBP",
38578	                    currentTermPeriodType: "Year",
38579	                    tenant_id: "organization_tenant_id",
38580	                    purchaser_user_id: "user_current",
38581	                    recipient_user_id: null,
38582	                    recipient_email: "[email protected]",
38583	                    recipientFirstName: "",
38584	                    recipientLastName: "",
38585	                    message: "A gift subscription for you!",
38586	                    subscriptionType: "Basic Digital",
38587	                    subscriptionStartDate: "March 1, 2025",
38588	                    subscriptionEndDate: "March 1, 2026",
38589	                    error_reason: null,
38590	                    host: "example.com",
38591	                    recipient_zuora_account_id: null
38592	                }
38593	            ];
38594	            formActions.updateFormState({
38595	                giftSubscriptions: allGiftSubscriptionsData,
38596	                formPrerequisiteLoaded: true,
38597	                loadingGiftSubscriptions: false
38598	            });
38599	        }
38600	        else {
38601	            try {
38602	                formActions.updateFormState({
38603	                    loadingSubscriptions: true
38604	                });
38605	                // loads in subscriptions and gift data
38606	                await loadGiftSubscriptions(form, formState, formActions);
38607	                formActions.updateFormState({
38608	                    formPrerequisiteLoaded: true,
38609	                    loadingGiftSubscriptions: false
38610	                });
38611	            }
38612	            catch (error) {
38613	                console.error('❌ [LIST_SUBSCRIPTIONS] Error loading gift subscriptions:', error);
38614	                formActions.updateFormState({
38615	                    formPrerequisiteLoaded: true,
38616	                    serverErrors: [
38617	                        ServerError.UNKNOWN
38618	                    ]
38619	                });
38620	            }
38621	        }
38622	        formActions.updateFormState({
38623	            loadingGiftSubscriptions: false,
38624	            loadingSubscriptions: false
38625	        });
38626	    }
38627	    // Load regular subscriptions for the standard list view
38628	    try {
38629	        formActions.updateFormState({
38630	            loadingSubscriptions: true
38631	        });
38632	        await loadExistingSubscriptions(form, formState, formActions, false);
38633	    }
38634	    catch (error) {
38635	        console.error("❌ [LIST_SUBSCRIPTIONS] Error loading subscriptions", error);
38636	        formActions.updateFormState({
38637	            serverErrors: [ServerError.PAYMENT_PROCESSING_ERROR],
38638	        });
38639	    }
38640	    finally {
38641	        formActions.updateFormState({
38642	            loadingSubscriptions: false,
38643	            loadingGiftSubscriptions: false,
38644	        });
38645	    }
38646	};
38647	const goBack$2 = async (_, __, formActions) => {
38648	    formActions.jumpToPartStart(partTypes.LIST_SUBSCRIPTIONS.type);
38649	    return Promise.resolve();
38650	};
38651	const changePayment = async (form, formState, formActions) => {
38652	    const completer = paymentProviderFor(form.organisationConfiguration.paymentProvider).changePaymentCompleter;
38653	    await completer(form, formState, formActions)
38654	        .then(async () => {
38655	        formActions.updateFormState({
38656	            paymentProviderFormBusy: false
38657	        });
38658	        const paymentConfig = formConfigAs(form);
38659	        if (paymentConfig.changeSubscriptionMode && formState.paymentMethodSetupComplete) {
38660	            const subscriptionCompleter = paymentProviderFor(form.organisationConfiguration.paymentProvider).completer;
38661	            await subscriptionCompleter(form, formState, formActions)
38662	                .then(() => {
38663	                formActions.jumpToPartStart(partTypes.SUCCESS.type);
38664	                logDataLayerEvent(form, 'zephr_form_subscription_change', null);
38665	            })
38666	                .catch(err => {
38667	                console.error("Error changing subscription after adding payment method:", err);
38668	                formActions.updateFormState({
38669	                    serverErrors: [ServerError.PAYMENT_PROCESSING_ERROR]
38670	                });
38671	            });
38672	        }
38673	        else {
38674	            formActions.jumpToPartStart(partTypes.SUCCESS.type);
38675	            logDataLayerEvent(form, 'zephr_form_payment_method_changed', null);
38676	        }
38677	    }).catch(err => {
38678	        const serverError = formState.mobilePaymentService == null
38679	            ? ServerError.PAYMENT_PROCESSING_ERROR
38680	            : ServerError.MOBILE_PAYMENT_PROCESSING_ERROR;
38681	        console.error("Error completing payment change", err);
38682	        formActions.updateFormState({
38683	            mobilePaymentService: null,
38684	            paymentProviderFormBusy: false,
38685	            serverErrors: [serverError]
38686	        });
38687	        logDataLayerEvent(form, 'zephr_form_error', {
38688	            error: ServerError[serverError],
38689	        });
38690	    });
38691	};
38692	// NB: If you change these event handlers, you must also consider updating the event handlers in giftSubscriptionsListSectionFlow.ts
38693	const eventHandlers$b = {
38694	    [FormEvent.FORM_START]: formStartAction$9,
38695	    [FormEvent.GO_BACK]: goBack$2,
38696	    [FormEvent.PART_CHANGE_PAYMENT_COMPLETE]: changePayment,
38697	};
38698	const sectionVisibilities$9 = [];
38699	const canAttemptSectionCompletion$a = (_, formState) => {
38700	    return !formState.elementValidity
38701	        .filter((e) => e.partType === formState.currentPart.type &&
38702	        e.sectionType === formState.currentSection.type &&
38703	        e.sectionOrder === formState.currentSection.order)
38704	        .some((e) => !e.isValid);
38705	};
38706	const extraElements$2 = [
38707	    {
38708	        type: elementTypes.PAYMENT_PRE_LOADER,
38709	        order: -1,
38710	    },
38711	];
38712	const listSubscriptionsSectionFlow = {
38713	    extraElements: extraElements$2,
38714	    eventHandlers: eventHandlers$b,
38715	    sectionVisibilities: sectionVisibilities$9,
38716	    canAttemptSectionCompletion: canAttemptSectionCompletion$a,
38717	    canDismissFormManually: () => false,
38718	    formRequiresPrerequisiteLoading: () => false,
38719	};
38720
38721	/**
38722	 * Map of possible movements through the form sections.
38723	 */
38724	let checkForRegisteredUserResolve;
38725	const checkForRegisteredUserPromise = new Promise(function (resolve) {
38726	    checkForRegisteredUserResolve = resolve;
38727	});
38728	const formStartAction$8 = async (form, _, formActions) => {
38729	    const hasDynamicOfferAttached = !!formConfigAs(form).dynamicOffer?.id
38730	        || !!formConfigAs(form).dynamicOfferPreview;
38731	    if (hasDynamicOfferAttached) {
38732	        await getDynamicOffer(form, formActions).catch((e) => { console.error('Error loading Dynamic Offer', e); });
38733	    }
38734	    return checkForRegisteredUser(formActions)
38735	        .then(async (alreadyRegistered) => {
38736	        checkForRegisteredUserResolve(checkForRegisteredUserResolve);
38737	        if (formConfigAs(form).changeSubscriptionMode) {
38738	            formActions.updateFormState({ formCannotBeActioned: !alreadyRegistered });
38739	            await loadExistingSubscriptions$1(form, formActions.getFormState(), formActions, hasDynamicOfferAttached, true);
38740	            const subscriptionQueryParam = getSubscriptionParam(window.location.href);
38741	            if (subscriptionQueryParam && formActions.getFormState().existingSubscriptions.length === 1) {
38742	                formActions.jumpToPartStart(partTypes.PLAN_SELECT.type);
38743	            }
38744	        }
38745	    });
38746	};
38747	const onPlanSelectComplete$2 = (form, formState, formActions) => 
38748	// After plan select, wait to see if the user is already logged in
38749	checkForRegisteredUserPromise
38750	    .then(async () => {
38751	    const state = formActions.getFormState();
38752	    if (state.userSession || state.loginRegistrationComplete) {
38753	        const updatedState = await getProductAddons(form, state, formActions);
38754	        void calculatePrices(form, updatedState, formActions)
38755	            .then(formState => logDataLayerEvents(form, formState));
38756	        void calculateChangeSubscriptionProrate(form, updatedState, formActions);
38757	        // If payment method setup is required, go to change-payment part first
38758	        if (updatedState.requiresPaymentMethodSetup && !updatedState.paymentMethodSetupComplete) {
38759	            formActions.jumpToPartStart(partTypes.CHANGE_PAYMENT.type);
38760	        }
38761	        else {
38762	            formActions.jumpToPartStart(partTypes.PAYMENT.type);
38763	        }
38764	    }
38765	    else {
38766	        void calculatePrices(form, formState, formActions)
38767	            .then(formState => logDataLayerEvents(form, formState));
38768	        void calculateChangeSubscriptionProrate(form, formState, formActions);
38769	        formActions.jumpToPartStart(partTypes.ACCOUNT_VERIFICATION.type);
38770	    }
38771	});
38772	const logDataLayerEvents = (form, formState) => {
38773	    // don't trigger data layer events for other form types that override this flow (i.e. gift subscription form)
38774	    if (form.organisationConfiguration.trackFormDataLayerEvents && form.formType == FormType.PAYMENT) {
38775	        const paymentOption = formState.paymentOption;
38776	        // await calculatePrices(form, formActions.getFormState(), formActions);
38777	        const paymentOptionPrice = formState.paymentOptionPrices?.totalPrice;
38778	        logDataLayerEvent(form, 'zephr_form_payment_option_selected', {
38779	            productId: paymentOption.productId,
38780	            planId: paymentOption.slug,
38781	            price: paymentOptionPrice,
38782	        });
38783	        logDataLayerEvent(form, 'select_item', {
38784	            ecommerce: {
38785	                items: [{
38786	                        item_id: paymentOption.slug,
38787	                        item_name: paymentOption.productId,
38788	                        price: paymentOptionPrice,
38789	                        quantity: 1
38790	                    }]
38791	            }
38792	        });
38793	        logDataLayerEvent(form, 'add_to_cart', {
38794	            ecommerce: {
38795	                currency: formConfigAs(form).formCurrency ?? paymentOption?.currencyCode,
38796	                value: paymentOptionPrice,
38797	                items: [{
38798	                        item_id: paymentOption.slug,
38799	                        item_name: paymentOption.productId,
38800	                        price: paymentOptionPrice,
38801	                        quantity: 1
38802	                    }]
38803	            }
38804	        });
38805	    }
38806	};
38807	const onAccountVerificationComplete$1 = (form, formState, formActions) => (formState.userExists ? login : register)(form, formState, formActions);
38808	const onSuccessComplete$1 = (form, formState, formActions) => submitUserAttributesForPart(partTypes.SUCCESS.type, form, formState, formActions)
38809	    .then(() => {
38810	    window.location.reload();
38811	});
38812	const onLoginRegister = (form, _, formActions) => getProductAddons(form, formActions.getFormState(), formActions)
38813	    .then(() => calculatePrices(form, formActions.getFormState(), formActions))
38814	    .then(() =>
38814 formActions.jumpToPartStart(partTypes.PAYMENT.type));
38815	const onSubscriptionSelectComplete$3 = (form, formState, formActions) => {
38816	    const changeFromPlans = getChangeFromPlans([formState.selectedSubscription], form);
38817	    formActions.updateFormState({
38818	        existingSubscriptions: [formState.selectedSubscription],
38819	        formCannotBeActioned: changeFromPlans.length === 0,
38820	        validChangeFromPlans: changeFromPlans,
38821	        formPrerequisiteLoaded: true,
38822	    });
38823	    formActions.jumpToPartStart(partTypes.PLAN_SELECT.type);
38824	};
38825	const eventHandlers$a = {
38826	    [FormEvent.FORM_START]: formStartAction$8,
38827	    [FormEvent.LOGIN_REGISTRATION_COMPLETE]: onLoginRegister,
38828	    [FormEvent.SECTION_EMAIL_COMPLETE]: onEmailEntered,
38829	    [FormEvent.SECTION_PASSWORD_RESET_COMPLETE]: resetPassword,
38830	    [FormEvent.SECTION_FORGOT_PASSWORD_COMPLETE]: verifiyPasswordResetCode,
38831	    [FormEvent.PART_PLAN_SELECT_COMPLETE]: onPlanSelectComplete$2,
38832	    [FormEvent.PART_ACCOUNT_VERIFICATION_COMPLETE]: onAccountVerificationComplete$1,
38833	    [FormEvent.PART_PAYMENT_COMPLETE]: pay,
38834	    [FormEvent.PART_SUCCESS_COMPLETE]: onSuccessComplete$1,
38835	    [FormEvent.SELECT_SUBSCRIPTION_COMPLETE]: onSubscriptionSelectComplete$3,
38836	    [FormEvent.PART_CHANGE_PAYMENT_COMPLETE]: changePayment,
38837	};
38838	const sectionVisibilities$8 = [
38839	    {
38840	        type: sectionTypes.EMAIL.type,
38841	        isDisplayedInProgressBar: true,
38842	        isVisible: (form) => !formConfigAs(form).changeSubscriptionMode
38843	    },
38844	    {
38845	        type: sectionTypes.LOGIN_PASSWORD.type,
38846	        isDisplayedInProgressBar: false,
38847	        isVisible: (form, formState) => formConfigAs(form).usePassword && formState.userExists && !formState.socialSignin
38848	    },
38849	    {
38850	        type: sectionTypes.PASSWORD_SETUP.type,
38851	        isDisplayedInProgressBar: false,
38852	        isVisible: (form, formState) => formConfigAs(form).usePassword && !formState.userExists && !formState.socialSignin
38853	    },
38854	    {
38855	        type: sectionTypes.SUCCESS.type,
38856	        isDisplayedInProgressBar: false,
38857	        isVisible: () => true
38858	    },
38859	    {
38860	        type: sectionTypes.PASSWORD_RESET.type,
38861	        isDisplayedInProgressBar: false,
38862	        isVisible: (form, formState) => formConfigAs(form).usePassword && formState.forgotPassword
38863	    },
38864	    {
38865	        type: sectionTypes.FORGOT_PASSWORD.type,
38866	        isDisplayedInProgressBar: false,
38867	        isVisible: (form, formState) => formConfigAs(form).usePassword && formState.forgotPassword
38868	    },
38869	    {
38870	        type: sectionTypes.VERIFICATION_CODE_LOGIN.type,
38871	        isDisplayedInProgressBar: false,
38872	        isVisible: (form, formState) => (formState.userExists && (formConfigAs(form).useVerificationCodes || formState.socialSignin)) ?? false
38873	    },
38874	    {
38875	        type: sectionTypes.VERIFICATION_CODE_REGISTRATION.type,
38876	        isDisplayedInProgressBar: false,
38877	        isVisible: (form, formState) => (!formState.userExists && (formConfigAs(form).useVerificationCodes || formState.emailIsContact)) ?? false
38878	    },
38879	    {
38880	        type: sectionTypes.REGISTRATION_CUSTOM.type,
38881	        isDisplayedInProgressBar: true,
38882	        isVisible: (form, formState) => !formState.userExists
38883	    },
38884	    {
38885	        type: sectionTypes.CHANGE_PAYMENT.type,
38886	        isDisplayedInProgressBar: false,
38887	        isVisible: (form, formState) => {
38888	            const paymentConfig = formConfigAs(form);
38889	            return paymentConfig.changeSubscriptionMode &&
38890	                paymentConfig.allowNoPaymentMethodUpgrade &&
38891	                formState.requiresPaymentMethodSetup === true &&
38892	                !formState.paymentMethodSetupComplete;
38893	        }
38894	    }
38895	];
38896	const canAttemptSectionCompletion$9 = (form, formState) => {
38897	    const providerConfig = paymentProviderFor(form.organisationConfiguration.paymentProvider);
38898	    return !formState.elementValidity.filter(e => e.partType === formState.currentPart.type &&
38899	        e.sectionType === formState.currentSection.type &&
38900	        e.sectionOrder === formState.currentSection.order)
38901	        .filter(e => !(e.elementType === elementTypes.PAYMENT
38902	        && providerConfig.canAttemptIncompletePaymentFormSubmission
38903	        && formState.paymentProviderFormLoaded))
38904	        .some(e => !e.isValid);
38905	};
38906	const canDismissFormManually = (form) => formConfigAs(form).changeSubscriptionMode;
38907	const formRequiresPrerequisiteLoading = (form) => formConfigAs(form).changeSubscriptionMode;
38908	const extraElements$1 = [
38909	    {
38910	        type: elementTypes.PAYMENT_PRE_LOADER,
38911	        order: -1,
38912	    },
38913	];
38914	const sectionFlow$9 = {
38915	    extraElements: extraElements$1,
38916	    sectionVisibilities: sectionVisibilities$8,
38917	    eventHandlers: eventHandlers$a,
38918	    canAttemptSectionCompletion: canAttemptSectionCompletion$9,
38919	    canDismissFormManually,
38920	    formRequiresPrerequisiteLoading
38921	};
38922
38923	/**
38924	 * Map of possible movements through the form sections for reg forms.
38925	 */
38926	const onAccountVerificationComplete = (form, formState, formActions) => (formState.userExists ? login : register)(form, formState, formActions);
38927	const onLoginRegisterComplete$1 = async (form, formState, formActions) => {
38928	    const config = formConfigAs(form);
38929	    const isPasswordless = getFormIsPasswordless(form);
38930	    if (!formState.userExists && (isPasswordless || (form.organisationConfiguration.requireEmailVerfication && !config.useVerificationCodes && !formState.socialSignin))) {
38931	        await sendLink(form, 'register', formState.emailAddress, formActions);
38932	        await jumpToSection(sectionTypes.EMAIL_VERIFIED.type, form, formActions);
38933	        return Promise.resolve();
38934	    }
38935	    if (config.showSuccessOnFormCompletion && !formState.userExists) {
38936	        await jumpToSection(sectionTypes.SUCCESS.type, form, formActions);
38937	    }
38938	    else {
38939	        window.location.href = removeSharingInviteFromUrl(window.location.href);
38940	        if (window.flowpoint) {
38941	            window.flowpoint.track("Registration/Login Form Submitted");
38942	        }
38943	    }
38944	    return Promise.resolve();
38945	};
38946	const onSuccessComplete = () => {
38947	    window.location.href = removeSharingInviteFromUrl(window.location.href);
38948	    if (window.flowpoint) {
38949	        window.flowpoint.track("Registration/Login Form Submitted");
38950	    }
38951	    return Promise.resolve();
38952	};
38953	const eventHandlers$9 = {
38954	    [FormEvent.LOGIN_REGISTRATION_COMPLETE]: onLoginRegisterComplete$1,
38955	    [FormEvent.SECTION_EMAIL_COMPLETE]: onEmailEntered,
38956	    [FormEvent.SECTION_PASSWORD_RESET_COMPLETE]: resetPassword,
38957	    [FormEvent.SECTION_FORGOT_PASSWORD_COMPLETE]: verifiyPasswordResetCode,
38958	    [FormEvent.PART_ACCOUNT_VERIFICATION_COMPLETE]: onAccountVerificationComplete,
38959	    [FormEvent.PART_SUCCESS_COMPLETE]: onSuccessComplete,
38960	};
38961	const sectionVisibilities$7 = [
38962	    {
38963	        type: sectionTypes.EMAIL.type,
38964	        isDisplayedInProgressBar: true,
38965	        isVisible: () => true
38966	    },
38967	    {
38968	        type: sectionTypes.LOGIN_PASSWORD.type,
38969	        isDisplayedInProgressBar: true,
38970	        isVisible: (form, formState) => formConfigAs(form).usePassword && formState.userExists && !formState.socialSignin
38971	    },
38972	    {
38973	        type: sectionTypes.PASSWORD_SETUP.type,
38974	        isDisplayedInProgressBar: true,
38975	        isVisible: (form, formState) => formConfigAs(form).usePassword && !formState.userExists && !formState.socialSignin
38976	    },
38977	    {
38978	        type: sectionTypes.PASSWORD_RESET.type,
38979	        isDisplayedInProgressBar: false,
38980	        isVisible: (form, formState) => formConfigAs(form).usePassword && formState.forgotPassword
38981	    },
38982	    {
38983	        type: sectionTypes.FORGOT_PASSWORD.type,
38984	        isDisplayedInProgressBar: false,
38985	        isVisible: (form, formState) => formConfigAs(form).usePassword && formState.forgotPassword
38986	    },
38987	    {
38988	        type: sectionTypes.VERIFICATION_CODE_LOGIN.type,
38989	        isDisplayedInProgressBar: false,
38990	        isVisible: (form, formState) => (formState.userExists && (formConfigAs(form).useVerificationCodes || formState.socialSignin)) ?? false
38991	    },
38992	    {
38993	        type: sectionTypes.VERIFICATION_CODE_REGISTRATION.type,
38994	        isDisplayedInProgressBar: false,
38995	        isVisible: (form, formState) => (!formState.userExists && (formConfigAs(form).useVerificationCodes || formState.emailIsContact)) ?? false
38996	    },
38997	    {
38998	        type: sectionTypes.REGISTRATION_CUSTOM.type,
38999	        isDisplayedInProgressBar: true,
39000	        isVisible: (_, formState) => !formState.userExists
39001	    },
39002	    {
39003	        type: sectionTypes.SUCCESS.type,
39004	        isDisplayedInProgressBar: false,
39005	        isVisible: () => true
39006	    },
39007	    {
39008	        type: sectionTypes.EMAIL_VERIFIED.type,
39009	        isDisplayedInProgressBar: false,
39010	        isVisible: (form, formState) => form.organisationConfiguration.requireEmailVerfication &&
39011	            !(formConfigAs(form).useVerificationCodes) &&
39012	            !formState.socialSignin
39013	    },
39014	    {
39015	        type: sectionTypes.PASSWORDLESS_VIA_LOGIN_LINK.type,
39016	        isDisplayedInProgressBar: false,
39017	        isVisible: (form, formState) => formState.userExists && getFormIsPasswordless(form)
39018	    }
39019	];
39020	const canAttemptSectionCompletion$8 = (_, formState) => {
39021	    return !formState.elementValidity.filter(e => e.partType === formState.currentPart.type &&
39022	        e.sectionType === formState.currentSection.type &&
39023	        e.sectionOrder === formState.currentSection.order)
39024	        .some(e => !e.isValid);
39025	};
39026	const sectionFlow$8 = {
39027	    extraElements: [],
39028	    eventHandlers: eventHandlers$9,
39029	    sectionVisibilities: sectionVisibilities$7,
39030	    canAttemptSectionCompletion: canAttemptSectionCompletion$8,
39031	    canDismissFormManually: () => false,
39032	    formRequiresPrerequisiteLoading: () => false,
39033	    canPartiallyRegister: true
39034	};
39035
39036	const processResponse$1 = async (payload, response, form, formState, formActions) => {
39037	    const json = await response.json();
39038	    if (response?.ok) {
39039	        logConversion('CONTACT', form, formActions);
39040	        window.Blaize?.postProcessFormData && window.Blaize.postProcessFormData(form.id, payload, json);
39041	        return Promise.resolve(true);
39042	    }
39043	    // Handle errors
39044	    const serverError = mapToServerError(response.status, json?.message, formState);
39045	    formActions.updateFormState({
39046	        serverErrors: [serverError]
39047	    });
39048	    logDataLayerEvent(form, 'zephr_form_error', {
39049	        error: ServerError[serverError],
39050	    });
39051	    if (ServerErrors[serverError].jumpToPart) {
39052	        formActions.jumpToPartStart(ServerErrors[serverError].jumpToPart);
39053	    }
39054	    return Promise.resolve(false);
39055	};
39056	const preprocessorIdentity$1 = (_, t) => t;
39057	const toContactCreeatePayload = (form, formState) => {
39058	    const autoAppliedAttributes = formConfigAs(form).autoApplyAttributes ?? {};
39059	    const preprocessor = window.Blaize?.preProcessFormData ?? preprocessorIdentity$1;
39060	    const attributes = userAttributesValuesForPart(partTypes.CONTACT_VERIFICATION.type, form, formState);
39061	    const attributesWithAutoApplied = {
39062	        ...attributes,
39063	        ...autoAppliedAttributes
39064	    };
39065	    return preprocessor(form.id, {
39066	        identifiers: { email_address: formState.emailAddress },
39067	        attributes: Object.keys(attributesWithAutoApplied).length ? attributesWithAutoApplied : undefined,
39068	    });
39069	};
39070	const registerContact = async (form, formState, formActions) => {
39071	    const payload = toContactCreeatePayload(form, formState);
39072	    const response = await request('zephr/createContact', {
39073	        method: "POST",
39074	        bodyObject: payload
39075	    }, formActions);
39076	    return processResponse$1(payload, response, form, formState, formActions);
39077	};
39078
39079	/**
39080	 * Map of possible movements through the form sections for contact forms.
39081	 */
39082	const formStartAction$7 = async (_, __, formActions) => {
39083	    await checkForRegisteredUser(formActions);
39084	};
39085	// handle submit of email on first step or after additional attributes preferences provided
39086	const onContactVerificationComplete = async (form, formState, formActions) => {
39087	    const config = formConfigAs(form);
39088	    try {
39089	        await registerContact(form, formState, formActions);
39090	        if (config.showSuccessOnFormCompletion) {
39091	            await jumpToPart(partTypes.SUCCESS.type, form, formActions);
39092	        }
39093	        else {
39094	            window.location.reload();
39095	        }
39096	    }
39097	    catch (error) {
39098	        console.error(error);
39099	        await jumpToSection(sectionTypes.EMAIL.type, form, formActions);
39100	    }
39101	};
39102	const eventHandlers$8 = {
39103	    [FormEvent.FORM_START]: formStartAction$7,
39104	    [FormEvent.PART_CONTACT_VERIFICATION_COMPLETE]: onContactVerificationComplete,
39105	};
39106	const sectionVisibilities$6 = [
39107	    {
39108	        type: sectionTypes.EMAIL.type,
39109	        isDisplayedInProgressBar: false,
39110	        isVisible: () => true,
39111	    },
39112	    {
39113	        type: sectionTypes.REGISTRATION_CUSTOM.type,
39114	        isDisplayedInProgressBar: false,
39115	        isVisible: (_, formState) => !formState.userExists,
39116	    },
39117	];
39118	const canAttemptSectionCompletion$7 = (_, formState) => {
39119	    return !formState.elementValidity
39120	        .filter((e) => e.partType === formState.currentPart.type &&
39121	        e.sectionType === formState.currentSection.type &&
39122	        e.sectionOrder === formState.currentSection.order)
39123	        .some((e) => !e.isValid);
39124	};
39125	const sectionFlow$7 = {
39126	    extraElements: [],
39127	    eventHandlers: eventHandlers$8,
39128	    sectionVisibilities: sectionVisibilities$6,
39129	    canAttemptSectionCompletion: canAttemptSectionCompletion$7,
39130	    canDismissFormManually: () => false,
39131	    formRequiresPrerequisiteLoading: () => false,
39132	};
39133
39134	const processResponse = async (payload, response, attributes, form, formState, formActions) => {
39135	    if (response?.ok) {
39136	        if (form.formType == FormType.UPDATE_PROFILE) {
39137	            logDataLayerEvent(form, 'zephr_form_profile_update', {
39138	                success: response?.ok,
39139	                ...Object.entries(attributes).reduce((acc, [key, value]) => ({ ...acc, [`attr_${key}`]: value }), {})
39140	            });
39141	        }
39142	        if (form.formType == FormType.DATA_CAPTURE) {
39143	            logConversion('Data Captured', form, formActions);
39144	            logDataLayerEvent(form, 'zephr_form_data_capture', {
39145	                success: response?.ok,
39146	                ...Object.entries(attributes).reduce((acc, [key, value]) => ({ ...acc, [`attr_${key}`]: value }), {})
39147	            });
39148	        }
39149	        if (form.formType == FormType.COMPLETE_REGISTRATION) {
39150	            logConversion('Completed Registration', form, formActions);
39151	            logDataLayerEvent(form, 'zephr_form_complete_registration', {
39152	                success: response?.ok,
39153	                ...Object.entries(attributes).reduce((acc, [key, value]) => ({ ...acc, [`attr_${key}`]: value }), {})
39154	            });
39155	        }
39156	        const json = await response.json();
39157	        payload && window.Blaize?.postProcessFormData && window.Blaize.postProcessFormData(form.id, payload, json);
39158	        return Promise.resolve(true);
39159	    }
39160	    const responseMessage = (await response.json())?.message;
39161	    const serverError = mapToServerError(response.status, responseMessage, formState);
39162	    formActions.updateFormState({
39163	        serverErrors: [serverError]
39164	    });
39165	    logDataLayerEvent(form, 'zephr_form_error', {
39166	        error: ServerError[serverError],
39167	    });
39168	    return Promise.resolve(false);
39169	};
39170	const preprocessorIdentity = (_, t) => t;
39171	const toUpdateUserPayload = (form, formState, partType) => {
39172	    const preprocessor = window.Blaize?.preProcessFormData ?? preprocessorIdentity;
39173	    const attributes = userAttributesValuesForPart(partType, form, formState);
39174	    const autoAppliedAttributes = formConfigAs(form).autoApplyAttributes ?? {};
39175	    return preprocessor(form.id, {
39176	        ...attributes,
39177	        ...autoAppliedAttributes,
39178	        ...(formState.createPassword && { 'blaize-validator': formState.createPassword }),
39179	    });
39180	};
39181	const updateUser = async (form, formState, formActions, partType) => {
39182	    const payload = toUpdateUserPayload(form, formState, partType);
39183	    if (formState.fireCancelationReasonEvent) {
39184	        formActions.updateFormState({
39185	            cancelationReasonAttributes: payload
39186	        });
39187	    }
39188	    const response = await request('blaize/profile', {
39189	        method: "PATCH",
39190	        bodyObject: payload
39191	    }, formActions);
39192	    const attributes = userAttributesValuesForPart(partType, form, formState);
39193	    return processResponse(payload, response, attributes, form, formState, formActions);
39194	};
39195
39196	const formStartAction$6 = async (form, formState, formActions) => {
39197	    const hideIfSet = form.parts
39198	        .map(e => e.sections)
39199	        .reduce((acc, curr) => {
39200	        const attrToHide = curr.map(e => e.elements
39201	            .filter(e => e.type == "user_attribute" && e.config?.hideIfSet)
39202	            .map(e => e.config?.slug)
39203	            .filter(slug => slug != null));
39204	        return acc.concat(attrToHide);
39205	    }, [])
39206	        .flat();
39207	    const toRemove = [];
39208	    try {
39209	        const response = await request('blaize/profile', { method: "GET" }, formActions);
39210	        if (response?.ok) {
39211	            const responseJson = await response.json();
39212	            formConfigAs(form).autoApplyAttributes &&
39213	                Object.keys(formConfigAs(form).autoApplyAttributes).forEac
39213h(a => {
39214	                    if (Object.prototype.hasOwnProperty.call(responseJson, a)) {
39215	                        delete responseJson[a];
39216	                    }
39217	                });
39218	            hideIfSet.forEach(a => {
39219	                if (Object.prototype.hasOwnProperty.call(responseJson, a)) {
39220	                    toRemove.push(a);
39221	                }
39222	            });
39223	            if (toRemove.length == Object.keys(formState.userAttributes).length && form.formType != FormType.COMPLETE_REGISTRATION) {
39224	                console.warn("Not showing form as user has no attributes to update");
39225	            }
39226	            else {
39227	                formActions.updateFormState({
39228	                    formPrerequisiteLoaded: true,
39229	                    hideIfSetAttributes: toRemove,
39230	                    userAttributes: { ...responseJson },
39231	                });
39232	            }
39233	        }
39234	    }
39235	    catch (err) {
39236	        console.error(err);
39237	    }
39238	};
39239	const onUpdateProfileComplete = async (form, formState, formActions) => {
39240	    const config = formConfigAs(form);
39241	    try {
39242	        await updateUser(form, formState, formActions, partTypes.PROFILE_UPDATE.type)
39243	            .then(async (success) => {
39244	            if (success && config.showSuccessOnFormCompletion) {
39245	                await jumpToPart(partTypes.SUCCESS.type, form, formActions);
39246	            }
39247	            else if (success) {
39248	                window.location.reload();
39249	            }
39250	        });
39251	    }
39252	    catch (error) {
39253	        console.error(error);
39254	    }
39255	};
39256	const eventHandlers$7 = {
39257	    [FormEvent.FORM_START]: formStartAction$6,
39258	    [FormEvent.PART_PROFILE_UPDATE_COMPLETE]: onUpdateProfileComplete,
39259	};
39260	const sectionVisibilities$5 = [];
39261	const canAttemptSectionCompletion$6 = (_, formState) => {
39262	    return !formState.elementValidity
39263	        .filter((e) => e.partType === formState.currentPart.type &&
39264	        e.sectionType === formState.currentSection.type &&
39265	        e.sectionOrder === formState.currentSection.order)
39266	        .some((e) => !e.isValid);
39267	};
39268	const sectionFlow$6 = {
39269	    extraElements: [],
39270	    eventHandlers: eventHandlers$7,
39271	    sectionVisibilities: sectionVisibilities$5,
39272	    canAttemptSectionCompletion: canAttemptSectionCompletion$6,
39273	    canDismissFormManually: () => false,
39274	    formRequiresPrerequisiteLoading: () => true,
39275	};
39276
39277	const startUpdateEmailFlow = async (form, formState, formActions) => {
39278	    try {
39279	        const updateEmailWithoutPassword = !formState.password;
39280	        const payload = {
39281	            current_identifiers: {
39282	                email_address: formState.readOnlyEmail,
39283	            },
39284	            new_identifiers: {
39285	                email_address: formState.emailAddress,
39286	            },
39287	            ...(updateEmailWithoutPassword ? {} : {
39288	                validators: {
39289	                    password: formState.password,
39290	                },
39291	            }),
39292	        };
39293	        const response = await request(updateEmailWithoutPassword ? 'blaize/users/update-email' : 'zephr/users/update-email', {
39294	            method: 'POST',
39295	            bodyObject: payload,
39296	        }, formActions);
39297	        logDataLayerEvent(form, 'zephr_form_email_update_code_sent', {
39298	            success: response?.ok
39299	        });
39300	        if (!response.ok) {
39301	            formActions.updateFormState({
39302	                serverErrors: [ServerError.UNKNOWN],
39303	            });
39304	            logDataLayerEvent(form, 'zephr_form_error', {
39305	                error: ServerError[ServerError.UNKNOWN],
39306	            });
39307	            return { success: false, isLinkBased: updateEmailWithoutPassword };
39308	        }
39309	        return { success: true, isLinkBased: updateEmailWithoutPassword };
39310	    }
39311	    catch (err) {
39312	        formActions.updateFormState({
39313	            serverErrors: [ServerError.UNKNOWN],
39314	        });
39315	        logDataLayerEvent(form, 'zephr_form_error', {
39316	            error: ServerError[ServerError.UNKNOWN],
39317	        });
39318	        return { success: false, isLinkBased: !formState.password };
39319	    }
39320	};
39321	const endEmailUpdateFlow = async (form, formState, formActions) => {
39322	    formActions.incrementRequestCount();
39323	    formActions.updateFormState({
39324	        verificationCodeValid: undefined
39325	    });
39326	    const response = await request(`zephr/users/update-email/${formState.verificationCode}`, {
39327	        method: "POST",
39328	        bodyObject: {
39329	            current_identifiers: {
39330	                email_address: formState.readOnlyEmail,
39331	            },
39332	        }
39333	    }, formActions);
39334	    logDataLayerEvent(form, 'zephr_form_password_reset_code_validate', {
39335	        success: response?.ok
39336	    });
39337	    if (!response.ok) {
39338	        formActions.updateFormState({
39339	            serverErrors: [ServerError.VERIFICATION_CODE_INCORRECT]
39340	        });
39341	        logDataLayerEvent(form, 'zephr_form_error', {
39342	            error: ServerError[ServerError.VERIFICATION_CODE_INCORRECT],
39343	        });
39344	        formActions.decrementRequestCount();
39345	        return false;
39346	    }
39347	    await waitAfterCode(form);
39348	    formActions.decrementRequestCount();
39349	    return true;
39350	};
39351
39352	const startPasswordUpdateFlow = async (form, formState, formActions) => {
39353	    try {
39354	        const payload = {
39355	            current_validators: {
39356	                password: formState.currentPassword,
39357	            },
39358	            new_validators: {
39359	                password: formState.createPassword,
39360	            },
39361	        };
39362	        const response = await request('zephr/users/change-password', {
39363	            method: 'POST',
39364	            bodyObject: payload,
39365	        }, formActions);
39366	        logDataLayerEvent(form, 'zephr_form_password_update_code_sent', {
39367	            success: response?.ok
39368	        });
39369	        if (!response.ok) {
39370	            formActions.updateFormState({
39371	                serverErrors: [ServerError.UNKNOWN],
39372	            });
39373	            return false;
39374	        }
39375	        return true;
39376	    }
39377	    catch (err) {
39378	        formActions.updateFormState({
39379	            serverErrors: [ServerError.UNKNOWN],
39380	        });
39381	        return false;
39382	    }
39383	};
39384	const endPasswordUpdateFlow = async (form, formState, formActions) => {
39385	    formActions.incrementRequestCount();
39386	    formActions.updateFormState({
39387	        verificationCodeValid: undefined
39388	    });
39389	    const response = await request(`zephr/users/change-password/${formState.verificationCode}`, {
39390	        method: "GET",
39391	    }, formActions);
39392	    logDataLayerEvent(form, 'zephr_form_password_update_code_validate', {
39393	        success: response?.ok
39394	    });
39395	    if (!response.ok) {
39396	        formActions.updateFormState({
39397	            serverErrors: [ServerError.VERIFICATION_CODE_INCORRECT]
39398	        });
39399	        logDataLayerEvent(form, 'zephr_form_error', {
39400	            error: ServerError[ServerError.VERIFICATION_CODE_INCORRECT],
39401	        });
39402	        formActions.decrementRequestCount();
39403	        return false;
39404	    }
39405	    await waitAfterCode(form);
39406	    formActions.decrementRequestCount();
39407	    return true;
39408	};
39409
39410	const formStartAction$5 = async (_, __, formActions) => {
39411	    formActions.incrementRequestCount();
39412	    try {
39413	        await Promise.all([fetchProfile(formActions), fetchEmail(formActions)]);
39414	    }
39415	    finally {
39416	        formActions.decrementRequestCount();
39417	    }
39418	};
39419	const startEmailUpdate = async (form, formState, formActions) => {
39420	    const result = await startUpdateEmailFlow(form, formState, formActions);
39421	    if (result.success) {
39422	        if (result.isLinkBased) {
39423	            // Passwordless flow - show confirmation message to check email for link
39424	            // Check if confirmation part exists in form config (defensive guard for legacy forms)
39425	            const hasConfirmationPart = form.parts.some(p => p.type === partTypes.EMAIL_UPDATE_CONFIRMATION.type);
39426	            if (hasConfirmationPart) {
39427	                await jumpToPart(partTypes.EMAIL_UPDATE_CONFIRMATION.type, form, formActions);
39428	            }
39429	            else {
39430	                // Fallback: show OTP screen for legacy forms without confirmation part
39431	                await jumpToPart(partTypes.EMAIL_UPDATE_OTP.type, form, formActions);
39432	            }
39433	        }
39434	        else {
39435	            // Password-protected flow - show OTP code input screen
39436	            await jumpToPart(partTypes.EMAIL_UPDATE_OTP.type, form, formActions);
39437	        }
39438	    }
39439	};
39440	const endEmailUpdate = async (form, formState, formActions) => {
39441	    const success = await endEmailUpdateFlow(form, formState, formActions);
39442	    if (success) {
39443	        await reset(form, formState, formActions, true);
39444	    }
39445	};
39446	const startPasswordUpdate = async (form, formState, formActions) => {
39447	    const success = await startPasswordUpdateFlow(form, formState, formActions);
39448	    if (success) {
39449	        await jumpToPart(partTypes.PASSWORD_UPDATE_OTP.type, form, formActions);
39450	    }
39451	};
39452	const endPasswordUpdate = async (form, formState, formActions) => {
39453	    const success = await endPasswordUpdateFlow(form, formState, formActions);
39454	    if (success) {
39455	        await reset(form, formState, formActions, true);
39456	    }
39457	};
39458	const onUpdateAttributes$1 = async (form, formState, formActions) => {
39459	    const submitSuccess = await updateUser(form, formState, formActions, partTypes.ATTRIBUTES_UPDATE.type);
39460	    if (submitSuccess) {
39461	        await reset(form, formState, formActions, true);
39462	    }
39463	};
39464	const goBack$1 = async (form, formState, formActions) => reset(form, formState, formActions, false);
39465	const jumpToUserAttributeUpdate = async (form, _, formActions) => {
39466	    await jumpToPart(partTypes.ATTRIBUTES_UPDATE.type, form, formActions);
39467	};
39468	const reset = async (form, formState, formActions, wait) => {
39469	    formActions.updateFormState({
39470	        emailAddress: null,
39471	        password: null,
39472	        createPassword: null,
39473	        passwordIsValid: null,
39474	        verificationCode: null,
39475	        currentPassword: null,
39476	        serverErrors: [],
39477	    });
39478	    if (wait) {
39479	        await formStartAction$5(form, formState, formActions);
39480	    }
39481	    else {
39482	        void formStartAction$5(form, formState, formActions);
39483	    }
39484	    await jumpToPart(partTypes.PROFILE_UPDATE.type, form, formActions);
39485	};
39486	const fetchProfile = async (formActions) => {
39487	    try {
39488	        const response = await request('blaize/profile', { method: "GET" }, formActions);
39489	        const json = await response.json();
39490	        formActions.updateFormState({
39491	            readOnlyAttributeValues: json,
39492	        });
39493	    }
39494	    catch (err) {
39495	        console.error("Unable to load user profile", err);
39496	    }
39497	};
39498	const fetchEmail = async (formActions) => {
39499	    try {
39500	        const response = await request('blaize/account', { method: "GET" }, formActions);
39501	        const email = (await response.json())?.identifiers.email_address;
39502	        formActions.updateFormState({
39503	            readOnlyEmail: email
39504	        });
39505	    }
39506	    catch (err) {
39507	        console.error("Unable to load user email", err);
39508	    }
39509	};
39510	const eventHandlers$6 = {
39511	    [FormEvent.FORM_START]: formStartAction$5,
39512	    [FormEvent.GO_BACK]: goBack$1,
39513	    [FormEvent.UPDATE]: jumpToUserAttributeUpdate,
39514	    [FormEvent.PART_EMAIL_UPDATE_COMPLETE]: startEmailUpdate,
39515	    [FormEvent.VERIFY_EMAIL_UPDATE_OTP]: endEmailUpdate,
39516	    [FormEvent.PART_PASSWORD_UPDATE_COMPLETE]: startPasswordUpdate,
39517	    [FormEvent.VERIFY_PASSWORD_UPDATE_OTP]: endPasswordUpdate,
39518	    [FormEvent.PART_ATTRIBUTES_UPDATE_COMPLETE]: onUpdateAttributes$1,
39519	};
39520	const canAttemptSectionCompletion$5 = (_, formState) => {
39521	    return !formState.elementValidity
39522	        .filter((e) => e.partType === formState.currentPart.type &&
39523	        e.sectionType === formState.currentSection.type &&
39524	        e.sectionOrder === formState.currentSection.order)
39525	        .some((e) => !e.isValid);
39526	};
39527	const sectionFlow$5 = {
39528	    extraElements: [],
39529	    eventHandlers: eventHandlers$6,
39530	    sectionVisibilities: [],
39531	    canAttemptSectionCompletion: canAttemptSectionCompletion$5,
39532	    canDismissFormManually: () => false,
39533	    formRequiresPrerequisiteLoading: () => false,
39534	};
39535
39536	const formStartAction$4 = async (form, formState, formActions) => {
39537	    const hasDynamicOfferAttached = !!formConfigAs(form).dynamicOffer?.id;
39538	    const hasCancelReason = formConfigAs(form).hasCancelReason;
39539	    const hasSaveOffer = formConfigAs(form).hasSaveOffer;
39540	    // Skip Dynamic Offer fetch if we need to capture cancellation reason first
39541	    // This ensures the cancellation reason is available as a user attribute for Dynamic Offer filtering
39542	    const shouldFetchDynamicOfferNow = hasDynamicOfferAttached && !(hasSaveOffer && hasCancelReason);
39543	    if (shouldFetchDynamicOfferNow) {
39544	        await getDynamicOffer(form, formActions).catch((e) => { console.error('Error loading Dynamic Offer', e); });
39545	        formState = formActions.getFormState();
39546	    }
39547	    const existingSubscriptions = formConfigAs(form).hasSaveOffer ?
39548	        await loadExistingSubscriptions$1(form, formState, formActions, shouldFetchDynamicOfferNow, false) : await loadExistingSubscriptions(form, formState, formActions, true);
39549	    const subscriptionQueryParam = getSubscriptionParam(window.location.href);
39550	    if (!subscriptionQueryParam) {
39551	        return;
39552	    }
39553	    const queryParamSubscription = existingSubscriptions.find(subscription => subscription.externalId === subscriptionQueryParam);
39554	    if (queryParamSubscription) {
39555	        formActions.updateFormState({
39556	            selectedSubscription: queryParamSubscription,
39557	            isExternalReferrer: true,
39558	        });
39559	        formActions.completeSection();
39560	    }
39561	};
39562	const cancel = async (form, formActions) => {
39563	    const formState = formActions.getFormState();
39564	    try {
39565	        const response = await request(`zephr/subscriptions/${formState.selectedSubscription.externalId}`, {
39566	            method: 'DELETE',
39567	        }, formActions);
39568	        if (response.ok) {
39569	            if (formState.fireCancelationReasonEvent) {
39570	                logDataLayerEvent(form, 'zephr_form_subscription_cancel_reason', {
39571	                    productId: formState.selectedSubscription.productId,
39572	                    ...Object.entries(formState.cancelationReasonAttributes).reduce((acc, [key, value]) => ({ ...acc, [`attr_${key}`]: value }), {})
39573	                });
39574	            }
39575	            logDataLayerEvent(form, 'zephr_form_subscription_cancel', {
39576	                productId: formState.selectedSubscription.productId,
39577	                productLabel: formState.selectedSubscription.productLabel,
39578	                currency: formState.selectedSubscription.currency,
39579	                amount: formState.selectedSubscription.amount,
39580	            });
39581	            if (form.parts.some(e => e.type == partTypes.CANCEL_SUCCESS.type)) {
39582	                formActions.jumpToPartStart(partTypes.CANCEL_SUCCESS.type);
39583	            }
39584	            else {
39585	                formActions.jumpToPartStart(partTypes.SUCCESS.type);
39586	            }
39587	        }
39588	        else {
39589	            formActions.updateFormState({
39590	                serverErrors: [ServerError.UNKNOWN],
39591	            });
39592	            logDataLayerEvent(form, 'zephr_form_error', {
39593	                error: ServerError[ServerError.UNKNOWN],
39594	            });
39595	        }
39596	    }
39597	    catch (error) {
39598	        console.error("Error occurred while cancelling subscription.", error);
39599	        formActions.updateFormState({
39600	            serverErrors: [ServerError.UNKNOWN],
39601	        });
39602	        logDataLayerEvent(form, 'zephr_form_error', {
39603	            error: ServerError[ServerError.UNKNOWN],
39604	        });
39605	    }
39606	};
39607	const onSubscriptionSelectComplete$2 = async (form, formState, formActions) => {
39608	    if (formConfigAs(form).hasCancelReason) {
39609	        formActions.updateFormState({
39610	            fireCancelationReasonEvent: true,
39611	            cancelFlowSubscriptionSelectedId: formState.selectedSubscription.externalId,
39612	        });
39613	        formActions.jumpToPartStart(partTypes.ATTRIBUTES_UPDATE.type);
39614	    }
39615	    else if (formState.validChangeFromPlans.length === 0) {
39616	        await cancel(form, formActions);
39617	    }
39618	    else if (formConfigAs(form).hasSaveOffer) {
39619	        formActions.updateFormState({
39620	            cancelFlowSubscriptionSelectedId: formState.selectedSubscription.externalId,
39621	        });
39622	        formActions.jumpToPartStart(partTypes.PLAN_SELECT.type);
39623	    }
39624	    else {
39625	        await cancel(form, formActions);
39626	    }
39627	};
39628	const onPlanSelectComplete$1 = async (form, formState, formActions) => {
39629	    if (formState.confirmCancel) {
39630	        await cancel(form, formActions);
39631	    }
39632	    else {
39633	        const state = formActions.getFormState();
39634	        const updatedState = await getProductAddons(form, state, formActions);
39635	        void calculatePrices(form, updatedState, formActions);
39636	        void calculateChangeSubscriptionProrate(form, updatedState, formActions);
39637	        formActions.updateFormState({
39638	            convertCancelSubscriptionToAcceptOffer: true,
39639	        });
39640	        formActions.jumpToPartStart(partTypes.PAYMENT.type);
39641	    }
39642	};
39643	const onUpdateAttributes = async (form, formState, formActions) => {
39644	    const submitSuccess = await updateUser(form, formState, formActions, partTypes.ATTRIBUTES_UPDATE.type);
39645	    if (!submitSuccess) {
39646	        return;
39647	    }
39648	    // Fetch Dynamic Offer now that cancellation reason is available as a user attribute
39649	    const hasDynamicOfferAttached = !!formConfigAs(form).dynamicOffer?.id;
39650	    const hasSaveOffer = formConfigAs(form).hasSaveOffer;
39651	    if (hasDynamicOfferAttached && hasSaveOffer) {
39652	        await getDynamicOffer(form, formActions).catch((e) => { console.error('Error loading Dynamic Offer', e); });
39653	        // Filter subscriptions with the newly fetched Dynamic Offer result
39654	        const updatedFormState = formActions.getFormState();
39655	        const existingSubscriptions = updatedFormState.existingSubscriptions || [];
39656	        if (existingSubscriptions.length > 0) {
39657	            filterDynamicOfferChangeFromPlans(existingSubscriptions, updatedFormState, formActions, updatedFormState.requiresPaymentMethodSetup || false);
39658	        }
39659	        formState = formActions.getFormState();
39660	    }
39661	    if (formState.validChangeFromPlans.length === 0) {
39662	        await cancel(form, formActions);
39663	    }
39664	    else if (hasSaveOffer) {
39665	        formActions.jumpToPartStart(partTypes.PLAN_SELECT.type);
39666	    }
39667	    else {
39668	        await cancel(form, formActions);
39669	    }
39670	};
39671	const goBack = async (_, __, formActions) => {
39672	    formActions.jumpToPartStart(partTypes.SELECT_SUBSCRIPTION.type);
39673	    return Promise.resolve();
39674	};
39675	const eventHandlers$5 = {
39676	    [FormEvent.FORM_START]: formStartAction$4,
39677	    [FormEvent.SELECT_SUBSCRIPTION_COMPLETE]: onSubscriptionSelectComplete$2,
39678	    [FormEvent.GO_BACK]: goBack,
39679	    [FormEvent.PART_PLAN_SELECT_COMPLETE]: onPlanSelectComplete$1,
39680	    [FormEvent.PART_PAYMENT_COMPLETE]: pay,
39681	    [FormEvent.PART_ATTRIBUTES_UPDATE_COMPLETE]: onUpdateAttributes,
39682	};
39683	const extraElements = [
39684	    {
39685	        type: elementTypes.PAYMENT_PRE_LOADER,
39686	        order: -1,
39687	    },
39688	];
39689	const cancelSubscriptionSectionFlow = {
39690	    extraElements,
39691	    eventHandlers: eventHandlers$5,
39692	    sectionVisibilities: [],
39693	    canAttemptSectionCompletion: () => true,
39694	    canDismissFormManually: () => false,
39695	    formRequiresPrerequisiteLoading: () => false,
39696	};
39697
39698	const formStartAction$3 = async (form, formState, formActions) => {
39699	    const existingSubscriptions = await loadExistingSubscriptions(form, formState, formActions, true);
39700	    const subscriptionQueryParam = getSubscriptionParam(window.location.href);
39701	    if (!subscriptionQueryParam) {
39702	        return;
39703	    }
39704	    const queryParamSubscription = existingSubscriptions.find(subscription => subscription.externalId === subscriptionQueryParam);
39705	    if (queryParamSubscription) {
39706	        formActions.updateFormState({
39707	            selectedSubscription: queryParamSubscription,
39708	            isExternalReferrer: true,
39709	        });
39710	        formActions.completeSection();
39711	    }
39712	};
39713	const onSubscriptionSelectComplete$1 = (form, formState, formActions) => {
39714	    formActions.updateFormState({
39715	        suspendResumeFlowSubscriptionSelectedId: formState.selectedSubscription.externalId,
39716	    });
39717	    formActions.jumpToPartStart(partTypes.SUSPEND_RESUME_SUBSCRIPTION.type);
39718	};
39719	const suspendResumeSubscriptionComplete = async (form, formState, formActions) => {
39720	    try {
39721	        const response = await request(`zephr/subscriptions/${formState.selectedSubscription.externalId}/manage`, {
39722	            method: 'POST',
39723	            bodyObject: {
39724	                vendor_fields: {
39725	                    order: JSON.stringify({
39726	                        subscription: {
39727	                            orderActions: [
39728	                                {
39729	                                    type: 'Suspend',
39730	                                    suspend: {
39731	                                        suspendPolicy: 'SpecificDate',
39732	                                        suspendSpecificDate: formState.suspendResumeSubscription.suspensionDate,
39733	                                    }
39734	                                },
39735	                                {
39736	                                    type: 'Resume',
39737	                                    resume: {
39738	                                        resumePolicy: 'SpecificDate',
39739	                                        resumeSpecificDate: formState.suspendResumeSubscription.resumeDate,
39740	                                        extendsTerm: true,
39741	                                    }
39742	                                }
39743	                            ]
39744	                        }
39745	                    })
39746	                }
39747	            }
39748	        }, formActions);
39749	        if (response.ok) {
39750	            logDataLayerEvent(form, 'zephr_form_subscription_suspend', {
39751	                productId: formState.selectedSubscription.productId,
39752	                productLabel: formState.selectedSubscription.productLabel,
39753	                currency: formState.selectedSubscription.currency,
39754	                amount: formState.selectedSubscription.amount,
39755	            });
39756	            formActions.jumpToPartStart(partTypes.SUCCESS.type);
39757	        }
39758	        else {
39759	            formActions.updateFormState({
39760	                serverErrors: [ServerError.UNKNOWN],
39761	            });
39762	            logDataLayerEvent(form, 'zephr_form_error', {
39763	                error: ServerError[ServerError.UNKNOWN],
39764	            });
39765	        }
39766	    }
39767	    catch (error) {
39768	        console.error("Error occurred while suspending subscription.", error);
39769	        formActions.updateFormState({
39770	            serverErrors: [ServerError.UNKNOWN],
39771	        });
39772	        logDataLayerEvent(form, 'zephr_form_error', {
39773	            error: ServerError[ServerError.UNKNOWN],
39774	        });
39775	    }
39776	};
39777	const eventHandlers$4 = {
39778	    [FormEvent.FORM_START]: formStartAction$3,
39779	    [FormEvent.SELECT_SUBSCRIPTION_COMPLETE]: onSubscriptionSelectComplete$1,
39780	    [FormEvent.SUSPEND_RESUME_SUBSCRIPTION_COMPLETE]: suspendResumeSubscriptionComplete,
39781	};
39782	const sectionVisibilities$4 = [];
39783	const canAttemptSectionCompletion$4 = (_, formState) => {
39784	    return !formState.elementValidity
39785	        .filter((e) => e.partType === formState.currentPart.type &&
39786	        e.sectionType === formState.currentSection.type &&
39787	        e.sectionOrder === formState.currentSection.order)
39788	        .some((e) => !e.isValid);
39789	};
39790	const sectionFlow$4 = {
39791	    extraElements: [],
39792	    eventHandlers: eventHandlers$4,
39793	    sectionVisibilities: sectionVisibilities$4,
39794	    canAttemptSectionCompletion: canAttemptSectionCompletion$4,
39795	    canDismissFormManually: () => false,
39796	    formRequiresPrerequisiteLoading: () => false,
39797	};
39798
39799	const formStartAction$2 = async (form, formState, formActions) => {
39800	    await loadDeviceSessions(form, formState, formActions);
39801	};
39802	const eventHandlers$3 = {
39803	    [FormEvent.FORM_START]: formStartAction$2,
39804	};
39805	const sectionVisibilities$3 = [];
39806	const canAttemptSectionCompletion$3 = (_, formState) => {
39807	    return !formState.elementValidity
39808	        .filter((e) => e.partType === formState.currentPart.type &&
39809	        e.sectionType === formState.currentSection.type &&
39810	        e.sectionOrder === formState.currentSection.order)
39811	        .some((e) => !e.isValid);
39812	};
39813	const sectionFlow$3 = {
39814	    extraElements: [],
39815	    eventHandlers: eventHandlers$3,
39816	    sectionVisibilities: sectionVisibilities$3,
39817	    canAttemptSectionCompletion: canAttemptSectionCompletion$3,
39818	    canDismissFormManually: () => false,
39819	    formRequiresPrerequisiteLoading: () => false,
39820	};
39821
39822	/**
39823	 * Map of possible movements through the form sections for gift subscription forms.
39824	 */
39825	// Handle the completion of the recipient details section
39826	const onGiftRecipientComplete = async (form, formState, formActions) => {
39827	    // Check if user is logged in using existing session state
39828	    if (formState.loginRegistrationComplete) {
39829	        // If logged in, jump directly to payment section
39830	        await jumpToPart(partTypes.PAYMENT.type, form, formActions);
39831	    }
39832	    else {
39833	        // If not logged in, continue with normal flow to account verification
39834	        await jumpToSection(sectionTypes.EMAIL.type, form, formActions);
39835	    }
39836	};
39837	// Modified pay service for gift subscription
39838	const payWithGiftInfo = async (form, formState, formActions) => {
39839	    try {
39840	        // Add gift recipient info to the payment metadata
39841	        const giftRecipient = formState.giftRecipient;
39842	        if (!giftRecipient) {
39843	            throw new Error("Gift recipient information is missing");
39844	        }
39845	        // Call the standard payment flow - the gift-specific logic is handled in zuoraService.ts
39846	        // which will make the actual API call to create the gift subscription
39847	        return await pay(form, formState, formActions);
39848	    }
39849	    catch (error) {
39850	        console.error("Error in gift subscription payment:", error);
39851	        // Use the language pack for error message
39852	        const errorMessage = resolveLanguagePackKeyTyped(form, 'forms.errors.unknown-payment-error', "Payment failed");
39853	        // Display the error message
39854	        formActions.updateFormState({
39855	            dynamicServerErrorMessage: errorMessage
39856	        });
39857	        throw error;
39858	    }
39859	};
39860	// Customize the payment flow's PART_PLAN_SELECT_COMPLETE handler to add our gift recipient step
39861	const onPlanSelectComplete = async (form, formState, formActions) => {
39862	    // Check gift form mode FIRST, before calling payment flow handler
39863	    if (formState.isGiftForm) {
39864	        // If gift mode is enabled, check if recipient details are valid before jumping
39865	        const recipientDetailsElementTypes = [
39866	            'recipient_name',
39867	            'recipient_email',
39868	            'recipient_address',
39869	            'recipient_message'
39870	        ];
39871	        // Check if all recipient details elements are valid
39872	        const recipientDetailsValid = recipientDetailsElementTypes.every(elementType => {
39873	            const elementValidity = formState.elementValidity.find(e => e.elementType === elementType &&
39874	                e.sectionType === 'recipient_details');
39875	            return elementValidity ? elementValidity.isValid : false;
39876	        });
39877	        // Calculate prices first (from payment form flow)
39878	        await sectionFlow$9.eventHandlers[FormEvent.PART_PLAN_SELECT_COMPLETE](form, formState, formActions);
39879	        // Then navigate to recipient details if they are not valid
39880	        if (!recipientDetailsValid) {
39881	            await jumpToSection('recipient_details', form, formActions);
39882	        }
39883	        // If recipient details are valid, the payment handler already navigated correctly
39884	    }
39885	    else {
39886	        // If gift mode is disabled, just run the standard payment flow
39887	        await sectionFlow$9.eventHandlers[FormEvent.PART_PLAN_SELECT_COMPLETE](form, formState, formActions);
39888	    }
39889	};
39890	// Starting with the payment form handlers, override only what we need
39891	const eventHandlers$2 = {
39892	    ...sectionFlow$9.eventHandlers,
39893	    [FormEvent.FORM_START]: async (form, formState, formActions) => {
39894	        // Execute the standard payment form start handler
39895	        await sectionFlow$9.eventHandlers[FormEvent.FORM_START](form, formState, formActions);
39896	        // Check if the form has any gift toggle elements
39897	        const hasGiftToggleElements = form.parts
39898	            .flatMap(part => part.sections)
39899	            .flatMap(section => section.elements)
39900	            .some(element => element.type === elementTypes.GIFT_TOGGLE);
39901	        // Initialize the gift form state based on whether gift toggle elements are present
39902	        // If no gift toggle elements are found, assume this is a dedicated gift form (isGiftForm = true)
39903	        // If gift toggle elements are present, default to regular subscription mode (isGiftForm = false)
39904	        formActions.updateFormState({
39905	            isGiftForm: !hasGiftToggleElements, // true if no toggles (dedicated gift form), false if toggles exist
39906	            giftRecipient: {
39907	                firstName: '',
39908	                lastName: '',
39909	                email: '',
39910	                recipientAddress: {
39911	                    addressLine1: '',
39912	                    addressLine2: '',
39913	                    city: '',
39914	                    state: '',
39915	                    country: '',
39916	                    postalCode: ''
39917	                },
39918	                customMessage: '',
39919	                futureDeliveryEnabled: false,
39920	                futureDeliveryDate: ''
39921	            }
39922	        });
39923	    },
39924	    // Override plan select to redirect to gift recipient conditionally
39925	    [FormEvent.PART_PLAN_SELECT_COMPLETE]: onPlanSelectComplete,
39926	    // Add gift recipient handler
39927	    [FormEvent.PART_GIFT_RECIPIENT_COMPLETE]: onGiftRecipientComplete,
39928	    // Override payment complete to include gift logic
39929	    [FormEvent.PART_PAYMENT_COMPLETE]: payWithGiftInfo,
39930	};
39931	// Add our new section visibility for recipient details
39932	const sectionVisibilities$2 = [
39933	    ...sectionFlow$9.sectionVisibilities,
39934	    {
39935	        type: sectionTypes.RECIPIENT_DETAILS.type,
39936	        isDisplayedInProgressBar: true,
39937	        isVisible: (form, formState) => {
39938	            // Only show recipient details section if gift form mode is enabled
39939	            return formState.isGiftForm === true;
39940	        }
39941	    }
39942	];
39943	const canAttemptSectionCompletion$2 = (form, formState) => {
39944	    return !formState.elementValidity
39945	        .filter((e) => e.partType === formState.currentPart.type &&
39946	        e.sectionType === formState.currentSection.type &&
39947	        e.sectionOrder === formState.currentSection.order)
39948	        .some((e) => !e.isValid);
39949	};
39950	// Inherit other properties from payment flow
39951	const sectionFlow$2 = {
39952	    extraElements: sectionFlow$9.extraElements,
39953	    sectionVisibilities: sectionVisibilities$2,
39954	    eventHandlers: eventHandlers$2,
39955	    canAttemptSectionCompletion: canAttemptSectionCompletion$2,
39956	    canDismissFormManually: sectionFlow$9.canDismissFormManually,
39957	    formRequiresPrerequisiteLoading: sectionFlow$9.formRequiresPrerequisiteLoading,
39958	    canPartiallyRegister: true
39959	};
39960
39961	const validateGiftCode = async (form, formState, formActions) => {
39962	    const giftCode = formState.giftCode;
39963	    try {
39964	        // First check locally if gift code is valid length
39965	        if (!giftCode || giftCode.length !== 16) {
39966	            formActions.updateFormState({
39967	                giftCodeError: resolveLanguagePackKeyTyped(form, 'forms.errors.gift-code-invalid-length', 'Gift code must be 16 characters long')
39968	            });
39969	            return false;
39970	        }
39971	        formActions.incrementRequestCount();
39972	        const response = await request('zephr/public/gifts/v1/redeem', {
39973	            method: 'POST',
39974	            bodyObject: {
39975	                giftCode: giftCode,
39976	            },
39977	        }, formActions);
39978	        // Log event for gift redemption attempt
39979	        logDataLayerEvent(form, 'zephr_form_gift_redeem', {
39980	            success: response.ok,
39981	        });
39982	        if (!response.ok) {
39983	            formActions.updateFormState({
39984	                serverErrors: [ServerError.GIFT_CODE_INVALID],
39985	                giftCodeError: resolveLanguagePackKeyTyped(form, 'forms.errors.gift-code-invalid', 'The gift code you entered is invalid'),
39986	            });
39987	            formActions.decrementRequestCount();
39988	            return false;
39989	        }
39990	        formActions.decrementRequestCount();
39991	        await jumpToSection(sectionTypes.GIFT_REDEEMED.type, form, formActions);
39992	        return true;
39993	    }
39994	    catch (error) {
39995	        formActions.updateFormState({
39996	            serverErrors: [ServerError.GIFT_CODE_SERVER_ERROR],
39997	            giftCodeError: resolveLanguagePackKeyTyped(form, 'forms.errors.gift-code-server-error', 'An error occurred processing your gift code'),
39998	        });
39999	        formActions.decrementRequestCount();
40000	        return false;
40001	    }
40002	};
40003
40004	const GIFT_REDEMPTION_PART = "gift_redemption";
40005	const onGiftRedemptionComplete = async (form, formState, formActions) => {
40006	    await validateGiftCode(form, formState, formActions);
40007	};
40008	const formStartAction$1 = async (form, formState, formActions) => {
40009	    // If user session is already set, we don't need to check again
40010	    if (formState.userSession) {
40011	        // Skip registration and go straight to gift redemption if user is logged in
40012	        const giftRedemptionPart = form.parts.find(part => part.type === "gift_redemption");
40013	        if (giftRedemptionPart) {
40014	            formActions.updateFormState({
40015	                currentPart: giftRedemptionPart,
40016	                currentSection: giftRedemptionPart.sections[0],
40017	                userSession: true,
40018	                loginRegistrationComplete: true
40019	            });
40020	        }
40021	        return;
40022	    }
40023	    // Otherwise check for user session
40024	    const userSession = await checkForRegisteredUser(formActions);
40025	    if (userSession) {
40026	        // Skip registration and go straight to gift redemption if user is logged in
40027	        const giftRedemptionPart = form.parts.find(part => part.type === "gift_redemption");
40028	        if (giftRedemptionPart) {
40029	            formActions.updateFormState({
40030	                currentPart: giftRedemptionPart,
40031	                currentSection: giftRedemptionPart.sections[0],
40032	                userSession: true,
40033	                loginRegistrationComplete: true
40034	            });
40035	        }
40036	    }
40037	};
40038	const onLoginRegisterComplete = async (form, formState, formActions) => {
40039	    // Instead of reloading page or showing success, go straight to gift redemption
40040	    await jumpToPart(GIFT_REDEMPTION_PART, form, formActions);
40041	    return Promise.resolve();
40042	};
40043	const canAttemptSectionCompletion$1 = (form, formState) => {
40044	    // Check if we're in the gift redemption section and enforce validation
40045	    if (formState.currentSection.type === sectionTypes.GIFT_REDEMPTION.type) {
40046	        const giftCodeElement = formState.elementValidity.find(e => e.elementType === elementTypes.GIFT_CODE &&
40047	            e.sectionType === formState.currentSection.type);
40048	        if (giftCodeElement && !giftCodeElement.isValid) {
40049	            return false;
40050	        }
40051	        if (formState.giftCode?.length !== 16) {
40052	            return false;
40053	        }
40054	    }
40055	    // For other sections, use the default registration flow validation
40056	    return sectionFlow$8.canAttemptSectionCompletion(form, formState);
40057	};
40058	const eventHandlers$1 = {
40059	    ...sectionFlow$8.eventHandlers,
40060	    [FormEvent.FORM_START]: formStartAction$1,
40061	    [FormEvent.GIFT_REDEMPTION_COMPLETE]: onGiftRedemptionComplete,
40062	    [FormEvent.LOGIN_REGISTRATION_COMPLETE]: onLoginRegisterComplete, // Override the registration flow handler
40063	};
40064	// Add gift redemption specific section visibilities while inheriting registration ones
40065	const sectionVisibilities$1 = [
40066	    {
40067	        type: sectionTypes.EMAIL.type,
40068	        isDisplayedInProgressBar: true,
40069	        isVisible: (form, formState) => !formState.userSession
40070	    },
40071	    {
40072	        type: sectionTypes.LOGIN_PASSWORD.type,
40073	        isDisplayedInProgressBar: true,
40074	        isVisible: (form, formState) => !formState.userSession &&
40075	            formConfigAs(form).usePassword &&
40076	            formState.userExists &&
40077	            !formState.socialSignin
40078	    },
40079	    {
40080	        type: sectionTypes.PASSWORD_SETUP.type,
40081	        isDisplayedInProgressBar: true,
40082	        isVisible: (form, formState) => !formState.userSession &&
40083	            formConfigAs(form).usePassword &&
40084	            !formState.userExists &&
40085	            !formState.socialSignin
40086	    },
40087	    {
40088	        type: sectionTypes.PASSWORD_RESET.type,
40089	        isDisplayedInProgressBar: false,
40090	        isVisible: (form, formState) => !formState.userSession &&
40091	            formConfigAs(form).usePassword &&
40092	            formState.forgotPassword
40093	    },
40094	    {
40095	        type: sectionTypes.FORGOT_PASSWORD.type,
40096	        isDisplayedInProgressBar: false,
40097	        isVisible: (form, formState) => !formState.userSession &&
40098	            formConfigAs(form).usePassword &&
40099	            formState.forgotPassword
40100	    },
40101	    {
40102	        type: sectionTypes.GIFT_REDEMPTION.type,
40103	        isDisplayedInProgressBar: true,
40104	        isVisible: (form, formState) => {
40105	            // Show after registration is complete or if user is logged in
40106	            return formState.loginRegistrationComplete || formState.userSession;
40107	        }
40108	    },
40109	    {
40110	        type: sectionTypes.GIFT_REDEEMED.type,
40111	        isDisplayedInProgressBar: false,
40112	        isVisible: () => true
40113	    }
40114	];
40115	const sectionFlow$1 = {
40116	    ...sectionFlow$8,
40117	    eventHandlers: eventHandlers$1,
40118	    sectionVisibilities: sectionVisibilities$1,
40119	    canAttemptSectionCompletion: canAttemptSectionCompletion$1,
40120	    canDismissFormManually: () => false,
40121	    formRequiresPrerequisiteLoading: () => false,
40122	    canPartiallyRegister: true
40123	};
40124
40125	const formStartAction = async (form, formState, formActions) => {
40126	    const existingSubscriptions = await loadExistingSubscriptions(form, formState, formActions, true);
40127	    const subscriptionQueryParam = getSubscriptionParam(window.location.href);
40128	    if (!subscriptionQueryParam) {
40129	        return;
40130	    }
40131	    const queryParamSubscription = existingSubscriptions.find(subscription => subscription.externalId === subscriptionQueryParam);
40132	    if (queryParamSubscription) {
40133	        formActions.updateFormState({
40134	            selectedSubscription: queryParamSubscription,
40135	            isExternalReferrer: true,
40136	        });
40137	        formActions.completeSection();
40138	    }
40139	};
40140	const onSubscriptionSelectComplete = (form, formState, formActions) => {
40141	    formActions.jumpToPartStart(partTypes.BILL_TO_CONTACT.type);
40142	};
40143	const onBillToContactComplete = async (form, formState, formActions) => {
40144	    try {
40145	        const response = await request(`zephr/accounts/${formState.selectedSubscription.accountId}/update`, {
40146	            method: 'PATCH',
40147	            bodyObject: {
40148	                vendor_fields: {
40149	                    account: JSON.stringify({
40150	                        billToContact: formState.billToContact
40151	                    })
40152	                }
40153	            }
40154	        }, formActions);
40155	        if (response.ok) {
40156	            logDataLayerEvent(form, 'zephr_form_bill_to_contact_change', {
40157	                accountId: formState.selectedSubscription.accountId,
40158	                billToContact: formState.billToContact
40159	            });
40160	            formActions.jumpToPartStart(partTypes.SUCCESS.type);
40161	        }
40162	        else {
40163	            formActions.updateFormState({
40164	                serverErrors: [ServerError.UNKNOWN],
40165	            });
40166	            logDataLayerEvent(form, 'zephr_form_error', {
40167	                error: ServerError[ServerError.UNKNOWN],
40168	            });
40169	        }
40170	    }
40171	    catch (error) {
40172	        console.error("Error occurred while updating bill to contact address.", error);
40173	        formActions.updateFormState({
40174	            serverErrors: [ServerError.UNKNOWN],
40175	        });
40176	        logDataLayerEvent(form, 'zephr_form_error', {
40177	            error: ServerError[ServerError.UNKNOWN],
40178	        });
40179	    }
40180	};
40181	const eventHandlers = {
40182	    [FormEvent.FORM_START]: formStartAction,
40183	    [FormEvent.SELECT_SUBSCRIPTION_COMPLETE]: onSubscriptionSelectComplete,
40184	    [FormEvent.BILL_TO_CONTACT_COMPLETE]: onBillToContactComplete,
40185	};
40186	const sectionVisibilities = [];
40187	const canAttemptSectionCompletion = (_, formState) => {
40188	    return !formState.elementValidity
40189	        .filter((e) => e.partType === formState.currentPart.type &&
40190	        e.sectionType === formState.currentSection.type &&
40191	        e.sectionOrder === formState.currentSection.order)
40192	        .some((e) => !e.isValid);
40193	};
40194	const sectionFlow = {
40195	    extraElements: [],
40196	    eventHandlers,
40197	    sectionVisibilities,
40198	    canAttemptSectionCompletion,
40199	    canDismissFormManually: () => false,
40200	    formRequiresPrerequisiteLoading: () => false,
40201	};
40202
40203	const sectionFlows = {
40204	    [FormType.PAYMENT]: sectionFlow$9,
40205	    [FormType.CHANGE_SUBSCRIPTION]: sectionFlow$9,
40206	    [FormType.REGISTRATION]: sectionFlow$8,
40207	    [FormType.CONTACT]: sectionFlow$7,
40208	    [FormType.DATA_CAPTURE]: sectionFlow$6,
40209	    [FormType.COMPLETE_REGISTRATION]: sectionFlow$6,
40210	    [FormType.UPDATE_PROFILE]: sectionFlow$5,
40211	    [FormType.CANCEL_SUBSCRIPTION]: cancelSubscriptionSectionFlow,
40212	    [FormType.LIST_SUBSCRIPTIONS]: listSubscriptionsSectionFlow,
40213	    [FormType.LIST_GIFT_SUBSCRIPTIONS_SENT]: listSubscriptionsSectionFlow,
40214	    [FormType.DEVICES]: sectionFlow$3,
40215	    [FormType.GIFT_SUBSCRIPTION]: sectionFlow$2,
40216	    [FormType.GIFT_REDEMPTION]: sectionFlow$1,
40217	    [FormType.SUSPEND_RESUME_SUBSCRIPTION]: sectionFlow$4,
40218	    [FormType.BILL_TO_CONTACT]: sectionFlow,
40219	    [FormType.EMPTY]: {
40220	        extraElements: [],
40221	        sectionVisibilities: [],
40222	        eventHandlers: {},
40223	        canAttemptSectionCompletion: () => true,
40224	        canDismissFormManually: () => false,
40225	        formRequiresPrerequisiteLoading: () => false,
40226	    }
40227	};
40228	const sectionFlowFor = (formType) => {
40229	    const flow = sectionFlows[formType];
40230	    if (!flow) {
40231	        throw `No flow for form type ${formType}`;
40232	    }
40233	    return flow;
40234	};
40235
40236	const baselineCssVariablesTimestamp = Date.parse("2024-04-19T00:00:00Z");
40237	const baselineCssVariables = {
40238	    "--zf-container-color": "unset",
40239	    "--zf-container-bgColor": "#fff",
40240	    "--zf-container-borderRadius": "0",
40241	    "--zf-input-bgColor": "#fff",
40242	    "--zf-payment-options-border": "1px solid #000",
40243	    "--zf-payment-options-color": "#000",
40244	    "--zf-payment-options-bgColor": "#fff",
40245	    "--zf-payment-summary-border": "1px solid #000",
40246	    "--zf-payment-summary-borderRadius": "0",
40247	    "--zf-payment-summary-color": "unset",
40248	    "--zf-payment-summary-bgColor": "transparent",
40249	};
40250	const appendCssVariables = (cssVariablesStyle, additionalCssVariables) => {
40251	    const additionalCssVariablesStyle = Object.entries(additionalCssVariables)
40252	        .map(([key, value]) => `${key}: ${value}`)
40253	        .join(';\n');
40254	    return `${cssVariablesStyle};\n${additionalCssVariablesStyle}`;
40255	};
40256	const addBackwardsCompatibilityCssVariables = (cssVariablesStyle, formConfigTimestamp) => (formConfigTimestamp || 0) < baselineCssVariablesTimestamp
40257	    ? appendCssVariables(cssVariablesStyle, baselineCssVariables)
40258	    : cssVariablesStyle;
40259
40260	/* src/FormApp.svelte generated by Svelte v4.2.12 */
40261
40262	function create_fragment(ctx) {
40263		let div;
40264		let formroot;
40265		let div_class_value;
40266		let current;
40267
40268		formroot = new FormRoot({
40269				props: {
40270					formConfiguration: /*formConfiguration*/ ctx[2]
40271				}
40272			});
40273
40274		return {
40275			c() {
40276				div = element("div");
40277				create_component(formroot.$$.fragment);
40278				attr(div, "id", /*formConfiguration*/ ctx[2].formId);
40279				attr(div, "class", div_class_value = "" + (null_to_empty(`zephr-form ${formTypeClass(/
40279*formType*/ ctx[0])}`) + " svelte-789zog"));
40280				attr(div, "style", /*cssVariables*/ ctx[1]);
40281			},
40282			m(target, anchor) {
40283				insert(target, div, anchor);
40284				mount_component(formroot, div, null);
40285				current = true;
40286			},
40287			p(ctx, [dirty]) {
40288				if (!current || dirty & /*formType*/ 1 && div_class_value !== (div_class_value = "" + (null_to_empty(`zephr-form ${formTypeClass(/*formType*/ ctx[0])}`) + " svelte-789zog"))) {
40289					attr(div, "class", div_class_value);
40290				}
40291			},
40292			i(local) {
40293				if (current) return;
40294				transition_in(formroot.$$.fragment, local);
40295				current = true;
40296			},
40297			o(local) {
40298				transition_out(formroot.$$.fragment, local);
40299				current = false;
40300			},
40301			d(detaching) {
40302				if (detaching) {
40303					detach(div);
40304				}
40305
40306				destroy_component(formroot);
40307			}
40308		};
40309	}
40310
40311	function instance($$self, $$props, $$invalidate) {
40312		const defaultEnvironment = {
40313			apiUrlBase: "",
40314			onStateChanged: () => {
40315				
40316			},
40317			debugLogging: false,
40318			reduceDelays: false,
40319			previewMode: false
40320		};
40321
40322		let { formType } = $$props;
40323		let { formConfig } = $$props;
40324		let { formTypeConfig } = $$props;
40325		let { organisationConfig } = $$props;
40326		let { environment = {} } = $$props;
40327
40328		const mergedEnvironment = {
40329			...defaultEnvironment,
40330			...environment,
40331			...(formConfig?._spikeApiUrl)
40332			? { apiUrlBase: formConfig._spikeApiUrl }
40333			: {}
40334		};
40335
40336		// Styles
40337		const styleGuideObj = JSON.parse(organisationConfig.siteStyles ?? "{}");
40338
40339		const cssVariables = addBackwardsCompatibilityCssVariables(convertSiteStylesToCssVariables(styleGuideObj), formConfig.timestamp);
40340
40341		// Section flow
40342		const sectionFlow = sectionFlowFor(formType);
40343
40344		// Language pack resolving
40345		const formConfigResolved = resolveLanguagePackKeys(formConfig.languagePack, formConfig);
40346
40347		const typeConfigResolved = resolveLanguagePackKeys(formConfig.languagePack, formTypeConfig);
40348		const orgConfigResolved = resolveLanguagePackKeys(formConfig.languagePack, organisationConfig);
40349		const uniqueKey = randomId();
40350		const isPaymentForm = formType === FormType.PAYMENT;
40351
40352		const formConfiguration = {
40353			environment: mergedEnvironment,
40354			formType,
40355			...formConfigResolved,
40356			organisationConfiguration: orgConfigResolved,
40357			typeConfiguration: typeConfigResolved,
40358			sectionFlow,
40359			uniqueKey,
40360			formId: isPaymentForm
40361			? "zephr-payment-form-root"
40362			: `zephr-form-root-${uniqueKey}`
40363		};
40364
40365		$$self.$$set = $$props => {
40366			if ('formType' in $$props) $$invalidate(0, formType = $$props.formType);
40367			if ('formConfig' in $$props) $$invalidate(3, formConfig = $$props.formConfig);
40368			if ('formTypeConfig' in $$props) $$invalidate(4, formTypeConfig = $$props.formTypeConfig);
40369			if ('organisationConfig' in $$props) $$invalidate(5, organisationConfig = $$props.organisationConfig);
40370			if ('environment' in $$props) $$invalidate(6, environment = $$props.environment);
40371		};
40372
40373		return [
40374			formType,
40375			cssVariables,
40376			formConfiguration,
40377			formConfig,
40378			formTypeConfig,
40379			organisationConfig,
40380			environment
40381		];
40382	}
40383
40384	class FormApp extends SvelteComponent {
40385		constructor(options) {
40386			super();
40387
40388			init(this, options, instance, create_fragment, safe_not_equal, {
40389				formType: 0,
40390				formConfig: 3,
40391				formTypeConfig: 4,
40392				organisationConfig: 5,
40393				environment: 6
40394			});
40395		}
40396	}
40397
40398	// TODO Parameter version translation
40399	// TODO remove circular deps
40400	const currentPropsVersion = "main:1";
40401	const translateFormProps = (propsVersion, props) => {
40402	    if (propsVersion === currentPropsVersion) {
40403	        return props;
40404	    }
40405	    // Knowledge of other prop versions goes here once some backwards-incompatible changes
40406	    // have been made to the props schema.
40407	    throw `Unknown props version ${propsVersion}`;
40408	};
40409	const renderForm = (container, props) => {
40410	    const target = (typeof container === 'string' || container instanceof String)
40411	        ? document.getElementById(container)
40412	        : container;
40413	    return new FormApp({ target, props });
40414	};
40415	// Public API entrypoint
40416	if (window.Zephr == null) {
40417	    window.Zephr = {};
40418	}
40419	window.Zephr.renderForm = renderForm;
40420	window.Zephr.translateFormProps = translateFormProps;
40421
40422})();
40423//# sourceMappingURL=bundle.js.map
40424</script>
40424
40425                                <style></style>
40426                                <div id="zephr-form-RWCJsQ" class="zephr-form-container">
40427                                </div>
40428                                
40428<script data-cmp-ab="2">
40429                                    var element = document.currentScript;
40430                                    while(!(element.classList && element.classList.contains('zephr-form-container'))){
40431                                        element = element.previousSibling;
40432                                    }
40433                                    window.Zephr.renderForm(element, window.Zephr.translateFormProps("main:1", {"formType":"REGISTRATION","formConfig":{"parts":[{"type":"account-verification","label":"<<<forms.registration.account-verification-section|Account Verification>>>","sections":[{"type":"email","order":0,"elements":[{"type":"text","order":0,"id":"28f060c1-625f-49b7-a7c4-9b5e3d4be04c","config":{"text":"<h2>Login or Register</h2>\n<h3>Enter your email to start</h3>\n<hr />","centerText":true},"hidden":false},{"type":"email_address","id":"23e4942d-9917-4173-a82e-8a6e9888a002","config":{"label":"<<<forms.common.email|Email>>>","placeholder":"[email protected]"},"order":1,"hidden":false},{"type":"account_code","id":"a392308a-cc18-4483-a5bf-eff8429e21ad","config":{"label":"<<<forms.common.account-code.label|Have an account registration code? Enter it here>>>","placeholder":"<<<forms.common.account-code.placeholder|e.g. ACCOUNT001>>>","enabled":false,"hidden":true},"order":2,"hidden":false},{"type":"divider","id":"0f41d61b-4521-4df5-b3b1-34454cbdc3f2","config":{"show":false,"text":"OR USE","showLine":true,"enabled":false,"hidden":true},"order":3,"hidden":false},{"type":"social_sign_in","id":"4680165a-8bf4-4de6-8fd8-5bce8ee4c854","config":{"labelText":"<<<forms.common.social-sign-in-label|Continue with>>>","enabled":false,"allowEmptyLabel":true,"hidden":true},"order":4,"hidden":false},{"type":"button","id":"26da6627-87c1-4219-bdfb-5d313a7c9cec","config":{"text":"<<<forms.common.continue|Continue>>>","isSubmit":false},"order":5,"hidden":false},{"type":"text","order":6,"id":"fb31a359-7ed1-457e-92e4-962c099f8cb4","config":{"text":"<p>You will receive a one time passcode to this email address.</p>","centerText":true}},{"type":"text","order":7,"id":"e0f3ecbb-4f2b-40aa-8d7c-a1063181185b","config":{"text":"<p style=\"font-size: 11px;\">By continuing you agree to our <a href=\"/terms-of-use\">terms and conditions</a> and acknowledge our <a href=\"/privacy-policy\">privacy policy</a>.</p>","centerText":true}}]},{"type":"verification_code_registration","order":1,"label":"OTP Verification","elements":[{"type":"progress_bar","id":"076d7bbb-3769-4f67-b40e-de62c7fa2b8f","config":{"enabled":false,"hidden":true},"order":0,"hidden":false},{"type":"text","order":1,"id":"66d72e1b-8194-43c1-bd50-ab2b3a67f438","config":{"text":"<h2>Register</h2>\n<h3>Enter code to register</h3>\n<hr />","centerText":true},"hidden":false},{"type":"email_address","id":"f982f2ea-31f0-4625-8a9f-fee3a990ba36","config":{"label":"<<<forms.common.email|Email>>>","editText":"<<<forms.common.email-edit|Edit>>>","disabled":true},"order":2,"hidden":false},{"type":"otp_code","id":"5c98f09e-cb7c-4449-b7a0-7e120878f743","config":{"label":"<<<forms.common.otp.label|Code>>>","placeholder":"<<<forms.common.otp.placeholder|e.g. 350271>>>","resendText":"<<<forms.common.otp.resend|Didn't get a code?>>>","message":"<<<forms.common.otp.resent|Resent!>>>"},"order":3,"hidden":false}]},{"type":"password_setup","order":2,"label":"<<<forms.registration.password-setup-section|Password Setup>>>","elements":[{"type":"progress_bar","id":"a73c1373-3496-4df1-a9b4-d59278688cc1","config":{"enabled":false,"hidden":true}},{"type":"text","id":"aed60673-d037-409a-90d1-9e8df17423b5","config":{"text":"<<<forms.registration.password-setup-text|Create an account>>>"}},{"type":"email_address","id":"51fe6911-ae51-48f7-a328-de1eb96c7d36","config":{"label":"<<<forms.common.email|Email>>>","editText":"<<<forms.common.email-edit|Edit>>>","disabled":true}},{"type":"password","id":"3593ba37-a0a3-4a25-ae73-69c0b3e9d9cf","config":{"password":"<<<forms.common.password|Password>>>","show":"<<<forms.common.password-show|Show>>>","hide":"<<<forms.common.password-hide|Hide>>>","passValidatorEnabled":true,"placeholder":"<<<forms.common.password-placeholder|password...>>>","confirm":"<<<forms.common.password-confirm|Confirm Password>>>","confirmPlaceholder":"<<<forms.common.password-confirm-placeholder|confirm password...>>>","passwordsMatchIndicatorEnabled":true,"minLengthValidation":"<<<forms.common.password-validator.length|Must include at least 8 characters>>>","uppercaseValidation":"<<<forms.common.password-validator.uppercase|Must include an uppercase letter>>>","numberValidation":"<<<forms.common.password-validator.number|Must include a number character>>>","symbolValidation":"<<<forms.common.password-validator.symbol|Must include a supported symbol>>>","passwordsMatchText":"<<<forms.common.password-validator.match|Passwords match>>>"}},{"type":"button","id":"f86e29f8-2717-4b64-9bc1-64a6003e99c7","config":{"text":"<<<forms.common.continue|Continue>>>","isSubmit":false}}]},{"type":"verification_code_login","order":3,"label":"Passwordless Login via Login Code","elements":[{"type":"progress_bar","id":"0da34152-a835-4c05-a009-f9510a221678","config":{"enabled":false,"hidden":true},"order":0,"hidden":false},{"type":"text","order":1,"id":"d435c818-a98f-42a2-b5a5-dfac166dafa3","config":{"text":"<h2>Welcome back</h2>\n<h3>Enter code to log in</h3>\n<hr />","centerText":true},"hidden":false},{"type":"email_address","id":"1a371d45-b6db-4b5c-b462-a6893c262451","config":{"label":"<<<forms.common.email|Email>>>","editText":"<<<forms.common.email-edit|Edit>>>","disabled":true},"order":2,"hidden":false},{"type":"otp_code","id":"4678ce12-dd4d-4340-a657-d34f9d38ff87","config":{"label":"<<<forms.common.otp.label|Code>>>","placeholder":"<<<forms.common.otp.placeholder|e.g. 350271>>>","resendText":"<<<forms.common.otp.resend|Didn't get a code?>>>","message":"<<<forms.common.otp.resent|Resent!>>>"},"order":3,"hidden":false}]},{"type":"login_password","order":4,"label":"Login with Password","elements":[{"id":"31ee5cfe-36ea-43fb-91cc-0225b03fcc1c","config":{"enabled":false,"hidden":true},"type":"progress_bar"},{"type":"password","id":"dc705dfc-2f9a-409d-877b-d06fc28f33f0","config":{"password":"<<<forms.common.password|Password>>>","placeholder":"<<<forms.common.password-placeholder|password...>>>","isLogin":true}},{"type":"link","id":"793325e9-fdfd-4b53-92ca-5748ed7ef911","config":{"text":"<<<forms.common.otp.forgot-password|Forgot Password?>>>","message":"<<<forms.common.otp.forgot-password-code-sent|Code sent!>>>"}},{"type":"button","id":"76f11c51-367e-483b-8152-fcc00dcbb333","config":{"isSubmit":false,"text":"<<<forms.common.continue|Continue>>>"}}]},{"type":"passwordless_login_via_link","order":5,"label":"Passwordless Login","elements":[{"type":"text","id":"a25adc84-1477-4f04-8637-16813c93781a","config":{"text":"<<<forms.registration.login-link-text|A login link has been sent to>>>"}},{"type":"email_address","id":"fe5345ad-51ac-4de8-a684-359214a04b74","config":{"label":"<<<forms.common.email|Email>>>","editText":"<<<forms.common.email-edit|Edit>>>","disabled":true}},{"type":"resend_login_link","id":"7233076d-df77-4481-8043-6f4e12cf9
404331a3","config":{"text":"<<<forms.registration.resend-login-link|Didn't get a link?>>>","message":"<<<forms.registration.resend-login-link-resent|Resent!>>>"}}]},{"type":"forgot_password","order":6,"label":"Password Reset Code","elements":[{"type":"text","id":"fae3aabd-64c1-4158-ab95-8405a38ae4d5","config":{"text":"<<<forms.registration.reset-password-text|Reset your password>>>"}},{"type":"text","id":"068950e7-a317-4779-ad95-d2135ff52683","config":{"text":"<<<forms.common.otp.code-sent-to|A message with a code has been sent to>>>"}},{"type":"email_address","id":"df8d043b-ebab-4a45-bea1-1f32ddf83813","config":{"label":"<<<forms.common.email|Email>>>","editText":"<<<forms.common.email-edit|Edit>>>","disabled":true}},{"type":"text","id":"88797ea0-e3fe-43e0-8128-bb108cef36d9","config":{"text":"<<<forms.common.otp.enter-code|Enter the code in the box below.>>>"}},{"type":"otp_code","id":"4d18e49a-d9fe-456b-8283-5cf0b405e0b0","config":{"label":"<<<forms.common.otp.label|Code>>>","placeholder":"<<<forms.common.otp.placeholder|e.g. 350271>>>","resendText":"<<<forms.common.otp.resend|Didn't get a code?>>>","message":"<<<forms.common.otp.resent|Resent!>>>"}},{"type":"divider","id":"5d1cd9a2-502c-47e9-9f16-8695f2dad00a","config":{"text":"<<<forms.common.divider-text|or use>>>","showLine":true,"show":true}},{"type":"button","id":"f1235a31-cbf2-462b-a5f0-cea89f0ca005","config":{"isSubmit":false,"isLogin":true,"text":"<<<forms.registration.login|Login>>>"}}]},{"type":"reset_password","order":7,"label":"Reset Password","elements":[{"type":"email_address","id":"40fdea0a-4115-4eb7-9c71-5038cf82cf1d","config":{"label":"<<<forms.common.email|Email>>>","editText":"<<<forms.common.email-edit|Edit>>>","disabled":true}},{"type":"password","id":"b144c9f4-a085-4ca6-a597-1fddca446f36","config":{"password":"<<<forms.common.password|Password>>>","show":"<<<forms.common.password-show|Show>>>","hide":"<<<forms.common.password-hide|Hide>>>","passValidatorEnabled":true,"placeholder":"<<<forms.common.password-placeholder|password...>>>","confirm":"<<<forms.common.password-confirm|Confirm Password>>>","confirmPlaceholder":"<<<forms.common.password-confirm-placeholder|confirm password...>>>","passwordsMatchIndicatorEnabled":true,"minLengthValidation":"<<<forms.common.password-validator.length|Must include at least 8 characters>>>","uppercaseValidation":"<<<forms.common.password-validator.uppercase|Must include an uppercase letter>>>","numberValidation":"<<<forms.common.password-validator.number|Must include a number character>>>","symbolValidation":"<<<forms.common.password-validator.symbol|Must include a supported symbol>>>","passwordsMatchText":"<<<forms.common.password-validator.match|Passwords match>>>"}},{"type":"button","id":"555843e1-6b8f-4153-b1c3-ad6570c55cf8","config":{"text":"<<<forms.registration.reset|Reset!>>>","isSubmit":false}}]},{"type":"custom_69d7686c-deb1-4d0f-ad81-16f66e1bd423","label":"Create your account","order":8,"elements":[{"type":"progress_bar","order":0,"id":"4b9c4219-9766-413e-a7c9-bc0709f940ff","config":{"enabled":false,"hidden":true},"hidden":false},{"type":"text","order":1,"id":"48502c22-359c-43c5-af19-644b135923bf","config":{"text":"<h2>Create your account</h2>\n<h3>Join over 150K members who use Sifted to stay up to speed on latest developments across Startup Europe</h3>\n<hr />","centerText":true},"hidden":false},{"type":"user_attribute","order":2,"id":"aa413ab8-0c27-4f08-bbb4-2129b4dda733","config":{"slug":"first_name","label":"First name","hasCondition":false},"hidden":false},{"type":"user_attribute","order":3,"id":"a103adde-5608-49e8-9afd-bd2c43968d85","config":{"slug":"last_name","label":"Last name","hasCondition":false,"required":false},"hidden":false}
40433,{"type":"user_attribute","order":4,"id":"f8a22532-e393-4025-b15c-377d4d1a5f47","config":{"slug":"form_role_at_business","label":"Job role","hasCondition":false,"required":false,"placeholder":"Select..."},"hidden":false},{"type":"user_attribute","order":5,"id":"f05e5418-207e-47e1-a5ad-e66e58354190","config":{"slug":"form_company_name","label":"Company name","hasCondition":false},"hidden":false},{"type":"user_attribute","order":6,"id":"9c10b7ae-7897-49d6-8711-e0ab5e01d6f6","config":{"slug":"form_company_type","label":"Company type","hasCondition":false,"required":false,"placeholder":"Select..."},"hidden":false},{"type":"user_attribute","order":7,"id":"c3c3d9bf-3826-4d4b-a36f-650636ffe306","config":{"slug":"form_advisory_firm_type","label":"Advisory Firm Type","hasCondition":false},"hidden":false},{"type":"user_attribute","order":8,"id":"ab227273-a82a-43d5-a022-78ba769cb983","config":{"slug":"form_professional_service_type","label":"Type of Service Provider","hasCondition":false,"placeholder":"Select..."},"hidden":false},{"type":"user_attribute","order":9,"id":"8d921a5b-9c4f-4821-8460-d96161c021e1","config":{"slug":"form_investment_firm_type","label":"Type of Investment Firm","hasCondition":false,"placeholder":"Select..."},"hidden":false},{"type":"user_attribute","order":10,"id":"34edc1a6-abb3-4643-9345-4e8f997014d3","config":{"slug":"form_sector","label":"Sector","hasCondition":false,"placeholder":"Select..."},"hidden":false},{"type":"user_attribute","order":11,"id":"daa0a671-3fcd-4432-b5be-14b84729127b","config":{"slug":"form_country","label":"Country","hasCondition":false,"placeholder":"Select..."},"hidden":false},{"type":"user_attribute","order":12,"id":"e500fd49-f6e3-4fd5-9f00-5786e98881aa","config":{"slug":"agree_to_have_data_stored","label":"I agree to have my data stored and processed by Sifted.","hasCondition":false,"required":false},"hidden":false},{"type":"button","order":13,"id":"9c5dac75-8bf4-49ea-83ea-45d3caeccf56","config":{"isSubmit":false,"text":"Create account"},"hidden":false},{"type":"text","order":14,"id":"f35e521e-6366-4175-9a50-e098e262d2c8","config":{"text":"<p><strong>Your account registration includes access to a limited number of articles each month and the Sifted Daily newsletter. By signing up you agree to our&nbsp;<a href=\"/privacy-policy\" target=\"_blank\" rel=\"noopener noreferrer\">privacy policy</a>&nbsp;and&nbsp;<a href=\"/cookie-policy\" target=\"_blank\" rel=\"noopener noreferrer\">cookie policy</a>&nbsp;and to receive marketing and account-related emails from Sifted, as well as the Sifted Daily newsletter. You can unsubscribe at any time. This site is protected by reCAPTCHA and the Google&nbsp;<a href=\"https://policies.google.com/privacy\" target=\"_blank\" rel=\"noopener noreferrer\">Privacy Policy</a>&nbsp;and&nbsp;<a href=\"https://policies.google.com/terms\" target=\"_blank\" rel=\"noopener noreferrer\">Terms of Service</a>&nbsp;apply.</strong></p>","centerText":true},"hidden":false}]},{"type":"custom_3f2b8209-a157-476f-9587-f559b8721280","label":"Complete your profile","order":9,"elements":[{"type":"text","order":0,"id":"46f0a4e4-6cfa-496a-821a-ba585807bc09","config":{"text":"<h2>Complete your profile</h2>\n<h3>Sign up to Sifted’s specialist newsletters, and hear about our upcoming events</h3>\n<hr />","centerText":true},"hidden":false},{"type":"progress_bar","order":1,"id":"2003ff9e-f9d9-4f45-9fd0-7e177cc5575f","config":{"enabled":false,"hidden":true},"hidden":false},{"type":"text","order":2,"id":"c16fbd73-c333-4ae6-ba9a-106365e54c2e","config":{"text":"<p>Newsletters</p>","centerText":true},"hidden":false},{"type":"text","order":3,"id":"deecb05f-e8f7-476c-8621-4fa10b64f181","config":{"text":"<label class=\"zephr-form-input-label\" for=\"sign-me-up-to-all-newsletters\">\n    <div class=\"zephr-form-checkbox-label\">\n        <input type=\"checkbox\" id=\"sign-me-up-to-all-newsletters\">Sign me up to all newsletters\n    </div>\n</label>","centerText":true},"hidden":false}
40433,{"type":"user_attribute","order":4,"id":"b38a6b74-189c-49ee-9ada-ede7e76e39ee","config":{"slug":"would-like-futureproof-newsletter","label":"","hasCondition":false},"hidden":false},{"type":"user_attribute","order":6,"id":"00249052-5335-4fb5-8fe5-5e3e301a3e29","config":{"slug":"would-like-startup-life-newsletter","label":"","hasCondition":false},"hidden":false},{"type":"user_attribute","order":7,"id":"b0fadebe-167e-4296-9a9e-9b2caea8510b","config":{"slug":"would-like-fintech-newsletter","label":"","hasCondition":false},"hidden":false},{"type":"user_attribute","order":8,"id":"dbc61400-fec7-4684-8434-d532ab147d46","config":{"slug":"would-like-deeptech-newsletter","label":"","hasCondition":false},"hidden":false},{"type":"text","order":9,"id":"799fdb34-2116-454e-bec8-7bbcc2005915","config":{"text":"<p>Event updates</p>","centerText":true},"hidden":false},{"type":"user_attribute","order":10,"id":"2e07bf1d-5dbb-4f60-8ef1-4442eb4cbe27","config":{"slug":"would-like-event-newsletter","label":"Receive invitations, updates, and special offers across all Sifted events, including Sifted Talks, Breakfasts, Networking Drinks and Sifted Summit","hasCondition":false},"hidden":false},{"type":"button","order":11,"id":"6f3f16f2-4716-4a0d-a1d8-89716ef51011","config":{"isSubmit":true,"text":"Continue"},"hidden":false}]}]},{"type":"success","sections":[{"type":"success","order":1,"label":"Successful Registration","elements":[{"type":"text","id":"7ac39017-c217-4a87-9e05-3c9677563be3","config":{"text":"<<<forms.registration.success-message|You have signed up successfully!>>>"}},{"type":"button","id":"cb503d01-3609-4664-bb91-949a0ddc2981","config":{"text":"Continue"}}]},{"type":"email_verified","order":2,"label":"Email Verification","elements":[{"type":"text","id":"f20f8e40-fecd-412e-8c91-3a613235107d","config":{"text":"<p>A link has been sent to you. Please check your Email. (Registration)</p>"},"order":0}]}]}],"timestamp":1789634134090,"id":"U-djY8Uq","outcomeId":"","ruleId":"H-login-register-4","resolvedComponentTemplates":[],"languagePack":{"entries":{"forms.billing.history.date":"Date","forms.billing.history.every":"every","forms.billing.history.period":"Period","forms.billing.history.subtotal":"Subtotal","forms.billing.history.total":"Total","forms.buttons.back-button":"Back","forms.common.account-code.label":"Have an account registration code? Enter it here","forms.common.account-code.placeholder":"e.g. ACCOUNT001","forms.common.additional-section":"Additional Section","forms.common.continue":"Continue","forms.common.current-password":"Current Password","forms.common.divider-text":"or use","forms.common.email":"Email","forms.common.email-edit":"Edit","forms.common.email-placeholder":"Your email address","forms.common.otp.code-sent-to":"A message with a code has been sent to","forms.common.otp.enter-code":"Enter the code in the box below.","forms.common.otp.forgot-password":"Forgot Password?","forms.common.otp.forgot-password-code-sent":"Code sent!","forms.common.otp.label":"Code","forms.common.otp.placeholder":"e.g. 350271","forms.common.otp.resend":"Didn't get a code?","forms.common.otp.resent":"Resent!","forms.common.password":"Password","forms.common.password-confirm":"Confirm Password","forms.common.password-confirm-placeholder":"confirm password...","forms.common.password-hide":"Hide","forms.common.password-placeholder":"password...","forms.common.password-show":"Show","forms.common.password-validator.length":"Must include at least 8 characters","forms.common.password-validator.match":"Passwords match","forms.common.password-validator.number":"Must include a number character","forms.common.password-validator.symbol":"Must include a supported symbol","forms.common.password-validator.uppercase":"Must include an uppercase letter","forms.common.social-sign-in-label":"Continue with","forms.common.submit":"Submit","forms.common.update":"Update","forms.complete-registration-form.default-intro-text":"Set up your password","forms.complete-registration-form.default-success-message":"Thank you for updating your profile.","forms.contact-form.default-intro-text-1":"Stay in touch","forms.contact-form.default-intro-text-2":"Subscribe to our newsletter today","forms.contact-form.default-success-message":"Thank y
40433ou for submitting your contact information.","forms.data-capture-form.default-intro-text":"Tell us more about you!","forms.data-capture-form.default-success-message":"Thank you for updating your profile.","forms.devices.current-device-label":"Current Device","forms.devices.login-time-label":"Login Time","forms.devices.no-session-message":"No Device sessions recorded","forms.devices.sign-out-button":"Sign Out","forms.devices.sign-out-of-other-devices-button":"Sign Out of Other Devices","forms.devices.your-devices-label":"Your Devices","forms.errors.company-account-not-found":"Account not found","forms.errors.contact-creation-disabled":"This operation is not possible at the moment, please try again later","forms.errors.email-domain-blocked":"Please use a different email address, this domain is not supported","forms.errors.email-taken":"This email address is already registered. Please log in to continue","forms.errors.email-verification-required":"Email verification is required","forms.errors.future-delivery-date-invalid":"Please select a valid future date","forms.errors.future-delivery-date-required":"Please select a future delivery date","forms.errors.future-delivery-date-too-early":"Delivery date must be at least 24 hours in the future","forms.errors.invitation-failed-duplicate-email":"An invite has already been created for this email","forms.errors.invitation-failed-invalid-email":"Invalid email address","forms.errors.invitation-failed-limit-reached":"You have reached the sharing limit for this product","forms.errors.invitation-failed-no-product-access":"You do not currently have access to this product","forms.errors.login-failed":"The email address or password you entered is incorrect","forms.errors.no-authenticated-session":"Please login to update your profile","forms.errors.otp-incorrect":"The code you entered is incorrect","forms.errors.otp-or-password-incorrect":"The password or code you entered is incorrect","forms.errors.otp-send-failed":"Unable to send a verification code. Please try again later","forms.errors.password-reset-failed":"Unable to reset your password. Please try again later","forms.errors.password-reset-link-send-failed":"Unable to send a password reset link. Please try again later","forms.errors.promo-code-expired":"Promo code expired","forms.errors.promo-code-invalid":"Invalid promo code","forms.errors.promo-code-invalid-for-payment-option":"Promo code cannot be applied to selected option","forms.errors.session-limit-reached":"You have reached the session limit. Please log out from another device to access this content","forms.errors.too-many-requests":"To gain login access, please contact your administrator","forms.errors.unknown-error":"Something went wrong. Please try again later","forms.errors.unknown-payment-error":"Something went wrong when processing your payment. Please try again later","forms.errors.user-attribute-invalid":"Invalid user attribute","forms.errors.user-not-found":"User not found","forms.gift-subscription.enable-future-delivery-toggle-description":"Schedule this gift subscription to start on a specific date","forms.gift-subscription.enable-future-delivery-toggle-label":"Schedule for future date","forms.gift-subscription.future-delivery-date-description":"Choose when the gift subscription should start","forms.gift-subscription.future-delivery-date-label":"Start date","forms.gift-subscription.future-delivery-date-placeholder":"Select start date","forms.list-subscriptions.billing-history-link":"Billing history","forms.list-subscriptions.billing-history-text":"To see previous invoices visit","forms.list-subscriptions.cancel-subscription-text":"Cancel subscription","forms.list-subscriptions.change-default-payment-method-button":"Change Default Payment Method","forms.list-subscriptions.change-payment-method-button":"Change Payment Method","forms.list-subscriptions.change-payment-success-text":"Payment successfully changed","forms.list-subscriptions.change-subscription-text":"Change subscription","forms.list-subscriptions.custom-fields-section-description":"Update your subscription information below","forms.list-subscriptions.custom-fields-section-title":"Update Subscription Details","forms.list-subscriptions.custom-fields-submit-button-text":"Update Details","forms.list-subscriptions.delivery-address-line-1-label":"Delivery Address Line 1","forms.list-subscriptions.delivery-address-line-1-placeholder":"Enter delivery address line 1","forms.list-subscriptions.delivery-address-line-2-label":"Delivery Address Line 2","forms.list-subscriptions.delivery-address-line-2-placeholder":"Enter delivery address line 2","forms.list-subscriptions.delivery-city-label":"Delivery City","forms.list-subscriptions.delivery-city-placeholder":"Enter delivery city","forms.list-subscriptions.delivery-country-label":"Delivery Country","forms.list-subscriptions.delivery-country-placeholder":"Enter delivery country","forms.list-subscriptions.delivery-information-description":"Manage your delivery address and preferences","forms.list-subscriptions.delivery-information-title":"Delivery Information","forms.list-subscriptions.delivery-postcode-label":"Delivery Postc
40433ode","forms.list-subscriptions.delivery-postcode-placeholder":"Enter delivery postcode","forms.list-subscriptions.next-payment-date":"Next payment date","forms.list-subscriptions.no-subscriptions-message":"You don't have any subscriptions","forms.list-subscriptions.subscription-rate-label":"Subscription rate","forms.list-subscriptions.suspend-resume-subscription-text":"Suspend/Resume subscription","forms.list-subscriptions.view-past-subscriptions-link":"View past subscriptions","forms.payment.account-verification-section":"Account Verification","forms.payment.invitation-button":"Send Invite","forms.payment.invitation-description":"You can invite people by entering their email","forms.payment.invitation-label":"Email Address","forms.payment.invitation-link-sent":"Invite sent!","forms.payment.invitation-title":"Invite people to your sharable plan","forms.payment.login":"Login","forms.payment.login-link":"Login","forms.payment.login-link-message":"Already a registered user?","forms.payment.password-setup-text":"Create an account","forms.payment.payment-button":"Confirm and process payment","forms.payment.payment-option-select-button":"Select Plan","forms.payment.payment-section":"Payment Details","forms.payment.payment-summary-disclaimer":"Today's payment may vary","forms.payment.payment-summary-prorate":"DUE TODAY","forms.payment.payment-summary-tax":"Tax","forms.payment.payment-summary-title":"Subscription","forms.payment.payment-summary-total":"TOTAL","forms.payment.plan-select-section":"Plan Select","forms.payment.promo-code-button":"Verify","forms.payment.promo-code-placeholder":"Promo code","forms.payment.promo-code-text":"Have a promo code?","forms.payment.reset-password-text":"Reset your password","forms.payment.success-button":"Continue Reading","forms.payment.success-message":"Payment processed successfully","forms.registration.account-verification-section":"Account Verification","forms.registration.default-intro-text":"You've reached the limit of free articles","forms.registration.email-verification-required-message":"A link has been sent to you. Please check your Email.","forms.registration.login":"Login","forms.registration.login-link-text":"A login link has been sent to","forms.registration.password-setup-section":"Password Setup","forms.registration.password-setup-text":"Create an account","forms.registration.resend-login-link":"Didn't get a link?","forms.registration.resend-login-link-resent":"Resent!","forms.registration.reset":"Reset!","forms.registration.reset-password-text":"Reset your password","forms.registration.success-button":"Continue Reading","forms.registration.success-message":"You have signed up successfully!","forms.subscription-cancel.back-button":"Back","forms.subscription-cancel.back-cancellation-button":"Back","forms.subscription-cancel.cancel-button":"Cancel Subscription","forms.subscription-cancel.confirm-text":"Are you sure you want to cancel?","forms.subscription-cancel.continue-cancel-button":"Continue Cancellation","forms.subscription-cancel.intro-text":"Select a subscription to cancel","forms.subscription-cancel.offer-text":"<h2>We are sorry to see you go</h2>Here is a special offer just for you.","forms.subscription-cancel.payment-option-select-button":"Accept Offer","forms.subscription-cancel.reason-text":"<h2>We would like to hear your feedback</h2>We'd appreciate it if you could to take a moment to let us know why you are cancelling.","forms.subscription-cancel.success-text":"Your subscription has been cancelled","forms.subscription-select.amount-label":"Amount:","forms.subscription-select.intro-text":"Select a subscription to upgrade","forms.subscription-select.next-billing-date-label":"Next billing date:","forms.subscription-select.no-change-plan-mapping-message":"No upgrade options are available for this subscription","forms.subscription-select.no-subscriptions-message":"No subscriptions available","forms.subscription-select.select-button":"Select","forms.suspend-resume-subscription.back-button":"Back to Home","forms.suspend-resume-subscription.intro-text":"Select a subscription to suspend or resume","forms.suspend-resume-subscription.resume-d
40433ate-label":"Resume date:","forms.suspend-resume-subscription.success-text":"Your subscription has been suspended","forms.suspend-resume-subscription.suspension-date-label":"Suspension date:","forms.update-profile.update-email-title":"<h2>Update Email Address</h2>","forms.update-profile.update-password-title":"<h2>Update Password</h2>","forms.update-profile.your-profile":"Your Profile","forms.update-profile.your-profile-title":"<h2>Your Profile</h2>","hidden.example-key":"Hello world","hidden.form-preview.locale":"en-US","hidden.forms-preview.example-payment-option-description":"Example Payment Option","hidden.forms-preview.example-payment-option-label":"Example Offer","interstitial-page.password-reset.new-password":"New password:","interstitial-page.password-reset.password-mismatch-error":"You did not enter the same password twice","interstitial-page.password-reset.repeat-password":"Repeat password:","interstitial-page.password-reset.reset-button":"Reset","interstitial-page.password-reset.return-home-link":"Go back to the site","interstitial-page.password-reset.success-message":"Your password has been reset successfully!","interstitial-page.password-reset.title":"Change your password","interstitial-page.password-reset.unknown-error":"Something went wrong! Please try again later.","interstitial-page.passwordless-login.title":"Welcome","interstitial-page.update-email.enter-password":"Please enter your current password to complete the email update request.","interstitial-page.update-email.incorrect-password-error":"Incorrect password.","interstitial-page.update-email.password":"Password:","interstitial-page.update-email.return-home-link":"Go back to the site","interstitial-page.update-email.submit-button":"Update","interstitial-page.update-email.title":"Changing your email","interstitial-page.update-email.unknown-error":"Something went wrong! Please try again later.","interstitial-page.update-email-passwordless.message":"Please check the inbox of your new email for further instructions.","interstitial-page.update-email-passwordless.title":"Changing your email","interstitial-page.update-email-passwordless-success.message":"You have successfully changed your email address.","interstitial-page.update-email-passwordless-success.title":"Changing your email","interstitial-page.update-email-success.message":"Your email has been updated successfully!","pages.account-management.account-select-dropdown":"Select account","pages.account-management.delete-link":"Delete","pages.account-management.delete-modal-body":"Are you sure you want to delete this user?","pages.account-management.delete-modal-button":"Yes Delete","pages.account-management.delete-modal-title":"You are about to delete user","pages.account-management.delete-success-modal-body":"has been successfully deleted.","pages.account-management.delete-success-modal-title":"User Deleted","pages.account-management.errors.already-exists":"already exists","pages.account-management.errors.delete-fail":"Failed to delete","pages.account-management.errors.invite-fail":"Could not invite user","pages.account-management.invite-button-text":"Invite a User","pages.account-management.invite-modal-cancel-button":"Cancel","pages.account-management.invite-modal-confirm-button":"Invite User","pages.account-management.invite-modal-email-label":"Email Address","pages.account-management.invite-modal-email-placeholder":"Enter Email Address","pages.account-management.invite-modal-title":"Invite User","pages.account-management.invite-success-modal-body":"An invite has been sent to","pages.account-management.no-users":"No users found","pages.account-management.owner":"Owner","pages.account-management.search-button-text":"Search","pages.account-management.search-placeholder-text":"Search for a user","pages.account-management.success-modal-button":"Close","pages.account-management.title":"Manage Your Users","pages.cancel.back-to-subscriptions":"Back to Subscriptions","pages.cancel.cancel-subscription":"Cancel Subscription","pages.cancel.cancelled":"Cancelled","pages.cancel.continue-subscription":"Continue Subscription","pages.cancel.days-left":"DAYS LEFT:","pages.cancel.plan-frequency":"Frequency","pages.cancel.plan-name":"Name","pages.cancel.plan-next-billing":"Next Billing","pages.cancel.plan-period":"Period","pages.cancel.plan-price":"Price","pages.cancel.plan-type":"Type","pages.cancel.select-plans":"Select the plans you wish to cancel","pages.cancel.status-active":"Active","pages.cancel.status-cancelled":"Cancelled","pages.cancel.status-draft":"Draft","pages.cancel.status-expired":"Expired","pages.cancel.status-pending-acceptance":"Pending Acceptance","pages.cancel.status-pending-activation":"Pending Activation","pages.cancel.status-suspended":"Suspended","pages.cancel.status-unknown":"Unknown","pages.cancel.subscription-ends-on":"Subscription ends on","pages.cancel.subscription-will-end-on":"Your subscription will end on","pages.cancel.success":"You've cancelled your subscription","pages.cancel.until-cancelled":"Until Cancelled","pages.common.collapsible-content-text":"See details","pages.common.confirmation-modal-cancel-button":"Cancel","pages.common.confirmation-modal-confirm-button":"Confirm","pages.common.confirmation-primary-error-message":"Something went wrong!","pages.common.confirmation-secondary-error-message":"Try again later.","pages.common.date-time-format-locale":"en-US","pages.common.input-errors-invalid-email":"Please enter a valid email","pages.common.input-errors-invalid-url":"Please enter a valid URL","pages.common.input-errors-missing-value":"Please enter a value","pages.common.loading":"Loading...","pages.common.no-access-back-link":"Go Back","pages.common.no-access-body":"Sorry, you are not allowed to access this page. Click the button to go back.","pages.common.no-access-title":"No access.","pages.common.password-hide":"Hide","pages.common.password-show":"Show","pages.login-reg.already-registered-sign-in":"Already registered? Sign in","pages.login-reg.cancel":"Cancel","pages.login-reg.complete-registration-button":"Complete Registration","pages.login-reg.continue-with-apple":"Continue with Apple","pages.login-reg.continue-with-facebook":"Continue with Facebook","pages.login-reg.continue-with-google":"Continue with Google","pages.login-reg.continue-with-linkedin":"Continue with Linkedin","pages.login-reg.continue-with-microsoft":"Continue with Microsoft","pages.login-reg.continue-with-open-id-connect":"Continue with Open ID Connect","pages.login-reg.continue-with-twitter":"Continue with X","pages.login-reg.create-account":"Create an account","pages.login-reg.email-me-login-link":"Email me login link","pages.login-reg.email-me-reset-code":"Email me reset code","pages.login-reg.email-placeholder":"Email Address","pages.login-reg.enter-account-reg-code-here":"Enter an account registration code here","pages.login-reg.errors.contact-admin":"Please contact the administrator","pages.login-reg.errors.email-already-taken":"Email already taken","pages.login-reg.errors.email-verification-required":"Email verification is required","pages.login-reg.errors.password-incorrect":"The password you entered is incorrect","pages.login-reg.errors.password-not-strong-enough":"Password is not strong enough","pages.login-reg.errors.seat-capacity":"Your registration request couldn't be completed due to account seat capacity issue.","pages.login-reg.errors.something-went-wrong":"Something went wrong!","pages.login-reg.errors.to-gain-access-contact-admin":"To gain login access, please contact your administrator","pages.login-reg.errors.try-again-later":"Please try again later.","pages.login-reg.errors.user-not-found":"User not found","pages.login-reg.errors.username-already-taken":"Username already taken","pages.login-reg.forgotten-password":"Forgotten Password?","pages.login-reg.logging-in":"Logging in...","pages.login-reg.login-button":"Login","pages.login-reg.login-to-account":"Login to your account","pages.login-reg.or":"Or","pages.login-reg.password-placeholder":"Password","pages.login-reg.password-requirement":"Password must be a minimum of 8 characters and contain uppercase and lowercase, numbers and at least 1 special character.","pages.login-reg.register-button":"Register","pages.login-reg.register-for-account":"Register for an account","pages.login-reg.reset-your-password":"Reset your password","pages.login-reg.wait":"Please wait...","pages.pref-center.devices.current-device":"Current Device","pages.pref-center.devices.error-loading":"There was an error getting the device list","pages.pref-center.devices.sign-in-time":"Login date and time:","pages.pref-center.devices.sign-out":"Sign out","pages.pref-center.devices.sign-out-all":"Sign out of all other devices","pages.pref-center.devices.sign-out-all-success":"All other devices are now signed out","pages.pref-center.devices.sign-out-fail":"Signing out failed","pages.pref-center.devices.sign-out-success":"is now signed out.","pages.pref-center.devices.title":"Your Devices","pages.pref-center.devices.unknown-device":"Unknown","pages.pref-center.email-update-passwordless-message":"A link has been sent to your current email. Please check your inbox.","pages.pref-center.email-update-passwordless-title":"Check Your Inbox","pages.pref-center.general-error":"Something went wrong - please try again later","pages.pref-center.profile.attributes-select-list-placeholder":"Select One","pages.pref-center.profile.attributes-update-save":"Save","pages.pref-center.profile.attributes-update-title":"Your profile","pages.pref-center.profile.email":"Email Address","pages.pref-center.profile.email-update-email-label":"New Email","pages.pref-center.profile.email-update-email-placeholder":"Enter Email","pages.pref-center.profile.email-update-password-label":"Your Password","pages.pref-center.profile.email-update-password-placeholder":"Enter password","pages.pref-center.profile.email-update-save":"Save","pages.pref-center.profile.email-update-step-2-title":"Update Email Address","pages.pref-center.profile.email-update-title":"Update Email Address","pages.pref-center.profile.errors.change-email-error":"Sorry but your email address has not been changed. Please try again.","pages.pref-center.profile.errors.change-password-error":"Sorry but we were unable to reset your password. Please try again.","pages.pref-center.profile.errors.email-already-taken-error":"This email address is already taken.","pages.pref-center.profile.errors.incorrect-code":"Entered code is incorrect","pages.pref-center.profile.errors.incorrect-password":"The password you entered is incorrect","pages.pref-center.profile.errors.password-validation-error":"Password is not strong enough","pages.pref-center.profile.errors.unsuccessful":"Unsuccessful","pages.pref-center.profile.errors.update-profile-error":"Sorry but we were unable to update your profile. Please try again.","pages.pref-center.profile.password":"Password","pages.pref-center.profile.password-update-current-password-label":"Current Password","pages.pref-center.profile.password-update-current-password-placeholder":"Enter your password","pages.pref-center.profile.password-update-new-password-label":"New Password","pages.pref-center.profile.password-update-new-password-placeholder":"Enter a password","pages.pref-center.profile.password-update-save":"Continue","pages.pref-center.profile.password-update-step-2-title":"Reset your password","pages.pref-center.profile.password-update-title":"Update Password","pages.pref-center.profile.title":"Your Profile","pages.pref-center.profile.update":"Update","pages.pref-center.profile.update-email-successful":"Your email address has been changed.","pages.pref-center.profile.update-password-successful":"Your password has been reset.","pages.pref-center.profile.update-profile-successful":"Your profile has been updated.","pages.pref-center.profile.update-return-text":"Return to Personal Information","pages.pref-center.profile.update-step-2-code-label":"Code","pages.pref-center.profile.update-step-2-code-placeholder":"e.g. 350271","pages.pref-center.profile.update-step-2-enter-code":"Enter the code in the box below.","pages.pref-center.profile.update-step-2-message-sent":"A message with a code has been sent to email address:","pages.pref-center.profile.update-step-2-ne
40433w-code-modal-body":"Would you like to send a new verification code to","pages.pref-center.profile.update-step-2-new-code-modal-button":"Resend Code","pages.pref-center.profile.update-step-2-new-code-modal-title":"Get a new verification code","pages.pref-center.profile.update-step-2-resend-code-link-text":"Didn't get a code?","pages.pref-center.profile.update-step-2-save":"Submit","pages.pref-center.profile.update-successful":"Success","pages.pref-center.share-product.modal-body":"You can invite people by entering their email. Available seats:","pages.pref-center.share-product.modal-email-label":"Email Address","pages.pref-center.share-product.modal-email-placeholder":"Enter Email Address","pages.pref-center.share-product.modal-send-button-text":"Send Invite","pages.pref-center.share-product.modal-title":"Invite people to your sharable subscription","pages.pref-center.shared-members.done-button":"Done","pages.pref-center.shared-members.invite-button-text":"Invite new members","pages.pref-center.shared-members.manage-shared-members-title":"Manage shared members","pages.pref-center.shared-members.no-members":"This product is not currently shared with anyone.","pages.pref-center.shared-members.seats-used":"seats used","pages.pref-center.shared-members.status-active":"Active","pages.pref-center.shared-members.status-inactive":"Inactive","pages.pref-center.shared-members.status-pending":"Pending","pages.pref-center.shared-members.table-header-date":"Date Shared","pages.pref-center.shared-members.table-header-email":"Email Address","pages.pref-center.shared-members.table-header-status":"Status","pages.pref-center.shared-members.table-remove-member":"Remove member","pages.pref-center.shared-members.title":"Shared Members","pages.pref-center.shared-products.errors.existing-invite-error":"An invite has already been created for this email","pages.pref-center.shared-products.errors.invalid-email-error":"Invalid email address","pages.pref-center.shared-products.errors.limit-reached-error":"You have reached the sharing limit for this product","pages.pref-center.shared-products.errors.no-access-error":"You do not currently have access to this product","pages.pref-center.shared-products.leave-product-body":"Are you sure you want to leave this shared product?","pages.pref-center.shared-products.leave-product-title":"Leave Product","pages.pref-center.shared-products.no-subscriptions":"You do not currently have any products shared with you.","pages.pref-center.shared-products.remove-invite-body":"Are you sure you want to remove this pending invite from your subscription?","pages.pref-center.shared-products.remove-invite-title":"Remove Invite","pages.pref-center.shared-products.remove-member-body":"Are you sure you want to remove this user from your subscription?","pages.pref-center.shared-products.remove-member-title":"Remove Member","pages.pref-center.shared-products.remove-subscription":"Leave shared subscription","pages.pref-center.shared-products.shared-by":"Shared by","pages.pref-center.subscriptions.billing-history-link":"Billing History.","pages.pref-center.subscriptions.billing-history-table-canceled":"Subscription canceled","pages.pref-center.subscriptions.billing-history-table-header-date":"Date","pages.pref-center.subscriptions.billing-history-table-header-period":"Subscription Period","pages.pref-center.subscriptions.billing-history-table-header-subtotal":"Subtotal","pages.pref-center.subscriptions.billing-history-table-header-total":"Total","pages.pref-center.subscriptions.billing-history-title":"Billing History","pages.pref-center.subscriptions.cancel-subscription-confirm-modal-body":"Your subscription has been canceled.","pages.pref-center.subscriptions.cancel-subscription-confirm-modal-button":"Close","pages.pref-center.subscriptions.cancel-subscription-confirm-modal-title":"Subscription canceled","pages.pref-center.subscriptions.cancel-subscription-modal-body":"Are you sure you want to cancel the subscription","pages.pref-center.subscriptions.cancel-subscription-modal-button":"Cancel Subscription","pages.pref-center.subscriptions.cancel-subscription-modal-title":"Cancel your subscription","pages.pref-center.subscriptions.cancel-subscription-title":"Cancel your subscription","pages.pref-center.subscriptions.canceled-date":"Canceled on","pages.pref-center.subscriptions.change-multi-subscription-screen-active-subscription":"active","pages.pref-center.subscriptions.change-multi-subscription-screen-best-value":"best value","pages.pref-center.subscriptions.change-multi-subscription-screen-cancel-subscriptions-confirm-modal-body":"Your subscriptions have been canceled.","pages.pref-center.subscriptions.change-multi-subscription-screen-cancel-subscriptions-confirm-modal-title":"Subscriptions canceled","pages.pref-center.subscriptions.change-multi-subscription-screen-cancel-subscriptions-modal-title":"Cancel your subscriptions","pages.pref-center.subscriptions.change-multi-subscription-screen-cancel-subscriptions-text":"Cancel Subscriptions","pages.pref-center.subscriptions.change-multi-subscription-screen-current-subscription":"current subscription","pages.pref-center.subscriptions.change-multi-subscription-screen-current-subscriptions-title":"Current Subscriptions","pages.pref-center.subscriptions.change-multi-subscription-screen-edit-subscription-text":"Edit","pages.pref-center.subscriptions.change-multi-subscription-screen-new-subscriptions-title":"New Subscriptions","pages.pref-center.subscriptions.change-multi-subscription-screen-review-button":"Review Changes","pages.pref-center.subscriptions.change-multi-subscription-screen-title":"Manage Subscriptions","pages.pref-center.subscriptions.change-payment-method-description":"Adjust how you pay for the product.","pages.pref-center.subscriptions.change-payment-method-screen-description":"This credit card will be used as the payment method for the following subscription:","pages.pref-center.subscriptions.change-payment-method-screen-save-button":"Save","pages.pref-center.subscriptions.change-payment-method-screen-title":"Enter Payment Detail","pages.pref-center.subscriptions.change-payment-method-title":"Change payment method","pages.pref-center.subscriptions.change-single-subscription-screen-add-new":"Add a new card","pages.pref-center.subscriptions.change-single-subscription-screen-best-value":"Best Value","pages.pref-center.subscriptions.change-single-subscription-screen-confirm-button":"CONFIRM & PROCESS PAYMENT","pages.pref-center.subscriptions.change-single-subscription-screen-current-subscription-title":"Current Subscription","pages.pref-center.subscriptions.change-single-subscription-screen-existing-payment":"Use existing payment method","pages.pref-center.subscriptions.change-single-subscription-screen-new-subscription-description":"Change your current subscription for another.","pages.pref-center.subscriptions.change-single-subscription-screen-new-subscription-title":"Change Subscription","pages.pref-center.subscriptions.change-single-subscription-screen-payment-method-selection":"Payment Method","pages.pref-center.subscriptions.change-single-subscription-screen-review-button":"Review Changes","pages.pref-center.subscriptions.change-single-subscription-screen-select-plan":"Select Plan","pages.pref-center.subscriptions.change-single-subscription-screen-selected-plan":"Selected Plan","pages.pref-center.subscriptions.change-single-subscription-screen-title":"Manage Subscription","pages.pref-center.subscriptions.change-single-subscription-title":"Change your subscription","pages.pref-center.subscriptions.change-subscription-description":"Adjust what products you have access to.","pages.pref-center.subscriptions.change-subscriptions-title":"Change your subscriptions","pages.pref-center.subscriptions.invoices-text":"To see previous invoices visit","pages.pref-center.subscriptions.manage-single-subscription-title":"Manage Subscription","pages.pref-center.subscriptions.manage-subscriptions-title":"Manage Subscriptions","pages.pref-center.subscriptions.next-payment-title":"Next payment date","pages.pref-center.subscriptions.no-subscriptions":"You don't have any subscriptions.","pages.pref-center.subscriptions.one-off-expiry-date":"Expiry Date","pages.pref-center.subscriptions.one-off-price-title":"Price","pages.pref-center.subscriptions.payment-information-title":"Payment Information","pages.pref-center.subscriptions.payment-processing-text":"(payment processing)","pages.pref-center.subscriptions.product-canceled":"Product canceled","pages.pref-center.subscriptions.return-to-subscription-text":"Return to Subscription","pages.pref-center.subscriptions.return-to-subscriptions-text":"Return to Subscriptions","pages.pref-center.subscriptions.subscription-rate-title":"Subscription rate","pages.pref-center.subscriptions.update-success":"Update success"}}},"formTypeConfig":{"allowAccountRegistrationCodes":false,"usePasswordlessAuthentication":false,"twoFactorEmailAuthentication":true,"usePassword":false,"useVerificationCodes":true,"showSuccessOnFormCompletion":false,"autoApplyAttributes":{"email_verified":"true","wants_main_newsletter":"true","would-like-member-newsletter":"false"},"version":1,"requestCountry":"US","requestState":"Illinois","requestCity":"Chicago","requestZipCode":"60602"},"organisationConfig":{"schemaFields":[{"slug":"agree_to_have_data_stored","visibility":"PUBLIC","label":"I agree to have my data stored and processed by Sifted.","required":false,"public-description":"","validation-expression":null,"input-type":"checkbox","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"articles-gift-given","visibility":"PUBLIC","label":"Articles gift given","required":false,"public-description":"","validation-expression":null,"input-type":"number","select-options":null,"range-start":null,"range-end":null,"range-step":null},{"slug":"breakfastRsvp","visibility":"PUBLIC","label":"breakfastRsvp","required":false,"public-description":null,"validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"company","visibility":"PUBLIC","label":"Company","required":false,"public-description":null,"validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"complete_profile_submitted","visibility":"PUBLIC","label":"Complete profile submitted","required":false,"public-description":"","validation-expression":null,"input-type":"checkbox","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"cookiebot_user_hash","visibility":"PUBLIC","label":"Cookiebot User Hash","required":false,"public-description":null,"validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"date-of-current-gifting-cycle-started","visibility":"PUBLIC","label":"Date of current gifting cycle started","required":false,"public-description":"","validation-expression":null,"input-type":"date","select-options":null,"range-start":null,"range-end":null,"range-step":null},{"slug":"department","visibility":"PUBLIC","label":"Department","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"⚙️ Engineering","value":"⚙️ Engineering","default":false},{"label":"👥 HR","value":"👥 HR","default":false},{"label":"🐈 Product","value":"🐈 Product","default":false},{"label":"🎨 Design","value":"🎨 Design","default":false},{"label":"🤝 Sales","value":"🤝 Sales","default":false},{"label":"🚀 Marketing","value":"🚀 Marketing","default":false},{"label":"⚖️ Legal","value":"⚖️ Legal","default":false},{"label":"💼 Business Development","value":"💼 Business Development","default":false},{"label":"🚦 Leadership","value":"🚦 Leadership","default":false},{"label":"💸 Finance","value":"💸 Finance","default":false},{"label":"👀 Other","value":"👀 Other","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"email_verified","visibility":"PUBLIC","label":"email verified","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"legacy","value":"legacy","default":false},{"label":"true","value":"true","default":false},{"label":"false","value":"false","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"expressed_interest","visibility":"PUBLIC","label":"Expressed Interest (Subscriber Events)","required":false,"public-description":null,"validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"first_name","visibility":"PUBLIC","label":"First name","required":true,"public-description":"","validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"form_advisory_firm_type","visibility":"PUBLIC","label":"form_advisory_firm_type","required":false,"public-description":"","validation-expression":null,"input-type":"select","select-options":[{"label":"Law Firm","value":"Law Firm","default":false},{"label":"Consultancy Firm","value":"Consultancy Firm","default":false},{"label":"Financial Advisory","value":"Financial Advisory","default":false}],"range-start":null,"range-end":null,"range-step":null},{"slug":"form_aum","visibility":"PUBLIC","label":"form_aum","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"Less than $1 million","value":"Less than $1 million","default":false},{"label":"$1 million - $10 million","value":"$1 million - $10 million","default":false},{"label":"$10 million - $50 million","value":"$10 million - $50 million","default":false},{"label":"$50 million - $100 million","value":"$50 million - $100 million","default":false},{"label":"$100 million - $500 million","value":"$100 million - $500 million","default":false},{"label":"$500 million - $1 billion","value":"$500 million - $1 billion","default":false},{"label":"Over $1 billion","value":"Over $1 billion","default":false},{"label":"Prefer not to disclose","value":"Prefer not to disclose","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"form_b2b_or_b2c","visibility":"PUBLIC","label":"form_b2b_or_b2c","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"B2B","value":"B2B","default":false},{"label":"B2C","value":"B2C","default":false},{"label":"Both","value":"Both","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"form_company_founded","visibility":"PUBLIC","label":"form_company_founded","required":false,"public-description":null,"validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"form_company_hq_country","visibility":"PUBLIC","label":"form_company_hq_country","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"Antilles","value":"Antilles","default":false},{"label":"Antigua and Barbuda","value":"Antigua and Barbuda","default":false},{"label":"Angola","value":"Angola","default":false},{"label":"Afghanistan","value":"Afghanistan","default":false},{"label":"Armenia","value":"Armenia","default":false},{"label":"Antarctica","value":"Antarctica","default":false},{"label":"Albania","value":"Albania","default":false},{"label":"Argentina","value":"Argentina","default":false},{"label":"Austria","value":"Austria","default":false},{"label":"American Samoa","value":"American Samoa","default":false},{"label":"Canada","value":"Canada","default":false},{"label":"Burkina Faso","value":"Burkina Faso","default":false},{"label":"Switzerland","value":"Switzerland","default":false},{"label":"Åland Islands","value":"Åland Islands","default":false},{"label":"France","value":"France","default":false},{"label":"Aruba","value":"Aruba","default":false},{"label":"Azerbaijan","value":"Azerbaijan","default":false},{"label":"Bahrain","value":"Bahrain","default":false},{"label":"Bosnia and Herzegovina","value":"Bosnia and Herzegovina","default":false},{"label":"Australia","value":"Australia","default":false},{"label":"Barbados","value":"Barbados","default
40433":false},{"label":"Belgium","value":"Belgium","default":false},{"label":"Bulgaria","value":"Bulgaria","default":false},{"label":"Burundi","value":"Burundi","default":false},{"label":"Benin","value":"Benin","default":false},{"label":"Brunei Darussalam","value":"Brunei Darussalam","default":false},{"label":"Bermuda","value":"Bermuda","default":false},{"label":"Bolivia, Plurinational State of","value":"Bolivia, Plurinational State of","default":false},{"label":"Bonaire, Sint Eustatius and Saba","value":"Bonaire, Sint Eustatius and Saba","default":false},{"label":"Brazil","value":"Brazil","default":false},{"label":"Germany","value":"Germany","default":false},{"label":"Saint Barthélemy","value":"Saint Barthélemy","default":false},{"label":"Bahamas","value":"Bahamas","default":false},{"label":"Botswana","value":"Botswana","default":false},{"label":"Bouvet Island","value":"Bouvet Island","default":false},{"label":"Belarus","value":"Belarus","default":false},{"label":"Belize","value":"Belize","default":false},{"label":"Cocos (Keeling) Islands","value":"Cocos (Keeling) Islands","default":false},{"label":"Congo, the Democratic Republic of the","value":"Congo, the Democratic Republic of the","default":false},{"label":"Congo","value":"Congo","default":false},{"label":"Central African Republic","value":"Central African Republic","default":false},{"label":"Cabo Verde","value":"Cabo Verde","default":false},{"label":"Colombia","value":"Colombia","default":false},{"label":"Cameroon","value":"Cameroon","default":false},{"label":"Czech Republic","value":"Czech Republic","default":false},{"label":"Costa Rica","value":"Costa Rica","default":false},{"label":"China","value":"China","default":false},{"label":"Christmas Island","value":"Christmas Island","default":false},{"label":"Cyprus","value":"Cyprus","default":false},{"label":"Côte d'Ivoire","value":"Côte d'Ivoire","default":false},{"label":"Cuba","value":"Cuba","default":false},{"label":"Cook Islands","value":"Cook Islands","default":false},{"label":"Serbia and Montenegro","value":"Serbia and Montenegro","default":false},{"label":"Curaçao","value":"Curaçao","default":false},{"label":"Denmark","value":"Denmark","default":false},{"label":"Djibouti","value":"Djibouti","default":false},{"label":"Dominican Republic","value":"Dominican Republic","default":false},{"label":"Algeria","value":"Algeria","default":false},{"label":"Ethiopia","value":"Ethiopia","default":false},{"label":"Chile","value":"Chile","default":false},{"label":"Faroe Islands","value":"Faroe Islands","default":false},{"label":"Ecuador","value":"Ecuador","default":false},{"label":"Dominica","value":"Dominica","default":false},{"label":"Bangladesh","value":"Bangladesh","default":false},{"label":"Egypt","value":"Egypt","default":false},{"label":"Micronesia, Federated States of","value":"Micronesia, Federated States of","default":false},{"label":"Spain","value":"Spain","default":false},{"label":"Falkland Islands (Malvinas)","value":"Falkland Islands (Malvinas)","default":false},{"label":"Finland","value":"Finland","default":false},{"label":"Estonia","value":"Estonia","default":false},{"label":"Gabon","value":"Gabon","default":false},{"label":"Bhutan","value":"Bhutan","default":false},{"label":"Western Sahara","value":"Western Sahara","default":false},{"label":"Fiji","value":"Fiji","default":false},{"label":"Eritrea","value":"Eritrea","default":false},{"label":"Andorra","value":"Andorra","default":false},{"label":"United Kingdom","value":"United Kingdom","default":false},{"label":"Grenada","value":"Grenada","default":false},{"label":"Georgia","value":"Georgia","default":false},{"label":"French Guiana","value":"French Guiana","default":false},{"label":"Guernsey","value":"Guernsey","default":false},{"label":"Ghana","value":"Ghana","default":false},{"label":"Gibraltar","value":"Gibraltar","default":false},{"label":"Greenland","value":"Greenland","default":false},{"label":"Gambia","value":"Gambia","default":false},{"label":"Guinea","value":"Guinea","default":false},{"label":"Guadeloupe","value":"Guadeloupe","default":false},{"label":"Equatorial Guinea","value":"Equatorial Guinea","default":false},{"label":"Greece","value":"Greece","default":false},{"label":"South Georgia and the South Sandwich Islands","value":"South Georgia and the South Sandwich Islands","default":false},{"label":"Guatemala","value":"Guatemala","default":false},{"label":"Guam","value":"Guam","default":false},{"label":"Guinea-Bissau","value":"Guinea-Bissau","default":false},{"label":"Guyana","value":"Guyana","default":false},{"label":"Hong Kong","value":"Hong Kong","default":false},{"label":"Heard Island and McDonald Islands","value":"Heard Island and McDonald Islands","default":false},{"label":"Honduras","value":"Honduras","default":false},{"label":"Croatia","value":"Croatia","default":false},{"label":"Haiti","value":"Haiti","default":false},{"label":"Hungary","value":"Hungary","default":false},{"label":"Indonesia","value":"Indonesia","default":false},{"label":"Ireland","value":"Ireland","default":false},{"label":"Israel","value":"Israel","default":false},{"label":"Isle of Man","value":"Isle of Man","default":false},{"label":"India","value":"India","default":false},{"label":"British Indian Ocean Territory","value":"British Indian Ocean Territory","default":false},{"label":"Iraq","value":"Iraq","default":false}
40433,{"label":"Iran, Islamic Republic of","value":"Iran, Islamic Republic of","default":false},{"label":"Iceland","value":"Iceland","default":false},{"label":"Italy","value":"Italy","default":false},{"label":"Jersey","value":"Jersey","default":false},{"label":"Jamaica","value":"Jamaica","default":false},{"label":"Jordan","value":"Jordan","default":false},{"label":"Japan","value":"Japan","default":false},{"label":"Kenya","value":"Kenya","default":false},{"label":"Kyrgyzstan","value":"Kyrgyzstan","default":false},{"label":"Cambodia","value":"Cambodia","default":false},{"label":"Kiribati","value":"Kiribati","default":false},{"label":"Comoros","value":"Comoros","default":false},{"label":"Saint Kitts and Nevis","value":"Saint Kitts and Nevis","default":false},{"label":"Korea, Democratic People's Republic of","value":"Korea, Democratic People's Republic of","default":false},{"label":"Korea, Republic of","value":"Korea, Republic of","default":false},{"label":"Kuwait","value":"Kuwait","default":false},{"label":"Cayman Islands","value":"Cayman Islands","default":false},{"label":"Kazakhstan","value":"Kazakhstan","default":false},{"label":"Lao People's Democratic Republic","value":"Lao People's Democratic Republic","default":false},{"label":"Lebanon","value":"Lebanon","default":false},{"label":"Saint Lucia","value":"Saint Lucia","default":false},{"label":"Liechtenstein","value":"Liechtenstein","default":false},{"label":"Sri Lanka","value":"Sri Lanka","default":false},{"label":"Liberia","value":"Liberia","default":false},{"label":"Lesotho","value":"Lesotho","default":false},{"label":"Lithuania","value":"Lithuania","default":false},{"label":"Luxembourg","value":"Luxembourg","default":false},{"label":"Latvia","value":"Latvia","default":false},{"label":"Libya","value":"Libya","default":false},{"label":"Morocco","value":"Morocco","default":false},{"label":"Monaco","value":"Monaco","default":false},{"label":"Moldova, Republic of","value":"Moldova, Republic of","default":false},{"label":"Montenegro","value":"Montenegro","default":false},{"label":"Saint Martin (French part)","value":"Saint Martin (French part)","default":false},{"label":"Madagascar","value":"Madagascar","default":false},{"label":"Marshall Islands","value":"Marshall Islands","default":false},{"label":"Macedonia","value":"Macedonia","default":false},{"label":"Mali","value":"Mali","default":false},{"label":"Myanmar","value":"Myanmar","default":false},{"label":"Mongolia","value":"Mongolia","default":false},{"label":"Macao","value":"Macao","default":false},{"label":"Northern Mariana Islands","value":"Northern Mariana Islands","default":false},{"label":"Martinique","value":"Martinique","default":false},{"label":"Mauritania","value":"Mauritania","default":false},{"label":"Montserrat","value":"Montserrat","default":false},{"label":"Malta","value":"Malta","default":false},{"label":"Mauritius","value":"Mauritius","default":false},{"label":"Maldives","value":"Maldives","default":false},{"label":"Malawi","value":"Malawi","default":false},{"label":"Mexico","value":"Mexico","default":false},{"label":"Malaysia","value":"Malaysia","default":false},{"label":"Mozambique","value":"Mozambique","default":false},{"label":"Namibia","value":"Namibia","default":false},{"label":"New Caledonia","value":"New Caledonia","default":false},{"label":"Niger","value":"Niger","default":false},{"label":"Norfolk Island","value":"Norfolk Island","default":false},{"label":"Nigeria","value":"Nigeria","default":false},{"label":"Nicaragua","value":"Nicaragua","default":false},{"label":"Netherlands","value":"Netherlands","default":false},{"label":"Norway","value":"Norway","default":false},{"label":"Nepal","value":"Nepal","default":false},{"label":"Nauru","value":"Nauru","default":false},{"label":"Niue","value":"Niue","default":false},{"label":"New Zealand","value":"New Zealand","default":false},{"label":"Oman","value":"Oman","default":false},{"label":"Panama","value":"Panama","default":false},{"label":"Peru","value":"Peru","default":false},{"label":"French Polynesia","value":"French Polynesia","default":false},{"label":"Papua New Guinea","value":"Papua New Guinea","default":false},{"label":"Philippines","value":"Philippines","default":false},{"label":"Pakistan","value":"Pakistan","default":false},{"label":"Poland","value":"Poland","default":false},{"label":"Saint Pierre and Miquelon","value":"Saint Pierre and Miquelon","default":false},{"label":"Pitcairn","value":"Pitcairn","default":false},{"label":"Puerto Rico","value":"Puerto Rico","default":false},{"label":"Palestine, State of","value":"Palestine, State of","default":false},{"label":"Portugal","value":"Portugal","default":false},{"label":"Palau","value":"Palau","default":false},{"label":"Paraguay","value":"Paraguay","default":false},{"label":"Qatar","value":"Qatar","default":false},{"label":"Réunion","value":"Réunion","default":false},{"label":"Romania","value":"Romania","default":false},{"label":"Serbia","value":"Serbia","default":false},{"label":"Russian Federation","value":"Russian Federation","default":false},{"label":"Rwanda","value":"Rwanda","default":false},{"label":"Saudi Arabia","value":"Saudi Arabia","default":false},{"label":"Solomon Islands","value":"Solomon Islands","default":false},{"label":"Seychelles","value":"Seychelles","default":false},{"label":"Sudan","value":"Sudan","default":false},{"label":"Sweden","value":"Sweden","default":false},{"label":"Singapore","value":"Singapore","default":false},{"label":"Saint Helena, Ascension and Tristan da Cunha","value":"Saint Helena, Ascension and Tristan da Cunha","default":false},{"label":"Slovenia","value":"Slovenia","default":false},{"label":"Svalbard and Jan Mayen","value":"Svalbard and Jan Mayen","default":false},{"label":"Slovakia","value":"Slovakia","default":false},{"label":"Sierra Leone","value":"Sierra Leone","default":false},{"label":"San Marino","value":"San Marino","default":false},{"label":"Senegal","value":"Senegal","default":false},{"label":"Somalia","value":"Somalia","default":false},{"label":"Suriname","value":"Suriname","default":false},{"label":"South Sudan","value":"South Sudan","default":false},{"label":"Sao Tome and Principe","value":"Sao Tome and Principe","default":false},{"label":"El Salvador","value":"El Salvador","default":false},{"label":"Sint Maarten (Dutch part)","value":"Sint Maarten (Dutch part)","default":false},{"label":"Syrian Arab Republic","value":"Syrian Arab Republic","default":false},{"label":"Swaziland","value":"Swaziland","default":false},{"label":"Turks and Caicos Islands","value":"Turks and Caicos Islands","default":false},{"label":"Chad","value":"Chad","default":false},{"label":"French Southern Territories","value":"French Southern Territories","default":false},{"label":"Togo","value":"Togo","default":false},{"label":"Thailand","value":"Thailand","default":false},{"label":"Tajikistan","value":"Tajikistan","default":false},{"label":"Tokelau","value":"Tokelau","default":false},{"label":"Timor-Leste","value":"Timor-Leste","default":false},{"label":"Turkmenistan","value":"Turkmenistan","default":false},{"label":"Tunisia","value":"Tunisia","default":false},{"label":"Tonga","value":"Tonga","default":false},{"label":"Turkey","value":"Turkey","default":false},{"label":"Trinidad and Tobago","value":"Trinidad and Tobago","default":false},{"label":"Tuvalu","value":"Tuvalu","default":false},{"label":"Taiwan, Province of China","value":"Taiwan, Province of China","default":false},{"label":"Tanzania, United Republic of","value":"Tanzania, United Republic of","default":false},{"label":"Ukraine","value":"Ukraine","default":false},{"label":"Uganda","value":"Uganda","default":false},{"label":"United Arab Emirates","value":"United Arab Emirates","default":false},{"label":"United States Minor Outlying Islands","value":"United States Minor Outlying Islands","default":false},{"label":"United States","value":"United States","default":false},{"label":"Uruguay","value":"Uruguay","default":false},{"label":"Uzbekistan","value":"Uzbekistan","default":false},{"label":"Holy See (Vatican City State)","value":"Holy See (Vatican City State)","default":false},{"label":"Saint Vincent and the Grenadines","value":"Saint Vincent and the Grenadines","default":false},{"label":"Venezuela, Bolivarian Republic of","value":"Venezuela, Bolivarian Republic of","default":false},{"label":"Virgin Islands, British","value":"Virgin Islands, British","default":false},{"label":"Virgin Islands, U.S.","value":"Virgin Islands, U.S.","default":false},{"label":"Viet Nam","value":"Viet Nam","default":false},{"label":"Vanuatu","value":"Vanuatu","default":false},{"label":"Wallis and Futuna","value":"Wallis and Futuna","default":false},{"label":"Samoa","value":"Samoa","default":false},{"label":"Kosovo","value":"Kosovo","default":false},{"label":"Yemen","value":"Yemen","default":false},{"label":"Mayotte","value":"Mayotte","default":false},{"label":"South Africa","value":"South Africa","default":false},{"label":"Zambia","value":"Zambia","default":false},{"label":"Zimbabwe","value":"Zimbabwe","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"form_company_name","visibility":"PUBLIC","label":"form_company_name","required":false,"public-description":null,"validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5}
40433,{"slug":"form_company_size","visibility":"PUBLIC","label":"form_company_size","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"1-10","value":"1-10","default":false},{"label":"11-50","value":"11-50","default":false},{"label":"51-200","value":"51-200","default":false},{"label":"201-500","value":"201-500","default":false},{"label":"501-1000","value":"501-1000","default":false},{"label":"1001-5000","value":"1001-5000","default":false},{"label":"5001-10,000","value":"5001-10,000","default":false},{"label":"10,001+","value":"10,001+","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"form_company_type","visibility":"PUBLIC","label":"form_company_type","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"Startup (up to Series A)","value":"Startup","default":false},{"label":"Scaleup (Series B+)","value":"Scaleup","default":false},{"label":"Professional Services","value":"Professional Services","default":false},{"label":"Investment Firm","value":"Investment Firm","default":false},{"label":"Non-profit","value":"Non-profit","default":false},{"label":"Academic Institution","value":"Academic Institution","default":false},{"label":"Media & Publishing","value":"Media & Publishing","default":false},{"label":"Research & Data Platform","value":"Research & Data Platform","default":false},{"label":"Government","value":"Government","default":false},{"label":"Tech & SaaS","value":"Tech & SaaS","default":false},{"label":"Advisory Firm","value":"Advisory Firm","default":false},{"label":"Other","value":"other","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"form_country","visibility":"PUBLIC","label":"form_country","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"United Kingdom","value":"United Kingdom","default":false},{"label":"Afghanistan","value":"Afghanistan","default":false},{"label":"Åland Islands","value":"Åland Islands","default":false},{"label":"Albania","value":"Albania","default":false},{"label":"Algeria","value":"Algeria","default":false},{"label":"American Samoa","value":"American Samoa","default":false},{"label":"Andorra","value":"Andorra","default":false},{"label":"Angola","value":"Angola","default":false},{"label":"Antarctica","value":"Antarctica","default":false},{"label":"Antigua and Barbuda","value":"Antigua and Barbuda","default":false},{"label":"Antilles","value":"Antilles","default":false},{"label":"Argentina","value":"Argentina","default":false},{"label":"Armenia","value":"Armenia","default":false},{"label":"Aruba","value":"Aruba","default":false},{"label":"Australia","value":"Australia","default":false},{"label":"Austria","value":"Austria","default":false},{"label":"Azerbaijan","value":"Azerbaijan","default":false},{"label":"Bahamas","value":"Bahamas","default":false},{"label":"Bahrain","value":"Bahrain","default":false},{"label":"Bangladesh","value":"Bangladesh","default":false},{"label":"Barbados","value":"Barbados","default":false},{"label":"Belarus","value":"Belarus","default":false},{"label":"Belgium","value":"Belgium","default":false},{"label":"Belize","value":"Belize","default":false},{"label":"Benin","value":"Benin","default":false},{"label":"Bermuda","value":"Bermuda","default":false},{"label":"Bhutan","value":"Bhutan","default":false},{"label":"Bolivia, Plurinational State of","value":"Bolivia, Plurinational State of","default":false},{"label":"Bonaire, Sint Eustatius and Saba","value":"Bonaire, Sint Eustatius and Saba","default":false},{"label":"Bosnia and Herzegovina","value":"Bosnia and Herzegovina","default":false},{"label":"Botswana","value":"Botswana","default":false},{"label":"Bouvet Island","value":"Bouvet Island","default":false},{"label":"Brazil","value":"Brazil","default":false},{"label":"British Indian Ocean Territory","value":"British Indian Ocean Territory","default":false},{"label":"Brunei Darussalam","value":"Brunei Darussalam","default":false},{"label":"Bulgaria","value":"Bulgaria","default":false},{"label":"Burkina Faso","value":"Burkina Faso","default":false},{"label":"Burundi","value":"Burundi","default":false},{"label":"Cabo Verde","value":"Cabo Verde","default":false},{"label":"Cambodia","value":"Cambodia","default":false},{"label":"Cameroon","value":"Cameroon","default":false},{"label":"Canada","value":"Canada","default":false},{"label":"Cayman Islands","value":"Cayman Islands","default":false},{"label":"Central African Republic","value":"Central African Republic","default":false},{"label":"Chad","value":"Chad","default":false},{"label":"Chile","value":"Chile","default":false},{"label":"China","value":"China","default":false},{"label":"Christmas Island","value":"Christmas Island","default":false},{"label":"Cocos (Keeling) Islands","value":"Cocos (Keeling) Islands","default":false},{"label":"Colombia","value":"Colombia","default":false},{"label":"Comoros","value":"Comoros","default":false},{"label":"Congo, the Democratic Republic of the","value":"Congo, the Democratic Republic of the","default":false},{"label":"Congo","value":"Congo","default":false},{"label":"Cook Islands","value":"Cook Islands","default":false},{"label":"Costa Rica","value":"Costa Rica","default":false},{"label":"Côte d'Ivoire","value":"Côte d'Ivoire","default":false},{"label":"Croatia","value":"Croatia","default":false},{"label":"Cuba","value":"Cuba","default":false},{"label":"Curaçao","value":"Curaçao","default":false},{"label":"Cyprus","value":"Cyprus","default":false},{"label":"Czech Republic","value":"Czech Republic","default":false},{"label":"Denmark","value":"Denmark","default":false},{"label":"Djibouti","value":"Djibouti","default":false},{"label":"Dominica","value":"Dominica","default":false},{"label":"Dominican Republic","value":"Dominican Republic","default":false},{"label":"Ecuador","value":"Ecuador","default":false},{"label":"Egypt","value":"Egypt","default":false},{"label":"El Salvador","value":"El Salvador","default":false},{"label":"Equatorial Guinea","value":"Equatorial Guinea","default":false},{"label":"Eritrea","value":"Eritrea","default":false},{"label":"Estonia","value":"Estonia","default":false},{"label":"Ethiopia","value":"Ethiopia","default":false},{"label":"Falkland Islands (Malvinas)","value":"Falkland Islands (Malvinas)","default":false},{"label":"Faroe Islands","value":"Faroe Islands","default":false},{"label":"Fiji","value":"Fiji","default":false},{"label":"Finland","value":"Finland","default":false},{"label":"France","value":"France","default":false},{"label":"French Guiana","value":"French Guiana","default":false},{"label":"French Polynesia","value":"French Polynesia","default":false},{"label":"French Southern Territories","value":"French Southern Territories","default":false},{"label":"Gabon","value":"Gabon","default":false},{"label":"Gambia","value":"Gambia","default":false},{"label":"Georgia","value":"Georgia","default":false},{"label":"Germany","value":"Germany","default":false},{"label":"Ghana","value":"Ghana","default":false},{"label":"Gibraltar","value":"Gibraltar","default":false},{"label":"Greece","value":"Greece","default":false},{"label":"Greenland","value":"Greenland","default":false},{"label":"Grenada","value":"Grenada","default":false},{"label":"Guadeloupe","value":"Guadeloupe","default":false},{"label":"Guam","value":"Guam","default":false},{"label":"Guatemala","value":"Guatemala","default":false},{"label":"Guernsey","value":"Guernsey","default":false},{"label":"Guinea-Bissau","value":"Guinea-Bissau","default":false},{"label":"Guinea","value":"Guinea","default":false},{"label":"Guyana","value":"Guyana","default":false},{"label":"Haiti","value":"Haiti","default":false},{"label":"Heard Island and McDonald Islands","value":"Heard Island and McDonald Islands","default":false},{"label":"Holy See (Vatican City State)","value":"Holy See (Vatican City State)","default":false},{"label":"Honduras","value":"Honduras","default":false},{"label":"Hong Kong","value":"Hong Kong","default":false},{"label":"Hungary","value":"Hungary","default":false},{"label":"Iceland","value":"Iceland","default":false},{"label":"India","value":"India","default":false},{"label":"Indonesia","value":"Indonesia","default":false}
40433,{"label":"Iran, Islamic Republic of","value":"Iran, Islamic Republic of","default":false},{"label":"Iraq","value":"Iraq","default":false},{"label":"Ireland","value":"Ireland","default":false},{"label":"Isle of Man","value":"Isle of Man","default":false},{"label":"Israel","value":"Israel","default":false},{"label":"Italy","value":"Italy","default":false},{"label":"Jamaica","value":"Jamaica","default":false},{"label":"Japan","value":"Japan","default":false},{"label":"Jersey","value":"Jersey","default":false},{"label":"Jordan","value":"Jordan","default":false},{"label":"Kazakhstan","value":"Kazakhstan","default":false},{"label":"Kenya","value":"Kenya","default":false},{"label":"Kiribati","value":"Kiribati","default":false},{"label":"Korea, Democratic People's Republic of","value":"Korea, Democratic People's Republic of","default":false},{"label":"Korea, Republic of","value":"Korea, Republic of","default":false},{"label":"Kosovo","value":"Kosovo","default":false},{"label":"Kuwait","value":"Kuwait","default":false},{"label":"Kyrgyzstan","value":"Kyrgyzstan","default":false},{"label":"Lao People's Democratic Republic","value":"Lao People's Democratic Republic","default":false},{"label":"Latvia","value":"Latvia","default":false},{"label":"Lebanon","value":"Lebanon","default":false},{"label":"Lesotho","value":"Lesotho","default":false},{"label":"Liberia","value":"Liberia","default":false},{"label":"Libya","value":"Libya","default":false},{"label":"Liechtenstein","value":"Liechtenstein","default":false},{"label":"Lithuania","value":"Lithuania","default":false},{"label":"Luxembourg","value":"Luxembourg","default":false},{"label":"Macao","value":"Macao","default":false},{"label":"Macedonia","value":"Macedonia","default":false},{"label":"Madagascar","value":"Madagascar","default":false},{"label":"Malawi","value":"Malawi","default":false},{"label":"Malaysia","value":"Malaysia","default":false},{"label":"Maldives","value":"Maldives","default":false},{"label":"Mali","value":"Mali","default":false},{"label":"Malta","value":"Malta","default":false},{"label":"Marshall Islands","value":"Marshall Islands","default":false},{"label":"Martinique","value":"Martinique","default":false},{"label":"Mauritania","value":"Mauritania","default":false},{"label":"Mauritius","value":"Mauritius","default":false},{"label":"Mayotte","value":"Mayotte","default":false},{"label":"Mexico","value":"Mexico","default":false},{"label":"Micronesia, Federated States of","value":"Micronesia, Federated States of","default":false},{"label":"Moldova, Republic of","value":"Moldova, Republic of","default":false},{"label":"Monaco","value":"Monaco","default":false},{"label":"Mongolia","value":"Mongolia","default":false},{"label":"Montenegro","value":"Montenegro","default":false},{"label":"Montserrat","value":"Montserrat","default":false},{"label":"Morocco","value":"Morocco","default":false},{"label":"Mozambique","value":"Mozambique","default":false},{"label":"Myanmar","value":"Myanmar","default":false},{"label":"Namibia","value":"Namibia","default":false},{"label":"Nauru","value":"Nauru","default":false},{"label":"Nepal","value":"Nepal","default":false},{"label":"Netherlands","value":"Netherlands","default":false},{"label":"New Caledonia","value":"New Caledonia","default":false},{"label":"New Zealand","value":"New Zealand","default":false},{"label":"Nicaragua","value":"Nicaragua","default":false},{"label":"Niger","value":"Niger","default":false},{"label":"Nigeria","value":"Nigeria","default":false},{"label":"Niue","value":"Niue","default":false},{"label":"Norfolk Island","value":"Norfolk Island","default":false},{"label":"Northern Mariana Islands","value":"Northern Mariana Islands","default":false},{"label":"Norway","value":"Norway","default":false},{"label":"Oman","value":"Oman","default":false},{"label":"Pakistan","value":"Pakistan","default":false},{"label":"Palau","value":"Palau","default":false},{"label":"Palestine, State of","value":"Palestine, State of","default":false},{"label":"Panama","value":"Panama","default":false},{"label":"Papua New Guinea","value":"Papua New Guinea","default":false},{"label":"Paraguay","value":"Paraguay","default":false},{"label":"Peru","value":"Peru","default":false},{"label":"Philippines","value":"Philippines","default":false},{"label":"Pitcairn","value":"Pitcairn","default":false},{"label":"Poland","value":"Poland","default":false},{"label":"Portugal","value":"Portugal","default":false},{"label":"Puerto Rico","value":"Puerto Rico","default":false},{"label":"Qatar","value":"Qatar","default":false},{"label":"Réunion","value":"Réunion","default":false},{"label":"Romania","value":"Romania","default":false},{"label":"Russian Federation","value":"Russian Federation","default":false},{"label":"Rwanda","value":"Rwanda","default":false},{"label":"Saint Barthélemy","value":"Saint Barthélemy","default":false},{"label":"Saint Helena, Ascension and Tristan da Cunha","value":"Saint Helena, Ascension and Tristan da Cunha","default":false},{"label":"Saint Kitts and Nevis","value":"Saint Kitts and Nevis","default":false},{"label":"Saint Lucia","value":"Saint Lucia","default":false},{"label":"Saint Martin (French part)","value":"Saint Martin (French part)","default":false},{"label":"Saint Pierre and Miquelon","value":"Saint Pierre and Miquelon","default":false},{"label":"Saint Vincent and the Grenadines","value":"Saint Vincent and the Grenadines","default":false},{"label":"Samoa","value":"Samoa","default":false},{"label":"San Marino","value":"San Marino","default":false},{"label":"Sao Tome and Principe","value":"Sao Tome and Principe","default":false},{"label":"Saudi Arabia","value":"Saudi Arabia","default":false},{"label":"Senegal","value":"Senegal","default":false},{"label":"Serbia and Montenegro","value":"Serbia and Montenegro","default":false},{"label":"Serbia","value":"Serbia","default":false},{"label":"Seychelles","value":"Seychelles","default":false},{"label":"Sierra Leone","value":"Sierra Leone","default":false},{"label":"Singapore","value":"Singapore","default":false},{"label":"Sint Maarten (Dutch part)","value":"Sint Maarten (Dutch part)","default":false},{"label":"Slovakia","value":"Slovakia","default":false},{"label":"Slovenia","value":"Slovenia","default":false},{"label":"Solomon Islands","value":"Solomon Islands","default":false},{"label":"Somalia","value":"Somalia","default":false},{"label":"South Africa","value":"South Africa","default":false},{"label":"South Georgia and the South Sandwich Islands","value":"South Georgia and the South Sandwich Islands","default":false},{"label":"South Sudan","value":"South Sudan","default":false},{"label":"Spain","value":"Spain","default":false},{"label":"Sri Lanka","value":"Sri Lanka","default":false},{"label":"Sudan","value":"Sudan","default":false},{"label":"Suriname","value":"Suriname","default":false},{"label":"Svalbard and Jan Mayen","value":"Svalbard and Jan Mayen","default":false},{"label":"Swaziland","value":"Swaziland","default":false},{"label":"Sweden","value":"Sweden","default":false},{"label":"Switzerland","value":"Switzerland","default":false},{"label":"Syrian Arab Republic","value":"Syrian Arab Republic","default":false},{"label":"Taiwan, Province of China","value":"Taiwan, Province of China","default":false},{"label":"Tajikistan","value":"Tajikistan","default":false},{"label":"Tanzania, United Republic of","value":"Tanzania, United Republic of","default":false},{"label":"Thailand","value":"Thailand","default":false},{"label":"Timor-Leste","value":"Timor-Leste","default":false},{"label":"Togo","value":"Togo","default":false},{"label":"Tokelau","value":"Tokelau","default":false},{"label":"Tonga","value":"Tonga","default":false},{"label":"Trinidad and Tobago","value":"Trinidad and Tobago","default":false},{"label":"Tunisia","value":"Tunisia","default":false},{"label":"Turkey","value":"Turkey","default":false},{"label":"Turkmenistan","value":"Turkmenistan","default":false},{"label":"Turks and Caicos Islands","value":"Turks and Caicos Islands","default":false},{"label":"Tuvalu","value":"Tuvalu","default":false},{"label":"Uganda","value":"Uganda","default":false},{"label":"Ukraine","value":"Ukraine","default":false},{"label":"United Arab Emirates","value":"United Arab Emirates","default":false},{"label":"United States Minor Outlying Islands","value":"United States Minor Outlying Islands","default":false},{"label":"United States","value":"United States","default":false},{"label":"Uruguay","value":"Uruguay","default":false},{"label":"Uzbekistan","value":"Uzbekistan","default":false},{"label":"Vanuatu","value":"Vanuatu","default":false},{"label":"Venezuela, Bolivarian Republic of","value":"Venezuela, Bolivarian Republic of","default":false},{"label":"Viet Nam","value":"Viet Nam","default":false},{"label":"Virgin Islands, British","value":"Virgin Islands, British","default":false},{"label":"Virgin Islands, U.S.","value":"Virgin Islands, U.S.","default":false},{"label":"Wallis and Futuna","value":"Wallis and Futuna","default":false},{"label":"Western Sahara","value":"Western Sahara","default":false},{"label":"Yemen","value":"Yemen","default":false},{"label":"Zambia","value":"Zambia","default":false},{"label":"Zimbabwe","value":"Zimbabwe","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"form_department","visibility":"PUBLIC","label":"form_department","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"Sales, Business Development or Partnerships","value":"Sales, Business Development or Partnerships","default":false},{"label":"Marketing","value":"Marketing","default":false},{"label":"Product","value":"Product","default":false},{"label":"HR, People & Talent","value":"HR, People & Talent","default":false},{"label":"Data","value":"Data","default":false},{"label":"Technology & Engineering","value":"Technology & Engineering","default":false},{"label":"Legal","value":"Legal","default":false},{"label":"Finance","value":"Finance","default":false},{"label":"Operations","value":"Operations","default":false},{"label":"Innovation","value":"Innovation","default":false},{"label":"PR & Communications","value":"PR & Communications","default":false},{"label":"Investor Relations","value":"Investor Relations","default":false},{"label":"Senior Leadership","value":"Senior Leadership","default":false},{"label":"Other","value":"Other","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"form_events_consent","visibility":"PUBLIC","label":"form_events_consent","required":false,"public-description":null,"validation-expression":null,"input-type":"checkbox","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"form_funding_stages_invested","visibility":"PUBLIC","label":"form_funding_stages_invested","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"Pre-Series A","value":"Pre-Series A","default":false},{"label":"Series A","value":"Series A","default":false},{"label":"Growth","value":"Growth","default":false},{"label":"Late","value":"Late","default":false},{"label":"Venture Debt","value":"Venture Debt","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"form_investment_firm_type","visibility":"PUBLIC","label":"form_investment_firm_type","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"Venture Capital","value":"Venture Capital","default":false},{"label":"Private Equity","value":"Private Equity","default":false},{"label":"Family Office","value":"Family Office","default":false},{"label":"Fund of Funds & LPs","value":"Fund of Funds & LPs","default":false},{"label":"Accelerator","value":"Accelerator","default":false},{"label":"Corporate Venture Capital","value":"Corporate Venture Capital","default":false},{"label":"Public Fund","value":"Public Fund","default":false},{"label":"Pension Fund","value":"Pension Fund","default":false},{"label":"Institutional Investor","value":"Institutional Investor","default":false},{"label":"Angel Network","value":"Angel Network","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"form_job_title","visibility":"PUBLIC","label":"form_job_title","required":false,"public-description":null,"validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"form_last_asked_for_optional_data","visibility":"PUBLIC","label":"form_last_asked_for_optional_data","required":false,"public-description":null,"validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"form_latest_funding_stage","visibility":"PUBLIC","label":"form_latest_funding_stage","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"Bootstrapped","value":"Bootstrapped","default":false},{"label":"Pre-Series A","value":"Pre-Series A","default":false},{"label":"Series A","value":"Series A","default":false},{"label":"Growth","value":"Growth","default":false},{"label":"Late","value":"Late","default":false},{"label":"Public Company","value":"Public Company","default":false},{"label":"Acquired","value":"Acquired","default":false},{"label":"I don't know","value":"I don't know","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"form_professional_service_type","visibility":"PUBLIC","label":"form_professional_service_type","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"Accountancy or Audit Firm","value":"Accountancy or Audit Firm","default":false},{"label":"Asset/Investment Manager","value":"Asset/Investment Manager","default":false},{"label":"Business Bank","value":"Business Bank","default":false},{"label":"Commercial Real Estate or Co-working Space","value":"Commercial Real Estate or Co-working Space","default":false},{"label":"Fintech","value":"Fintech","default":false},{"label":"IT Consulting & Services","value":"IT Consulting & Services","default":false},{"label":"Insurance","value":"Insurance","default":false},{"label":"Investment Bank","value":"Investment Bank","default":false},{"label":"Marketing, Advertising or Design Agency","value":"Marketing, Advertising or Design Agency","default":false},{"label":"Other","value":"Other","default":false},{"label":"PR & Communications Agency","value":"PR & Communications Agency","default":false}
40433,{"label":"Professional Training and Coaching","value":"Professional Training and Coaching","default":false},{"label":"Staffing & Recruitment","value":"Staffing & Recruitment","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"form_role_at_business","visibility":"PUBLIC","label":"form_role_at_business","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"(Co) founder","value":"(Co) founder","default":false},{"label":"C-Suite","value":"C-Suite","default":false},{"label":"VP","value":"VP","default":false},{"label":"Director","value":"Director","default":false},{"label":"Senior manager","value":"Senior manager","default":false},{"label":"Manager","value":"Manager","default":false},{"label":"Junior","value":"Junior","default":false},{"label":"General Partner","value":"General Partner","default":false},{"label":"Partner","value":"Partner","default":false},{"label":"Principal","value":"Principal","default":false},{"label":"Associate","value":"Associate","default":false},{"label":"Analyst","value":"Analyst","default":false},{"label":"Researcher","value":"Researcher","default":false},{"label":"Angel Investor","value":"Angel Investor","default":false},{"label":"Other","value":"Other","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"form_sector","visibility":"PUBLIC","label":"form_sector","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"B2B SaaS","value":"B2B SaaS","default":false},{"label":"Fintech","value":"Fintech","default":false},{"label":"Deeptech","value":"Deeptech","default":false},{"label":"Climate tech","value":"Climate tech","default":false},{"label":"Healthtech","value":"Healthtech","default":false},{"label":"Consumer","value":"Consumer","default":false},{"label":"Other","value":"Other","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"form_sectors","visibility":"PUBLIC","label":"form_sectors","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"B2B SaaS","value":"B2B SaaS","default":false},{"label":"Fintech","value":"Fintech","default":false},{"label":"Deeptech","value":"Deeptech","default":false},{"label":"Climate tech","value":"Climate tech","default":false},{"label":"Healthtech","value":"Healthtech","default":false},{"label":"Consumer","value":"Consumer","default":false},{"label":"Other","value":"Other","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"form_work_in_startup_ecosystem","visibility":"PUBLIC","label":"form_work_in_startup_ecosystem","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"Service provider","value":"Service provider","default":false},{"label":"Venture arm","value":"Venture arm","default":false},{"label":"Accelerator / incubator / open innovation","value":"Accelerator / incubator / open innovation","default":false},{"label":"Corporate innovation","value":"Corporate innovation","default":false},{"label":"Other","value":"Other","default":false},{"label":"Do not work with startup ecosystem","value":"Do not work with startup ecosystem","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"is_academic_user","visibility":"PUBLIC","label":"is_academic_user","required":false,"public-description":"Does user is academic user","validation-expression":null,"input-type":"checkbox","select-options":null,"range-start":null,"range-end":null,"range-step":null},{"slug":"is-migrated-from-hubspot","visibility":"PUBLIC","label":"Is migrated from Hubspot","required":false,"public-description":"","validation-expression":null,"input-type":"hidden","select-options":null,"range-start":null,"range-end":null,"range-step":null},{"slug":"last_name","visibility":"PUBLIC","label":"Last name","required":true,"public-description":"","validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"newsletter_preferences_seen","visibility":"PUBLIC","label":"Newsletter preferences seen","required":false,"public-description":"","validation-expression":null,"input-type":"checkbox","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"nudges","visibility":"PUBLIC","label":"nudges","required":false,"public-description":null,"validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"organisation_type","visibility":"PUBLIC","label":"Organisation Type","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"Pre-seed Startup","value":"Pre-seed Startup","default":false},{"label":"Seed Startup","value":"Seed Startup","default":false},{"label":"Series A Startup","value":"Series A Startup","default":false},{"label":"Series B+ Startup","value":"Series B+ Startup","default":false},{"label":"Corporate","value":"Corporate","default":false},{"label":"Service provider to Startups","value":"Service provider to Startups","default":false},{"label":"Investment firm","value":"Investment firm","default":false},{"label":"Other","value":"Other","default":false},{"label":"I don't work at the moment","value":"I don't work at the moment","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"paywallCounter","visibility":"PUBLIC","label":"paywallCounter","required":false,"public-description":null,"validation-expression":null,"input-type":"number","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"paywallHitsList","visibility":"PUBLIC","label":"paywallHitsList","required":false,"public-description":null,"validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"position","visibility":"PUBLIC","label":"Job Title","required":false,"public-description":null,"validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"pql-test","visibility":"PUBLIC","label":"Also interested in...","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"Our Sifted Pro product (investment-grade research on the early-stage startup ecosystem)","value":"Our Sifted Pro product (investment-grade research on the early-stage startup ecosystem)","default":false},{"label":"Sponsorship and advertising opportunities (reaching Sifted’s audie
40433nce)","value":"Sponsorship and advertising opportunities (reaching Sifted’s audience)","default":false},{"label":"None of the above","value":"None of the above","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"reports_downloaded","visibility":"PUBLIC","label":"Reports Downloaded","required":false,"public-description":null,"validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"role","visibility":"PUBLIC","label":"Role","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"(Co) Founder","value":"(Co) Founder","default":false},{"label":"Partner","value":"Partner","default":false},{"label":"Director","value":"Director","default":false},{"label":"Senior manager","value":"Senior manager","default":false},{"label":"Manager","value":"Manager","default":false},{"label":"Associate","value":"Associate","default":false},{"label":"Junior","value":"Junior","default":false},{"label":"Senior","value":"Senior","default":false},{"label":"Student","value":"Student","default":false},{"label":"Academic","value":"Academic","default":false},{"label":"Other","value":"Other","default":false},{"label":"Staff","value":"Staff","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"roundtableRsvp","visibility":"PUBLIC","label":"Roundtable RSVP","required":false,"public-description":null,"validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"sector_preference","visibility":"PUBLIC","label":"Sector of interest","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"📈 Fintech","value":"📈 Fintech","default":false},{"label":"🔭 Venture Capital","value":"🔭 Venture Capital","default":false},{"label":"🌱 Sustainability","value":"🌱 Sustainability","default":false},{"label":"🎓 Public & Academia","value":"🎓 Public & Academia","default":false},{"label":"🦄 Startup Life","value":"🦄 Startup Life","default":false},{"label":"📱 Consumer","value":"📱 Consumer","default":false},{"label":"👾 Deeptech","value":"👾 Deeptech","default":false},{"label":"🚄 Mobility","value":"🚄 Mobility","default":false},{"label":"🏥 Healthtech","value":"🏥 Healthtech","default":false},{"label":"💡 Corporate Innovation","value":"💡 Corporate Innovation","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"self_serve_address_line_1","visibility":"PUBLIC","label":"self_serve_address_line_1","required":false,"public-description":null,"validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"self_serve_address_line_2","visibility":"PUBLIC","label":"self_serve_address_line_2","required":false,"public-description":null,"validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"self_serve_address_line_3","visibility":"PUBLIC","label":"self_serve_address_line_3","required":false,"public-description":null,"validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"self_serve_city","visibility":"PUBLIC","label":"self_serve_city","required":false,"public-description":null,"validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"self_serve_country","visibility":"PUBLIC","label":"self_serve_country","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"Afghanistan","value":"Afghanistan","default":false},{"label":"Albania","value":"Albania","default":false},{"label":"Algeria","value":"Algeria","default":false},{"label":"American Samoa","value":"American Samoa","default":false},{"label":"Andorra","value":"Andorra","default":false},{"label":"Angola","value":"Angola","default":false},{"label":"Antarctica","value":"Antarctica","default":false},{"label":"Antigua and Barbuda","value":"Antigua and Barbuda","default":false},{"label":"Antilles","value":"Antilles","default":false},{"label":"Argentina","value":"Argentina","default":false},{"label":"Armenia","value":"Armenia","default":false},{"label":"Aruba","value":"Aruba","default":false},{"label":"Australia","value":"Australia","default":false},{"label":"Austria","value":"Austria","default":false},{"label":"Azerbaijan","value":"Azerbaijan","default":false},{"label":"Bahamas","value":"Bahamas","default":false},{"label":"Bahrain","value":"Bahrain","default":false},{"label":"Bangladesh","value":"Bangladesh","default":false},{"label":"Barbados","value":"Barbados","default":false},{"label":"Belarus","value":"Belarus","default":false},{"label":"Belgium","value":"Belgium","default":false},{"label":"Belize","value":"Belize","default":false},{"label":"Benin","value":"Benin","default":false},{"label":"Bermuda","value":"Bermuda","default":false},{"label":"Bhutan","value":"Bhutan","default":false},{"label":"Bolivia, Plurinational State of","value":"Bolivia, Plurinational State of","default":false},{"label":"Bonaire, Sint Eustatius and Saba","value":"Bonaire, Sint Eustatius and Saba","default":false},{"label":"Bosnia and Herzegovina","value":"Bosnia and Herzegovina","default":false},{"label":"Botswana","value":"Botswana","default":false},{"label":"Bouvet Island","value":"Bouvet Island","default":false},{"label":"Brazil","value":"Brazil","default":false},{"label":"British Indian Ocean Territory","value":"British Indian Ocean Territory","default":false},{"label":"Brunei Darussalam","value":"Brunei Darussalam","default":false},{"label":"Bulgaria","value":"Bulgaria","default":false},{"label":"Burkina Faso","value":"Burkina Faso","default":false},{"label":"Burundi","value":"Burundi","default":false},{"label":"Cabo Verde","value":"Cabo Verde","default":false},{"label":"Cambodia","value":"Cambodia","default":false},{"label":"Cameroon","value":"Cameroon","default":false},{"label":"Canada","value":"Canada","default":false},{"label":"Cayman Islands","value":"Cayman Islands","default":false},{"label":"Central African Republic","value":"Central African Republic","default":false},{"label":"Chad","value":"Chad","default":false},{"label":"Chile","value":"Chile","default":false},{"label":"China","value":"China","default":false},{"label":"Christmas Island","value":"Christmas Island","default":false},{"label":"Cocos (Keeling) Islands","value":"Cocos (Keeling) Islands","default":false},{"label":"Colombia","value":"Colombia","default":false},{"label":"Comoros","value":"Comoros","default":false},{"label":"Congo","value":"Congo","default":false},{"label":"Congo, the Democratic Republic of the","value":"Congo, the Democratic Republic of the","default":false},{"label":"Cook Islands","value":"Cook Islands","default":false},{"label":"Costa Rica","value":"Costa Rica","default":false},{"label":"Croatia","value":"Croatia","default":false},{"label":"Cuba","value":"Cuba","default":false},{"label":"Curaçao","value":"Curaçao","default":false},{"label":"Cyprus","value":"Cyprus","default":false},{"label":"Czech Republic","value":"Czech Republic","default":false},{"label":"Côte d'Ivoire","value":"Côte d'Ivoire","default":false},{"label":"Denmark","value":"Denmark","default":false},{"label":"Djibouti","value":"Djibouti","default":false},{"label":"Dominica","value":"Dominica","default":false},{"label":"Dominican Republic","value":"Dominican Republic","default":false},{"label":"Ecuador","value":"Ecuador","default":false},{"label":"Egypt","value":"Egypt","default":false},{"label":"El Salvador","value":"El Salvador","default":false},{"label":"Equatorial Guinea","value":"Equatorial Guinea","default":false},{"label":"Eritrea","value":"Eritrea","default":false},{"label":"Estonia","value":"Estonia","default":false},{"label":"Ethiopia","value":"Ethiopia","default":false},{"label":"Falkland Islands (Malvinas)","value":"Falkland Islands (Malvinas)","default":false},{"label":"Faroe Islands","value":"Faroe Islands","default":false},{"label":"Fiji","value":"Fiji","default":false},{"label":"Finland","value":"Finland","default":false},{"label":"France","value":"France","default":false},{"label":"French Guiana","value":"French Guiana","default":false},{"label":"French Polynesia","value":"French Polynesia","default":false},{"label":"French Southern Territories","value":"French Southern Territories","default":false},{"label":"Gabon","value":"Gabon","default":false},{"label":"Gambia","value":"Gambia","default":false},{"label":"Georgia","value":"Georgia","default":false},{"label":"Germany","value":"Germany","default":false},{"label":"Ghana","value":"Ghana","default":false},{"label":"Gibraltar","value":"Gibraltar","default":false},{"label":"Greece","value":"Greece","default":false},{"label":"Greenland","value":"Greenland","default":false},{"label":"Grenada","value":"Grenada","default":false},{"label":"Guadeloupe","value":"Guadeloupe","default":false},{"label":"Guam","value":"Guam","default":false},{"label":"Guatemala","value":"Guatemala","default":false},{"label":"Guernsey","value":"Guernsey","default":false},{"label":"Guinea","value":"Guinea","default":false},{"label":"Guinea-Bissau","value":"Guinea-Bissau","default":false},{"label":"Guyana","value":"Guyana","default":false},{"label":"Haiti","value":"Haiti","default":false},{"label":"Heard Island and McDonald Islands","value":"Heard Island and McDonald Islands","default":false},{"label":"Holy See (Vatican City State)","value":"Holy See (Vatican City State)","default":false},{"label":"Honduras","value":"Honduras","default":false},{"label":"Hong Kong","value":"Hong Kong","default":false},{"label":"Hungary","value":"Hungary","default":false},{"label":"Iceland","value":"Iceland","default":false},{"label":"India","value":"India","default":false},{"label":"Indonesia","value":"Indonesia","default":false}
40433,{"label":"Iran, Islamic Republic of","value":"Iran, Islamic Republic of","default":false},{"label":"Iraq","value":"Iraq","default":false},{"label":"Ireland","value":"Ireland","default":false},{"label":"Isle of Man","value":"Isle of Man","default":false},{"label":"Israel","value":"Israel","default":false},{"label":"Italy","value":"Italy","default":false},{"label":"Jamaica","value":"Jamaica","default":false},{"label":"Japan","value":"Japan","default":false},{"label":"Jersey","value":"Jersey","default":false},{"label":"Jordan","value":"Jordan","default":false},{"label":"Kazakhstan","value":"Kazakhstan","default":false},{"label":"Kenya","value":"Kenya","default":false},{"label":"Kiribati","value":"Kiribati","default":false},{"label":"Korea, Democratic People's Republic of","value":"Korea, Democratic People's Republic of","default":false},{"label":"Korea, Republic of","value":"Korea, Republic of","default":false},{"label":"Kosovo","value":"Kosovo","default":false},{"label":"Kuwait","value":"Kuwait","default":false},{"label":"Kyrgyzstan","value":"Kyrgyzstan","default":false},{"label":"Lao People's Democratic Republic","value":"Lao People's Democratic Republic","default":false},{"label":"Latvia","value":"Latvia","default":false},{"label":"Lebanon","value":"Lebanon","default":false},{"label":"Lesotho","value":"Lesotho","default":false},{"label":"Liberia","value":"Liberia","default":false},{"label":"Libya","value":"Libya","default":false},{"label":"Liechtenstein","value":"Liechtenstein","default":false},{"label":"Lithuania","value":"Lithuania","default":false},{"label":"Luxembourg","value":"Luxembourg","default":false},{"label":"Macao","value":"Macao","default":false},{"label":"Macedonia","value":"Macedonia","default":false},{"label":"Madagascar","value":"Madagascar","default":false},{"label":"Malawi","value":"Malawi","default":false},{"label":"Malaysia","value":"Malaysia","default":false},{"label":"Maldives","value":"Maldives","default":false},{"label":"Mali","value":"Mali","default":false},{"label":"Malta","value":"Malta","default":false},{"label":"Marshall Islands","value":"Marshall Islands","default":false},{"label":"Martinique","value":"Martinique","default":false},{"label":"Mauritania","value":"Mauritania","default":false},{"label":"Mauritius","value":"Mauritius","default":false},{"label":"Mayotte","value":"Mayotte","default":false},{"label":"Mexico","value":"Mexico","default":false},{"label":"Micronesia, Federated States of","value":"Micronesia, Federated States of","default":false},{"label":"Moldova, Republic of","value":"Moldova, Republic of","default":false},{"label":"Monaco","value":"Monaco","default":false},{"label":"Mongolia","value":"Mongolia","default":false},{"label":"Montenegro","value":"Montenegro","default":false},{"label":"Montserrat","value":"Montserrat","default":false},{"label":"Morocco","value":"Morocco","default":false},{"label":"Mozambique","value":"Mozambique","default":false},{"label":"Myanmar","value":"Myanmar","default":false},{"label":"Namibia","value":"Namibia","default":false},{"label":"Nauru","value":"Nauru","default":false},{"label":"Nepal","value":"Nepal","default":false},{"label":"Netherlands","value":"Netherlands","default":false},{"label":"New Caledonia","value":"New Caledonia","default":false},{"label":"New Zealand","value":"New Zealand","default":false},{"label":"Nicaragua","value":"Nicaragua","default":false},{"label":"Niger","value":"Niger","default":false},{"label":"Nigeria","value":"Nigeria","default":false},{"label":"Niue","value":"Niue","default":false},{"label":"Norfolk Island","value":"Norfolk Island","default":false},{"label":"Northern Mariana Islands","value":"Northern Mariana Islands","default":false},{"label":"Norway","value":"Norway","default":false},{"label":"Oman","value":"Oman","default":false},{"label":"Pakistan","value":"Pakistan","default":false},{"label":"Palau","value":"Palau","default":false},{"label":"Palestine, State of","value":"Palestine, State of","default":false},{"label":"Panama","value":"Panama","default":false},{"label":"Papua New Guinea","value":"Papua New Guinea","default":false},{"label":"Paraguay","value":"Paraguay","default":false},{"label":"Peru","value":"Peru","default":false},{"label":"Philippines","value":"Philippines","default":false},{"label":"Pitcairn","value":"Pitcairn","default":false},{"label":"Poland","value":"Poland","default":false},{"label":"Portugal","value":"Portugal","default":false},{"label":"Puerto Rico","value":"Puerto Rico","default":false},{"label":"Qatar","value":"Qatar","default":false},{"label":"Romania","value":"Romania","default":false},{"label":"Russian Federation","value":"Russian Federation","default":false},{"label":"Rwanda","value":"Rwanda","default":false},{"label":"Réunion","value":"Réunion","default":false},{"label":"Saint Barthélemy","value":"Saint Barthélemy","default":false},{"label":"Saint Helena, Ascension and Tristan da Cunha","value":"Saint Helena, Ascension and Tristan da Cunha","default":false},{"label":"Saint Kitts and Nevis","value":"Saint Kitts and Nevis","default":false},{"label":"Saint Lucia","value":"Saint Lucia","default":false},{"label":"Saint Martin (French part)","value":"Saint Martin (French part)","default":false},{"label":"Saint Pierre and Miquelon","value":"Saint Pierre and Miquelon","default":false},{"label":"Saint Vincent and the Grenadines","value":"Saint Vincent and the Grenadines","default":false},{"label":"Samoa","value":"Samoa","default":false},{"label":"San Marino","value":"San Marino","default":false},{"label":"Sao Tome and Principe","value":"Sao Tome and Principe","default":false},{"label":"Saudi Arabia","value":"Saudi Arabia","default":false},{"label":"Senegal","value":"Senegal","default":false},{"label":"Serbia","value":"Serbia","default":false},{"label":"Serbia and Montenegro","value":"Serbia and Montenegro","default":false},{"label":"Seychelles","value":"Seychelles","default":false},{"label":"Sierra Leone","value":"Sierra Leone","default":false},{"label":"Singapore","value":"Singapore","default":false},{"label":"Sint Maarten (Dutch part)","value":"Sint Maarten (Dutch part)","default":false},{"label":"Slovakia","value":"Slovakia","default":false},{"label":"Slovenia","value":"Slovenia","default":false},{"label":"Solomon Islands","value":"Solomon Islands","default":false},{"label":"Somalia","value":"Somalia","default":false},{"label":"South Africa","value":"South Africa","default":false},{"label":"South Georgia and the South Sandwich Islands","value":"South Georgia and the South Sandwich Islands","default":false},{"label":"South Sudan","value":"South Sudan","default":false},{"label":"Spain","value":"Spain","default":false},{"label":"Sri Lanka","value":"Sri Lanka","default":false},{"label":"Sudan","value":"Sudan","default":false},{"label":"Suriname","value":"Suriname","default":false},{"label":"Svalbard and Jan Mayen","value":"Svalbard and Jan Mayen","default":false},{"label":"Swaziland","value":"Swaziland","default":false},{"label":"Sweden","value":"Sweden","default":false},{"label":"Switzerland","value":"Switzerland","default":false},{"label":"Syrian Arab Republic","value":"Syrian Arab Republic","default":false},{"label":"Taiwan, Province of China","value":"Taiwan, Province of China","default":false},{"label":"Tajikistan","value":"Tajikistan","default":false},{"label":"Tanzania, United Republic of","value":"Tanzania, United Republic of","default":false},{"label":"Thailand","value":"Thailand","default":false},{"label":"Timor-Leste","value":"Timor-Leste","default":false},{"label":"Togo","value":"Togo","default":false},{"label":"Tokelau","value":"Tokelau","default":false},{"label":"Tonga","value":"Tonga","default":false},{"label":"Trinidad and Tobago","value":"Trinidad and Tobago","default":false},{"label":"Tunisia","value":"Tunisia","default":false},{"label":"Turkey","value":"Turkey","default":false},{"label":"Turkmenistan","value":"Turkmenistan","default":false},{"label":"Turks and Caicos Islands","value":"Turks and Caicos Islands","default":false},{"label":"Tuvalu","value":"Tuvalu","default":false},{"label":"Uganda","value":"Uganda","default":false},{"label":"Ukraine","value":"Ukraine","default":false},{"label":"United Arab Emirates","value":"United Arab Emirates","default":false},{"label":"United Kingdom","value":"United Kingdom","default":false},{"label":"United States","value":"United States","default":false},{"label":"United States Minor Outlying Islands","value":"United States Minor Outlying Islands","default":false},{"label":"Uruguay","value":"Uruguay","default":false},{"label":"Uzbekistan","value":"Uzbekistan","default":false},{"label":"Vanuatu","value":"Vanuatu","default":false},{"label":"Venezuela, Bolivarian Republic of","value":"Venezuela, Bolivarian Republic of","default":false},{"label":"Viet Nam","value":"Viet Nam","default":false},{"label":"Virgin Islands, British","value":"Virgin Islands, British","default":false},{"label":"Virgin Islands, U.S.","value":"Virgin Islands, U.S.","default":false},{"label":"Wallis and Futuna","value":"Wallis and Futuna","default":false},{"label":"Western Sahara","value":"Western Sahara","default":false},{"label":"Yemen","value":"Yemen","default":false},{"label":"Zambia","value":"Zambia","default":false},{"label":"Zimbabwe","value":"Zimbabwe","default":false},{"label":"Åland Islands","value":"Åland Islands","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"self_serve_name","visibility":"PUBLIC","label":"self_serve_name","required":false,"public-description":null,"validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"self_serve_need_an_invoice","visibility":"PUBLIC","label":"Do you need an invoice?","required":false,"public-description":"","validation-expression":null,"input-type":"radio","select-options":[{"label":"Yes","value":"yes","default":false},{"label":"No","value":"no","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"self_serve_personal_or_business","visibility":"PUBLIC","label":"self_serve_personal_or_business","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"Personal","value":"Personal","default":false},{"label":"Business","value":"Business","default":false}],"range-start":0,"range-end":100,"range-step":5}
40433,{"slug":"self_serve_phone_number","visibility":"PUBLIC","label":"self_serve_phone_number","required":false,"public-description":null,"validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"self_serve_postcode","visibility":"PUBLIC","label":"self_serve_postcode","required":false,"public-description":null,"validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"self_serve_vat_number","visibility":"PUBLIC","label":"self_serve_vat_number","required":false,"public-description":null,"validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"show_angel_onboard","visibility":"PUBLIC","label":"show angel onboard ","required":false,"public-description":null,"validation-expression":null,"input-type":"checkbox","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"show_pro_onboard","visibility":"PUBLIC","label":"show pro onboard","required":false,"public-description":null,"validation-expression":null,"input-type":"checkbox","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"show_pro_trial_onboard","visibility":"PUBLIC","label":"show pro trial onboard","required":false,"public-description":null,"validation-expression":null,"input-type":"checkbox","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"show_reg_onboard","visibility":"PUBLIC","label":"show reg onboard","required":false,"public-description":null,"validation-expression":null,"input-type":"checkbox","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"show_startup_onboard","visibility":"PUBLIC","label":"show startup onboard","required":false,"public-description":null,"validation-expression":null,"input-type":"checkbox","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"sifted12","visibility":"PUBLIC","label":"Profession","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"Founder / cofounder","value":"Founder / cofounder","default":false},{"label":"C-suite","value":"C-suite","default":false},{"label":"Investor (VC/private equity/angel etc)","value":"Investor (VC/private equity/angel etc)","default":false},{"label":"Corporate consultant","value":"Corporate consultant","default":false},{"label":"Startup service provider (e.g. brand agency etc)","value":"Startup service provider (e.g. brand agency etc)","default":false},{"label":"Student","value":"Student","default":false},{"label":"Academia","value":"Academia","default":false},{"label":"Startup employee (e.g. operations etc)","value":"Startup employee (e.g. operations etc)","default":false},{"label":"Policy / government","value":"Policy / government","default":false},{"label":"Media","value":"Media","default":false},{"label":"Unemployed / looking for work","value":"Unemployed / looking for work","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"sifted13","visibility":"PUBLIC","label":"Primary reason for joining","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"Stay ahead of the competition","value":"Stay ahead of the competition","default":false},{"label":"Find actionable data insights","value":"Find actionable data insights","default":false},{"label":"Hear the views of those in similar roles","value":"Hear the views of those in similar roles","default":false},{"label":"Find a community of like-minded people","value":"Find a community of like-minded people","default":false},{"label":"Support quality tech journalism","value":"Support quality tech journalism","default":false},{"label":"Understand business best practices","value":"Understand business best practices","default":false},{"label":"Understand industry/sector trends","value":"Understand industry/sector trends","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"subscriberEventCheckIn","visibility":"PUBLIC","label":"Subscriber Event Check-in","required":false,"public-description":null,"validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"talkcheckin","visibility":"PUBLIC","label":"talkCheckIn","required":false,"public-description":"","validation-expression":null,"input-type":"textarea","select-options":null,"range-start":null,"range-end":null,"range-step":null},{"slug":"talks_rsvp","visibility":"PUBLIC","label":"talksRsvp","required":false,"public-description":"","validation-expression":null,"input-type":"textarea","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"top_banner_dismissed_at","visibility":"PUBLIC","label":"Top_banner_dismissed_at","required":false,"public-description":"Top banner dismissal timestamp","validation-expression":null,"input-type":"text","select-options":null,"range-start":null,"range-end":null,"range-step":null},{"slug":"validation_last_timestamp","visibility":"PUBLIC","label":"validation_last_timestamp","required":false,"public-description":"JISC Student verification timestamp","validation-expression":null,"input-type":"text","select-options":null,"range-start":null,"range-end":null,"range-step":null},{"slug":"wants_main_newsletter","visibility":"PUBLIC","label":"Daily Newsletter","required":false,"public-description":null,"validation-expression":null,"input-type":"checkbox","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"work_country","visibility":"PUBLIC","label":"Work Country","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"Antilles","value":"Antilles","default":false},{"label":"Antigua and Barbuda","value":"Antigua and Barbuda","default":false},{"label":"Angola","value":"Angola","default":false},{"label":"Afghanistan","value":"Afghanistan","default":false},{"label":"Armenia","value":"Armenia","default":false},{"label":"Antarctica","value":"Antarctica","default":false},{"label":"Albania","value":"Albania","default":false},{"label":"Argentina","value":"Argentina","default":false},{"label":"Austria","value":"Austria","default":false},{"label":"American Samoa","value":"American Samoa","default":false},{"label":"Canada","value":"Canada","default":false},{"label":"Burkina Faso","value":"Burkina Faso","default":false},{"label":"Switzerland","value":"Switzerland","default":false},{"label":"Åland Islands","value":"Åland Islands","default":false},{"label":"France","value":"France","default":false},{"label":"Aruba","value":"Aruba","default":false},{"label":"Azerbaijan","value":"Azerbaijan","default":false},{"label":"Bahrain","value":"Bahrain","default":false},{"label":"Bosnia and Herzegovina","value":"Bosnia and Herzegovina","default":false},{"label":"Australia","value":"Australia","default":false},{"label":"Barbados","value":"Barbados","default":false},{"label":"Belgium","value":"Belgium","default":false},{"label":"Bulgaria","value":"Bulgaria","default":false},{"label":"Burundi","value":"Burundi","default":false},{"label":"Benin","value":"Benin","default":false},{"label":"Brunei Darussalam","value":"Brunei Darussalam","default":false},{"label":"Bermuda","value":"Bermuda","default":false},{"label":"Bolivia, Plurinational State of","value":"Bolivia, Plurinational State of","default":false},{"label":"Bonaire, Sint Eustatius and Saba","value":"Bonaire, Sint Eustatius and Saba","default":false},{"label":"Brazil","value":"Brazil","default":false},{"label":"Germany","value":"Germany","default":false},{"label":"Saint Barthélemy","value":"Saint Barthélemy","default":false},{"label":"Bahamas","value":"Bahamas","default":false},{"label":"Botswana","value":"Botswana","default":false},{"label":"Bouvet Island","value":"Bouvet Island","default":false},{"label":"Belarus","value":"Belarus","default":false},{"label":"Belize","value":"Belize","default":false},{"label":"Cocos (Keeling) Islands","value":"Cocos (Keeling) Islands","default":false},{"label":"Congo, the Democratic Republic of the","value":"Congo, the Democratic Republic of the","default":false},{"label":"Congo","value":"Congo","default":false},{"label":"Central African Republic","value":"Central African Republic","default":false},{"label":"Cabo Verde","value":"Cabo Verde","default":false},{"label":"Colombia","value":"Colombia","default":false},{"label":"Cameroon","value":"Cameroon","default":false},{"label":"Czech Republic","value":"Czech Republic","default":false},{"label":"Costa Rica","value":"Costa Rica","default":false},{"label":"China","value":"China","default":false},{"label":"Christmas Island","value":"Christmas Island","default":false},{"label":"Cyprus","value":"Cyprus","default":false},{"label":"Côte d'Ivoire","value":"Côte d'Ivoire","default":false},{"label":"Cuba","value":"Cuba","default":false},{"label":"Cook Islands","value":"Cook Islands","default":false},{"label":"Serbia and Montenegro","value":"Serbia and Montenegro","default":false},{"label":"Curaçao","value":"Curaçao","default":false},{"label":"Denmark","value":"Denmark","default":false},{"label":"Djibouti","value":"Djibouti","default":false},{"label":"Dominican Republic","value":"Dominican Republic","default":false},{"label":"Algeria","value":"Algeria","default":false},{"label":"Ethiopia","value":"Ethiopia","default":false},{"label":"Chile","value":"Chile","default":false},{"label":"Faroe Islands","value":"Faroe Islands","default":false},{"label":"Ecuador","value":"Ecuador","default":false},{"label":"Dominica","value":"Dominica","default":false},{"label":"Bangladesh","value":"Bangladesh","default":false},{"label":"Egypt","value":"Egypt","default":false},{"label":"Micronesia, Federated States of","value":"Micronesia, Federated States of","default":false},{"label":"Spain","value":"Spain","default":false},{"label":"Falkland Islands (Malvinas)","value":"Falkland Islands (Malvinas)","default":false},{"label":"Finland","value":"Finland","default":false},{"label":"Estonia","value":"Estonia","default":false},{"label":"Gabon","value":"Gabon","default":false},{"label":"Bhutan","value":"Bhutan","default":false},{"label":"Western Sahara","value":"Western Sahara","default":false},{"label":"Fiji","value":"Fiji","default":false},{"label":"Eritrea","value":"Eritrea","default":false},{"label":"Andorra","value":"Andorra","default":false},{"label":"United Kingdom","value":"United Kingdom","default":false},{"label":"Grenada","value":"Grenada","default":false},{"label":"Georgia","value":"Georgia","default":false},{"label":"French Guiana","value":"French Guiana","default":false},{"label":"Guernsey","value":"Guernsey","default":false},{"label":"Ghana","value":"Ghana","default":false},{"label":"Gibraltar","value":"Gibraltar","default":false},{"label":"Greenland","value":"Greenland","default":false},{"label":"Gambia","value":"Gambia","default":false},{"label":"Guinea","value":"Guinea","default":false},{"label":"Guadeloupe","value":"Guadeloupe","default":false},{"label":"Equatorial Guinea","value":"Equatorial Guinea","default":false},{"label":"Greece","value":"Greece","default":false},{"label":"South Georgia and the South Sandwich Islands","value":"South Georgia and the South Sandwich Islands","default":false},{"label":"Guatemala","value":"Guatemala","default":false},{"label":"Guam","value":"Guam","default":false},{"label":"Guinea-Bissau","value":"Guinea-Bissau","default":false},{"label":"Guyana","value":"Guyana","default":false},{"label":"Hong Kong","value":"Hong Kong","default":false},{"label":"Heard Island and McDonald Islands","value":"Heard Island and McDonald Islands","default":false},{"label":"Honduras","value":"Honduras","default":false},{"label":"Croatia","value":"Croatia","default":false},{"label":"Haiti","value":"Haiti","default":false},{"label":"Hungary","value":"Hungary","default":false},{"label":"Indonesia","value":"Indonesia","default":false},{"label":"Ireland","value":"Ireland","default":false},{"label":"Israel","value":"Israel","default":false},{"label":"Isle of Man","value":"Isle of Man","default":false},{"label":"India","value":"India","default":false},{"label":"British Indian Ocean Territory","value":"British Indian Ocean Territory","default":false},{"label":"Iraq","value":"Iraq","default":false}
40433,{"label":"Iran, Islamic Republic of","value":"Iran, Islamic Republic of","default":false},{"label":"Iceland","value":"Iceland","default":false},{"label":"Italy","value":"Italy","default":false},{"label":"Jersey","value":"Jersey","default":false},{"label":"Jamaica","value":"Jamaica","default":false},{"label":"Jordan","value":"Jordan","default":false},{"label":"Japan","value":"Japan","default":false},{"label":"Kenya","value":"Kenya","default":false},{"label":"Kyrgyzstan","value":"Kyrgyzstan","default":false},{"label":"Cambodia","value":"Cambodia","default":false},{"label":"Kiribati","value":"Kiribati","default":false},{"label":"Comoros","value":"Comoros","default":false},{"label":"Saint Kitts and Nevis","value":"Saint Kitts and Nevis","default":false},{"label":"Korea, Democratic People's Republic of","value":"Korea, Democratic People's Republic of","default":false},{"label":"Korea, Republic of","value":"Korea, Republic of","default":false},{"label":"Kuwait","value":"Kuwait","default":false},{"label":"Cayman Islands","value":"Cayman Islands","default":false},{"label":"Kazakhstan","value":"Kazakhstan","default":false},{"label":"Lao People's Democratic Republic","value":"Lao People's Democratic Republic","default":false},{"label":"Lebanon","value":"Lebanon","default":false},{"label":"Saint Lucia","value":"Saint Lucia","default":false},{"label":"Liechtenstein","value":"Liechtenstein","default":false},{"label":"Sri Lanka","value":"Sri Lanka","default":false},{"label":"Liberia","value":"Liberia","default":false},{"label":"Lesotho","value":"Lesotho","default":false},{"label":"Lithuania","value":"Lithuania","default":false},{"label":"Luxembourg","value":"Luxembourg","default":false},{"label":"Latvia","value":"Latvia","default":false},{"label":"Libya","value":"Libya","default":false},{"label":"Morocco","value":"Morocco","default":false},{"label":"Monaco","value":"Monaco","default":false},{"label":"Moldova, Republic of","value":"Moldova, Republic of","default":false},{"label":"Montenegro","value":"Montenegro","default":false},{"label":"Saint Martin (French part)","value":"Saint Martin (French part)","default":false},{"label":"Madagascar","value":"Madagascar","default":false},{"label":"Marshall Islands","value":"Marshall Islands","default":false},{"label":"Macedonia, the former Yugoslav Republic of","value":"Macedonia, the former Yugoslav Republic of","default":false},{"label":"Mali","value":"Mali","default":false},{"label":"Myanmar","value":"Myanmar","default":false},{"label":"Mongolia","value":"Mongolia","default":false},{"label":"Macao","value":"Macao","default":false},{"label":"Northern Mariana Islands","value":"Northern Mariana Islands","default":false},{"label":"Martinique","value":"Martinique","default":false},{"label":"Mauritania","value":"Mauritania","default":false},{"label":"Montserrat","value":"Montserrat","default":false},{"label":"Malta","value":"Malta","default":false},{"label":"Mauritius","value":"Mauritius","default":false},{"label":"Maldives","value":"Maldives","default":false},{"label":"Malawi","value":"Malawi","default":false},{"label":"Mexico","value":"Mexico","default":false},{"label":"Malaysia","value":"Malaysia","default":false},{"label":"Mozambique","value":"Mozambique","default":false},{"label":"Namibia","value":"Namibia","default":false},{"label":"New Caledonia","value":"New Caledonia","default":false},{"label":"Niger","value":"Niger","default":false},{"label":"Norfolk Island","value":"Norfolk Island","default":false},{"label":"Nigeria","value":"Nigeria","default":false},{"label":"Nicaragua","value":"Nicaragua","default":false},{"label":"Netherlands","value":"Netherlands","default":false},{"label":"Norway","value":"Norway","default":false},{"label":"Nepal","value":"Nepal","default":false},{"label":"Nauru","value":"Nauru","default":false},{"label":"Niue","value":"Niue","default":false},{"label":"New Zealand","value":"New Zealand","default":false},{"label":"Oman","value":"Oman","default":false},{"label":"Panama","value":"Panama","default":false},{"label":"Peru","value":"Peru","default":false},{"label":"French Polynesia","value":"French Polynesia","default":false},{"label":"Papua New Guinea","value":"Papua New Guinea","default":false},{"label":"Philippines","value":"Philippines","default":false},{"label":"Pakistan","value":"Pakistan","default":false},{"label":"Poland","value":"Poland","default":false},{"label":"Saint Pierre and Miquelon","value":"Saint Pierre and Miquelon","default":false},{"label":"Pitcairn","value":"Pitcairn","default":false},{"label":"Puerto Rico","value":"Puerto Rico","default":false},{"label":"Palestine, State of","value":"Palestine, State of","default":false},{"label":"Portugal","value":"Portugal","default":false},{"label":"Palau","value":"Palau","default":false},{"label":"Paraguay","value":"Paraguay","default":false},{"label":"Qatar","value":"Qatar","default":false},{"label":"Réunion","value":"Réunion","default":false},{"label":"Romania","value":"Romania","default":false},{"label":"Serbia","value":"Serbia","default":false},{"label":"Russian Federation","value":"Russian Federation","default":false},{"label":"Rwanda","value":"Rwanda","default":false},{"label":"Saudi Arabia","value":"Saudi Arabia","default":false},{"label":"Solomon Islands","value":"Solomon Islands","default":false},{"label":"Seychelles","value":"Seychelles","default":false},{"label":"Sudan","value":"Sudan","default":false},{"label":"Sweden","value":"Sweden","default":false},{"label":"Singapore","value":"Singapore","default":false},{"label":"Saint Helena, Ascension and Tristan da Cunha","value":"Saint Helena, Ascension and Tristan da Cunha","default":false},{"label":"Slovenia","value":"Slovenia","default":false},{"label":"Svalbard and Jan Mayen","value":"Svalbard and Jan Mayen","default":false},{"label":"Slovakia","value":"Slovakia","default":false},{"label":"Sierra Leone","value":"Sierra Leone","default":false},{"label":"San Marino","value":"San Marino","default":false},{"label":"Senegal","value":"Senegal","default":false},{"label":"Somalia","value":"Somalia","default":false},{"label":"Suriname","value":"Suriname","default":false},{"label":"South Sudan","value":"South Sudan","default":false},{"label":"Sao Tome and Principe","value":"Sao Tome and Principe","default":false},{"label":"El Salvador","value":"El Salvador","default":false},{"label":"Sint Maarten (Dutch part)","value":"Sint Maarten (Dutch part)","default":false},{"label":"Syrian Arab Republic","value":"Syrian Arab Republic","default":false},{"label":"Swaziland","value":"Swaziland","default":false},{"label":"Turks and Caicos Islands","value":"Turks and Caicos Islands","default":false},{"label":"Chad","value":"Chad","default":false},{"label":"French Southern Territories","value":"French Southern Territories","default":false},{"label":"Togo","value":"Togo","default":false},{"label":"Thailand","value":"Thailand","default":false},{"label":"Tajikistan","value":"Tajikistan","default":false},{"label":"Tokelau","value":"Tokelau","default":false},{"label":"Timor-Leste","value":"Timor-Leste","default":false},{"label":"Turkmenistan","value":"Turkmenistan","default":false},{"label":"Tunisia","value":"Tunisia","default":false},{"label":"Tonga","value":"Tonga","default":false},{"label":"Turkey","value":"Turkey","default":false},{"label":"Trinidad and Tobago","value":"Trinidad and Tobago","default":false},{"label":"Tuvalu","value":"Tuvalu","default":false},{"label":"Taiwan, Province of China","value":"Taiwan, Province of China","default":false},{"label":"Tanzania, United Republic of","value":"Tanzania, United Republic of","default":false},{"label":"Ukraine","value":"Ukraine","default":false},{"label":"Uganda","value":"Uganda","default":false},{"label":"United Arab Emirates","value":"United Arab Emirates","default":false},{"label":"United States Minor Outlying Islands","value":"United States Minor Outlying Islands","default":false},{"label":"United States","value":"United States","default":false},{"label":"Uruguay","value":"Uruguay","default":false},{"label":"Uzbekistan","value":"Uzbekistan","default":false},{"label":"Holy See (Vatican City State)","value":"Holy See (Vatican City State)","default":false},{"label":"Saint Vincent and the Grenadines","value":"Saint Vincent and the Grenadines","default":false},{"label":"Venezuela, Bolivarian Republic of","value":"Venezuela, Bolivarian Republic of","default":false},{"label":"Virgin Islands, British","value":"Virgin Islands, British","default":false},{"label":"Virgin Islands, U.S.","value":"Virgin Islands, U.S.","default":false},{"label":"Viet Nam","value":"Viet Nam","default":false},{"label":"Vanuatu","value":"Vanuatu","default":false},{"label":"Wallis and Futuna","value":"Wallis and Futuna","default":false},{"label":"Samoa","value":"Samoa","default":false},{"label":"Kosovo","value":"Kosovo","default":false},{"label":"Yemen","value":"Yemen","default":false},{"label":"Mayotte","value":"Mayotte","default":false},{"label":"South Africa","value":"South Africa","default":false},{"label":"Zambia","value":"Zambia","default":false},{"label":"Zimbabwe","value":"Zimbabwe","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"would_like_digital_event","visibility":"PUBLIC","label":"would like digital event","required":false,"public-description":null,"validation-expression":null,"input-type":"checkbox","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"would_like_in_person_event","visibility":"PUBLIC","label":"would like in-person event","required":false,"public-description":null,"validation-expression":null,"input-type":"checkbox","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"would-like-deeptech-newsletter","visibility":"PUBLIC","label":"AI & Deeptech Newsletter","required":false,"public-description":"","validation-expression":null,"input-type":"checkbox","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"would-like-event-newsletter","visibility":"PUBLIC","label":"Sifted Updates","required":false,"public-description":null,"validation-expression":null,"input-type":"checkbox","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"would-like-fintech-newsletter","visibility":"PUBLIC","label":"Fintech Newsletter","required":false,"public-description":null,"validation-expression":null,"input-type":"checkbox","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"would-like-futureproof-newsletter","visibility":"PUBLIC","label":"Up Round Newsletter","required":false,"public-description":null,"validation-expression":null,"input-type":"checkbox","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"would-like-member-newsletter","visibility":"PUBLIC","label":"Sifted Members","required":false,"public-description":null,"validation-expression":null,"input-type":"checkbox","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"would-like-scoop-newsletter","visibility":"PUBLIC","label":"The Scoop","required":false,"public-description":"","validation-expression":null,"input-type":"checkbox","select-options":null,"range-start":0,"range-end":100,"range-step":5}
40433,{"slug":"would-like-startup-life-newsletter","visibility":"PUBLIC","label":"Startup Life Newsletter","required":false,"public-description":null,"validation-expression":null,"input-type":"checkbox","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"would-like-sustainability-newsletter","visibility":"PUBLIC","label":"Climate Tech Newsletter","required":false,"public-description":null,"validation-expression":null,"input-type":"checkbox","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"wp_username","visibility":"PUBLIC","label":"wp_username","required":false,"public-description":null,"validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5}],"siteStyles":"{\"color\":{\"text\":{\"main\":\"#000000\",\"tinted\":\"#333333\"},\"background\":{\"main\":\"#FFFFFF\",\"tinted\":\"#cccccc\"},\"accent\":{\"main\":\"#d81c5f\",\"tinted\":\"#e6417b\"},\"action\":{\"main\":\"#2322ff\",\"tinted\":\"#0000ee\"},\"warning\":{\"main\":\"#D90B00\",\"tinted\":\"#ff190d\"}},\"typography\":{\"title\":{\"font\":\"Roboto\",\"fallbackFont\":\"sans-serif\"},\"body\":{\"font\":\"Roboto\",\"fallbackFont\":\"sans-serif\"}},\"button\":{\"fontWeight\":\"normal\",\"fontSize\":\"16\",\"borderWidth\":\"0\",\"borderRadius\":\"9\",\"height\":\"50\"},\"input\":{\"borderColor\":\"#333333\",\"borderWidth\":\"1\",\"borderRadius\":\"5\",\"height\":\"50\"}}","twoFactorEmailAuthenticationEnabled":false,"requireEmailVerfication":true,"hideConfirmPasswordOnRegForm":false,"passwordStrengthRequirements":{"minLength":8,"requireUppercase":false,"requireNumbers":false,"requireSpecialCharacters":false},"ruleAnalyticsEnabled":true,"paymentProvider":"stripe","braintreeSandboxEnv":true,"braintreeMobilePaymentConfig":null,"stripeMobilePaymentConfig":"{\"apple\":{\"countryCode\":\"GB\"},\"google\":{\"countryCode\":\"GB\"}}","stripeAutomaticTaxEnabled":false,"dataLayerName":"ZephrDataLayer","trackFormDataLayerEvents":false,"recaptchaV2Enabled":false,"recaptchaV2SiteKey":null}}));
40434                                </script>
40434<script type="text/javascript">
40435        if (!window.Zephr) window.Zephr = {};
40436        if (!window.Zephr.outcomes) window.Zephr.outcomes = {};
40437        window.Zephr.outcomes["login-register"] = {
40438            featureLabel: "Display Login/Register Feature",
40439            outcomeId: "transformation/1",
40440            outcomeLabel: "Show Login/Register Form"
40441        };
40442    </script>
40442</div></div></div></div><div data-login-form="checkout" class="hidden"><div class="LoginRegistrationForm_loginRegistrationForm__eKVrT" style="--fintech:url(https://www.datocms-assets.com/60124/1757341374-sifted_fintech.png?auto=format&amp;fit=max&amp;h=50&amp;q=80);--futureproof:url(https://www.datocms-assets.com/60124/1757341374-sifted_upround.png?auto=format&amp;fit=max&amp;h=50&amp;q=80);--startup-life:url(https://www.datocms-assets.com/60124/1757341374-sifted_startuplife.png?auto=format&amp;fit=max&amp;h=50&amp;q=80);--deeptech:url(https://www.datocms-assets.com/60124/1757341374-sifted_ai-and-deeptech.png?auto=format&amp;fit=max&amp;h=50&amp;q=80)"><div class="w-full bg-white" role="form"><div>                                <style>.zephr-form-progress-bar.svelte-19rlx92{width:100%;border:0;border-radius:20px;margin-top:10px}.zephr-form-progress-bar.svelte-19rlx92::-webkit-progress-bar{background-color:var(--zephr-color-background-tinted);border:0;border-radius:20px}.zephr-form-progress-bar.svelte-19rlx92::-webkit-progress-value{background-color:var(--zephr-color-text-tinted);border:0;border-radius:20px}.zephr-progress-bar-step.svelte-19rlx92{margin:auto;color:var(--zephr-color-text-tinted);font-size:var(--zf-subtext-fontSize);font-family:var(--zf-root-fontFamily);cursor:pointer}.zephr-progress-bar-step.svelte-19rlx92:first-child{margin-left:0}.zephr-progress-bar-step.svelte-19rlx92:last-child{margin-right:0}.zephr-progress-bar-step.disabled.svelte-19rlx92{cursor:default}
40443.zephr-form-button-top-margin.svelte-gd8hr6{margin-top:20px}.zephr-form-button.svelte-gd8hr6{padding:0 20px;text-decoration:none;text-transform:capitalize;border-radius:calc(var(--zephr-button-borderRadius) * 1px);font-size:var(--zf-button-fontSize);font-weight:normal;cursor:pointer;border-style:solid;border-width:calc(var(--zephr-button-borderWidth) * 1px);border-color:var(--zephr-color-action-tinted);transition:backdrop-filter 0.2s, background-color 0.2s;display:flex;justify-content:center;align-items:center;width:100%;background-color:var(--zephr-color-action-main);color:var(--zf-button-color);position:relative;overflow:hidden;font-family:var(--zf-root-fontFamily)}.zephr-form-button.svelte-gd8hr6:hover{background-color:var(--zephr-color-action-tinted);border-color:var(--zephr-color-action-tinted)}.zephr-form-button.svelte-gd8hr6:disabled{background-color:var(--zephr-color-background-tinted);border-color:var(--zephr-color-background-tinted)}.zephr-form-button.svelte-gd8hr6:disabled:hover{background-color:var(--zephr-color-background-tinted);border-color:var(--zephr-color-background-tinted)}.zephr-form-button.inputHeight.svelte-gd8hr6{height:calc(var(--zephr-input-height) * 1px)}
40443.zephr-form-button.svelte-gd8hr6:not(inputHeight){height:calc(var(--zephr-button-height) * 1px)}.zephr-form-button.aside.svelte-gd8hr6{width:auto;margin-left:10px}
40444.payment-option-wrapper.svelte-hcxnnv>input[type="radio"].svelte-hcxnnv{display:none}.payment-option-wrapper.svelte-hcxnnv.svelte-hcxnnv{display:flex;flex:1 0 28%;width:100%}.payment-option-wrapper.svelte-hcxnnv.svelte-hcxnnv:only-child{max-width:325px}.box-container.svelte-hcxnnv.svelte-hcxnnv{display:flex;flex-direction:column;flex:1 1 0;width:0;text-align:center}.inner-box.svelte-hcxnnv.svelte-hcxnnv{border:var(--zf-payment-options-border);border-radius:var(--zf-payment-options-borderRadius);background-color:var(--zf-payment-options-bgColor);height:100%;display:flex;flex-direction:column}.box-container.highlighted.svelte-hcxnnv .inner-box.svelte-hcxnnv{border-top-left-radius:0;border-top-right-radius:0}.box-container.svelte-hcxnnv .box-content.svelte-hcxnnv{flex-grow:1;padding:30px 20px;margin:0 10px;overflow:hidden}.box-container.svelte-hcxnnv .styled-box-content.svelte-hcxnnv{color:var(--zephr-color-text-main);font-family:var(--zf-root-fontFamily)}
40445  .box-container .styled-box-content h1,
40446  .box-container .styled-box-content h2,
40447  .box-container .styled-box-content h3,
40448  .box-container .styled-box-content p,
40449  .box-container .styled-box-content span
40450   {color:var(--zephr-color-text-main);font-family:var(--zf-root-fontFamily)}.payment-options-container .box-container .styled-box-content button{color:#fff;background-color:var(--zephr-color-action-main);border-width:calc(var(--zephr-button-borderWidth) * 1px);border-color:var(--zephr-color-action-tinted);border-radius:calc(var(--zephr-button-borderRadius) * 1px);font-size:var(--zf-button-fontSize)}.payment-options-container .box-container .styled-box-content button:hover{background-color:var(--zephr-color-action-tinted);border-color:var(--zephr-color-action-tinted)}.payment-options-container .box-container .box-content img{max-width:210px;height:auto}.box-top.svelte-hcxnnv.svelte-hcxnnv{height:40px}.box-container.highlighted.svelte-hcxnnv .box-top.svelte-hcxnnv{color:var(--zf-payment-options-highlighted-color);background-color:var(--zf-payment-options-highlighted-bgColor);position:relative;border:var(--zf-payment-options-border);border-bottom-width:0;border-radius:var(--zf-payment-options-borderRadius);border-bottom-left-radius:0;border-bottom-right-radius:0;display:flex;justify-content:center;align-items:center}.box-container.highlighted.svelte-hcxnnv .box-top .box-top-text.svelte-hcxnnv{font-weight:bold}.box-container.svelte-hcxnnv .box-bottom.svelte-hcxnnv{min-height:60px;display:flex;flex-direction:column;align-items:center;padding:20px 0 30px;margin:0 30px}.button-sub-text.svelte-hcxnnv.svelte-hcxnnv{margin-top:10px}
40451.payment-options-container.svelte-tqlhky{flex-wrap:wrap;font-size:var(--zf-payment-options-fontSize);width:100%;color:var(--zf-payment-options-color);line-height:18px;padding:31px 0 20px;display:grid;justify-content:space-evenly;justify-items:center;grid-template-columns:repeat(auto-fit, minmax(300px, 1fr));gap:13px}@media(max-width: 340px){.payment-options-container.svelte-tqlhky{grid-template-columns:repeat(auto-fit, minmax(280px, 1fr))}}
40452.zephr-form-error-message-min-height.svelte-1ko2lqj{min-height:1.1em}.zephr-form-error-message.svelte-1ko2lqj{color:var(--zephr-color-warning-main);font-size:var(--zf-subtext-fontSize);margin-top:0.5em;position:relative;margin-left:1.2em;margin-right:1.2em}
40453.zephr-form-input-inner-container.svelte-88cmol{position:relative}.zephr-form-input-full-width.svelte-88cmol{width:100%}.zephr-form-input.svelte-88cmol{width:100%;display:block;height:calc(var(--zephr-input-height) * 1px);padding-left:8px;font-size:var(--zf-input-fontSize);border:calc(var(--zephr-input-borderWidth) * 1px) solid
40454      var(--zephr-input-borderColor);border-radius:calc(var(--zephr-input-borderRadius) * 1px);transition:border-color 0.25s ease, box-shadow 0.25s ease;outline:0;color:var(--zephr-color-text-main);background-color:var(--zf-input-bgColor);font-family:var(--zf-root-fontFamily)}.zephr-form-input.svelte-88cmol::placeholder{color:var(--zephr-color-background-tinted);font-family:var(--zf-root-fontFamily)}.zephr-form-input-checkbox.svelte-88cmol{width:auto;height:auto;margin:8px 5px 0 0;float:left}.zephr-form-input-radio.svelte-88cmol{position:absolute;opacity:0;cursor:pointer;height:0;width:0}.zephr-form-input-color[type="color"].svelte-88cmol{width:50px;padding:0;border-radius:50%}.zephr-form-input-color[type="color"].svelte-88cmol::-webkit-color-swatch{border:none;border-radius:50%;padding:0}.zephr-form-input-color[type="color"].svelte-88cmol::-webkit-color-swatch-wrapper{border:none;border-radius:50%;padding:0}.zephr-form-input.disabled.svelte-88cmol,.zephr-form-input.disabled.svelte-88cmol:hover{border:calc(var(--zephr-input-borderWidth) * 1px) solid
40455      var(--zephr-input-borderColor);background-color:var(--zephr-color-background-tinted)}.zephr-form-input.error.svelte-88cmol{border:1px solid var(--zephr-color-warning-main)}
40456.zephr-form-input-label.svelte-yaw4yg.svelte-yaw4yg{margin-top:10px;display:block;line-height:30px;font-size:var(--zf-subtext-fontSize);color:var(--zephr-color-text-tinted);font-family:var(--zf-root-fontFamily)}.zephr-form-input-label.svelte-yaw4yg.svelte-yaw4yg:first-child{margin-top:0}.zephr-form-input-label.svelte-yaw4yg span.svelte-yaw4yg{display:block}
40457.svelte-fa-base{height:1em;overflow:visible;transform-origin:center;vertical-align:-0.125em}.svelte-fa-fw{text-align:center;width:1.25em}.svelte-fa-pull-left.svelte-f5ydbn{float:left}.svelte-fa-pull-right.svelte-f5ydbn{float:right}.svelte-fa-size-lg.svelte-f5ydbn{font-size:1.33333em;line-height:0.75em;vertical-align:-0.225em}.svelte-fa-size-sm.svelte-f5ydbn{font-size:0.875em}.svelte-fa-size-xs.svelte-f5ydbn{font-size:0.75em}.spin.svelte-f5ydbn{animation:svelte-f5ydbn-spin 2s 0s infinite linear}.pulse.svelte-f5ydbn{animation:svelte-f5ydbn-spin 1s infinite steps(8)}@keyframes svelte-f5ydbn-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}
40458.svelte-fa-layers.svelte-ff6okk{display:inline-block;position:relative}.svelte-fa-layers.svelte-ff6okk .svelte-fa{position:absolute;bottom:0;left:0;right:0;top:0;margin:auto;text-align:center}.svelte-fa-layers.svelte-ff6okk .svelte-fa-layers-text{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}.svelte-fa-layers.svelte-ff6okk .svelte-fa-layers-text span{display:inline-block}.svelte-fa-pull-left.svelte-ff6okk{float:left}.svelte-fa-pull-right.svelte-ff6okk{float:right}.svelte-fa-size-lg.svelte-ff6okk{font-size:1.33333em;line-height:0.75em;vertical-align:-0.225em}.svelte-fa-size-sm.svelte-ff6okk{font-size:0.875em}.svelte-fa-size-xs.svelte-ff6okk{font-size:0.75em}
40459.container.svelte-1j4jgwv{display:inline-block;height:auto}.svelte-fa-size-lg.svelte-1j4jgwv{font-size:1.33333em;line-height:0.75em;vertical-align:-0.225em}.svelte-fa-size-sm.svelte-1j4jgwv{font-size:0.875em}.svelte-fa-size-xs.svelte-1j4jgwv{font-size:0.75em}
40460.zephr-form-password-match.svelte-tsrdk3.svelte-tsrdk3{margin:20px 0;justify-content:center}.zephr-form-password-match.svelte-tsrdk3 ul.svelte-tsrdk3{padding-left:0;margin:0}.zephr-form-password-requirement.svelte-tsrdk3.svelte-tsrdk3{display:flex;align-items:center;color:var(--zephr-color-text-tinted);font-size:var(--zf-subtext-fontSize);min-height:20px;font-family:var(--zf-root-fontFamily)}.zephr-form-password-requirement-icon.svelte-tsrdk3.svelte-tsrdk3{margin-right:10px;font-size:15px}
40461.zephr-form-password-progress.svelte-1bpbne4.svelte-1bpbne4{display:flex;margin-top:10px}.zephr-form-password-bar.svelte-1bpbne4.svelte-1bpbne4{width:100%;height:4px;border-radius:2px}.zephr-form-password-bar.svelte-1bpbne4.svelte-1bpbne4:not(:first-child){margin-left:8px}.zephr-form-password-requirements.svelte-1bpbne4.svelte-1bpbne4{margin:20px 0;justify-content:center}.zephr-form-password-requirements.svelte-1bpbne4 ul.svelte-1bpbne4{padding-left:0;margin:0}.zephr-form-password-requirement.svelte-1bpbne4.svelte-1bpbne4{display:flex;align-items:center;color:var(--zephr-color-text-tinted);font-size:var(--zf-subtext-fontSize);min-height:20px;font-family:var(--zf-root-fontFamily)}.zephr-form-password-requirement-icon.svelte-1bpbne4.svelte-1bpbne4{margin-right:10px;font-size:15px}
40462.apple-pay-button{display:inline-block;-webkit-appearance:-apple-pay-button;-apple-pay-button-type:pay;width:440px;max-width:100%;height:45px;margin-top:20px}.apple-pay-button-black{-apple-pay-button-style:black}#google-pay-button.svelte-1drqjgk{width:440px;max-width:100%;height:45px;margin-top:20px}
40463#braintree-dropin-container.svelte-w52z2j{margin-top:1em;margin-bottom:1em}
40464.stripe-element.svelte-1bi6tmz{margin-top:2em;margin-bottom:1em;border:calc(var(--zephr-input-borderWidth) * 1px) solid
40465      var(--zephr-input-borderColor);border-radius:calc(var(--zephr-input-borderRadius) * 1px);padding:1em}.stripe-element.svelte-1bi6tmz iframe:focus{outline:none !important}
40466#stripe-mobile-pay-button.svelte-12ehv8b{width:440px;max-width:100%;height:45px;margin-top:20px}
40467.spinner-container.svelte-1c5ov4v{text-align:center;padding:2em}
40468#zuora_payment.svelte-1vnsk3p{margin-top:1em;margin-bottom:1em}.zuora-disabled-iframe-container.svelte-1vnsk3p .z_hppm_iframe{pointer-events:none;opacity:0.3}.zuora-dynamic-form-disabled.svelte-1vnsk3p{pointer-events:none;opacity:0.3}.spinner-overlay.svelte-1vnsk3p{width:100%;height:100%;position:absolute;top:0;left:0;display:flex;align-items:center;justify-content:center}.form-wrapper.svelte-1vnsk3p{position:relative}
40469#payment-element.svelte-1ejcgdg{margin-top:1em;margin-bottom:1em;border:calc(var(--zephr-input-borderWidth) * 1px) solid
40470            var(--zephr-input-borderColor);border-radius:calc(var(--zephr-input-borderRadius) * 1px);padding:1em}
40471.zephr-form-checkbox.svelte-ud4i0a.svelte-ud4i0a.svelte-ud4i0a{position:absolute;opacity:0;cursor:pointer;height:0;width:0}.zephr-form-checkbox-label.svelte-ud4i0a.svelte-ud4i0a.svelte-ud4i0a{display:flex;align-items:center;font-family:var(--zf-root-fontFamily)}.zephr-form-checkmark.svelte-ud4i0a.svelte-ud4i0a.svelte-ud4i0a{position:relative;box-sizing:border-box;height:23px;width:23px;background-color:#fff;border:calc(var(--zephr-input-borderWidth) * 1px) solid
40472      var(--zephr-input-borderColor);border-radius:6px;margin-right:12px;cursor:pointer}.zephr-form-checkmark.checked.svelte-ud4i0a.svelte-ud4i0a.svelte-ud4i0a{border-color:var(--zephr-color-action-main)}.zephr-form-checkmark.checked.svelte-ud4i0a.svelte-ud4i0a.svelte-ud4i0a:after{content:"";position:absolute;width:6px;height:13px;border:solid var(--zephr-color-action-main);border-width:0 2px 2px 0;transform:rotate(45deg);top:3px;left:8px;box-sizing:border-box}.zephr-form-checkmark.disabled.svelte-ud4i0a.svelte-ud4i0a.svelte-ud4i0a{border:calc(var(--zephr-input-borderWidth) * 1px) solid
40473      var(--zephr-color-background-tinted)}.zephr-form-checkmark.disabled.checked.svelte-ud4i0a.svelte-ud4i0a.svelte-ud4i0a:after{border:solid var(--zephr-color-background-tinted);border-width:0 2px 2px 0}.zephr-form-checkmark.error.svelte-ud4i0a.svelte-ud4i0a.svelte-ud4i0a{border:calc(var(--zephr-input-borderWidth) * 1px) solid
40474      var(--zephr-color-warning-main)}.zephr-form-checkbox.svelte-ud4i0a:focus-visible+.zephr-form-checkbox-label.svelte-ud4i0a>.zephr-form-checkmark.svelte-ud4i0a{outline:2px solid var(--zephr-color-action-main);outline-color:-webkit-focus-ring-color}
40475.zephr-form-payment-auto-renew-toggle.svelte-1yfwddr{margin:10px 0;font-size:var(--zf-font-size-base);font-family:var(--zf-root-fontFamily)}
40476.check-image.svelte-w5z6iw{height:1.2em;vertical-align:middle;margin-right:0.5em}.zephr-form-success-message.svelte-w5z6iw{color:var(--zephr-color-text-main);display:inline-block}
40477.zephr-form-verification-resend-link-container.svelte-1yj9ceh{margin-bottom:2em}.zephr-form-verification-resend-link.svelte-1yj9ceh,.zephr-form-verification-resend-text.svelte-1yj9ceh{float:right;position:absolute;padding-right:2px;padding-top:0.5em;padding-left:0.5em;font-size:var(--zf-subtext-fontSize);right:0}.zephr-form-verification-resend-link.svelte-1yj9ceh{cursor:pointer;color:var(--zf-link-color)}
40478.zephr-form-custom-text.svelte-3sd7s2{margin-top:1em;margin-bottom:1em;color:var(--zephr-color-text-main)}
40479.zephr-form-input-radio.svelte-1cbmaif.svelte-1cbmaif.svelte-1cbmaif{position:absolute;opacity:0;cursor:pointer;height:0;width:0}.zephr-form-radio-label.svelte-1cbmaif.svelte-1cbmaif.svelte-1cbmaif{display:flex;align-items:center;font-family:var(--zf-root-fontFamily)}.zephr-form-radio-dot.svelte-1cbmaif.svelte-1cbmaif.svelte-1cbmaif{display:block;position:relative;box-sizing:border-box;height:23px;width:23px;background-color:#fff;border:1px solid #ebebeb;border-radius:50%;margin-right:12px;cursor:pointer}.checked.svelte-1cbmaif.svelte-1cbmaif.svelte-1cbmaif{border-color:var(--zephr-color-action-main)}.checked.svelte-1cbmaif.svelte-1cbmaif.svelte-1cbmaif:after{content:"";position:absolute;width:17px;height:17px;background:var(--zephr-color-action-main);border-radius:50%;top:2px;left:2px}.disabled.checked.svelte-1cbmaif.svelte-1cbmaif.svelte-1cbmaif:after{background:var(--zephr-color-background-tinted)}.error.svelte-1cbmaif.svelte-1cbmaif.svelte-1cbmaif{border:1px solid var(--zephr-color-warning-main)}.zephr-form-input-radio.svelte-1cbmaif:focus-visible+.zephr-form-radio-label.svelte-1cbmaif>.zephr-form-radio-dot.svelte-1cbmaif{outline:2px solid var(--zephr-color-action-main);outline-color:-webkit-focus-ring-color}
40480.zephr-form-input-error-text.svelte-wlae04{color:var(--zephr-color-warning-main);font-family:var(--zf-root-fontFamily)}.zephr-form-input-select.svelte-wlae04{display:block;appearance:auto;width:100%;height:calc(var(--zephr-input-height) * 1px);font-size:var(--zf-input-fontSize);font-family:var(--zf-root-fontFamily);border:calc(var(--zephr-input-borderWidth) * 1px) solid
40481      var(--zephr-input-borderColor);border-radius:calc(var(--zephr-input-borderRadius) * 1px);transition:border-color 0.25s ease, box-shadow 0.25s ease;outline:0;color:var(--zephr-color-text-main);background-color:var(--zf-input-bgColor);padding:10px}.zephr-form-input-select.unselected.svelte-wlae04{color:var(--zephr-color-background-tinted)}.zephr-form-input-select.error.svelte-wlae04{border-color:var(--zephr-color-warning-main)}.zephr-form-input-textarea.svelte-wlae04{display:block;min-height:calc(var(--zephr-input-height) * 1px);min-width:100%;max-width:100%;background-color:var(--zf-input-bgColor);border:calc(var(--zephr-input-borderWidth) * 1px) solid var(--zephr-input-borderColor);border-radius:calc(var(--zephr-input-borderRadius) * 1px);transition:border-color 0.25s ease, box-shadow 0.25s ease;color:var(--zephr-color-text-main);font-size:var(--zf-input-fontSize);font-weight:300;padding:16px 8px;font-family:var(--zf-root-fontFamily);outline:0}.zephr-form-input-textarea.svelte-wlae04::placeholder{color:var(--zephr-color-background-tinted);font-family:var(--zf-root-fontFamily)}.zephr-form-input-slider-output.svelte-wlae04{margin:13px 0 0 10px}
40482.zephr-form-link.svelte-14vxk2u{margin:10px 0;color:var(--zf-link-color);text-decoration:underline;cursor:pointer;font-family:var(--zf-root-fontFamily)}.zephr-form-link-disabled.svelte-14vxk2u{color:var(--zephr-color-text-main);cursor:not-allowed;text-decoration:none}.zephr-form-link-no-underline.svelte-14vxk2u{text-decoration:none}
40483.zephr-form-reset-link-container.svelte-49aomy{min-height:2.5em}.zephr-form-link-message.svelte-49aomy{margin:10px 0 10px 20px;font-family:var(--zf-root-fontFamily)}
40484.zephr-form-reset-link-container.svelte-49aomy{min-height:2.5em}.zephr-form-link-message.svelte-49aomy{margin:10px 0 10px 20px;font-family:var(--zf-root-fontFamily)}
40485.zephr-form-google-icon.svelte-aktnoc{width:20px}
40486.zephr-form-social-sign-in.svelte-1e2xtn4{align-items:center}.zephr-form-social-sign-in-button.svelte-1e2xtn4{width:100%;min-height:55px;padding:15px;color:#000;background-color:#fff;box-shadow:0 0 5px rgba(0, 0, 0, 0.3);border-radius:10px;font-size:17px;
40486display:flex;align-items:center;cursor:pointer;margin-top:20px;font-family:var(--zf-root-fontFamily)}.zephr-form-social-sign-in-button.svelte-1e2xtn4:hover{background-color:#fafafa}.zephr-form-social-sign-in-icon.svelte-1e2xtn4{display:flex;justify-content:center;margin-right:30px;width:25px}
40487.zephr-form-promo-input-container.svelte-xf8v79{flex:0.6}.zephr-form-promo-activate-line.svelte-xf8v79{display:flex;cursor:pointer;min-height:calc(var(--zephr-input-height) * 1px);margin:1em 1.2em;font-size:var(--zf-payment-summary-fontSize);line-height:calc(var(--zephr-input-height) * 1px);color:var(--zf-link-color)}.zephr-form-promo-line.svelte-xf8v79{display:flex;min-height:calc(var(--zephr-input-height) * 1px);margin:1em 1.2em}.zephr-form-addon-line.svelte-xf8v79{display:flex;padding-top:1em;padding-bottom:1em;margin-left:1.2em}.zephr-form-summary-prorate-disclaimer.svelte-xf8v79{padding-top:0.25em;padding-left:1em;color:var(--zephr-color-text-tinted)}.zephr-form-summary-charge-description.svelte-xf8v79{color:var(--zephr-color-text-tinted)}.zephr-form-charge-line.svelte-xf8v79{display:flex;padding-top:1em;margin-left:1.2em;padding-left:1em}.zephr-form-summary-line-right.svelte-xf8v79{margin-left:auto;margin-right:1.5em;text-align:right}.zephr-form-summary-line-left.svelte-xf8v79{margin-left:10px}.zephr-form-summary-promo-middle.svelte-xf8v79{position:relative;top:calc(var(--zephr-input-height) * 0.5px)}.zephr-form-summary.svelte-xf8v79{border:var(--zf-payment-summary-border);border-radius:var(--zf-payment-summary-borderRadius);padding-top:1em;padding-bottom:1em;font-size:var(--zf-payment-summary-fontSize);margin-top:1.5em;margin-bottom:1.5em;color:var(--zf-payment-summary-color);background-color:var(--zf-payment-summary-bgColor)}.zephr-form-summary.svelte-xf8v79:first-child{margin-top:0}.zephr-form-summary-title.svelte-xf8v79{margin-bottom:1em;margin-left:1.2em}.zephr-form-summary-price-line.svelte-xf8v79{font-weight:bold;padding-left:1em;padding-top:1em}.zephr-form-summary-line.svelte-xf8v79{display:flex}.zephr-form-summary-price-line-upper.svelte-xf8v79{border-top:var(--zf-payment-summary-border);margin-top:1em}.zephr-form-summary-line-title.svelte-xf8v79{flex:0 0 65%;margin-left:1.2em}.zephr-form-summary-line-price.svelte-xf8v79{flex:1;text-align:right;margin-right:1.5em}.zephr-form-discount-line.svelte-xf8v79{display:flex;justify-content:space-between;margin:0.5em 0;margin-left:1.2em}
40488.zephr-form-divider-container.svelte-1jhhsfx{display:flex;align-items:center;justify-content:center;margin:1.5em 0}.zephr-form-divider-line.svelte-1jhhsfx{height:1px;width:50%;margin:0 5px;background-color:var(--zephr-color-text-tinted)}.zephr-form-divider-line-complete.svelte-1jhhsfx{height:1px;width:100%;margin:0 5px;background-color:var(--zephr-color-text-tinted)}.zephr-form-divider-text.svelte-1jhhsfx{margin:0 12px;color:var(--zephr-color-text-main);font-size:var(--zf-info-fontSize);font-family:var(--zf-root-fontFamily);white-space:nowrap}
40489.zephr-form-login-link.svelte-1jmemom.svelte-1jmemom{margin-top:1em;margin-bottom:1em;text-align:center}.zephr-form-login-link.svelte-1jmemom>a.svelte-1jmemom{color:var(--zf-link-color);margin-left:0.25em}
40490.zephr-form-account-code-container.svelte-1hhep92{margin-top:1.5em}
40491.zephr-form-invitation-container.svelte-1qkv7d3{border:1px solid;margin:1.5em 0;padding:20px;color:var(--zephr-color-text-main)}.zephr-form-invitation-title.svelte-1qkv7d3{margin-bottom:20px;font-weight:bold;font-family:var(--zf-root-fontFamily)}.zephr-form-invitation-email.svelte-1qkv7d3{display:flex;align-items:center}.zephr-form-invitation-input-container.svelte-1qkv7d3{flex-grow:1}.zephr-form-invitation-success-message.svelte-1qkv7d3{margin-top:0.5em}
40492.subscription-option-product-label{margin-bottom:5px;margin-top:0}.subscription-option-wrapper.svelte-1gr56ov{display:flex;flex:1 0 28%;width:100%;max-width:400px}.subscription-option-wrapper.svelte-1gr56ov:only-child{max-width:325px}.subscription-option-box{display:flex;flex-direction:column;flex:1 1 0;width:0}.info-row.svelte-1gr56ov{margin-top:7px;margin-bottom:7px}.info-label.svelte-1gr56ov{display:inline;margin-right:10px}.info.svelte-1gr56ov{display:inline}hr.svelte-1gr56ov{border-width:1px 0px 0px;margin:5px 5px;border-color:var(--zephr-color-background-tinted)}.inner-box.svelte-1gr56ov{border:var(--zf-payment-options-border);border-radius:var(--zf-payment-options-borderRadius);background-color:var(--zf-payment-options-bgColor);height:100%;display:flex;flex-direction:column;flex-grow:1;padding:20px 20px;margin:0 10px;overflow:hidden}.change-disabled-label.svelte-1gr56ov{margin-top:15px}
40493.subscription-options-container.svelte-bnxnvq{flex-wrap:wrap;font-size:var(--zf-payment-options-fontSize);width:100%;color:var(--zf-payment-options-color);line-height:18px;padding:31px 0 20px;display:grid;justify-content:space-evenly;justify-items:center;grid-template-columns:repeat(auto-fit, minmax(300px, 1fr));gap:13px}@media(max-width: 340px){.subscription-options-container.svelte-bnxnvq{grid-template-columns:repeat(auto-fit, minmax(280px, 1fr))}}
40494.subscription-list-item.svelte-1qhs7yc{font-family:var(--zephr-typography-body-font), var(--zephr-typography-body-fallbackFont);color:var(--zephr-color-text-main)}hr.svelte-1qhs7yc{border-width:1px 0px 0px;margin:20px 0px;border-color:var(--zephr-color-background-tinted)}.inactive.svelte-1qhs7yc{text-decoration:line-through}h3.svelte-1qhs7yc{margin:0 0 20px}.inner-box.svelte-1qhs7yc{display:flex;flex-direction:column;flex-grow:1;padding:30px 20px;margin:0 10px;overflow:hidden;min-width:300px}.gift-pill.svelte-1qhs7yc{display:inline-block;background-color:var(--zephr-color-background-tinted);color:var(--zephr-color-text-main);font-size:0.75rem;font-weight:600;padding:3px 8px;border-radius:12px;margin-left:8px;vertical-align:middle}
40495.zephr-form-tablink.svelte-py0ruk{display:flex;align-items:center;cursor:pointer;justify-content:space-between;text-decoration:none;color:var(--zephr-color-text-main);font-weight:590;padding:var(--zf-list-subscriptions-section-padding);border-bottom:1px solid var(--zephr-color-background-tinted)}.zephr-form-tablink.svelte-py0ruk:hover{text-decoration:underline}.zephr-form-tablink.svelte-py0ruk:last-child{border-bottom:none
40496  }
40497.zephr-subscription-list-box-item.svelte-xxnasy.svelte-xxnasy{font-family:var(--zephr-typography-body-font),
40498      var(--zephr-typography-body-fallbackFont);color:var(--zephr-color-text-main);max-width:var(--zf-list-subscriptions-container-maxWidth);border-radius:var(--zf-list-subscriptions-container-borderRadius);border:var(--zf-list-subscriptions-container-border);padding:var(--zf-list-subscriptions-container-padding)}.zephr-inner-box.svelte-xxnasy.svelte-xxnasy{display:flex;flex-direction:column;flex-grow:1}.zephr-box-item-information.svelte-xxnasy.svelte-xxnasy{font-size:var(--zf-list-subscriptions-info-fontSize);color:var(--zephr-color-text-tinted);margin-top:8px}.zephr-section.svelte-xxnasy.svelte-xxnasy{padding:var(--zf-list-subscriptions-section-padding);border-bottom:1px solid var(--zephr-color-background-tinted);gap:8px}.zephr-section.svelte-xxnasy.svelte-xxnasy:first-child{padding-top:0;border-bottom:none}.zephr-section.svelte-xxnasy.svelte-xxnasy:last-child{border-bottom:none}.zephr-section.svelte-xxnasy span.svelte-xxnasy{font-weight:590}.zephr-section.svelte-xxnasy h2.svelte-xxnasy{margin:0}.gift-pill.svelte-xxnasy.svelte-xxnasy{display:inline-block;background-color:var(--zephr-color-background-tinted);color:var(--zephr-color-text-main);font-size:0.75rem;font-weight:600;padding:3px 8px;border-radius:12px;margin-left:8px;vertical-align:middle}.auto-renew-toggle-container.svelte-xxnasy.svelte-xxnasy{display:flex;align-items:center;gap:8px}.updating-indicator.svelte-xxnasy.svelte-xxnasy{font-size:0.85rem;color:var(--zephr-color-text-tinted);font-style:italic}.status-message.svelte-xxnasy.svelte-xxnasy{margin-top:8px;font-size:0.85rem}.status-message.success.svelte-xxnasy.svelte-xxnasy{color:#28a745}.status-message.error.svelte-xxnasy.svelte-xxnasy{color:#dc3545}
40499.subscriptions-list-container.svelte-ldb1rq{margin-top:40px;
40499display:flex;flex-direction:column;gap:40px}
40500.subscription-custom-fields-update.svelte-t6s0pv{max-width:600px;margin:0 auto;padding:1rem}.title.svelte-t6s0pv{font-size:1.5rem;font-weight:600;margin-bottom:0.5rem;color:var(--text-color, #333)}.description.svelte-t6s0pv{color:var(--text-secondary, #666);margin-bottom:1rem;line-height:1.5}.subscription-info.svelte-t6s0pv{background:var(--background-light, #f8f9fa);padding:0.75rem;border-radius:4px;margin-bottom:1rem;border:1px solid var(--border-color, #e0e0e0)}.custom-fields-form.svelte-t6s0pv{display:flex;flex-direction:column;gap:1.5rem}.field-group.svelte-t6s0pv{display:flex;flex-direction:column;gap:0.25rem;padding:1rem;background:var(--background-light, #f8f9fa);border-radius:4px;border:1px solid var(--border-color, #e0e0e0)}.textarea-input.svelte-t6s0pv{min-height:80px;padding:0.75rem;border:1px solid var(--border-color, #ccc);border-radius:4px;font-family:inherit;font-size:1rem;resize:vertical;transition:border-color 0.2s}.textarea-input.svelte-t6s0pv:focus{outline:none;border-color:var(--primary-color, #007bff);box-shadow:0 0 0 2px var(--primary-color-alpha, rgba(0, 123, 255, 0.25))}.textarea-input.error.svelte-t6s0pv{border-color:var(--error-color, #dc3545)}.textarea-input.svelte-t6s0pv:disabled{background-color:var(--background-disabled, #f5f5f5);
40500cursor:not-allowed}.error-message.svelte-t6s0pv{margin-top:0.5rem}.success-message.svelte-t6s0pv{padding:0.75rem;background:var(--success-background, #d4edda);border:1px solid var(--success-border, #c3e6cb);border-radius:4px;margin-top:0.5rem}.success-text.svelte-t6s0pv{color:var(--success-color, #155724);margin:0}.button-group.svelte-t6s0pv{display:flex;gap:0.75rem;margin-top:1rem}.submit-button.svelte-t6s0pv,.cancel-button.svelte-t6s0pv{padding:0.75rem 1.5rem;border:none;border-radius:4px;font-size:1rem;font-weight:500;cursor:pointer;transition:all 0.2s;display:flex;align-items:center;gap:0.5rem}.submit-button.svelte-t6s0pv{background:var(--primary-color, #007bff);color:white}.submit-button.svelte-t6s0pv:hover:not(:disabled){background:var(--primary-color-hover, #0056b3)}.submit-button.svelte-t6s0pv:disabled{background:var(--background-disabled, #6c757d);cursor:not-allowed}.cancel-button.svelte-t6s0pv{background:var(--secondary-color, #6c757d);color:white}.cancel-button.svelte-t6s0pv:hover:not(:disabled){background:var(--secondary-color-hover, #545b62)}.cancel-button.svelte-t6s0pv:disabled{opacity:0.6;cursor:not-allowed}
40501.past-subscriptions-link-wrapper.svelte-zpa2t{margin:10px 0}
40502.event-link-wrapper{margin-top:10px}.float-right.svelte-3cxpfz{float:right;margin-top:calc(var(--zephr-input-height) * -1px + 5px)}
40503.bold-label.svelte-nx4w5y label{font-weight:bold}.read-only-input.svelte-nx4w5y{border:none;background:none;color:#333;cursor:default;outline:none;flex-grow:1;margin-right:10px;margin-top:15px}.zephr-form-relative-container.svelte-nx4w5y{display:flex;align-items:center;justify-content:space-between;width:100%}.update-link{white-space:nowrap;text-decoration:none;font-size:0.75em}
40504.bold-label.svelte-nx4w5y label{font-weight:bold}.read-only-input.svelte-nx4w5y{border:none;background:none;color:#333;cursor:default;outline:none;flex-grow:1;margin-right:10px;margin-top:15px}.zephr-form-relative-container.svelte-nx4w5y{display:flex;align-items:center;justify-content:space-between;width:100%}.update-link{white-space:nowrap;text-decoration:none;font-size:0.75em}
40505.zephr-form-ro-attribute{display:flex;align-items:center;height:50px;justify-content:flex-start}.zephr-form-ro-attribute-label{margin-right:10px;&:after {
40506      content: ": ";
40507    }}
40508hr.svelte-jmotet{border-width:1px 0px 0px;margin:20px 0px;border-color:var(--zephr-color-background-tinted)}.session-container.svelte-jmotet{padding:15px;display:flex;flex-direction:column}.device-title.svelte-jmotet{font-weight:bold;font-size:1.2em;margin-bottom:10px}.current-device.svelte-jmotet{color:#777;font-size:0.9em;margin-left:10px}.login-time.svelte-jmotet,.browser.svelte-jmotet,.country.svelte-jmotet{margin-bottom:10px;font-size:0.9em}
40509.sign-out-all.svelte-1ogdv39{color:#0073e6;cursor:pointer;font-size:1em;margin:20px 0;text-align:center}.sign-out-all.svelte-1ogdv39:hover{text-decoration:underline}
40510.table.svelte-7sscau.svelte-7sscau{display:grid;grid-template-columns:0.7fr 1.4fr 1fr 0.6fr}.table-head.svelte-7sscau.svelte-7sscau{display:contents}.table-row.svelte-7sscau.svelte-7sscau{display:contents}.table-head.svelte-7sscau>div.svelte-7sscau{font-size:13px;padding:13px 10px 10px;border-bottom:1px solid var(--zephr-color-background-tinted)}.table-row.svelte-7sscau>div.svelte-7sscau{font-size:var(--zf-info-fontSize);height:60px;padding:0 10px;border-bottom:1px solid var(--zephr-color-background-tinted);display:flex;align-items:center}.table-head.svelte-7sscau>div.svelte-7sscau:first-child,.table-row.svelte-7sscau>div.svelte-7sscau:first-child{padding-left:0}.table-head.svelte-7sscau>div.svelte-7sscau:last-child,.table-row.svelte-7sscau>div.svelte-7sscau:last-child{padding-right:0}.taxes.svelte-7sscau.svelte-7sscau{color:var(--zephr-color-background-tinted);white-space:pre;font-size:small}
40511.zephr-form-button-group.svelte-5uv9ua{display:flex;flex-direction:row;gap:12px;margin-top:20px}.zephr-form-back-button.svelte-5uv9ua{padding:0 20px;border-radius:calc(var(--zephr-button-borderRadius) * 1px);border-style:solid;border-width:calc(var(--zephr-button-borderWidth) * 1px);border-color:var(--zephr-color-action-main);display:flex;justify-content:center;align-items:center;width:100%;background-color:var(--zephr-color-action-main);color:var(--zf-button-color);cursor:pointer}.zephr-form-continue-button.svelte-5uv9ua{padding:0 20px;border-radius:calc(var(--zephr-button-borderRadius) * 1px);border-style:solid;border-width:calc(var(--zephr-button-borderWidth) * 1px);border-color:var(--zephr-color-action-main);display:flex;justify-content:center;align-items:center;width:100%;background-color:var(--zf-button-color);color:var(--zephr-color-action-main);
40511cursor:pointer}.zephr-form-back-button.svelte-5uv9ua:hover{background-color:var(--zephr-color-action-tinted);border-color:var(--zephr-color-action-tinted)}.zephr-form-continue-button.svelte-5uv9ua:hover{background-color:var(--zephr-color-action-tinted);border-color:var(--zephr-color-action-tinted);color:var(--zf-button-color)}.zephr-form-back-button.svelte-5uv9ua:not(inputHeight){height:calc(var(--zephr-button-height) * 1px)}.zephr-form-continue-button.svelte-5uv9ua:not(inputHeight){height:calc(var(--zephr-button-height) * 1px)}
40512.zephr-form-button.svelte-1uaz0r{padding:0 20px;text-decoration:none;text-transform:capitalize;border-radius:calc(var(--zephr-button-borderRadius) * 1px);font-size:var(--zf-button-fontSize);font-weight:normal;cursor:pointer;border-style:solid;border-width:calc(var(--zephr-button-borderWidth) * 1px);border-color:var(--zephr-color-action-tinted);transition:backdrop-filter 0.2s, background-color 0.2s;display:flex;justify-content:center;align-items:center;width:100%;background-color:var(--zephr-color-action-main);color:var(--zf-button-color);position:relative;overflow:hidden;font-family:var(--zf-root-fontFamily);height:calc(var(--zephr-button-height) * 1px)}.zephr-form-button.svelte-1uaz0r:hover{background-color:var(--zephr-color-action-tinted);border-color:var(--zephr-color-action-tinted);color:var(--zf-button-color)}.zephr-form-button-top-margin.svelte-1uaz0r{margin-top:20px}
40513.recipient-name-section.svelte-hvl7z2{margin-top:1rem;margin-bottom:1rem}.field.svelte-hvl7z2{margin-bottom:0.5rem}label.svelte-hvl7z2{display:block;margin-bottom:0.5rem;color:var(--zephr-color-text-tinted);font-family:var(--zf-root-fontFamily)}input.svelte-hvl7z2{width:100%;padding:0.5rem;border:calc(var(--zephr-input-borderWidth) * 1px) solid var(--zephr-input-borderColor);border-radius:calc(var(--zephr-input-borderRadius) * 1px);background-color:var(--zf-input-bgColor);color:var(--zephr-color-text-main);font-family:var(--zf-root-fontFamily)}input.svelte-hvl7z2::placeholder{color:var(--zephr-color-background-tinted);font-family:var(--zf-root-fontFamily)}input.svelte-hvl7z2:focus{outline:none;border-color:var(--zephr-color-action-main)}.error.svelte-hvl7z2{border-color:var(--zephr-color-warning-main) !important}.error-text.svelte-hvl7z2{color:var(--zephr-color-warning-main);font-size:0.875em;margin-top:0.25rem;font-family:var(--zf-root-fontFamily)}
40514.recipient-email-section.svelte-1odylgp{margin-bottom:1rem}.field.svelte-1odylgp{margin-bottom:0.5rem}label.svelte-1odylgp{display:block;margin-bottom:0.5rem;color:var(--zephr-color-text-tinted);font-family:var(--zf-root-fontFamily)}input.svelte-1odylgp{width:100%;padding:0.5rem;border:calc(var(--zephr-input-borderWidth) * 1px) solid var(--zephr-input-borderColor);border-radius:calc(var(--zephr-input-borderRadius) * 1px);background-color:var(--zf-input-bgColor);color:var(--zephr-color-text-main);font-family:var(--zf-root-fontFamily)}input.svelte-1odylgp::placeholder{color:var(--zephr-color-background-tinted);font-family:var(--zf-root-fontFamily)}input.svelte-1odylgp:focus{outline:none;border-color:var(--zephr-color-action-main)}.error.svelte-1odylgp{border-color:var(--zephr-color-warning-main) !important}.error-text.svelte-1odylgp{color:var(--zephr-color-warning-main);font-size:0.875em;margin-top:0.25rem;font-family:var(--zf-root-fontFamily)}
40515.zephr-form-input-error-text.svelte-dxm1g8{color:var(--zephr-color-warning-main);font-family:var(--zf-root-fontFamily);font-size:12px;margin-top:4px}.zephr-form-input-select.svelte-dxm1g8{display:block;appearance:auto;width:100%;height:calc(var(--zephr-input-height) * 1px);font-size:var(--zf-input-fontSize);font-family:var(--zf-root-fontFamily);border:calc(var(--zephr-input-borderWidth) * 1px) solid
40516      var(--zephr-input-borderColor);border-radius:calc(var(--zephr-input-borderRadius) * 1px);transition:border-color 0.25s ease, box-shadow 0.25s ease;outline:0;color:var(--zephr-color-text-main);background-color:var(--zf-input-bgColor);padding:10px}.zephr-form-input-select.unselected.svelte-dxm1g8{color:var(--zephr-color-background-tinted)}.zephr-form-input-select.error.svelte-dxm1g8{border-color:var(--zephr-color-warning-main)}.zephr-form-input-select.svelte-dxm1g8:disabled{background-color:var(--zephr-color-background-tinted);cursor:not-allowed}
40517.zephr-form-input-error-text.svelte-dxm1g8{color:var(--zephr-color-warning-main);font-family:var(--zf-root-fontFamily);font-size:12px;margin-top:4px}.zephr-form-input-select.svelte-dxm1g8{display:block;appearance:auto;width:100%;height:calc(var(--zephr-input-height) * 1px);font-size:var(--zf-input-fontSize);font-family:var(--zf-root-fontFamily);border:calc(var(--zephr-input-borderWidth) * 1px) solid
40518      var(--zephr-input-borderColor);border-radius:calc(var(--zephr-input-borderRadius) * 1px);transition:border-color 0.25s ease, box-shadow 0.25s ease;outline:0;color:var(--zephr-color-text-main);background-color:var(--zf-input-bgColor);padding:10px}.zephr-form-input-select.unselected.svelte-dxm1g8{color:var(--zephr-color-background-tinted)}.zephr-form-input-select.error.svelte-dxm1g8{border-color:var(--zephr-color-warning-main)}.zephr-form-input-select.svelte-dxm1g8:disabled{background-color:var(--zephr-color-background-tinted);cursor:not-allowed}
40519.recipient-address-section.svelte-1lcs5wj{margin-bottom:1rem}.address-main-label.svelte-1lcs5wj{display:block;margin-bottom:0.75rem;color:var(--zephr-color-text-tinted);font-family:var(--zf-root-fontFamily);font-weight:600}.address-fields.svelte-1lcs5wj{display:flex;flex-direction:column;gap:1rem}.field.svelte-1lcs5wj{width:100%}label.svelte-1lcs5wj{display:block;margin-bottom:0.5rem;color:var(--zephr-color-text-tinted);font-family:var(--zf-root-fontFamily)}input.svelte-1lcs5wj{width:100%;padding:0.5rem;border:calc(var(--zephr-input-borderWidth) * 1px) solid var(--zephr-input-borderColor);border-radius:calc(var(--zephr-input-borderRadius) * 1px);background-color:var(--zf-input-bgColor);color:var(--zephr-color-text-main);font-family:var(--zf-root-fontFamily)}input.svelte-1lcs5wj::placeholder{color:var(--zephr-color-background-tinted);font-family:var(--zf-root-fontFamily)}input.svelte-1lcs5wj:focus{outline:none;border-color:var(--zephr-color-action-main)}.error-text.svelte-1lcs5wj{color:var(--zephr-color-warning-main);font-size:0.875em;margin-top:0.25rem;font-family:var(--zf-root-fontFamily)}
40520.recipient-message-section.svelte-h6tpk7{margin-top:1rem;margin-bottom:1rem}.field.svelte-h6tpk7{margin-bottom:0.5rem}label.svelte-h6tpk7{display:block;margin-bottom:0.5rem;color:var(--zephr-color-text-tinted);font-family:var(--zf-root-fontFamily)}textarea.svelte-h6tpk7{width:100%;min-height:100px;resize:vertical;padding:0.5rem;border:calc(var(--zephr-input-borderWidth) * 1px) solid var(--zephr-input-borderColor);border-radius:calc(var(--zephr-input-borderRadius) * 1px);background-color:var(--zf-input-bgColor);color:var(--zephr-color-text-main);font-family:var(--zf-root-fontFamily)}textarea.svelte-h6tpk7::placeholder{color:var(--zephr-color-background-tinted);font-family:var(--zf-root-fontFamily)}textarea.svelte-h6tpk7:focus{outline:none;border-color:var(--zephr-color-action-main)}
40521.zephr-form-input-wrapper.svelte-764k6k{display:flex;flex-direction:column;margin-bottom:16px;width:100%}label.svelte-764k6k{margin-bottom:8px;font-weight:500}input.svelte-764k6k{padding:12px;border-radius:var(--input-border-radius, 4px);border:var(--input-border-width, 1px) solid var(--input-border-color, #ccc);font-size:16px;height:var(--input-height, 50px);box-sizing:border-box}input.svelte-764k6k:focus{outline:none;border-color:var(--color-action-main, #006EDB)}input.error.svelte-764k6k{border-color:var(--color-warning-main, #D90B00)}.error-message.svelte-764k6k{color:var(--color-warning-main, #D90B00);font-size:14px;margin-top:4px}.required.svelte-764k6k{color:var(--color-warning-main, #D90B00)}
40522.zephr-gift-list-box-item.svelte-srvimy.svelte-srvimy{margin-bottom:1.5rem;font-family:var(--zephr-typography-body-font), var(--zephr-typography-body-fallbackFont);color:var(--zephr-color-text-main);max-width:var(--zf-list-subscriptions-container-maxWidth);border-radius:var(--zf-list-subscriptions-container-borderRadius);border:var(--zf-list-subscriptions-container-border);padding:var(--zf-list-subscriptions-container-padding);position:relative;overflow:hidden;background-color:white}.zephr-inner-box.svelte-srvimy.svelte-srvimy{display:flex;flex-direction:column;flex-grow:1;padding-top:20px}.zephr-banner-top.svelte-srvimy.svelte-srvimy{background-color:black;color:white;padding:5px 1.5rem;width:100%;font-size:0.875rem;text-align:center;position:absolute;top:0;left:0;right:0}.zephr-header-section.svelte-srvimy.svelte-srvimy{position:relative}.zephr-status-pill.svelte-srvimy.svelte-srvimy{position:absolute;top:0;right:0;display:inline-block;padding:4px 12px;border-radius:16px;font-size:0.75rem;font-weight:500;color:white;background-color:black}.zephr-section.svelte-srvimy.svelte-srvimy{padding:var(--zf-list-subscriptions-section-padding);gap:8px}.zephr-section.svelte-srvimy.svelte-srvimy:first-child{padding-top:0}.zephr-section.svelte-srvimy span.svelte-srvimy{font-weight:590;display:block;margin-bottom:0.25rem}.zephr-box-item-information.svelte-srvimy.svelte-srvimy{font-size:var(--zf-list-subscriptions-info-fontSize);color:var(--zephr-color-text-tinted);margin-top:8px}
40523.subscriptions-list-container.svelte-ldb1rq{margin-top:40px;
40523display:flex;flex-direction:column;gap:40px}
40524.zephr-form-gift-toggle.svelte-93167f{margin:10px 0;font-size:var(--zf-font-size-base);font-family:var(--zf-root-fontFamily)}
40525.zephr-form-gift-future-date-toggle.svelte-c9nudz{margin:10px 0;font-size:var(--zf-font-size-base);font-family:var(--zf-root-fontFamily)}.zephr-form-gift-future-date-toggle-description.svelte-c9nudz{margin:5px 0 0 0;font-size:var(--zf-font-size-small, 14px);color:var(--zf-color-text-secondary, #666);line-height:1.4}
40526.zephr-form-gift-future-date-input.svelte-1vykgtl{margin:10px 0;font-size:var(--zf-font-size-base);font-family:var(--zf-root-fontFamily)}.zephr-form-gift-future-date-input-description.svelte-1vykgtl{margin:5px 0 0 0;font-size:var(--zf-font-size-small, 14px);color:var(--zf-color-text-secondary, #666);line-height:1.4}
40527.suspend-resume-subscription-section.svelte-1hog2jr{margin-top:1rem;margin-bottom:1rem}.field.svelte-1hog2jr{margin-bottom:0.5rem}label.svelte-1hog2jr{display:block;margin-bottom:0.5rem;color:var(--zephr-color-text-tinted);font-family:var(--zf-root-fontFamily)}input.svelte-1hog2jr{width:100%;padding:0.5rem;border:calc(var(--zephr-input-borderWidth) * 1px) solid var(--zephr-input-borderColor);border-radius:calc(var(--zephr-input-borderRadius) * 1px);background-color:var(--zf-input-bgColor);color:var(--zephr-color-text-main);font-family:var(--zf-root-fontFamily)}input.svelte-1hog2jr::placeholder{color:var(--zephr-color-background-tinted);font-family:var(--zf-root-fontFamily)}input.svelte-1hog2jr:focus{outline:none;border-color:var(--zephr-color-action-main)}.error.svelte-1hog2jr{border-color:var(--zephr-color-warning-main) !important}.error-text.svelte-1hog2jr{color:var(--zephr-color-warning-main);font-size:0.875em;margin-top:0.25rem;font-family:var(--zf-root-fontFamily)}
40528.subscription-custom-fields-container.svelte-uox0m2{padding:0;max-width:800px;margin:0 auto}.form-title.svelte-uox0m2{font-size:1.75rem;font-weight:700;margin:0 0 16px 0;color:var(--zephr-color-text-main)}.form-description.svelte-uox0m2{font-size:1rem;margin:0 0 32px 0;color:var(--zephr-color-text-tinted);line-height:1.5}.custom-fields-form.svelte-uox0m2{display:flex;flex-direction:column;gap:16px}.field-item.svelte-uox0m2{display:flex;flex-direction:column;gap:8px;padding:16px;background-color:var(--zephr-color-background-main);border:1px solid var(--zephr-color-background-tinted);border-radius:8px;transition:all 0.2s ease}.field-item.svelte-uox0m2:focus-within{border-color:var(--zephr-color-action-main);box-shadow:0 0 0 2px rgba(66, 153, 225, 0.1)}.field-label.svelte-uox0m2{font-weight:600;font-size:0.9rem;color:var(--zephr-color-text-main);display:flex;align-items:center;gap:8px}.field-input.svelte-uox0m2{padding:12px 16px;border:2px solid var(--zephr-color-background-tinted);border-radius:8px;font-size:1rem;transition:all 0.2s ease;background-color:var(--zephr-color-background-main)}.field-input.svelte-uox0m2:focus{outline:none;border-color:var(--zephr-color-action-main);box-shadow:0 0 0 3px rgba(66, 153, 225, 0.1)}.field-input.svelte-uox0m2:disabled{background-color:#f5f5f5;color:#666;cursor:not-allowed}.success-message.svelte-uox0m2{background-color:#d4edda;border:1px solid #c3e6cb;color:#155724;padding:12px 16px;border-radius:8px;margin:16px 0;font-weight:500;display:flex;align-items:center;gap:8px}.error-message.svelte-uox0m2{background-color:#f8d7da;border:1px solid #f5c6cb;color:#721c24;padding:12px 16px;border-radius:8px;margin:16px 0;font-weight:500;display:flex;align-items:center;gap:8px}.form-actions.svelte-uox0m2{margin-top:32px;padding-top:24px;border-top:1px solid var(--zephr-color-background-tinted);text-align:center;display:flex;justify-content:center;gap:16px}.submit-button.svelte-uox0m2{background:linear-gradient(135deg, var(--zephr-color-action-main) 0%, var(--zephr-color-action-tinted) 100%);color:white;border:none;padding:16px 32px;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:all 0.2s ease;min-width:160px}.submit-button.svelte-uox0m2:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 4px 8px rgba(0, 0, 0, 0.2)}.submit-button.svelte-uox0m2:disabled{opacity:0.6;cursor:not-allowed;transform:none}.simple-field-group.svelte-uox0m2{margin-bottom:24px;display:flex;flex-direction:column;gap:16px}.loading.svelte-uox0m2{text-align:center;padding:40px 20px;color:var(--zephr-color-text-tinted);font-size:1.1rem;background-color:var(--zephr-color-background-tinted);border-radius:8px}
40529.bill-to-contact-section.svelte-z564ap{margin-top:1rem;margin-bottom:1rem}.field.svelte-z564ap{margin-bottom:0.5rem}label.svelte-z564ap{display:block;margin-bottom:0.5rem;color:var(--zephr-color-text-tinted);font-family:var(--zf-root-fontFamily)}input.svelte-z564ap,select.svelte-z564ap{width:100%;padding:0.5rem;border:calc(var(--zephr-input-borderWidth) * 1px) solid
40530      var(--zephr-input-borderColor);border-radius:calc(var(--zephr-input-borderRadius) * 1px);background-color:var(--zf-input-bgColor);color:var(--zephr-color-text-main);font-family:var(--zf-root-fontFamily)}input.svelte-z564ap::placeholder{color:var(--zephr-color-background-tinted);font-family:var(--zf-root-fontFamily)}input.svelte-z564ap:focus{outline:none;border-color:var(--zephr-color-action-main)}.error.svelte-z564ap{border-color:var(--zephr-color-warning-main) !important}.error-text.svelte-z564ap{color:var(--zephr-color-warning-main);font-size:0.875em;margin-top:0.25rem;font-family:var(--zf-root-fontFamily)}
40531.zephr-form-max-width{max-width:var(--zf-container-maxWidth);margin:auto}.zephr-form-content.svelte-j7lu48{padding:var(--zf-container-padding);background-color:var(--zf-container-bgColor);border:var(--zf-container-border);border-radius:var(--zf-container-borderRadius)}.zephr-payment-options-content.svelte-j7lu48{background-color:transparent;border:none;border-radius:0}.close-button-container.svelte-j7lu48{text-align:right;width:100%;margin-bottom:15px}.close-button.svelte-j7lu48{cursor:pointer;display:inline;padding:7px;min-width:32px;min-height:32px;border-radius:16px;margin:1px}.loading-placeholder.svelte-j7lu48{display:flex;justify-content:center;align-items:center;min-height:200px}
40532.zephr-form{--zf-root-fontSize:16px;--zf-root-fontFamily:var(--zephr-typography-body-font), var(--zephr-typography-body-fallbackFont);--zf-container-maxWidth:440px;--zf-container-padding:20px;--zf-container-margin:20px auto;--zf-container-border:none;--zf-container-borderRadius:calc(var(--zephr-input-borderRadius) * 1px);--zf-container-color:var(--zephr-color-text-main);--zf-container-bgColor:var(--zephr-color-background-main, transparent);--zf-info-fontSize:14px;--zf-subtext-fontSize:12px;--zf-link-color:#6ba5e9;--zf-input-fontSize:var(--zf-root-fontSize);--zf-input-bgColor:var(--zephr-color-background-main, transparent);--zf-button-fontSize:calc(var(--zephr-button-fontSize, 16) * 1px);--zf-button-color:#fff;--zf-password-valid-color:#7bcb7f;--zf-password-invalid-color:#c4c4c4;--zf-payment-options-fontSize:var(--zf-subtext-fontSize);--zf-payment-options-color:var(--zephr-color-text-main);--zf-payment-options-bgColor:var(--zf-container-bgColor);--zf-payment-options-border:calc(var(--zephr-input-borderWidth) * 1px) solid var(--zephr-input-borderColor);--zf-payment-options-borderRadius:calc(var(--zephr-input-borderRadius) * 1px);--zf-payment-options-highlighted-color:var(--zephr-color-text-main);--zf-payment-options-highlighted-bgColor:var(--zephr-color-accent-main);--zf-payment-summary-fontSize:var(--zf-subtext-fontSize);--zf-payment-summary-color:var(--zephr-color-text-main);--zf-payment-summary-bgColor:var(--zf-input-bgColor);--zf-payment-summary-border:calc(var(--zephr-input-borderWidth) * 1px) solid var(--zephr-input-borderColor);--zf-payment-summary-borderRadius:calc(var(--zephr-input-borderRadius) * 1px);--zf-list-subscriptions-container-maxWidth:630px;--zf-list-subscriptions-container-padding:24px;--zf-list-subscriptions-section-padding:16px 0px;--zf-list-subscriptions-container-border:calc(var(--zephr-input-borderWidth) * 1px) solid var(--zephr-input-borderColor);--zf-list-subscriptions-container-borderRadius:calc(var(--zephr-input-borderRadius) * 1px);--zf-list-subscriptions-info-fontSize:var(--zf-info-fontSize)}.zephr-form.svelte-789zog{color:var(--zf-container-color);margin:var(--zf-container-margin);font-size:var(--zf-root-fontSize);font-family:var(--zf-root-fontFamily)}.zephr-form *{box-sizing:border-box}:where(.zephr-form) button{text-transform:unset;overflow:visible;font-family:var(--zf-root-fontFamily, unset);font-size:var(--zf-root-fontSize, unset);line-height:unset;margin:unset;padding:unset;border:unset;background:unset;&:hover, &:focus-visible {
40533            border: unset;
40534            background: unset;
40535        }}.zephr-form-disabled-div{pointer-events:none;opacity:0.8}.zephr-form-relative-container{position:relative}.zephr-form-flex-container{display:flex}
40535.zephr-form-input-inner-button{cursor:pointer;position:absolute;top:50%;transform:translateY(-50%);right:5px;padding:10px 5px}.zephr-form-input-inner-text{color:var(--zephr-color-text-main);font-size:var(--zf-subtext-fontSize);font-weight:bold;font-family:var(--zf-root-fontFamily)}
40536</style>
40537                                
40537<script data-cmp-ab="2">(function () {
40538	'use strict';
40539
40540	/** @returns {void} */
40541	function noop() {}
40542
40543	/**
40544	 * @template T
40545	 * @template S
40546	 * @param {T} tar
40547	 * @param {S} src
40548	 * @returns {T & S}
40549	 */
40550	function assign(tar, src) {
40551		// @ts-ignore
40552		for (const k in src) tar[k] = src[k];
40553		return /** @type {T & S} */ (tar);
40554	}
40555
40556	function run(fn) {
40557		return fn();
40558	}
40559
40560	function blank_object() {
40561		return Object.create(null);
40562	}
40563
40564	/**
40565	 * @param {Function[]} fns
40566	 * @returns {void}
40567	 */
40568	function run_all(fns) {
40569		fns.forEach(run);
40570	}
40571
40572	/**
40573	 * @param {any} thing
40574	 * @returns {thing is Function}
40575	 */
40576	function is_function(thing) {
40577		return typeof thing === 'function';
40578	}
40579
40580	/** @returns {boolean} */
40581	function safe_not_equal(a, b) {
40582		return a != a ? b == b : a !== b || (a && typeof a === 'object') || typeof a === 'function';
40583	}
40584
40585	let src_url_equal_anchor;
40586
40587	/**
40588	 * @param {string} element_src
40589	 * @param {string} url
40590	 * @returns {boolean}
40591	 */
40592	function src_url_equal(element_src, url) {
40593		if (element_src === url) return true;
40594		if (!src_url_equal_anchor) {
40595			src_url_equal_anchor = document.createElement('a');
40596		}
40597		// This is actually faster than doing URL(..).href
40598		src_url_equal_anchor.href = url;
40599		return element_src === src_url_equal_anchor.href;
40600	}
40601
40602	/** @returns {boolean} */
40603	function is_empty(obj) {
40604		return Object.keys(obj).length === 0;
40605	}
40606
40607	function create_slot(definition, ctx, $$scope, fn) {
40608		if (definition) {
40609			const slot_ctx = get_slot_context(definition, ctx, $$scope, fn);
40610			return definition[0](slot_ctx);
40611		}
40612	}
40613
40614	function get_slot_context(definition, ctx, $$scope, fn) {
40615		return definition[1] && fn ? assign($$scope.ctx.slice(), definition[1](fn(ctx))) : $$scope.ctx;
40616	}
40617
40618	function get_slot_changes(definition, $$scope, dirty, fn) {
40619		if (definition[2] && fn) {
40620			const lets = definition[2](fn(dirty));
40621			if ($$scope.dirty === undefined) {
40622				return lets;
40623			}
40624			if (typeof lets === 'object') {
40625				const merged = [];
40626				const len = Math.max($$scope.dirty.length, lets.length);
40627				for (let i = 0; i < len; i += 1) {
40628					merged[i] = $$scope.dirty[i] | lets[i];
40629				}
40630				return merged;
40631			}
40632			return $$scope.dirty | lets;
40633		}
40634		return $$scope.dirty;
40635	}
40636
40637	/** @returns {void} */
40638	function update_slot_base(
40639		slot,
40640		slot_definition,
40641		ctx,
40642		$$scope,
40643		slot_changes,
40644		get_slot_context_fn
40645	) {
40646		if (slot_changes) {
40647			const slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn);
40648			slot.p(slot_context, slot_changes);
40649		}
40650	}
40651
40652	/** @returns {any[] | -1} */
40653	function get_all_dirty_from_scope($$scope) {
40654		if ($$scope.ctx.length > 32) {
40655			const dirty = [];
40656			const length = $$scope.ctx.length / 32;
40657			for (let i = 0; i < length; i++) {
40658				dirty[i] = -1;
40659			}
40660			return dirty;
40661		}
40662		return -1;
40663	}
40664
40665	function null_to_empty(value) {
40666		return value == null ? '' : value;
40667	}
40668
40669	function action_destroyer(action_result) {
40670		return action_result && is_function(action_result.destroy) ? action_result.destroy : noop;
40671	}
40672
40673	/**
40674	 * @param {Node} target
40675	 * @param {Node} node
40676	 * @returns {void}
40677	 */
40678	function append(target, node) {
40679		target.appendChild(node);
40680	}
40681
40682	/**
40683	 * @param {Node} target
40684	 * @param {Node} node
40685	 * @param {Node} [anchor]
40686	 * @returns {void}
40687	 */
40688	function insert(target, node, anchor) {
40689		target.insertBefore(node, anchor || null);
40690	}
40691
40692	/**
40693	 * @param {Node} node
40694	 * @returns {void}
40695	 */
40696	function detach(node) {
40697		if (node.parentNode) {
40698			node.parentNode.removeChild(node);
40699		}
40700	}
40701
40702	/**
40703	 * @returns {void} */
40704	function destroy_each(iterations, detaching) {
40705		for (let i = 0; i < iterations.length; i += 1) {
40706			if (iterations[i]) iterations[i].d(detaching);
40707		}
40708	}
40709
40710	/**
40711	 * @template {keyof HTMLElementTagNameMap} K
40712	 * @param {K} name
40713	 * @returns {HTMLElementTagNameMap[K]}
40714	 */
40715	function element(name) {
40716		return document.createElement(name);
40717	}
40718
40719	/**
40720	 * @template {keyof SVGElementTagNameMap} K
40721	 * @param {K} name
40722	 * @returns {SVGElement}
40723	 */
40724	function svg_element(name) {
40725		return document.createElementNS('http://www.w3.org/2000/svg', name);
40726	}
40727
40728	/**
40729	 * @param {string} data
40730	 * @returns {Text}
40731	 */
40732	function text(data) {
40733		return document.createTextNode(data);
40734	}
40735
40736	/**
40737	 * @returns {Text} */
40738	function space() {
40739		return text(' ');
40740	}
40741
40742	/**
40743	 * @returns {Text} */
40744	function empty() {
40745		return text('');
40746	}
40747
40748	/**
40749	 * @param {EventTarget} node
40750	 * @param {string} event
40751	 * @param {EventListenerOrEventListenerObject} handler
40752	 * @param {boolean | AddEventListenerOptions | EventListenerOptions} [options]
40753	 * @returns {() => void}
40754	 */
40755	function listen(node, event, handler, options) {
40756		node.addEventListener(event, handler, options);
40757		return () => node.removeEventListener(event, handler, options);
40758	}
40759
40760	/**
40761	 * @returns {(event: any) => any} */
40762	function prevent_default(fn) {
40763		return function (event) {
40764			event.preventDefault();
40765			// @ts-ignore
40766			return fn.call(this, event);
40767		};
40768	}
40769
40770	/**
40771	 * @returns {(event: any) => void} */
40772	function self(fn) {
40773		return function (event) {
40774			// @ts-ignore
40775			if (event.target === this) fn.call(this, event);
40776		};
40777	}
40778
40779	/**
40780	 * @param {Element} node
40781	 * @param {string} attribute
40782	 * @param {string} [value]
40783	 * @returns {void}
40784	 */
40785	function attr(node, attribute, value) {
40786		if (value == null) node.removeAttribute(attribute);
40787		else if (node.getAttribute(attribute) !== value) node.setAttribute(attribute, value);
40788	}
40789	/**
40790	 * List of attributes that should always be set through the attr method,
40791	 * because updating them through the property setter doesn't work reliably.
40792	 * In the example of `width`/`height`, the problem is that the setter only
40793	 * accepts numeric values, but the attribute can also be set to a string like `50%`.
40794	 * If this list becomes too big, rethink this approach.
40795	 */
40796	const always_set_through_set_attribute = ['width', 'height'];
40797
40798	/**
40799	 * @param {Element & ElementCSSInlineStyle} node
40800	 * @param {{ [x: string]: string }} attributes
40801	 * @returns {void}
40802	 */
40803	function set_attributes(node, attributes) {
40804		// @ts-ignore
40805		const descriptors = Object.getOwnPropertyDescriptors(node.__proto__);
40806		for (const key in attributes) {
40807			if (attributes[key] == null) {
40808				node.removeAttribute(key);
40809			} else if (key === 'style') {
40810				node.style.cssText = attributes[key];
40811			} else if (key === '__value') {
40812				/** @type {any} */ (node).value = node[key] = attributes[key];
40813			} else if (
40814				descriptors[key] &&
40815				descriptors[key].set &&
40816				always_set_through_set_attribute.indexOf(key) === -1
40817			) {
40818				node[key] = attributes[key];
40819			} else {
40820				attr(node, key, attributes[key]);
40821			}
40822		}
40823	}
40824
40825	/**
40826	 * @param {Element} element
40827	 * @returns {ChildNode[]}
40828	 */
40829	function children(element) {
40830		return Array.from(element.childNodes);
40831	}
40832
40833	/**
40834	 * @param {Text} text
40835	 * @param {unknown} data
40836	 * @returns {void}
40837	 */
40838	function set_data(text, data) {
40839		data = '' + data;
40840		if (text.data === data) return;
40841		text.data = /** @type {string} */ (data);
40842	}
40843
40844	/**
40845	 * @returns {void} */
40846	function set_input_value(input, value) {
40847		input.value = value == null ? '' : value;
40848	}
40849
40850	/**
40851	 * @returns {void} */
40852	function set_style(node, key, value, important) {
40853		if (value == null) {
40854			node.style.removeProperty(key);
40855		} else {
40856			node.style.setProperty(key, value, important ? 'important' : '');
40857		}
40858	}
40859
40860	/**
40861	 * @returns {void} */
40862	function select_option(select, value, mounting) {
40863		for (let i = 0; i < select.options.length; i += 1) {
40864			const option = select.options[i];
40865			if (option.__value === value) {
40866				option.selected = true;
40867				return;
40868			}
40869		}
40870		if (!mounting || value !== undefined) {
40871			select.selectedIndex = -1; // no option should be selected
40872		}
40873	}
40874
40875	/**
40876	 * @returns {void} */
40877	function toggle_class(element, name, toggle) {
40878		// The `!!` is required because an `undefined` flag means flipping the current state.
40879		element.classList.toggle(name, !!toggle);
40880	}
40881
40882	/**
40883	 * @template T
40884	 * @param {string} type
40885	 * @param {T} [detail]
40886	 * @param {{ bubbles?: boolean, cancelable?: boolean }} [options]
40887	 * @returns {CustomEvent<T>}
40888	 */
40889	function custom_event(type, detail, { bubbles = false, cancelable = false } = {}) {
40890		return new CustomEvent(type, { detail, bubbles, cancelable });
40891	}
40892
40893	function construct_svelte_component(component, props) {
40894		return new component(props);
40895	}
40896
40897	/**
40898	 * @typedef {Node & {
40899	 * 	claim_order?: number;
40900	 * 	hydrate_init?: true;
40901	 * 	actual_end_child?: NodeEx;
40902	 * 	childNodes: NodeListOf<NodeEx>;
40903	 * }} NodeEx
40904	 */
40905
40906	/** @typedef {ChildNode & NodeEx} ChildNodeEx */
40907
40908	/** @typedef {NodeEx & { claim_order: number }} NodeEx2 */
40909
40910	/**
40911	 * @typedef {ChildNodeEx[] & {
40912	 * 	claim_info?: {
40913	 * 		last_index: number;
40914	 * 		total_claimed: number;
40915	 * 	};
40916	 * }} ChildNodeArray
40917	 */
40918
40919	let current_component;
40920
40921	/** @returns {void} */
40922	function set_current_component(component) {
40923		current_component = component;
40924	}
40925
40926	function get_current_component() {
40927		if (!current_component) throw new Error('Function called outside component initialization');
40928		return current_component;
40929	}
40930
40931	/**
40932	 * The `onMount` function schedules a callback to run as soon as the component has been mounted to the DOM.
40933	 * It must be called during the component's initialisation (but doesn't need to live *inside* the component;
40934	 * it can be called from an external module).
40935	 *
40936	 * If a function is returned _synchronously_ from `onMount`, it will be called when the component is unmounted.
40937	 *
40938	 * `onMount` does not run inside a [server-side component](https://svelte.dev/docs#run-time-server-side-component-api).
40939	 *
40940	 * https://svelte.dev/docs/svelte#onmount
40941	 * @template T
40942	 * @param {() => import('./private.js').NotFunction<T> | Promise<import('./private.js').NotFunction<T>> | (() => any)} fn
40943	 * @returns {void}
40944	 */
40945	function onMount(fn) {
40946		get_current_component().$$.on_mount.push(fn);
40947	}
40948
40949	/**
40950	 * Schedules a callback to run immediately after the component has been updated.
40951	 *
40952	 * The first time the callback runs will be after the initial `onMount`
40953	 *
40954	 * https://svelte.dev/docs/svelte#afterupdate
40955	 * @param {() => any} fn
40956	 * @returns {void}
40957	 */
40958	function afterUpdate(fn) {
40959		get_current_component().$$.after_update.push(fn);
40960	}
40961
40962	/**
40963	 * Schedules a callback to run immediately before the component is unmounted.
40964	 *
40965	 * Out of `onMount`, `beforeUpdate`, `afterUpdate` and `onDestroy`, this is the
40966	 * only one that runs inside a server-side component.
40967	 *
40968	 * https://svelte.dev/docs/svelte#ondestroy
40969	 * @param {() => any} fn
40970	 * @returns {void}
40971	 */
40972	function onDestroy(fn) {
40973		get_current_component().$$.on_destroy.push(fn);
40974	}
40975
40976	/**
40977	 * Creates an event dispatcher that can be used to dispatch [component events](https://svelte.dev/docs#template-syntax-component-directives-on-eventname).
40978	 * Event dispatchers are functions that can take two arguments: `name` and `detail`.
40979	 *
40980	 * Component events created with `createEventDispatcher` create a
40981	 * [CustomEvent](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent).
40982	 * These events do not [bubble](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Building_blocks/Events#Event_bubbling_and_capture).
40983	 * The `detail` argument corresponds to the [CustomEvent.detail](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/detail)
40984	 * property and can contain any type of data.
40985	 *
40986	 * The event dispatcher can be typed to narrow the allowed event names and the type of the `detail` argument:
40987	 * ```ts
40988	 * const dispatch = createEventDispatcher<{
40989	 *  loaded: never; // does not take a detail argument
40990	 *  change: string; // takes a detail argument of type string, which is required
40991	 *  optional: number | null; // takes an optional detail argument of type number
40992	 * }>();
40993	 * ```
40994	 *
40995	 * https://svelte.dev/docs/svelte#createeventdispatcher
40996	 * @template {Record<string, any>} [EventMap=any]
40997	 * @returns {import('./public.js').EventDispatcher<EventMap>}
40998	 */
40999	function createEventDispatcher() {
41000		const component = get_current_component();
41001		return (type, detail, { cancelable = false } = {}) => {
41002			const callbacks = component.$$.callbacks[type];
41003			if (callbacks) {
41004				// TODO are there situations where events could be dispatched
41005				// in a server (non-DOM) environment?
41006				const event = custom_event(/** @type {string} */ (type), detail, { cancelable });
41007				callbacks.slice().forEach((fn) => {
41008					fn.call(component, event);
41009				});
41010				return !event.defaultPrevented;
41011			}
41012			return true;
41013		};
41014	}
41015
41016	const dirty_components = [];
41017	const binding_callbacks = [];
41018
41019	let render_callbacks = [];
41020
41021	const flush_callbacks = [];
41022
41023	const resolved_promise = /* @__PURE__ */ Promise.resolve();
41024
41025	let update_scheduled = false;
41026
41027	/** @returns {void} */
41028	function schedule_update() {
41029		if (!update_scheduled) {
41030			update_scheduled = true;
41031			resolved_promise.then(flush);
41032		}
41033	}
41034
41035	/** @returns {void} */
41036	function add_render_callback(fn) {
41037		render_callbacks.push(fn);
41038	}
41039
41040	// flush() calls callbacks in this order:
41041	// 1. All beforeUpdate callbacks, in order: parents before children
41042	// 2. All bind:this callbacks, in reverse order: children before parents.
41043	// 3. All afterUpdate callbacks, in order: parents before children. EXCEPT
41044	//    for afterUpdates called during the initial onMount, which are called in
41045	//    reverse order: children before parents.
41046	// Since callbacks might update component values, which could trigger another
41047	// call to flush(), the following steps guard against this:
41048	// 1. During beforeUpdate, any updated components will be added to the
41049	//    dirty_components array and will cause a reentrant call to flush(). Because
41050	//    the flush index is kept outside the function, the reentrant call will pick
41051	//    up where the earlier call left off and go through all dirty components. The
41052	//    current_component value is saved and restored so that the reentrant call will
41053	//    not interfere with the "parent" flush() call.
41054	// 2. bind:this callbacks cannot trigger new flush() calls.
41055	// 3. During afterUpdate, any updated components will NOT have their afterUpdate
41056	//    callback called a second time; the seen_callbacks set, outside the flush()
41057	//    function, guarantees this behavior.
41058	const seen_callbacks = new Set();
41059
41060	let flushidx = 0; // Do *not* move this inside the flush() function
41061
41062	/** @returns {void} */
41063	function flush() {
vendor: 4,269 bytes, lines 41064-41239
41064		// Do not reenter flush while dirty components are updated, as this can
41065		// result in an infinite loop. Instead, let the inner flush handle it.
41066		// Reentrancy is ok afterwards for bindings etc.
41067		if (flushidx !== 0) {
41068			return;
41069		}
41070		const saved_component = current_component;
41071		do {
41072			// first, call beforeUpdate functions
41073			// and update components
41074			try {
41075				while (flushidx < dirty_components.length) {
41076					const component = dirty_components[flushidx];
41077					flushidx++;
41078					set_current_component(component);
41079					update(component.$$);
41080				}
41081			} catch (e) {
41082				// reset dirty state to not end up in a deadlocked state and then rethrow
41083				dirty_components.length = 0;
41084				flushidx = 0;
41085				throw e;
41086			}
41087			set_current_component(null);
41088			dirty_components.length = 0;
41089			flushidx = 0;
41090			while (binding_callbacks.length) binding_callbacks.pop()();
41091			// then, once components are updated, call
41092			// afterUpdate functions. This may cause
41093			// subsequent updates...
41094			for (let i = 0; i < render_callbacks.length; i += 1) {
41095				const callback = render_callbacks[i];
41096				if (!seen_callbacks.has(callback)) {
41097					// ...so guard against infinite loops
41098					seen_callbacks.add(callback);
41099					callback();
41100				}
41101			}
41102			render_callbacks.length = 0;
41103		} while (dirty_components.length);
41104		while (flush_callbacks.length) {
41105			flush_callbacks.pop()();
41106		}
41107		update_scheduled = false;
41108		seen_callbacks.clear();
41109		set_current_component(saved_component);
41110	}
41111
41112	/** @returns {void} */
41113	function update($$) {
41114		if ($$.fragment !== null) {
41115			$$.update();
41116			run_all($$.before_update);
41117			const dirty = $$.dirty;
41118			$$.dirty = [-1];
41119			$$.fragment && $$.fragment.p($$.ctx, dirty);
41120			$$.after_update.forEach(add_render_callback);
41121		}
41122	}
41123
41124	/**
41125	 * Useful for example to execute remaining `afterUpdate` callbacks before executing `destroy`.
41126	 * @param {Function[]} fns
41127	 * @returns {void}
41128	 */
41129	function flush_render_callbacks(fns) {
41130		const filtered = [];
41131		const targets = [];
41132		render_callbacks.forEach((c) => (fns.indexOf(c) === -1 ? filtered.push(c) : targets.push(c)));
41133		targets.forEach((c) => c());
41134		render_callbacks = filtered;
41135	}
41136
41137	const outroing = new Set();
41138
41139	/**
41140	 * @type {Outro}
41141	 */
41142	let outros;
41143
41144	/**
41145	 * @returns {void} */
41146	function group_outros() {
41147		outros = {
41148			r: 0,
41149			c: [],
41150			p: outros // parent group
41151		};
41152	}
41153
41154	/**
41155	 * @returns {void} */
41156	function check_outros() {
41157		if (!outros.r) {
41158			run_all(outros.c);
41159		}
41160		outros = outros.p;
41161	}
41162
41163	/**
41164	 * @param {import('./private.js').Fragment} block
41165	 * @param {0 | 1} [local]
41166	 * @returns {void}
41167	 */
41168	function transition_in(block, local) {
41169		if (block && block.i) {
41170			outroing.delete(block);
41171			block.i(local);
41172		}
41173	}
41174
41175	/**
41176	 * @param {import('./private.js').Fragment} block
41177	 * @param {0 | 1} local
41178	 * @param {0 | 1} [detach]
41179	 * @param {() => void} [callback]
41180	 * @returns {void}
41181	 */
41182	function transition_out(block, local, detach, callback) {
41183		if (block && block.o) {
41184			if (outroing.has(block)) return;
41185			outroing.add(block);
41186			outros.c.push(() => {
41187				outroing.delete(block);
41188				if (callback) {
41189					if (detach) block.d(1);
41190					callback();
41191				}
41192			});
41193			block.o(local);
41194		} else if (callback) {
41195			callback();
41196		}
41197	}
41198
41199	/** @typedef {1} INTRO */
41200	/** @typedef {0} OUTRO */
41201	/** @typedef {{ direction: 'in' | 'out' | 'both' }} TransitionOptions */
41202	/** @typedef {(node: Element, params: any, options: TransitionOptions) => import('../transition/public.js').TransitionConfig} TransitionFn */
41203
41204	/**
41205	 * @typedef {Object} Outro
41206	 * @property {number} r
41207	 * @property {Function[]} c
41208	 * @property {Object} p
41209	 */
41210
41211	/**
41212	 * @typedef {Object} PendingProgram
41213	 * @property {number} start
41214	 * @property {INTRO|OUTRO} b
41215	 * @property {Outro} [group]
41216	 */
41217
41218	/**
41219	 * @typedef {Object} Program
41220	 * @property {number} a
41221	 * @property {INTRO|OUTRO} b
41222	 * @property {1|-1} d
41223	 * @property {number} duration
41224	 * @property {number} start
41225	 * @property {number} end
41226	 * @property {Outro} [group]
41227	 */
41228
41229	// general each functions:
41230
41231	function ensure_array_like(array_like_or_iterator) {
41232		return array_like_or_iterator?.length !== undefined
41233			? array_like_or_iterator
41234			: Array.from(array_like_or_iterator);
41235	}
41236
41237	/** @returns {{}} */
41238	function get_spread_update(levels, updates) {
41239		const update = {};
41240		const to_null_out = {};
41241		const accounted_for = { $$scope: 1 };
41242		let i = levels.length;
41243		while (i--) {
41244			const o = levels[i];
41245			const n = updates[i];
41246			if (n) {
41247				for (const key in o) {
41248					if (!(key in n)) to_null_out[key] = 1;
41249				}
41250				for (const key in n) {
41251					if (!accounted_for[key]) {
41252						update[key] = n[key];
41253						accounted_for[key] = 1;
41254					}
41255				}
41256				levels[i] = n;
41257			} else {
41258				for (const key in o) {
41259					accounted_for[key] = 1;
41260				}
41261			}
41262		}
41263		for (const key in to_null_out) {
41264			if (!(key in update)) update[key] = undefined;
41265		}
41266		return update;
41267	}
41268
41269	function get_spread_object(spread_props) {
41270		return typeof spread_props === 'object' && spread_props !== null ? spread_props : {};
41271	}
41272
41273	/** @returns {void} */
41274	function create_component(block) {
41275		block && block.c();
41276	}
41277
41278	/** @returns {void} */
41279	function mount_component(component, target, anchor) {
41280		const { fragment, after_update } = component.$$;
41281		fragment && fragment.m(target, anchor);
41282		// onMount happens before the initial afterUpdate
41283		add_render_callback(() => {
41284			const new_on_destroy = component.$$.on_mount.map(run).filter(is_function);
41285			// if the component was destroyed immediately
41286			// it will update the `$$.on_destroy` reference to `null`.
41287			// the destructured on_destroy may still reference to the old array
41288			if (component.$$.on_destroy) {
41289				component.$$.on_destroy.push(...new_on_destroy);
41290			} else {
41291				// Edge case - component was destroyed immediately,
41292				// most likely as a result of a binding initialising
41293				run_all(new_on_destroy);
41294			}
41295			component.$$.on_mount = [];
41296		});
41297		after_update.forEach(add_render_callback);
41298	}
41299
41300	/** @returns {void} */
41301	function destroy_component(component, detaching) {
41302		const $$ = component.$$;
41303		if ($$.fragment !== null) {
41304			flush_render_callbacks($$.after_update);
41305			run_all($$.on_destroy);
41306			$$.fragment && $$.fragment.d(detaching);
41307			// TODO null out other refs, including component.$$ (but need to
41308			// preserve final state?)
41309			$$.on_destroy = $$.fragment = null;
41310			$$.ctx = [];
41311		}
41312	}
41313
41314	/** @returns {void} */
41315	function make_dirty(component, i) {
41316		if (component.$$.dirty[0] === -1) {
41317			dirty_components.push(component);
41318			schedule_update();
41319			component.$$.dirty.fill(0);
41320		}
41321		component.$$.dirty[(i / 31) | 0] |= 1 << i % 31;
41322	}
41323
41324	// TODO: Document the other params
41325	/**
41326	 * @param {SvelteComponent} component
41327	 * @param {import('./public.js').ComponentConstructorOptions} options
41328	 *
41329	 * @param {import('./utils.js')['not_equal']} not_equal Used to compare props and state values.
41330	 * @param {(target: Element | ShadowRoot) => void} [append_styles] Function that appends styles to the DOM when the component is first initialised.
41331	 * This will be the `add_css` function from the compiled component.
41332	 *
41333	 * @returns {void}
41334	 */
41335	function init(
41336		component,
41337		options,
41338		instance,
41339		create_fragment,
41340		not_equal,
41341		props,
41342		append_styles = null,
41343		dirty = [-1]
41344	) {
41345		const parent_component = current_component;
41346		set_current_component(component);
41347		/** @type {import('./private.js').T$$} */
41348		const $$ = (component.$$ = {
41349			fragment: null,
41350			ctx: [],
41351			// state
41352			props,
41353			update: noop,
41354			not_equal,
41355			bound: blank_object(),
41356			// lifecycle
41357			on_mount: [],
41358			on_destroy: [],
41359			on_disconnect: [],
41360			before_update: [],
41361			after_update: [],
41362			context: new Map(options.context || (parent_component ? parent_component.$$.context : [])),
41363			// everything else
41364			callbacks: blank_object(),
41365			dirty,
41366			skip_bound: false,
41367			root: options.target || parent_component.$$.root
41368		});
41369		append_styles && append_styles($$.root);
41370		let ready = false;
41371		$$.ctx = instance
41372			? instance(component, options.props || {}, (i, ret, ...rest) => {
41373					const value = rest.length ? rest[0] : ret;
41374					if ($$.ctx && not_equal($$.ctx[i], ($$.ctx[i] = value))) {
41375						if (!$$.skip_bound && $$.bound[i]) $$.bound[i](value);
41376						if (ready) make_dirty(component, i);
41377					}
41378					return ret;
41379			  })
41380			: [];
41381		$$.update();
41382		ready = true;
41383		run_all($$.before_update);
41384		// `false` as a special case of no DOM component
41385		$$.fragment = create_fragment ? create_fragment($$.ctx) : false;
41386		if (options.target) {
41387			if (options.hydrate) {
41388				// TODO: what is the correct type here?
41389				// @ts-expect-error
41390				const nodes = children(options.target);
41391				$$.fragment && $$.fragment.l(nodes);
41392				nodes.forEach(detach);
41393			} else {
41394				// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
41395				$$.fragment && $$.fragment.c();
41396			}
41397			if (options.intro) transition_in(component.$$.fragment);
41398			mount_component(component, options.target, options.anchor);
41399			flush();
41400		}
41401		set_current_component(parent_component);
41402	}
41403
41404	/**
41405	 * Base class for Svelte components. Used when dev=false.
41406	 *
41407	 * @template {Record<string, any>} [Props=any]
41408	 * @template {Record<string, any>} [Events=any]
41409	 */
41410	class SvelteComponent {
41411		/**
41412		 * ### PRIVATE API
41413		 *
41414		 * Do not use, may change at any time
41415		 *
41416		 * @type {any}
41417		 */
41418		$$ = undefined;
41419		/**
41420		 * ### PRIVATE API
41421		 *
41422		 * Do not use, may change at any time
41423		 *
41424		 * @type {any}
41425		 */
41426		$$set = undefined;
41427
41428		/** @returns {void} */
41429		$destroy() {
41430			destroy_component(this, 1);
41431			this.$destroy = noop;
41432		}
41433
41434		/**
41435		 * @template {Extract<keyof Events, string>} K
41436		 * @param {K} type
41437		 * @param {((e: Events[K]) => void) | null | undefined} callback
41438		 * @returns {() => void}
41439		 */
41440		$on(type, callback) {
41441			if (!is_function(callback)) {
41442				return noop;
41443			}
41444			const callbacks = this.$$.callbacks[type] || (this.$$.callbacks[type] = []);
41445			callbacks.push(callback);
41446			return () => {
41447				const index = callbacks.indexOf(callback);
41448				if (index !== -1) callbacks.splice(index, 1);
41449			};
41450		}
41451
41452		/**
41453		 * @param {Partial<Props>} props
41454		 * @returns {void}
41455		 */
41456		$set(props) {
41457			if (this.$$set && !is_empty(props)) {
41458				this.$$.skip_bound = true;
41459				this.$$set(props);
41460				this.$$.skip_bound = false;
41461			}
41462		}
41463	}
41464
41465	/**
41466	 * @typedef {Object} CustomElementPropDefinition
41467	 * @property {string} [attribute]
41468	 * @property {boolean} [reflect]
41469	 * @property {'String'|'Boolean'|'Number'|'Array'|'Object'} [type]
41470	 */
41471
41472	// generated during release, do not modify
41473
41474	const PUBLIC_VERSION = '4';
41475
41476	if (typeof window !== 'undefined')
41477		// @ts-ignore
41478		(window.__svelte || (window.__svelte = { v: new Set() })).v.add(PUBLIC_VERSION);
41479
41480	// Some height larger than whats resonable expected,
41481	// but not so large as to infulence the transition time
41482	const TRANSITION_OPEN_HEIGHT = '700px';
41483	// Absolute max height
41484	const MAX_OPEN_HEIGHT = '10000px';
41485	const CLOSED_HEIGHT = '0px';
41486	const DURATION_MS = 500;
41487	function accordion(node, isOpen) {
41488	    let currentState = isOpen;
41489	    node.style.maxHeight = isOpen ? MAX_OPEN_HEIGHT : CLOSED_HEIGHT;
41490	    node.style.overflow = isOpen ? "unset" : "hidden";
41491	    const mediaQuery = window.matchMedia('(prefers-reduced-motion: reduce)');
41492	    const animationsDisabled = mediaQuery.matches;
41493	    if (animationsDisabled) {
41494	        node.style.display = isOpen ? 'unset' : 'none';
41495	    }
41496	    return {
41497	        update(isOpen) {
41498	            if (animationsDisabled) {
41499	                node.style.display = isOpen ? 'unset' : 'none';
41500	                return;
41501	            }
41502	            if (isOpen === currentState) {
41503	                return;
41504	            }
41505	            currentState = isOpen;
41506	            const toHeight = isOpen ? TRANSITION_OPEN_HEIGHT : CLOSED_HEIGHT;
41507	            const fromHeight = isOpen ? CLOSED_HEIGHT : TRANSITION_OPEN_HEIGHT;
41508	            node.animate([
41509	                {
41510	                    maxHeight: fromHeight,
41511	                    overflow: 'hidden'
41512	                },
41513	                {
41514	                    maxHeight: toHeight,
41515	                    overflow: 'hidden'
41516	                },
41517	            ], {
41518	                duration: DURATION_MS,
41519	                fill: 'both',
41520	            }).addEventListener("finish", () => {
41521	                // After the opening transition, unset the max height so if it's larger than OPEN_HEIGHT the content
41522	                // will be shown, but via a quick jump
41523	                if (!isOpen) {
41524	                    return;
41525	                }
41526	                node.animate([
41527	                    {
41528	                        maxHeight: toHeight,
41529	                        overflow: 'hidden'
41530	                    },
41531	                    {
41532	                        maxHeight: MAX_OPEN_HEIGHT,
41533	                        overflow: 'hidden'
41534	                    },
41535	                ], {
41536	                    duration: 100,
41537	                    fill: 'both',
41538	                });
41539	            });
41540	        }
41541	    };
41542	}
41543
41544	const elementTypes = {
41545	    PROGRESS_BAR: 'progress_bar',
41546	    PAYMENT_OPTION_SELECTION: 'payment_option_selection',
41547	    PASSWORD: 'password',
41548	    VERIFICATION_CODE: 'otp_code',
41549	    BUTTON: 'button',
41550	    PAYMENT: 'payment',
41551	    PAYMENT_PRE_LOADER: 'payment-pre-loader',
41552	    EMAIL_ADDRESS: 'email_address',
41553	    SUCCESS_MESSAGE: 'success_message',
41554	    TEXT: 'text',
41555	    USER_ATTRIBUTE: 'user_attribute',
41556	    RESET_PASSWORD_LINK: 'link',
41557	    RESEND_LOGIN_LINK: 'resend_login_link',
41558	    SOCIAL_SIGNIN: 'social_sign_in',
41559	    PAYMENT_SUMMARY: 'payment_summary',
41560	    DIVIDER: 'divider',
41561	    LOGIN_LINK: 'show_login_link',
41562	    ACCOUNT_MEMBERSHIP_CODE: 'account_code',
41563	    MOBILE_PAYMENT: 'mobile_payment',
41564	    INVITATION: 'invitation',
41565	    TEMPLATE_COMPONENT: 'template_component',
41566	    SUBSCRIPTION_SELECT: 'subscription_select',
41567	    EVENT_LINK: 'event_link',
41568	    SUBSCRIPTIONS_LIST: 'subscriptions_list',
41569	    PAST_SUBSCRIPTIONS_LINK: 'past_subscriptions_link',
41570	    BILLING_HISTORY: 'billing_history',
41571	    CHNAGE_PAYMENT_METHOD_BUTTON: 'change_payment_method_button',
41572	    READ_ONLY_EMAIL_ADDRESS: 'read_only_email_address',
41573	    READ_ONLY_PASSWORD: 'read_only_password',
41574	    READ_ONLY_USER_ATTRIBUTE: 'read_only_user_attribute',
41575	    CHNAGE_PAYMENT_METHOD: 'change_payment_method',
41576	    DEVICES_SESSIONS_LIST: 'devices_list',
41577	    SIGN_OUT_ALL_OTHER_DEVICES: 'sign_out_of_devices_button',
41578	    TABLINK: 'tablink',
41579	    BUTTON_GROUP: 'button_group',
41580	    LINK_BUTTON: 'link_button',
41581	    RECIPIENT_NAME: 'recipient_name',
41582	    RECIPIENT_EMAIL: 'recipient_email',
41583	    RECIPIENT_ADDRESS: 'recipient_address',
41584	    RECIPIENT_MESSAGE: 'recipient_message',
41585	    GIFT_CODE: 'gift_code',
41586	    GIFT_SUBSCRIPTIONS_LIST: 'gift_subscriptions_list',
41587	    GIFT_TOGGLE: 'gift_toggle',
41588	    GIFT_FUTURE_DATE_TOGGLE: 'gift_future_date_toggle',
41589	    GIFT_FUTURE_DATE_INPUT: 'gift_future_date_input',
41590	    PAYMENT_AUTO_RENEW_TOGGLE: 'payment_auto_renew_toggle',
41591	    SUSPEND_RESUME_SUBSCRIPTION: 'suspend_resume_subscription',
41592	    SUBSCRIPTION_CUSTOM_FIELDS_UPDATE: 'subscription_custom_fields_update',
41593	    SUBSCRIPTION_CUSTOM_FIELDS_LIST: 'subscription_custom_fields_list',
41594	    BILL_TO_CONTACT: 'bill_to_contact',
41595	    BILLING_COUNTRY: 'billing_country',
41596	    BILLING_STATE: 'billing_state',
41597	};
41598
41599	var FormEvent;
41600	(function (FormEvent) {
41601	    FormEvent["FORM_START"] = "FORM_START";
41602	    FormEvent["LOGIN_REGISTRATION_COMPLETE"] = "LOGIN_REGISTRATION_COMPLETE";
41603	    FormEvent["SECTION_EMAIL_COMPLETE"] = "SECTION_EMAIL_COMPLETE";
41604	    FormEvent["SECTION_PASSWORD_RESET_COMPLETE"] = "SECTION_PASSWORD_RESET_COMPLETE";
41605	    FormEvent["SECTION_FORGOT_PASSWORD_COMPLETE"] = "SECTION_FORGOT_PASSWORD_COMPLETE";
41606	    FormEvent["PART_PLAN_SELECT_COMPLETE"] = "PART_PLAN_SELECT_COMPLETE";
41607	    FormEvent["PART_ACCOUNT_VERIFICATION_COMPLETE"] = "PART_ACCOUNT_VERIFICATION_COMPLETE";
41608	    FormEvent["PART_GIFT_RECIPIENT_COMPLETE"] = "PART_GIFT_RECIPIENT_COMPLETE";
41609	    FormEvent["PART_PAYMENT_COMPLETE"] = "PART_PAYMENT_COMPLETE";
41610	    FormEvent["PART_SUCCESS_COMPLETE"] = "PART_SUCCESS_COMPLETE";
41611	    FormEvent["PART_CONTACT_VERIFICATION_COMPLETE"] = "PART_CONTACT_VERIFICATION_COMPLETE";
41612	    FormEvent["PART_PROFILE_UPDATE_COMPLETE"] = "PART_PROFILE_UPDATE_COMPLETE";
41613	    FormEvent["PART_EMAIL_UPDATE_COMPLETE"] = "PART_EMAIL_UPDATE_COMPLETE";
41614	    FormEvent["PART_EMAIL_UPDATE_OTP_COMPLETE"] = "PART_EMAIL_UPDATE_OTP_COMPLETE";
41615	    FormEvent["PART_EMAIL_UPDATE_CONFIRMATION_COMPLETE"] = "PART_EMAIL_UPDATE_CONFIRMATION_COMPLETE";
41616	    FormEvent["PART_PASSWORD_UPDATE_COMPLETE"] = "PART_PASSWORD_UPDATE_COMPLETE";
41617	    FormEvent["PART_PASSWORD_UPDATE_OTP_COMPLETE"] = "PART_PASSWORD_UPDATE_OTP_COMPLETE";
41618	    FormEvent["PART_ATTRIBUTES_UPDATE_COMPLETE"] = "PART_ATTRIBUTES_UPDATE_COMPLETE";
41619	    FormEvent["REGISTRATION_CUSTOM_COMPLETE"] = "REGISTRATION_CUSTOM_COMPLETE";
41620	    FormEvent["SELECT_SUBSCRIPTION_COMPLETE"] = "SELECT_SUBSCRIPTION_COMPLETE";
41621	    FormEvent["UPDATE"] = "UPDATE";
41622	    FormEvent["GO_BACK"] = "GO_BACK";
41623	    FormEvent["VERIFY_EMAIL_UPDATE_OTP"] = "VERIFY_EMAIL_UPDATE_OTP";
41624	    FormEvent["VERIFY_PASSWORD_UPDATE_OTP"] = "VERIFY_PASSWORD_UPDATE_OTP";
41625	    FormEvent["PART_CHANGE_PAYMENT_COMPLETE"] = "PART_CHANGE_PAYMENT_COMPLETE";
41626	    FormEvent["LIST_DEVICES_SESSIONS"] = "LIST_DEVICES_SESSIONS";
41627	    FormEvent["SIGN_OUT_ALL_DEVICES"] = "SIGN_OUT_ALL_DEVICES";
41628	    FormEvent["SIGN_OUT_SINGLE_DEVICE"] = "SIGN_OUT_SINGLE_DEVICE";
41629	    FormEvent["GIFT_REDEMPTION_COMPLETE"] = "GIFT_REDEMPTION_COMPLETE";
41630	    FormEvent["SUSPEND_RESUME_SUBSCRIPTION_COMPLETE"] = "SUSPEND_RESUME_SUBSCRIPTION_COMPLETE";
41631	    FormEvent["BILL_TO_CONTACT_COMPLETE"] = "BILL_TO_CONTACT_COMPLETE";
41632	})(FormEvent || (FormEvent = {}));
41633
41634	const partTypes = {
41635	    PLAN_SELECT: {
41636	        type: 'plan-select',
41637	        order: 0,
41638	        completionEvent: FormEvent.PART_PLAN_SELECT_COMPLETE
41639	    },
41640	    ACCOUNT_VERIFICATION: {
41641	        type: 'account-verification',
41642	        order: 1,
41643	        completionEvent: FormEvent.PART_ACCOUNT_VERIFICATION_COMPLETE
41644	    },
41645	    GIFT_RECIPIENT: {
41646	        type: 'gift-recipient',
41647	        order: 1,
41648	        completionEvent: FormEvent.PART_GIFT_RECIPIENT_COMPLETE
41649	    },
41650	    PAYMENT: {
41651	        type: 'payment',
41652	        order: 2,
41653	        completionEvent: FormEvent.PART_PAYMENT_COMPLETE
41654	    },
41655	    SUCCESS: {
41656	        type: 'success',
41657	        order: 3,
41658	        completionEvent: FormEvent.PART_SUCCESS_COMPLETE
41659	    },
41660	    CONTACT_VERIFICATION: {
41661	        type: 'contact-verification',
41662	        order: 1,
41663	        completionEvent: FormEvent.PART_CONTACT_VERIFICATION_COMPLETE
41664	    },
41665	    PROFILE_UPDATE: {
41666	        type: 'profile-update',
41667	        order: 0,
41668	        completionEvent: FormEvent.PART_PROFILE_UPDATE_COMPLETE
41669	    },
41670	    SELECT_SUBSCRIPTION: {
41671	        type: 'select-subscription',
41672	        order: 0,
41673	        completionEvent: FormEvent.SELECT_SUBSCRIPTION_COMPLETE
41674	    },
41675	    EMAIL_UPDATE: {
41676	        type: 'email-update',
41677	        order: 0,
41678	        completionEvent: FormEvent.PART_EMAIL_UPDATE_COMPLETE
41679	    },
41680	    EMAIL_UPDATE_OTP: {
41681	        type: 'email-update-otp',
41682	        order: 0,
41683	        completionEvent: FormEvent.PART_EMAIL_UPDATE_OTP_COMPLETE
41684	    },
41685	    EMAIL_UPDATE_CONFIRMATION: {
41686	        type: 'email-update-confirmation',
41687	        order: 0,
41688	        completionEvent: FormEvent.PART_EMAIL_UPDATE_CONFIRMATION_COMPLETE
41689	    },
41690	    PASSWORD_UPDATE: {
41691	        type: 'password-update',
41692	        order: 0,
41693	        completionEvent: FormEvent.PART_PASSWORD_UPDATE_COMPLETE
41694	    },
41695	    PASSWORD_UPDATE_OTP: {
41696	        type: 'password-update-otp',
41697	        order: 0,
41698	        completionEvent: FormEvent.PART_PASSWORD_UPDATE_OTP_COMPLETE
41699	    },
41700	    ATTRIBUTES_UPDATE: {
41701	        type: 'attributes-update',
41702	        order: 0,
41703	        completionEvent: FormEvent.PART_ATTRIBUTES_UPDATE_COMPLETE
41704	    },
41705	    LIST_SUBSCRIPTIONS: {
41706	        type: 'list-subscriptions',
41707	        order: 0,
41708	    },
41709	    BILLING_HISTORY: {
41710	        type: 'billing-history',
41711	        order: 0,
41712	    },
41713	    PAST_SUBSCRIPTIONS: {
41714	        type: 'past-subscriptions',
41715	        order: 0,
41716	    },
41717	    CHANGE_PAYMENT: {
41718	        type: 'change-payment',
41719	        order: 2,
41720	        completionEvent: FormEvent.PART_CHANGE_PAYMENT_COMPLETE
41721	    },
41722	    DEVICES_SESSIONS: {
41723	        type: 'devices-sessions',
41724	        order: 0,
41725	        completionEvent: FormEvent.LIST_DEVICES_SESSIONS
41726	    },
41727	    CANCEL_SUCCESS: {
41728	        type: 'cancel-success',
41729	        order: 3,
41730	    },
41731	    GIFT_REDEMPTION: {
41732	        type: 'gift_redemption',
41733	        order: 4
41734	    },
41735	    GIFT_DETAILS: {
41736	        type: 'gift-details',
41737	        order: 1
41738	    },
41739	    SUSPEND_RESUME_SUBSCRIPTION: {
41740	        type: 'suspend-resume-subscription',
41741	        order: 0,
41742	        completionEvent: FormEvent.SUSPEND_RESUME_SUBSCRIPTION_COMPLETE
41743	    },
41744	    SUBSCRIPTION_CUSTOM_FIELDS: {
41745	        type: 'subscription-custom-fields',
41746	        order: 0,
41747	    },
41748	    BILL_TO_CONTACT: {
41749	        type: 'bill-to-contact',
41750	        order: 0,
41751	        completionEvent: FormEvent.BILL_TO_CONTACT_COMPLETE
41752	    }
41753	};
41754	const partTypeFor = (type) => Object.values(partTypes).find(p => p.type == type) || (() => { throw `No part ${type} found`; })();
41755
41756	var ServerError;
41757	(function (ServerError) {
41758	    ServerError[ServerError["USER_DOES_NOT_EXIST"] = 0] = "USER_DOES_NOT_EXIST";
41759	    ServerError[ServerError["USER_ALREADY_EXISTS"] = 1] = "USER_ALREADY_EXISTS";
41760	    ServerError[ServerError["PASSWORD_NOT_STRONG_ENOUGH"] = 2] = "PASSWORD_NOT_STRONG_ENOUGH";
41761	    ServerError[ServerError["EMAIL_VERIFICATION_REQUIRED"] = 3] = "EMAIL_VERIFICATION_REQUIRED";
41762	    ServerError[ServerError["VERIFICATION_CODE_OR_PASSWORD_INCORRECT"] = 4] = "VERIFICATION_CODE_OR_PASSWORD_INCORRECT";
41763	    ServerError[ServerError["VERIFICATION_CODE_INCORRECT"] = 5] = "VERIFICATION_CODE_INCORRECT";
41764	    ServerError[ServerError["LOGIN_FAILED"] = 6] = "LOGIN_FAILED";
41765	    ServerError[ServerError["UNKNOWN_LOGIN_REGISTER_ERROR"] = 7] = "UNKNOWN_LOGIN_REGISTER_ERROR";
41766	    ServerError[ServerError["NO_COOKIE_FROM_LOGIN_REGISTER_ERROR"] = 8] = "NO_COOKIE_FROM_LOGIN_REGISTER_ERROR";
41767	    ServerError[ServerError["NO_ACCOUNT_ACCESS"] = 9] = "NO_ACCOUNT_ACCESS";
41768	    ServerError[ServerError["ACCOUNT_NOT_FOUND"] = 10] = "ACCOUNT_NOT_FOUND";
41769	    ServerError[ServerError["PAYMENT_PROCESSING_ERROR"] = 11] = "PAYMENT_PROCESSING_ERROR";
41770	    ServerError[ServerError["MOBILE_PAYMENT_PROCESSING_ERROR"] = 12] = "MOBILE_PAYMENT_PROCESSING_ERROR";
41771	    ServerError[ServerError["PASSWORD_RESET_LINK_SEND_ERROR"] = 13] = "PASSWORD_RESET_LINK_SEND_ERROR";
41772	    ServerError[ServerError["PASSWORD_RESET_ERROR"] = 14] = "PASSWORD_RESET_ERROR";
41773	    ServerError[ServerError["VERIFICATION_CODE_SEND_ERROR"] = 15] = "VERIFICATION_CODE_SEND_ERROR";
41774	    ServerError[ServerError["SOCIAL_SIGNIN_REGISTRATION_LOGIN_ERROR"] = 16] = "SOCIAL_SIGNIN_REGISTRATION_LOGIN_ERROR";
41775	    ServerError[ServerError["PROMO_CODE_EXPIRED_ERROR"] = 17] = "PROMO_CODE_EXPIRED_ERROR";
41776	    ServerError[ServerError["PROMO_CODE_INVALID_ERROR"] = 18] = "PROMO_CODE_INVALID_ERROR";
41777	    ServerError[ServerError["PROMO_CODE_NOT_VALID_FOR_PLAN_ERROR"] = 19] = "PROMO_CODE_NOT_VALID_FOR_PLAN_ERROR";
41778	    ServerError[ServerError["INVITATION_FAILED_LIMIT_REACHED"] = 20] = "INVITATION_FAILED_LIMIT_REACHED";
41779	    ServerError[ServerError["INVITATION_FAILED_DUPLICATE_EMAIL"] = 21] = "INVITATION_FAILED_DUPLICATE_EMAIL";
41780	    ServerError[ServerError["INVITATION_FAILED_INVALID_EMAIL"] = 22] = "INVITATION_FAILED_INVALID_EMAIL";
41781	    ServerError[ServerError["INVITATION_FAILED_NO_PRODUCT_ACCESS"] = 23] = "INVITATION_FAILED_NO_PRODUCT_ACCESS";
41782	    ServerError[ServerError["INVITATION_FAILED_UNKNOWN"] = 24] = "INVITATION_FAILED_UNKNOWN";
41783	    ServerError[ServerError["TOO_MANY_SESSIONS"] = 25] = "TOO_MANY_SESSIONS";
41784	    ServerError[ServerError["INVALID_USER_ATTRIBUTES"] = 26] = "INVALID_USER_ATTRIBUTES";
41785	    ServerError[ServerError["CONTACT_CREATION_NOT_ENABLED"] = 27] = "CONTACT_CREATION_NOT_ENABLED";
41786	    ServerError[ServerError["NO_AUTHENTICATED_SESSION"] = 28] = "NO_AUTHENTICATED_SESSION";
41787	    ServerError[ServerError["BLOCKED_EMAIL_DOMAIN"] = 29] = "BLOCKED_EMAIL_DOMAIN";
41788	    ServerError[ServerError["UNKNOWN"] = 30] = "UNKNOWN";
41789	    ServerError[ServerError["GIFT_CODE_INVALID"] = 31] = "GIFT_CODE_INVALID";
41790	    ServerError[ServerError["GIFT_CODE_ALREADY_REDEEMED"] = 32] = "GIFT_CODE_ALREADY_REDEEMED";
41791	    ServerError[ServerError["GIFT_CODE_SERVER_ERROR"] = 33] = "GIFT_CODE_SERVER_ERROR";
41792	})(ServerError || (ServerError = {}));
41793	const ServerErrors = {
41794	    [ServerError.USER_DOES_NOT_EXIST]: {
41795	        languagePackKey: 'forms.errors.user-not-found',
41796	        fallbackMessage: 'User not found.',
41797	        jumpToPart: partTypes.ACCOUNT_VERIFICATION.type,
41798	        displayOnElements: [elementTypes.EMAIL_ADDRESS]
41799	    },
41800	    [ServerError.USER_ALREADY_EXISTS]: {
41801	        languagePackKey: 'forms.errors.email-taken',
41802	        fallbackMessage: 'This email address is already registered. Please log in to continue.',
41803	        jumpToPart: partTypes.ACCOUNT_VERIFICATION.type,
41804	        displayOnElements: [elementTypes.EMAIL_ADDRESS]
41805	    },
41806	    [ServerError.EMAIL_VERIFICATION_REQUIRED]: {
41807	        languagePackKey: 'forms.errors.email-verification-required',
41808	        fallbackMessage: 'Email verification is required',
41809	        jumpToPart: partTypes.ACCOUNT_VERIFICATION.type,
41810	        displayOnElements: [elementTypes.EMAIL_ADDRESS]
41811	    },
41812	    [ServerError.VERIFICATION_CODE_OR_PASSWORD_INCORRECT]: {
41813	        languagePackKey: 'forms.errors.otp-or-password-incorrect',
41814	        fallbackMessage: 'The password or code you entered is incorrect.',
41815	        displayOnElements: [elementTypes.VERIFICATION_CODE, elementTypes.PASSWORD]
41816	    },
41817	    [ServerError.VERIFICATION_CODE_INCORRECT]: {
41818	        languagePackKey: 'forms.errors.otp-incorrect',
41819	        fallbackMessage: 'The code you entered is incorrect.',
41820	        displayOnElements: [elementTypes.VERIFICATION_CODE]
41821	    },
41822	    [ServerError.LOGIN_FAILED]: {
41823	        languagePackKey: 'forms.errors.login-failed',
41824	        fallbackMessage: 'The email address or password you entered is incorrect.',
41825	        displayOnElements: [elementTypes.PASSWORD, elementTypes.VERIFICATION_CODE]
41826	    },
41827	    [ServerError.PASSWORD_NOT_STRONG_ENOUGH]: {
41828	        languagePackKey: 'n/a',
41829	        fallbackMessage: '',
41830	        useDymamicMessage: true,
41831	        displayOnElements: [elementTypes.PASSWORD]
41832	    },
41833	    [ServerError.UNKNOWN_LOGIN_REGISTER_ERROR]: {
41834	        languagePackKey: 'forms.errors.unknown-error',
41835	        fallbackMessage: 'Something went wrong. Please try again later',
41836	        displayOnElements: [elementTypes.PASSWORD, elementTypes.VERIFICATION_CODE]
41837	    },
41838	    [ServerError.NO_COOKIE_FROM_LOGIN_REGISTER_ERROR]: {
41839	        languagePackKey: 'forms.errors.unknown-error',
41840	        fallbackMessage: 'Something went wrong. Please try again later',
41841	        displayOnElements: [elementTypes.PASSWORD, elementTypes.VERIFICATION_CODE]
41842	    },
41843	    [ServerError.NO_ACCOUNT_ACCESS]: {
41844	        languagePackKey: 'forms.errors.too-many-requests',
41845	        fallbackMessage: 'To gain login access, please contact your administrator.',
41846	        displayOnElements: [elementTypes.PASSWORD]
41847	    },
41848	    [ServerError.ACCOUNT_NOT_FOUND]: {
41849	        languagePackKey: 'forms.errors.company-account-not-found',
41850	        fallbackMessage: 'Account not found.',
41851	        jumpToPart: partTypes.ACCOUNT_VERIFICATION.type,
41852	        displayOnElements: [elementTypes.ACCOUNT_MEMBERSHIP_CODE]
41853	    },
41854	    [ServerError.PAYMENT_PROCESSING_ERROR]: {
41855	        languagePackKey: 'forms.errors.unknown-payment-error',
41856	        fallbackMessage: 'Something went wrong when processing your payment. Please try again later.',
41857	        displayOnElements: [elementTypes.PAYMENT]
41858	    },
41859	    [ServerError.MOBILE_PAYMENT_PROCESSING_ERROR]: {
41860	        languagePackKey: 'forms.errors.unknown-payment-error',
41861	        fallbackMessage: 'Something went wrong when processing your payment. Please try again later.',
41862	        displayOnElements: [elementTypes.MOBILE_PAYMENT]
41863	    },
41864	    [ServerError.PASSWORD_RESET_LINK_SEND_ERROR]: {
41865	        languagePackKey: 'forms.errors.password-reset-link-send-failed',
41866	        fallbackMessage: 'Unable to send a password reset link. Please try again later',
41867	        displayOnElements: [elementTypes.RESET_PASSWORD_LINK]
41868	    },
41869	    [ServerError.VERIFICATION_CODE_SEND_ERROR]: {
41870	        languagePackKey: 'forms.errors.otp-send-failed',
41871	        fallbackMessage: 'Unable to send a verification code. Please try again later',
41872	        displayOnElements: [elementTypes.VERIFICATION_CODE]
41873	    },
41874	    [ServerError.PASSWORD_RESET_ERROR]: {
41875	        languagePackKey: 'forms.errors.password-reset-failed',
41876	        fallbackMessage: 'Unable to reset your password. Please try again later',
41877	        displayOnElements: [elementTypes.PASSWORD]
41878	    },
41879	    [ServerError.SOCIAL_SIGNIN_REGISTRATION_LOGIN_ERROR]: {
41880	        languagePackKey: 'forms.errors.unknown-error',
41881	        fallbackMessage: 'Something went wrong. Please try again later',
41882	        displayOnElements: [elementTypes.SOCIAL_SIGNIN]
41883	    },
41884	    [ServerError.PROMO_CODE_EXPIRED_ERROR]: {
41885	        languagePackKey: 'forms.errors.promo-code-expired',
41886	        fallbackMessage: 'Promo code expired',
41887	        displayOnElements: [elementTypes.PAYMENT_SUMMARY]
41888	    },
41889	    [ServerError.PROMO_CODE_INVALID_ERROR]: {
41890	        languagePackKey: 'forms.errors.promo-code-invalid',
41891	        fallbackMessage: 'Invalid promo code',
41892	        displayOnElements: [elementTypes.PAYMENT_SUMMARY]
41893	    },
41894	    [ServerError.PROMO_CODE_NOT_VALID_FOR_PLAN_ERROR]: {
41895	        languagePackKey: 'forms.errors.promo-code-invalid-for-payment-option',
41896	        fallbackMessage: 'Promo code cannot be applied to selected option',
41897	        displayOnElements: [elementTypes.PAYMENT_SUMMARY]
41898	    },
41899	    [ServerError.INVITATION_FAILED_LIMIT_REACHED]: {
41900	        languagePackKey: 'forms.errors.invitation-failed-limit-reached',
41901	        fallbackMessage: 'You have reached the sharing limit for this product',
41902	        displayOnElements: [elementTypes.INVITATION]
41903	    },
41904	    [ServerError.INVITATION_FAILED_DUPLICATE_EMAIL]: {
41905	        languagePackKey: 'forms.errors.invitation-failed-duplicate-email',
41906	        fallbackMessage: 'An invite has already been created for this email',
41907	        displayOnElements: [elementTypes.INVITATION]
41908	    },
41909	    [ServerError.INVITATION_FAILED_INVALID_EMAIL]: {
41910	        languagePackKey: 'forms.errors.invitation-failed-invalid-email',
41911	        fallbackMessage: 'Invalid email address',
41912	        displayOnElements: [elementTypes.INVITATION]
41913	    },
41914	    [ServerError.INVITATION_FAILED_NO_PRODUCT_ACCESS]: {
41915	        languagePackKey: 'forms.errors.invitation-failed-no-product-access',
41916	        fallbackMessage: 'You do not currently have access to this product',
41917	        displayOnElements: [elementTypes.INVITATION]
41918	    },
41919	    [ServerError.INVITATION_FAILED_UNKNOWN]: {
41920	        languagePackKey: 'forms.errors.unknown-error',
41921	        fallbackMessage: 'Something went wrong. Please try again later',
41922	        displayOnElements: [elementTypes.INVITATION]
41923	    },
41924	    [ServerError.TOO_MANY_SESSIONS]: {
41925	        languagePackKey: 'forms.errors.session-limit-reached',
41926	        fallbackMessage: 'You have reached the session limit. Please log out from another device to access this content.',
41927	        displayOnElements: [elementTypes.EMAIL_ADDRESS]
41928	    },
41929	    [ServerError.INVALID_USER_ATTRIBUTES]: {
41930	        languagePackKey: 'forms.errors.user-attribute-invalid',
41931	        fallbackMessage: 'Invalid User Attribute',
41932	        displayOnElements: [elementTypes.USER_ATTRIBUTE]
41933	    },
41934	    [ServerError.CONTACT_CREATION_NOT_ENABLED]: {
41935	        languagePackKey: 'forms.errors.contact-creation-disabled',
41936	        fallbackMessage: 'This operation is not possible at the moment, please try again later.',
41937	        jumpToPart: partTypes.ACCOUNT_VERIFICATION.type,
41938	        displayOnElements: [elementTypes.EMAIL_ADDRESS]
41939	    },
41940	    [ServerError.NO_AUTHENTICATED_SESSION]: {
41941	        languagePackKey: 'forms.errors.no-authenticated-session',
41942	        fallbackMessage: 'Please login to update your profile',
41943	    },
41944	    [ServerError.BLOCKED_EMAIL_DOMAIN]: {
41945	        languagePackKey: 'forms.errors.email-domain-blocked',
41946	        fallbackMessage: 'Please use a different email address, this domain is not supported.',
41947	        jumpToPart: partTypes.ACCOUNT_VERIFICATION.type,
41948	        displayOnElements: [elementTypes.EMAIL_ADDRESS]
41949	    },
41950	    [ServerError.UNKNOWN]: {
41951	        languagePackKey: 'forms.errors.unknown-error',
41952	        fallbackMessage: 'Something went wrong. Please try again later',
41953	    },
41954	    [ServerError.GIFT_CODE_INVALID]: {
41955	        languagePackKey: 'forms.errors.gift-code-invalid',
41956	        fallbackMessage: 'Invalid gift code',
41957	        displayOnElements: [elementTypes.GIFT_CODE]
41958	    },
41959	    [ServerError.GIFT_CODE_ALREADY_REDEEMED]: {
41960	        languagePackKey: 'forms.errors.gift-code-already-redeemed',
41961	        fallbackMessage: 'Gift code already redeemed',
41962	        displayOnElements: [elementTypes.GIFT_CODE]
41963	    },
41964	    [ServerError.GIFT_CODE_SERVER_ERROR]: {
41965	        languagePackKey: 'forms.errors.gift-code-server-error',
41966	        fallbackMessage: 'Something went wrong with the gift co
41966de. Please try again later',
41967	        displayOnElements: [elementTypes.GIFT_CODE]
41968	    }
41969	};
41970	const serverErrorForElement = (elementType, formState) => formState.serverErrors.find(e => ServerErrors[e].displayOnElements?.includes(elementType)) ?? undefined;
41971
41972	const sectionTypes = {
41973	    PLAN_SELECT: {
41974	        type: 'plan_select',
41975	        defaultLabel: 'Plan Select',
41976	        fullWidth: true
41977	    },
41978	    EMAIL: {
41979	        type: 'email',
41980	        defaultLabel: 'Account Verification',
41981	        completionEvent: FormEvent.SECTION_EMAIL_COMPLETE,
41982	    },
41983	    RECIPIENT_DETAILS: {
41984	        type: 'recipient_details',
41985	        defaultLabel: 'Recipient',
41986	    },
41987	    PASSWORD_SETUP: {
41988	        type: 'password_setup',
41989	        defaultLabel: 'Password Setup'
41990	    },
41991	    PASSWORDLESS_VIA_LOGIN_LINK: {
41992	        type: 'passwordless_login_via_link',
41993	        defaultLabel: 'Passwordless Login via Login Link'
41994	    },
41995	    VERIFICATION_CODE_LOGIN: {
41996	        type: 'verification_code_login',
41997	        defaultLabel: ''
41998	    },
41999	    VERIFICATION_CODE_REGISTRATION: {
42000	        type: 'verification_code_registration',
42001	        defaultLabel: ''
42002	    },
42003	    LOGIN_PASSWORD: {
42004	        type: 'login_password',
42005	        defaultLabel: 'Login'
42006	    },
42007	    REGISTRATION_CUSTOM: {
42008	        type: 'registration_custom',
42009	        defaultLabel: '',
42010	    },
42011	    FORGOT_PASSWORD: {
42012	        type: 'forgot_password',
42013	        defaultLabel: '',
42014	        completionEvent: FormEvent.SECTION_FORGOT_PASSWORD_COMPLETE,
42015	    },
42016	    PASSWORD_RESET: {
42017	        type: 'reset_password',
42018	        defaultLabel: '',
42019	        completionEvent: FormEvent.SECTION_PASSWORD_RESET_COMPLETE,
42020	    },
42021	    SUCCESS: {
42022	        type: 'success',
42023	        defaultLabel: ''
42024	    },
42025	    EMAIL_VERIFIED: {
42026	        type: 'email_verified',
42027	        defaultLabel: ''
42028	    },
42029	    READ_ONLY_PROFILE: {
42030	        type: 'read_only_profile',
42031	        defaultLabel: 'Read Only Profile'
42032	    },
42033	    UPDATE_EMAIL: {
42034	        type: 'update_email',
42035	        defaultLabel: 'Update Email'
42036	    },
42037	    EMAIL_UPDATE_CONFIRMATION: {
42038	        type: 'email_update_confirmation',
42039	        defaultLabel: 'Email Update Confirmation'
42040	    },
42041	    UPDATE_PASSWORD: {
42042	        type: 'update_password',
42043	        defaultLabel: 'Update Password'
42044	    },
42045	    UPDATE_ATTRIBUTES: {
42046	        type: 'update_attributes',
42047	        defaultLabel: 'Update Attributes'
42048	    },
42049	    CHANGE_PAYMENT: {
42050	        type: 'change-payment',
42051	        completionEvent: FormEvent.PART_CHANGE_PAYMENT_COMPLETE,
42052	        defaultLabel: ''
42053	    },
42054	    SELECT: {
42055	        type: 'select',
42056	        defaultLabel: '',
42057	        fullWidth: true,
42058	    },
42059	    LIST: {
42060	        type: 'list',
42061	        defaultLabel: '',
42062	        fullWidth: true,
42063	    },
42064	    PAST_SUBSCRIPTIONS: {
42065	        type: 'past-subscriptions',
42066	        defaultLabel: '',
42067	        fullWidth: true,
42068	    },
42069	    GIFT_REDEMPTION: {
42070	        type: 'gift_redemption',
42071	        defaultLabel: 'Gift Code Redemption',
42072	        completionEvent: FormEvent.GIFT_REDEMPTION_COMPLETE
42073	    },
42074	    GIFT_REDEEMED: {
42075	        type: 'gift_redeemed',
42076	        defaultLabel: 'Gift Redeemed'
42077	    },
42078	    GIFT_DETAIL: {
42079	        type: 'gift-detail',
42080	        defaultLabel: 'Gift Details'
42081	    },
42082	    SUSPEND_RESUME_SUBSCRIPTION: {
42083	        type: 'suspend_resume_subscription',
42084	        defaultLabel: 'Suspend/Resume Subscription',
42085	    },
42086	    BILL_TO_CONTACT: {
42087	        type: 'bill_to_contact',
42088	        defaultLabel: 'Update Bill To Contact Address',
42089	    },
42090	};
42091	const sectionTypeFor = (type) => Object.values(sectionTypes).find(s => s.type == type);
42092
42093	function logDataLayerEvent(form, eventName, customDimensions) {
42094	    const event = {
42095	        event: eventName,
42096	        formType: form.formType,
42097	        formId: form.formId,
42098	        ruleId: form.ruleId,
42099	        outcomeId: form.outcomeId,
42100	        ...customDimensions
42101	    };
42102	    window.postMessage({ 'zephr-form-datalayer-event': event }, window.origin);
42103	    if (!form.organisationConfiguration.trackFormDataLayerEvents) {
42104	        return;
42105	    }
42106	    const dataLayerName = form.organisationConfiguration.dataLayerName || 'dataLayer';
42107	    window[dataLayerName] = window[dataLayerName] || [];
42108	    window[dataLayerName].push(event);
42109	}
42110
42111	const reScrollToFormTop = (formId) => {
42112	    try {
42113	        const formRootElement = document.getElementById(formId);
42114	        if (!formRootElement)
42115	            return;
42116	        const { top } = formRootElement.getBoundingClientRect();
42117	        if (top < 0) {
42118	            formRootElement.scrollIntoView({
42119	                block: "start",
42120	                inline: "nearest",
42121	            });
42122	        }
42123	    }
42124	    catch (err) {
42125	        console.error(err);
42126	    }
42127	};
42128
42129	/**
42130	 * Functions to initiate movements through the form sections.
42131	 */
42132	const findSection = (sectionType, form) => {
42133	    return form.parts
42134	        .flatMap(part => part.sections.map(section => ({ part, section })))
42135	        .find(partSection => partSection.section.type === sectionType);
42136	};
42137	const findSectionByAddress = (address, form) => {
42138	    const [part, section] = address.includes(':') ? address.split(':') : [null, address];
42139	    return form.parts
42140	        .flatMap(part => part.sections.map(section => ({ part, section })))
42141	        .find(partSection => partSection.section.type === section && (!part || partSection.part.type === part));
42142	};
42143	const jumpToSection = (sectionType, form, formActions) => {
42144	    const destination = findSection(sectionType, form);
42145	    if (!destination) {
42146	        throw `Cannot find section ${sectionType}`;
42147	    }
42148	    const formState = formActions.getFormState();
42149	    setSection({
42150	        form,
42151	        formActions,
42152	        part: destination.part,
42153	        section: destination.section,
42154	        previousPart: formState.currentPart,
42155	        previousSection: formState.currentSection
42156	    });
42157	    return Promise.resolve();
42158	};
42159	const jumpToPart = (partType, form, formActions) => {
42160	    if (form.environment.previewMode) {
42161	        return;
42162	    }
42163	    const part = form.parts.find(p => p.type == partType);
42164	    const formState = formActions.getFormState();
42165	    setSection({
42166	        form,
42167	        formActions,
42168	        part,
42169	        section: part.sections[0],
42170	        previousPart: formState.currentPart,
42171	        previousSection: formState.currentSection
42172	    });
42173	    return Promise.resolve();
42174	};
42175	const findNextPart = (currentPart, form) => {
42176	    const partType = partTypeFor(currentPart.type);
42177	    if (partType) {
42178	        const nextPart = form.parts.find((p) => partTypeFor(p.type).order === partType.order + 1)
42179	            ?? form.parts[form.parts.indexOf(currentPart) + 1];
42180	        if (nextPart) {
42181	            return {
42182	                section: nextPart.sections[0],
42183	                part: nextPart
42184	            };
42185	        }
42186	    }
42187	    return null;
42188	};
42189	const findNextSection = (currentSection, currentPart, form) => {
42190	    // Next section in part ...
42191	    const currentSectionIndex = currentPart.sections.findIndex((s) => s.order == currentSection.order);
42192	    if (currentPart.sections.length > currentSectionIndex + 1) {
42193	        return {
42194	            section: currentPart.sections[currentSectionIndex + 1],
42195	            part: currentPart
42196	        };
42197	    }
42198	    // ... or the first setion in next part
42199	    return findNextPart(currentPart, form);
42200	};
42201	const mapCustomSectionType = (sectionType) => {
42202	    return sectionType?.startsWith('custom_') ? 'registration_custom' : sectionType;
42203	};
42204	const isSectionVisible = (section, form, formState) => form.sectionFlow.sectionVisibilities.find((s) => s.type === mapCustomSectionType(section.type))
42205	    ?.isVisible(form, formState) ?? true;
42206	const isSectionDisplayedInProgressBar = (section, form, formState) => {
42207	    const sectionConfig = form.sectionFlow.sectionVisibilities
42208	        .find((s) => (s.type === mapCustomSectionType(section.type)));
42209	    return (sectionConfig?.isDisplayedInProgressBar && isSectionVisible(section, form, formState)) ?? true;
42210	};
42211	const moveToNextSection = (form, formState, formActions) => {
42212	    if (form.environment.previewMode) {
42213	        return;
42214	    }
42215	    // Find the next visible section
42216	    let i = 0;
42217	    let nextPartSection = { part: formState.currentPart, section: formState.currentSection };
42218	    do {
42219	        i++;
42220	        if (i > 50) {
42221	            throw new Error(`Cannot move from ${formState.currentPart.type}:${formState.currentSection.type}. 
42222      Exceeded max loop size after ${nextPartSection?.part?.type}:${nextPartSection?.section?.type}
42223    `);
42224	        }
42225	        const next = findNextSection(nextPartSection?.section, nextPartSection?.part, form);
42226	        if (next?.part.type === nextPartSection?.part?.type
42227	            && next?.section.type === nextPartSection?.section?.type
42228	            && next?.section.order === nextPartSection?.section?.order) {
42229	            throw new Error(`Cannot move from ${formState.currentPart.type}:${formState.currentSection.type}. 
42230        Infinte loop found at next section ${next?.part?.type}:${next?.section?.type}
42231      `);
42232	        }
42233	        nextPartSection = next;
42234	    } while (nextPartSection && !isSectionVisible(nextPartSection.section, form, formState));
42235	    if (!nextPartSection || nextPartSection.part !== formState.currentPart) {
42236	        const part = partTypeFor(formState.currentPart.type);
42237	        const action = part?.completionEvent && form.sectionFlow.eventHandlers[part.completionEvent];
42238	        if (action) {
42239	            return action(form, formState, formActions);
42240	        }
42241	    }
42242	    if (!nextPartSection) {
42243	        throw "No next section";
42244	    }
42245	    setSection({
42246	        form,
42247	        formActions,
42248	        part: nextPartSection.part,
42249	        section: nextPartSection.section,
42250	        previousPart: formState.currentPart,
42251	        previousSection: formState.currentSection
42252	    });
42253	    return Promise.resolve();
42254	};
42255	const completeSection = (form, formState, formActions) => {
42256	    if (form.environment.previewMode) {
42257	        return;
42258	    }
42259	    const sectionType = sectionTypeFor(formState.currentSection.type);
42260	    const action = (sectionType && form.sectionFlow.eventHandlers[sectionType.completionEvent]) ?? moveToNextSection;
42261	    return action(form, formState, formActions);
42262	};
42263	const attemptCompleteSection = (form, _, formActions) => {
42264	    if (formActions.getFormState().canAttemptSectionCompletion) {
42265	        const updatedState = formActions.updateFormState({
42266	            showFieldErrors: false
42267	        });
42268	        return completeSection(form, updatedState, formActions);
42269	    }
42270	    formActions.updateFormState({
42271	        showFieldErrors: true
42272	    });
42273	    return Promise.resolve();
42274	};
42275	const setSection = ({ form, formActions, part, section, previousSection, previousPart }) => {
42276	    formActions.updateFormState({
42277	        currentPart: part,
42278	        currentSection: section
42279	    });
42280	    logDataLayerEvent(form, 'zephr_form_section_change', {
42281	        sectionId: section.type,
42282	        previousSectionId: previousSection.type,
42283	        partId: part.type,
42284	        previousPartId: previousPart.type
42285	    });
42286	    reScrollToFormTop(form.formId);
42287	};
42288
42289	/* src/components/elements/progressBar/ProgressBar.svelte generated by Svelte v4.2.12 */
42290
42291	function get_each_context$h(ctx, list, i) {
42292		const child_ctx = ctx.slice();
42293		child_ctx[7] = list[i];
42294		const constants_0 = !/*disabled*/ child_ctx[0] && !/*item*/ child_ctx[7].isDisabled && /*item*/ child_ctx[7].order < /*currentItem*/ child_ctx[2].order;
42295		child_ctx[8] = constants_0;
42296		return child_ctx;
42297	}
42298
42299	// (15:0) {#if !isNaN(value)}
42300	function create_if_block$L(ctx) {
42301		let div;
42302		let t;
42303		let progress;
42304		let each_value = ensure_array_like(/*visibleItems*/ ctx[3]);
42305		let each_blocks = [];
42306
42307		for (let i = 0; i < each_value.length; i += 1) {
42308			each_blocks[i] = create_each_block$h(get_each_context$h(ctx, each_value, i));
42309		}
42310
42311		return {
42312			c() {
42313				div = element("div");
42314
42315				for (let i = 0; i < each_blocks.length; i += 1) {
42316					each_blocks[i].c();
42317				}
42318
42319				t = space();
42320				progress = element("progress");
42321				attr(div, "class", "zephr-form-flex-container");
42322				toggle_class(div, "zephr-payment-form-flex-container", /*isPaymentForm*/ ctx[1]);
42323				attr(progress, "class", "zephr-form-progress-bar svelte-19rlx92");
42324				attr(progress, "id", "progress-bar");
42325				attr(progress, "max", "100");
42326				progress.value = /*value*/ ctx[4];
42327				toggle_class(progress, "zephr-payment-form-progress-bar", /*isPaymentForm*/ ctx[1]);
42328			},
42329			m(target, anchor) {
42330				insert(target, div, anchor);
42331
42332				for (let i = 0; i < each_blocks.length; i += 1) {
42333					if (each_blocks[i]) {
42334						each_blocks[i].m(div, null);
42335					}
42336				}
42337
42338				insert(target, t, anchor);
42339				insert(target, progress, anchor);
42340			},
42341			p(ctx, dirty) {
42342				if (dirty & /*isPaymentForm, visibleItems, disabled, currentItem*/ 15) {
42343					each_value = ensure_array_like(/*visibleItems*/ ctx[3]);
42344					let i;
42345
42346					for (i = 0; i < each_value.length; i += 1) {
42347						const child_ctx = get_each_context$h(ctx, each_value, i);
42348
42349						if (each_blocks[i]) {
42350							each_blocks[i].p(child_ctx, dirty);
42351						} else {
42352							each_blocks[i] = create_each_block$h(child_ctx);
42353							each_blocks[i].c();
42354							each_blocks[i].m(div, null);
42355						}
42356					}
42357
42358					for (; i < each_blocks.length; i += 1) {
42359						each_blocks[i].d(1);
42360					}
42361
42362					each_blocks.length = each_value.length;
42363				}
42364
42365				if (dirty & /*isPaymentForm*/ 2) {
42366					toggle_class(div, "zephr-payment-form-flex-container", /*isPaymentForm*/ ctx[1]);
42367				}
42368
42369				if (dirty & /*value*/ 16) {
42370					progress.value = /*value*/ ctx[4];
42371				}
42372
42373				if (dirty & /*isPaymentForm*/ 2) {
42374					toggle_class(progress, "zephr-payment-form-progress-bar", /*isPaymentForm*/ ctx[1]);
42375				}
42376			},
42377			d(detaching) {
42378				if (detaching) {
42379					detach(div);
42380					detach(t);
42381					detach(progress);
42382				}
42383
42384				destroy_each(each_blocks, detaching);
42385			}
42386		};
42387	}
42388
42389	// (33:6) {:else}
42390	function create_else_block$b(ctx) {
42391		let div;
42392		let t0_value = /*item*/ ctx[7].label + "";
42393		let t0;
42394		let t1;
42395
42396		return {
42397			c() {
42398				div = element("div");
42399				t0 = text(t0_value);
42400				t1 = space();
42401				attr(div, "class", "zephr-progress-bar-step disabled svelte-19rlx92");
42402				toggle_class(div, "zephr-payment-progress-bar-step", /*isPaymentForm*/ ctx[1]);
42403			},
42404			m(target, anchor) {
42405				insert(target, div, anchor);
42406				append(div, t0);
42407				append(div, t1);
42408			},
42409			p(ctx, dirty) {
42410				if (dirty & /*visibleItems*/ 8 && t0_value !== (t0_value = /*item*/ ctx[7].label + "")) set_data(t0, t0_value);
42411
42412				if (dirty & /*isPaymentForm*/ 2) {
42413					toggle_class(div, "zephr-payment-progress-bar-step", /*isPaymentForm*/ ctx[1]);
42414				}
42415			},
42416			d(detaching) {
42417				if (detaching) {
42418					detach(div);
42419				}
42420			}
42421		};
42422	}
42423
42424	// (24:6) {#if isClickable}
42425	function create_if_block_1$y(ctx) {
42426		let button;
42427		let t0_value = /*item*/ ctx[7].label + "";
42428		let t0;
42429		let t1;
42430		let mounted;
42431		let dispose;
42432
42433		function click_handler() {
42434			return /*click_handler*/ ctx[6](/*item*/ ctx[7]);
42435		}
42436
42437		return {
42438			c() {
42439				button = element("button");
42440				t0 = text(t0_value);
42441				t1 = space();
42442				attr(button, "type", "button");
42443				attr(button, "class", "zephr-progress-bar-step svelte-19rlx92");
42444				toggle_class(button, "zephr-payment-progress-bar-step", /*isPaymentForm*/ ctx[1]);
42445			},
42446			m(target, anchor) {
42447				insert(target, button, anchor);
42448				append(button, t0);
42449				append(button, t1);
42450
42451				if (!mounted) {
42452					dispose = listen(button, "click", prevent_default(click_handler));
42453					mounted = true;
42454				}
42455			},
42456			p(new_ctx, dirty) {
42457				ctx = new_ctx;
42458				if (dirty & /*visibleItems*/ 8 && t0_value !== (t0_value = /*item*/ ctx[7].label + "")) set_data(t0, t0_value);
42459
42460				if (dirty & /*isPaymentForm*/ 2) {
42461					toggle_class(button, "zephr-payment-progress-bar-step", /*isPaymentForm*/ ctx[1]);
42462				}
42463			},
42464			d(detaching) {
42465				if (detaching) {
42466					detach(button);
42467				}
42468
42469				mounted = false;
42470				dispose();
42471			}
42472		};
42473	}
42474
42475	// (20:4) {#each visibleItems as item}
42476	function create_each_block$h(ctx) {
42477		let if_block_anchor;
42478
42479		function select_block_type(ctx, dirty) {
42480			if (/*isClickable*/ ctx[8]) return create_if_block_1$y;
42481			return create_else_block$b;
42482		}
42483
42484		let current_block_type = select_block_type(ctx);
42485		let if_block = current_block_type(ctx);
42486
42487		return {
42488			c() {
42489				if_block.c();
42490				if_block_anchor = empty();
42491			},
42492			m(target, anchor) {
42493				if_block.m(target, anchor);
42494				insert(target, if_block_anchor, anchor);
42495			},
42496			p(ctx, dirty) {
42497				if (current_block_type === (current_block_type = select_block_type(ctx)) && if_block) {
42498					if_block.p(ctx, dirty);
42499				} else {
42500					if_block.d(1);
42501					if_block = current_block_type(ctx);
42502
42503					if (if_block) {
42504						if_block.c();
42505						if_block.m(if_block_anchor.parentNode, if_block_anchor);
42506					}
42507				}
42508			},
42509			d(detaching) {
42510				if (detaching) {
42511					detach(if_block_anchor);
42512				}
42513
42514				if_block.d(detaching);
42515			}
42516		};
42517	}
42518
42519	function create_fragment$1c(ctx) {
42520		let show_if = !isNaN(/*value*/ ctx[4]);
42521		let if_block_anchor;
42522		let if_block = show_if && create_if_block$L(ctx);
42523
42524		return {
42525			c() {
42526				if (if_block) if_block.c();
42527				if_block_anchor = empty();
42528			},
42529			m(target, anchor) {
42530				if (if_block) if_block.m(target, anchor);
42531				insert(target, if_block_anchor, anchor);
42532			},
42533			p(ctx, [dirty]) {
42534				if (dirty & /*value*/ 16) show_if = !isNaN(/*value*/ ctx[4]);
42535
42536				if (show_if) {
42537					if (if_block) {
42538						if_block.p(ctx, dirty);
42539					} else {
42540						if_block = create_if_block$L(ctx);
42541						if_block.c();
42542						if_block.m(if_block_anchor.parentNode, if_block_anchor);
42543					}
42544				} else if (if_block) {
42545					if_block.d(1);
42546					if_block = null;
42547				}
42548			},
42549			i: noop,
42550			o: noop,
42551			d(detaching) {
42552				if (detaching) {
42553					detach(if_block_anchor);
42554				}
42555
42556				if (if_block) if_block.d(detaching);
42557			}
42558		};
42559	}
42560
42561	function instance$1a($$self, $$props, $$invalidate) {
42562		let currentItem;
42563		let visibleItems;
42564		let value;
42565		let { disabled } = $$props;
42566		let { items } = $$props;
42567		let { isPaymentForm = false } = $$props;
42568
42569		const click_handler = item => {
42570			item.onSelect();
42571		};
42572
42573		$$self.$$set = $$props => {
42574			if ('disabled' in $$props) $$invalidate(0, disabled = $$props.disabled);
42575			if ('items' in $$props) $$invalidate(5, items = $$props.items);
42576			if ('isPaymentForm' in $$props) $$invalidate(1, isPaymentForm = $$props.isPaymentForm);
42577		};
42578
42579		$$self.$$.update = () => {
42580			if ($$self.$$.dirty & /*items*/ 32) {
42581				$$invalidate(2, currentItem = items.find(i => i.isCurrent));
42582			}
42583
42584			if ($$self.$$.dirty & /*items*/ 32) {
42585				$$invalidate(3, visibleItems = items.filter(i => i.isVisible));
42586			}
42587
42588			if ($$self.$$.dirty & /*visibleItems, currentItem*/ 12) {
42589				$$invalidate(4, value = Math.floor(100 / (visibleItems.length - 1) * (currentItem.isVisible
42590				? currentItem.visibleOrder
42591				: Math.max.apply(Math, visibleItems.filter(i => i.order < currentItem.order).map(i => i.visibleOrder)))));
42592			}
42593		};
42594
42595		return [
42596			disabled,
42597			isPaymentForm,
42598			currentItem,
42599			visibleItems,
42600			value,
42601			items,
42602			click_handler
42603		];
42604	}
42605
42606	class ProgressBar extends SvelteComponent {
42607		constructor(options) {
42608			super();
42609			init(this, options, instance$1a, create_fragment$1c, safe_not_equal, { disabled: 0, items: 5, isPaymentForm: 1 });
42610		}
42611	}
42612
42613	var FormType;
42614	(function (FormType) {
42615	    FormType["EMPTY"] = "EMPTY";
42616	    FormType["PAYMENT"] = "PAYMENT";
42617	    FormType["CHANGE_SUBSCRIPTION"] = "CHANGE_SUBSCRIPTION";
42618	    FormType["REGISTRATION"] = "REGISTRATION";
42619	    FormType["CONTACT"] = "CONTACT";
42620	    FormType["DATA_CAPTURE"] = "DATA_CAPTURE";
42621	    FormType["COMPLETE_REGISTRATION"] = "COMPLETE_REGISTRATION";
42622	    FormType["UPDATE_PROFILE"] = "UPDATE_PROFILE";
42623	    FormType["CANCEL_SUBSCRIPTION"] = "CANCEL_SUBSCRIPTION";
42624	    FormType["LIST_SUBSCRIPTIONS"] = "LIST_SUBSCRIPTIONS";
42625	    FormType["SUSPEND_RESUME_SUBSCRIPTION"] = "SUSPEND_RESUME_SUBSCRIPTION";
42626	    FormType["DEVICES"] = "DEVICES";
42627	    FormType["GIFT_SUBSCRIPTION"] = "GIFT_SUBSCRIPTION";
42628	    FormType["GIFT_REDEMPTION"] = "GIFT_REDEMPTION";
42629	    FormType["LIST_GIFT_SUBSCRIPTIONS_SENT"] = "LIST_GIFT_SUBSCRIPTIONS_SENT";
42630	    FormType["BILL_TO_CONTACT"] = "BILL_TO_CONTACT";
42631	})(FormType || (FormType = {}));
42632
42633	const toProgressBarItems = (form, formState, formActions) => {
42634	    let order = 0;
42635	    let visibleOrder = 0;
42636	    return form.parts.flatMap(part => part.sections
42637	        .map(section => ({ part, section })))
42638	        .map(({ part, section }) => ({
42639	        type: section.type,
42640	        isVisible: isSectionDisplayedInProgressBar(section, form, formState),
42641	        label: (section.label ?? part.label) ?? sectionTypeFor(section.type)?.defaultLabel,
42642	        isCurrent: formState.currentSection == section,
42643	        // Do not allow users to go backwards from PAYMENT if they have just registered
42644	        isDisabled: formState.loginRegistrationComplete && ![partTypes.PLAN_SELECT.type ].includes(part.type),
42645	        order: order++,
42646	        visibleOrder: isSectionDisplayedInProgressBar(section, form, formState) ? visibleOrder++ : null,
42647	        onSelect: () => setSection({ form, formActions, part, section, previousSection: formState.currentSection, previousPart: formState.currentPart })
42648	    }));
42649	};
42650	const factory$u = {
42651	    matches: (sectionElement) => sectionElement.type === elementTypes.PROGRESS_BAR,
42652	    create: (form, formState, formActions) => {
42653	        return {
42654	            component: ProgressBar,
42655	            props: {
42656	                disabled: formState.isBusy,
42657	                items: toProgressBarItems(form, formState, formActions),
42658	                isPaymentForm: form.formType === FormType.PAYMENT,
42659	            }
42660	        };
42661	    }
42662	};
42663
42664	const formConfigAs = (form) => {
42665	    return form.typeConfiguration;
42666	};
42667
42668	/* src/components/elements/button/Button.svelte generated by Svelte v4.2.12 */
42669
42670	function create_fragment$1b(ctx) {
42671		let button;
42672		let t;
42673		let button_style_value;
42674		let mounted;
42675		let dispose;
42676
42677		return {
42678			c() {
42679				button = element("button");
42680				t = text(/*text*/ ctx[1]);
42681				attr(button, "class", "zephr-form-button svelte-gd8hr6");
42682				attr(button, "type", "submit");
42683				button.hidden = /*hidden*/ ctx[6];
42684				attr(button, "style", button_style_value = /*hidden*/ ctx[6] ? 'dis
42684play:none' : undefined);
42685				button.disabled = /*disabled*/ ctx[0];
42686				toggle_class(button, "zephr-payment-form-button", /*isPaymentForm*/ ctx[5]);
42687				toggle_class(button, "zephr-form-button-top-margin", !/*noMargin*/ ctx[2]);
42688				toggle_class(button, "zephr-payment-form-button-top-margin", /*isPaymentForm*/ ctx[5] && !/*noMargin*/ ctx[2]);
42689				toggle_class(button, "inputHeight", /*inputHeight*/ ctx[3]);
42690				toggle_class(button, "aside", /*aside*/ ctx[4]);
42691			},
42692			m(target, anchor) {
42693				insert(target, button, anchor);
42694				append(button, t);
42695
42696				if (!mounted) {
42697					dispose = listen(button, "click", prevent_default(function () {
42698						if (is_function(/*onClick*/ ctx[7])) /*onClick*/ ctx[7].apply(this, arguments);
42699					}));
42700
42701					mounted = true;
42702				}
42703			},
42704			p(new_ctx, [dirty]) {
42705				ctx = new_ctx;
42706				if (dirty & /*text*/ 2) set_data(t, /*text*/ ctx[1]);
42707
42708				if (dirty & /*hidden*/ 64) {
42709					button.hidden = /*hidden*/ ctx[6];
42710				}
42711
42712				if (dirty & /*hidden*/ 64 && button_style_value !== (button_style_value = /*hidden*/ ctx[6] ? 'display:none' : undefined)) {
42713					attr(button, "style", button_style_value);
42714				}
42715
42716				if (dirty & /*disabled*/ 1) {
42717					button.disabled = /*disabled*/ ctx[0];
42718				}
42719
42720				if (dirty & /*isPaymentForm*/ 32) {
42721					toggle_class(button, "zephr-payment-form-button", /*isPaymentForm*/ ctx[5]);
42722				}
42723
42724				if (dirty & /*noMargin*/ 4) {
42725					toggle_class(button, "zephr-form-button-top-margin", !/*noMargin*/ ctx[2]);
42726				}
42727
42728				if (dirty & /*isPaymentForm, noMargin*/ 36) {
42729					toggle_class(button, "zephr-payment-form-button-top-margin", /*isPaymentForm*/ ctx[5] && !/*noMargin*/ ctx[2]);
42730				}
42731
42732				if (dirty & /*inputHeight*/ 8) {
42733					toggle_class(button, "inputHeight", /*inputHeight*/ ctx[3]);
42734				}
42735
42736				if (dirty & /*aside*/ 16) {
42737					toggle_class(button, "aside", /*aside*/ ctx[4]);
42738				}
42739			},
42740			i: noop,
42741			o: noop,
42742			d(detaching) {
42743				if (detaching) {
42744					detach(button);
42745				}
42746
42747				mounted = false;
42748				dispose();
42749			}
42750		};
42751	}
42752
42753	function instance$19($$self, $$props, $$invalidate) {
42754		let { disabled } = $$props;
42755		let { text } = $$props;
42756		let { noMargin = false } = $$props;
42757		let { inputHeight = false } = $$props;
42758		let { aside = false } = $$props;
42759		let { isPaymentForm = false } = $$props;
42760		let { hidden = false } = $$props;
42761		let { onClick } = $$props;
42762
42763		$$self.$$set = $$props => {
42764			if ('disabled' in $$props) $$invalidate(0, disabled = $$props.disabled);
42765			if ('text' in $$props) $$invalidate(1, text = $$props.text);
42766			if ('noMargin' in $$props) $$invalidate(2, noMargin = $$props.noMargin);
42767			if ('inputHeight' in $$props) $$invalidate(3, inputHeight = $$props.inputHeight);
42768			if ('aside' in $$props) $$invalidate(4, aside = $$props.aside);
42769			if ('isPaymentForm' in $$props) $$invalidate(5, isPaymentForm = $$props.isPaymentForm);
42770			if ('hidden' in $$props) $$invalidate(6, hidden = $$props.hidden);
42771			if ('onClick' in $$props) $$invalidate(7, onClick = $$props.onClick);
42772		};
42773
42774		return [disabled, text, noMargin, inputHeight, aside, isPaymentForm, hidden, onClick];
42775	}
42776
42777	class Button extends SvelteComponent {
42778		constructor(options) {
42779			super();
42780
42781			init(this, options, instance$19, create_fragment$1b, safe_not_equal, {
42782				disabled: 0,
42783				text: 1,
42784				noMargin: 2,
42785				inputHeight: 3,
42786				aside: 4,
42787				isPaymentForm: 5,
42788				hidden: 6,
42789				onClick: 7
42790			});
42791		}
42792	}
42793
42794	/* src/components/elements/paymentOptionSelection/PaymentOptionComponent.svelte generated by Svelte v4.2.12 */
42795
42796	function create_if_block_1$x(ctx) {
42797		let div;
42798		let t_value = /*paymentOption*/ ctx[1].highlightedText + "";
42799		let t;
42800
42801		return {
42802			c() {
42803				div = element("div");
42804				t = text(t_value);
42805				attr(div, "class", "box-top-text svelte-hcxnnv");
42806			},
42807			m(target, anchor) {
42808				insert(target, div, anchor);
42809				append(div, t);
42810			},
42811			p(ctx, dirty) {
42812				if (dirty & /*paymentOption*/ 2 && t_value !== (t_value = /*paymentOption*/ ctx[1].highlightedText + "")) set_data(t, t_value);
42813			},
42814			d(detaching) {
42815				if (detaching) {
42816					detach(div);
42817				}
42818			}
42819		};
42820	}
42821
42822	// (38:8) {#if paymentOption.disclaimerMessage}
42823	function create_if_block$K(ctx) {
42824		let span;
42825		let t_value = /*paymentOption*/ ctx[1].disclaimerMessage + "";
42826		let t;
42827
42828		return {
42829			c() {
42830				span = element("span");
42831				t = text(t_value);
42832				attr(span, "class", "button-sub-text svelte-hcxnnv");
42833			},
42834			m(target, anchor) {
42835				insert(target, span, anchor);
42836				append(span, t);
42837			},
42838			p(ctx, dirty) {
42839				if (dirty & /*paymentOption*/ 2 && t_value !== (t_value = /*paymentOption*/ ctx[1].disclaimerMessage + "")) set_data(t, t_value);
42840			},
42841			d(detaching) {
42842				if (detaching) {
42843					detach(span);
42844				}
42845			}
42846		};
42847	}
42848
42849	function create_fragment$1a(ctx) {
42850		let div5;
42851		let input;
42852		let input_id_value;
42853		let input_value_value;
42854		let t0;
42855		let div4;
42856		let div0;
42857		let t1;
42858		let div3;
42859		let div1;
42860		let raw_value = (/*paymentOption*/ ctx[1].description ?? '') + "";
42861		let t2;
42862		let div2;
42863		let button;
42864		let t3;
42865		let div3_class_value;
42866		let div4_class_value;
42867		let current;
42868		let mounted;
42869		let dispose;
42870		let if_block0 = /*paymentOption*/ ctx[1].highlightedText && create_if_block_1$x(ctx);
42871
42872		button = new Button({
42873				props: {
42874					disabled: false,
42875					text: /*paymentOption*/ ctx[1].selectButtonText ?? 'Select Plan',
42876					onClick: /*onSelect*/ ctx[0],
42877					isPaymentForm: true
42878				}
42879			});
42880
42881		let if_block1 = /*paymentOption*/ ctx[1].disclaimerMessage && create_if_block$K(ctx);
42882
42883		return {
42884			c() {
42885				div5 = element("div");
42886				input = element("input");
42887				t0 = space();
42888				div4 = element("div");
42889				div0 = element("div");
42890				if (if_block0) if_block0.c();
42891				t1 = space();
42892				div3 = element("div");
42893				div1 = element("div");
42894				t2 = space();
42895				div2 = element("div");
42896				create_component(button.$$.fragment);
42897				t3 = space();
42898				if (if_block1) if_block1.c();
42899				attr(input, "type", "radio");
42900				attr(input, "name", "boxSelect");
42901				attr(input, "id", input_id_value = "boxSelect-" + /*paymentOption*/ ctx[1].slug + "-" + /*paymentOption*/ ctx[1].productId + "}");
42902				input.value = input_value_value = /*paymentOption*/ ctx[1].price;
42903				attr(input, "class", "svelte-hcxnnv");
42904				attr(div0, "class", "box-top svelte-hcxnnv");
42905				attr(div1, "class", "box-content svelte-hcxnnv");
42906				toggle_class(div1, "styled-box-content", /*styleDescription*/ ctx[2]);
42907				attr(div2, "class", "box-bottom svelte-hcxnnv");
42908				attr(div3, "class", div3_class_value = "inner-box " + (/*paymentOption*/ ctx[1].highlightedText || '') + " svelte-hcxnnv");
42909
42910				attr(div4, "class", div4_class_value = "box-container " + (/*paymentOption*/ ctx[1].highlightedText
42911				? 'highlighted'
42912				: '') + " svelte-hcxnnv");
42913
42914				attr(div4, "aria-hidden", "true");
42915				set_style(div4, "cursor", "pointer");
42916				attr(div5, "class", "payment-option-wrapper svelte-hcxnnv");
42917			},
42918			m(target, anchor) {
42919				insert(target, div5, anchor);
42920				append(div5, input);
42921				append(div5, t0);
42922				append(div5, div4);
42923				append(div4, div0);
42924				if (if_block0) if_block0.m(div0, null);
42925				append(div4, t1);
42926				append(div4, div3);
42927				append(div3, div1);
42928				div1.innerHTML = raw_value;
42929				append(div3, t2);
42930				append(div3, div2);
42931				mount_component(button, div2, null);
42932				append(div2, t3);
42933				if (if_block1) if_block1.m(div2, null);
42934				current = true;
42935
42936				if (!mounted) {
42937					dispose = listen(div4, "click", prevent_default(function () {
42938						if (is_function(/*onSelect*/ ctx[0])) /*onSelect*/ ctx[0].apply(this, arguments);
42939					}));
42940
42941					mounted = true;
42942				}
42943			},
42944			p(new_ctx, [dirty]) {
42945				ctx = new_ctx;
42946
42947				if (!current || dirty & /*paymentOption*/ 2 && input_id_value !== (input_id_value = "boxSelect-" + /*paymentOption*/ ctx[1].slug + "-" + /*paymentOption*/ ctx[1].productId + "}")) {
42948					attr(input, "id", input_id_value);
42949				}
42950
42951				if (!current || dirty & /*paymentOption*/ 2 && input_value_value !== (input_value_value = /*paymentOption*/ ctx[1].price)) {
42952					input.value = input_value_value;
42953				}
42954
42955				if (/*paymentOption*/ ctx[1].highlightedText) {
42956					if (if_block0) {
42957						if_block0.p(ctx, dirty);
42958					} else {
42959						if_block0 = create_if_block_1$x(ctx);
42960						if_block0.c();
42961						if_block0.m(div0, null);
42962					}
42963				} else if (if_block0) {
42964					if_block0.d(1);
42965					if_block0 = null;
42966				}
42967
42968				if ((!current || dirty & /*paymentOption*/ 2) && raw_value !== (raw_value = (/*paymentOption*/ ctx[1].description ?? '') + "")) div1.innerHTML = raw_value;
42969				if (!current || dirty & /*styleDescription*/ 4) {
42970					toggle_class(div1, "styled-box-content", /*styleDescription*/ ctx[2]);
42971				}
42972
42973				const button_changes = {};
42974				if (dirty & /*paymentOption*/ 2) button_changes.text = /*paymentOption*/ ctx[1].selectButtonText ?? 'Select Plan';
42975				if (dirty & /*onSelect*/ 1) button_changes.onClick = /*onSelect*/ ctx[0];
42976				button.$set(button_changes);
42977
42978				if (/*paymentOption*/ ctx[1].disclaimerMessage) {
42979					if (if_block1) {
42980						if_block1.p(ctx, dirty);
42981					} else {
42982						if_block1 = create_if_block$K(ctx);
42983						if_block1.c();
42984						if_block1.m(div2, null);
42985					}
42986				} else if (if_block1) {
42987					if_block1.d(1);
42988					if_block1 = null;
42989				}
42990
42991				if (!current || dirty & /*paymentOption*/ 2 && div3_class_value !== (div3_class_value = "inner-box " + (/*paymentOption*/ ctx[1].highlightedText || '') + " svelte-hcxnnv")) {
42992					attr(div3, "class", div3_class_value);
42993				}
42994
42995				if (!current || dirty & /*paymentOption*/ 2 && div4_class_value !== (div4_class_value = "box-container " + (/*paymentOption*/ ctx[1].highlightedText
42996				? 'highlighted'
42997				: '') + " svelte-hcxnnv")) {
42998					attr(div4, "class", div4_class_value);
42999				}
43000			},
43001			i(local) {
43002				if (current) return;
43003				transition_in(button.$$.fragment, local);
43004				current = true;
43005			},
43006			o(local) {
43007				transition_out(button.$$.fragment, local);
43008				current = false;
43009			},
43010			d(detaching) {
43011				if (detaching) {
43012					detach(div5);
43013				}
43014
43015				if (if_block0) if_block0.d();
43016				destroy_component(button);
43017				if (if_block1) if_block1.d();
43018				mounted = false;
43019				dispose();
43020			}
43021		};
43022	}
43023
43024	function instance$18($$self, $$props, $$invalidate) {
43025		let { onSelect } = $$props;
43026		let { paymentOption } = $$props;
43027		let { styleDescription } = $$props;
43028
43029		$$self.$$set = $$props => {
43030			if ('onSelect' in $$props) $$invalidate(0, onSelect = $$props.onSelect);
43031			if ('paymentOption' in $$props) $$invalidate(1, paymentOption = $$props.paymentOption);
43032			if ('styleDescription' in $$props) $$invalidate(2, styleDescription = $$props.styleDescription);
43033		};
43034
43035		return [onSelect, paymentOption, styleDescription];
43036	}
43037
43038	class PaymentOptionComponent extends SvelteComponent {
43039		constructor(options) {
43040			super();
43041
43042			init(this, options, instance$18, create_fragment$1a, safe_not_equal, {
43043				onSelect: 0,
43044				paymentOption: 1,
43045				styleDescription: 2
43046			});
43047		}
43048	}
43049
43050	/* src/components/elements/paymentOptionSelection/PaymentOptionSelectionComponent.svelte generated by Svelte v4.2.12 */
43051
43052	function get_each_context$g(ctx, list, i) {
43053		const child_ctx = ctx.slice();
43054		child_ctx[6] = list[i];
43055		return child_ctx;
43056	}
43057
43058	// (12:2) {#each orderedPaymentOptions as paymentOption}
43059	function create_each_block$g(ctx) {
43060		let paymentoptioncomponent;
43061		let current;
43062
43063		function func() {
43064			return /*func*/ ctx[5](/*paymentOption*/ ctx[6]);
43065		}
43066
43067		paymentoptioncomponent = new PaymentOptionComponent({
43068				props: {
43069					paymentOption: /*paymentOption*/ ctx[6],
43070					styleDescription: /*config*/ ctx[0].styleDescription,
43071					onSelect: func
43072				}
43073			});
43074
43075		return {
43076			c() {
43077				create_component(paymentoptioncomponent.$$.fragment);
43078			},
43079			m(target, anchor) {
43080				mount_component(paymentoptioncomponent, target, anchor);
43081				current = true;
43082			},
43083			p(new_ctx, dirty) {
43084				ctx = new_ctx;
43085				const paymentoptioncomponent_changes = {};
43086				if (dirty & /*orderedPaymentOptions*/ 4) paymentoptioncomponent_changes.paymentOption = /*paymentOption*/ ctx[6];
43087				if (dirty & /*config*/ 1) paymentoptioncomponent_changes.styleDescription = /*config*/ ctx[0].styleDescription;
43088				if (dirty & /*onSelect, orderedPaymentOptions*/ 6) paymentoptioncomponent_changes.onSelect = func;
43089				paymentoptioncomponent.$set(paymentoptioncomponent_changes);
43090			},
43091			i(local) {
43092				if (current) return;
43093				transition_in(paymentoptioncomponent.$$.fragment, local);
43094				current = true;
43095			},
43096			o(local) {
43097				transition_out(paymentoptioncomponent.$$.fragment, local);
43098				current = false;
43099			},
43100			d(detaching) {
43101				destroy_component(paymentoptioncomponent, detaching);
43102			}
43103		};
43104	}
43105
43106	function create_fragment$19(ctx) {
43107		let div;
43108		let current;
43109		let each_value = ensure_array_like(/*orderedPaymentOptions*/ ctx[2]);
43110		let each_blocks = [];
43111
43112		for (let i = 0; i < each_value.length; i += 1) {
43113			each_blocks[i] = create_each_block$g(get_each_context$g(ctx, each_value, i));
43114		}
43115
43116		const out = i => transition_out(each_blocks[i], 1, 1, () => {
43117			each_blocks[i] = null;
43118		});
43119
43120		return {
43121			c() {
43122				div = element("div");
43123
43124				for (let i = 0; i < each_blocks.length; i += 1) {
43125					each_blocks[i].c();
43126				}
43127
43128				attr(div, "class", "payment-options-container svelte-tqlhky");
43129			},
43130			m(target, anchor) {
43131				insert(target, div, anchor);
43132
43133				for (let i = 0; i < each_blocks.length; i += 1) {
43134					if (each_blocks[i]) {
43135						each_blocks[i].m(div, null);
43136					}
43137				}
43138
43139				current = true;
43140			},
43141			p(ctx, [dirty]) {
43142				if (dirty & /*orderedPaymentOptions, config, onSelect*/ 7) {
43143					each_value = ensure_array_like(/*orderedPaymentOptions*/ ctx[2]);
43144					let i;
43145
43146					for (i = 0; i < each_value.length; i += 1) {
43147						const child_ctx = get_each_context$g(ctx, each_value, i);
43148
43149						if (each_blocks[i]) {
43150							each_blocks[i].p(child_ctx, dirty);
43151							transition_in(each_blocks[i], 1);
43152						} else {
43153							each_blocks[i] = create_each_block$g(child_ctx);
43154							each_blocks[i].c();
43155							transition_in(each_blocks[i], 1);
43156							each_blocks[i].m(div, null);
43157						}
43158					}
43159
43160					group_outros();
43161
43162					for (i = each_value.length; i < each_blocks.length; i += 1) {
43163						out(i);
43164					}
43165
43166					check_outros();
43167				}
43168			},
43169			i(local) {
43170				if (current) return;
43171
43172				for (let i = 0; i < each_value.length; i += 1) {
43173					transition_in(each_blocks[i]);
43174				}
43175
43176				current = true;
43177			},
43178			o(local) {
43179				each_blocks = each_blocks.filter(Boolean);
43180
43181				for (let i = 0; i < each_blocks.length; i += 1) {
43182					transition_out(each_blocks[i]);
43183				}
43184
43185				current = false;
43186			},
43187			d(detaching) {
43188				if (detaching) {
43189					detach(div);
43190				}
43191
43192				destroy_each(each_blocks, detaching);
43193			}
43194		};
43195	}
43196
43197	function instance$17($$self, $$props, $$invalidate) {
43198		let orderedPaymentOptions;
43199		let { paymentOptions } = $$props;
43200		let { config } = $$props;
43201		let { onSelect } = $$props;
43202		let { logView } = $$props;
43203		logView();
43204		const func = paymentOption => onSelect(paymentOption);
43205
43206		$$self.$$set = $$props => {
43207			if ('paymentOptions' in $$props) $$invalidate(3, paymentOptions = $$props.paymentOptions);
43208			if ('config' in $$props) $$invalidate(0, config = $$props.config);
43209			if ('onSelect' in $$props) $$invalidate(1, onSelect = $$props.onSelect);
43210			if ('logView' in $$props) $$invalidate(4, logView = $$props.logView);
43211		};
43212
43213		$$self.$$.update = () => {
43214			if ($$self.$$.dirty & /*paymentOptions*/ 8) {
43215				$$invalidate(2, orderedPaymentOptions = paymentOptions.sort((a, b) => a.fieldOrder - b.fieldOrder));
43216			}
43217		};
43218
43219		return [config, onSelect, orderedPaymentOptions, paymentOptions, logView, func];
43220	}
43221
43222	class PaymentOptionSelectionComponent extends SvelteComponent {
43223		constructor(options) {
43224			super();
43225
43226			init(this, options, instance$17, create_fragment$19, safe_not_equal, {
43227				paymentOptions: 3,
43228				config: 0,
43229				onSelect: 1,
43230				logView: 4
43231			});
43232		}
43233	}
43234
43235	const filterValidPaymentOptions = (form, formState) => {
43236	    if (!formConfigAs(form).changeSubscriptionMode) {
43237	        return formConfigAs(form).paymentOptions;
43238	    }
43239	    return formConfigAs(form).paymentOptions
43240	        .filter(paymentOption => formState
43241	        .validChangeFromPlans
43242	        .some(validPlan => validPlan.productId === paymentOption.productId && validPlan.planSlug === paymentOption.slug));
43243	};
43244	const factory$t = {
43245	    matches: (sectionElement) => sectionElement.type === elementTypes.PAYMENT_OPTION_SELECTION,
43246	    create: (form, formState, formActions, elementConfig) => ({
43247	        component: PaymentOptionSelectionComponent,
43248	        props: {
43249	            paymentOptions: filterValidPaymentOptions(form, formState),
43250	            config: elementConfig ? elementConfig : {},
43251	            onSelect: (paymentOption) => {
43252	                const paymentOptionKey = `${paymentOption.productId}-${paymentOption.slug}`;
43253	                const updateState = {
43254	                    paymentOption: {
43255	                        ...paymentOption,
43256	                        autoRenewConfig: paymentOption.autoRenewConfig,
43257	                        autoRenewToggleLabel: paymentOption.autoRenewToggleLabel
43258	                    },
43259	                    serverErrors: [],
43260	                    billingAddress: {
43261	                        country: null,
43262	                        postalCode: null,
43263	                    }
43264	                };
43265	                // Only initialize auto-renew state for payment options with custom_toggle config
43266	                if (paymentOption.autoRenewConfig === 'custom_toggle') {
43267	                    updateState.paymentOptionAutoRenew = {
43268	                        ...formState.paymentOptionAutoRenew,
43269	                        [paymentOptionKey]: paymentOption.terms?.autoRenew ?? false
43270	                    };
43271	                }
43272	                formActions.updateFormState(updateState);
43273	                if (form.organisationConfiguration.trackFormDataLayerEvents) {
43274	                    logDataLayerEvent(form, 'zephr_form_button_press', {
43275	                        sectionId: formState.currentSection.type,
43276	                        buttonType: 'SUBMIT'
43277	                    });
43278	                }
43279	                void formActions.completeSection();
43280	            },
43281	            logView: () => {
43282	                filterValidPaymentOptions(form, formState).forEach(paymentOption => logDataLayerEvent(form, 'view_item', {
43283	                    ecommerce: {
43284	                        currency: formConfigAs(form).formCurrency ?? paymentOption?.currencyCode,
43285	                        value: paymentOption.price,
43286	                        items: [{
43287	                                item_id: paymentOption.slug,
43288	                                item_name: paymentOption.productId,
43289	                                price: paymentOption.price,
43290	                                quantity: 1
43291	                            }]
43292	                    }
43293	                }));
43294	            }
43295	        }
43296	    })
43297	};
43298
43299	/* src/components/elements/ErrorMessage.svelte generated by Svelte v4.2.12 */
43300
43301	function create_fragment$18(ctx) {
43302		let div1;
43303		let div0;
43304		let t;
43305
43306		return {
43307			c() {
43308				div1 = element("div");
43309				div0 = element("div");
43310				t = text(/*error*/ ctx[0]);
43311				attr(div0, "class", "zephr-form-error-message svelte-1ko2lqj");
43312				attr(div0, "aria-live", "assertive");
43313				toggle_class(div0, "zephr-payment-form-error-message", !/*isPaymentForm*/ ctx[1]);
43314				attr(div1, "class", "zephr-form-error-message-min-height svelte-1ko2lqj");
43315				toggle_class(div1, "zephr-payment-form-error-message-min-height", !/*isPaymentForm*/ ctx[1]);
43316			},
43317			m(target, anchor) {
43318				insert(target, div1, anchor);
43319				append(div1, div0);
43320				append(div0, t);
43321			},
43322			p(ctx, [dirty]) {
43323				if (dirty & /*error*/ 1) set_data(t, /*error*/ ctx[0]);
43324
43325				if (dirty & /*isPaymentForm*/ 2) {
43326					toggle_class(div0, "zephr-payment-form-error-message", !/*isPaymentForm*/ ctx[1]);
43327				}
43328
43329				if (dirty & /*isPaymentForm*/ 2) {
43330					toggle_class(div1, "zephr-payment-form-error-message-min-height", !/*isPaymentForm*/ ctx[1]);
43331				}
43332			},
43333			i: noop,
43334			o: noop,
43335			d(detaching) {
43336				if (detaching) {
43337					detach(div1);
43338				}
43339			}
43340		};
43341	}
43342
43343	function instance$16($$self, $$props, $$invalidate) {
43344		let { error } = $$props;
43345		let { isPaymentForm = false } = $$props;
43346
43347		$$self.$$set = $$props => {
43348			if ('error' in $$props) $$invalidate(0, error = $$props.error);
43349			if ('isPaymentForm' in $$props) $$invalidate(1, isPaymentForm = $$props.isPaymentForm);
43350		};
43351
43352		return [error, isPaymentForm];
43353	}
43354
43355	class ErrorMessage extends SvelteComponent {
43356		constructor(options) {
43357			super();
43358			init(this, options, instance$16, create_fragment$18, safe_not_equal, { error: 0, isPaymentForm: 1 });
43359		}
43360	}
43361
43362	/* src/components/elements/Input.svelte generated by Svelte v4.2.12 */
43363
43364	function create_if_block_1$w(ctx) {
43365		let button;
43366		let span;
43367		let t;
43368		let mounted;
43369		let dispose;
43370
43371		return {
43372			c() {
43373				button = element("button");
43374				span = element("span");
43375				t = text(/*innerText*/ ctx[16]);
43376				attr(span, "class", "zephr-form-input-inner-text");
43377				toggle_class(span, "zephr-payment-form-input-inner-text", /*isPaymentForm*/ ctx[7]);
43378				attr(button, "type", "button");
43379				attr(button, "class", "zephr-form-input-inner-button");
43380			},
43381			m(target, anchor) {
43382				insert(target, button, anchor);
43383				append(button, span);
43384				append(span, t);
43385				/*button_binding*/ ctx[28](button);
43386
43387				if (!mounted) {
43388					dispose = listen(button, "click", prevent_default(function () {
43389						if (is_function(/*innerTextOnClick*/ ctx[17])) /*innerTextOnClick*/ ctx[17].apply(this, arguments);
43390					}));
43391
43392					mounted = true;
43393				}
43394			},
43395			p(new_ctx, dirty) {
43396				ctx = new_ctx;
43397				if (dirty & /*innerText*/ 65536) set_data(t, /*innerText*/ ctx[16]);
43398
43399				if (dirty & /*isPaymentForm*/ 128) {
43400					toggle_class(span, "zephr-payment-form-input-inner-text", /*isPaymentForm*/ ctx[7]);
43401				}
43402			},
43403			d(detaching) {
43404				if (detaching) {
43405					detach(button);
43406				}
43407
43408				/*button_binding*/ ctx[28](null);
43409				mounted = false;
43410				dispose();
43411			}
43412		};
43413	}
43414
43415	// (89:0) {#if errorMessage}
43416	function create_if_block$J(ctx) {
43417		let errormessage;
43418		let current;
43419
43420		errormessage = new ErrorMessage({
43421				props: {
43422					error: /*errorMessage*/ ctx[6],
43423					isPaymentForm: /*isPaymentForm*/ ctx[7]
43424				}
43425			});
43426
43427		return {
43428			c() {
43429				create_component(errormessage.$$.fragment);
43430			},
43431			m(target, anchor) {
43432				mount_component(errormessage, target, anchor);
43433				current = true;
43434			},
43435			p(ctx, dirty) {
43436				const errormessage_changes = {};
43437				if (dirty & /*errorMessage*/ 64) errormessage_changes.error = /*errorMessage*/ ctx[6];
43438				if (dirty & /*isPaymentForm*/ 128) errormessage_changes.isPaymentForm = /*isPaymentForm*/ ctx[7];
43439				errormessage.$set(errormessage_changes);
43440			},
43441			i(local) {
43442				if (current) return;
43443				transition_in(errormessage.$$.fragment, local);
43444				current = true;
43445			},
43446			o(local) {
43447				transition_out(errormessage.$$.fragment, local);
43448				current = false;
43449			},
43450			d(detaching) {
43451				destroy_component(errormessage, detaching);
43452			}
43453		};
43454	}
43455
43456	function create_fragment$17(ctx) {
43457		let div;
43458		let input;
43459		let input_value_value;
43460		let input_autocomplete_value;
43461		let input_checked_value;
43462		let input_placeholder_value;
43463		let input_pattern_value;
43464		let input_min_value;
43465		let input_max_value;
43466		let input_step_value;
43467		let input_class_value;
43468		let t0;
43469		let t1;
43470		let t2;
43471		let if_block1_anchor;
43472		let current;
43473		let mounted;
43474		let dispose;
43475		let if_block0 = /*innerText*/ ctx[16] && create_if_block_1$w(ctx);
43476		const default_slot_template = /*#slots*/ ctx[26].default;
43477		const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[25], null);
43478		let if_block1 = /*errorMessage*/ ctx[6] && create_if_block$J(ctx);
43479
43480		return {
43481			c() {
43482				div = element("div");
43483				input = element("input");
43484				t0 = space();
43485				if (if_block0) if_block0.c();
43486				t1 = space();
43487				if (default_slot) default_slot.c();
43488				t2 = space();
43489				if (if_block1) if_block1.c();
43490				if_block1_anchor = empty();
43491				attr(input, "id", /*id*/ ctx[0]);
43492				attr(input, "name", /*name*/ ctx[1]);
43493				input.required = /*required*/ ctx[3];
43494				input.disabled = /*disabled*/ ctx[4];
43495				attr(input, "type", /*type*/ ctx[2]);
43496				input.value = input_value_value = /*value*/ ctx[8] || null;
43497				attr(input, "autocomplete", input_autocomplete_value = /*autocomplete*/ ctx[19] || null);
43498				input.checked = input_checked_value = /*checked*/ ctx[10] || null;
43499				attr(input, "placeholder", input_placeholder_value = /*placeholder*/ ctx[9] || null);
43500				attr(input, "pattern", input_pattern_value = /*pattern*/ ctx[11] || null);
43501				attr(input, "min", input_min_value = /*min*/ ctx[12] || null);
43502				attr(input, "max", input_max_value = /*max*/ ctx[13] || null);
43503				attr(input, "maxlength", /*maxlength*/ ctx[15]);
43504				attr(input, "step", input_step_value = /*step*/ ctx[14] || null);
43505				attr(input, "class", input_class_value = "" + (null_to_empty(`zephr-form-input ${/*type*/ ctx[2] && `zephr-form-input-${/*type*/ ctx[2]}`} ${/*isPaymentForm*/ ctx[7] && /*type*/ ctx[2] && `zephr-payment-form-input-${/*type*/ ctx[2]}`}`) + " svelte-88cmol"));
43506				toggle_class(input, "disabled", /*disabled*/ ctx[4]);
43507				toggle_class(input, "error", /*hasError*/ ctx[5] || /*errorMessage*/ ctx[6]);
43508				toggle_class(input, "zephr-form-input-full-width", /*fill*/ ctx[18]);
43509				toggle_class(input, "zephr-payment-form-input", /*isPaymentForm*/ ctx[7]);
43510				toggle_class(input, "zephr-payment-form-input-full-width", /*isPaymentForm*/ ctx[7] && /*fill*/ ctx[18]);
43511				attr(div, "class", "zephr-form-input-inner-container svelte-88cmol");
43512				toggle_class(div, "zephr-payment-form-input-inner-container", /*isPaymentForm*/ ctx[7]);
43513			},
43514			m(target, anchor) {
43515				insert(target, div, anchor);
43516				append(div, input);
43517				/*input_binding*/ ctx[27](input);
43518				append(div, t0);
43519				if (if_block0) if_block0.m(div, null);
43520				insert(target, t1, anchor);
43521
43522				if (default_slot) {
43523					default_slot.m(target, anchor);
43524				}
43525
43526				insert(target, t2, anchor);
43527				if (if_block1) if_block1.m(target, anchor);
43528				insert(target, if_block1_anchor, anchor);
43529				current = true;
43530
43531				if (!mounted) {
43532					dispose = [
43533						listen(input, "focus", function () {
43534							if (is_function(/*onFocus*/ ctx[20])) /*onFocus*/ ctx[20].apply(this, arguments);
43535						}),
43536						listen(input, "blur", function () {
43537							if (is_function(/*onBlur*/ ctx[21])) /*onBlur*/ ctx[21].apply(this, arguments);
43538						}),
43539						listen(input, "input", /*handleInputChange*/ ctx[24]),
43540						listen(input, "paste", /*handleInputChange*/ ctx[24])
43541					];
43542
43543					mounted = true;
43544				}
43545			},
43546			p(new_ctx, [dirty]) {
43547				ctx = new_ctx;
43548
43549				if (!current || dirty & /*id*/ 1) {
43550					attr(input, "id", /*id*/ ctx[0]);
43551				}
43552
43553				if (!current || dirty & /*name*/ 2) {
43554					attr(input, "name", /*name*/ ctx[1]);
43555				}
43556
43557				if (!current || dirty & /*required*/ 8) {
43558					input.required = /*required*/ ctx[3];
43559				}
43560
43561				if (!current || dirty & /*disabled*/ 16) {
43562					input.disabled = /*disabled*/ ctx[4];
43563				}
43564
43565				if (!current || dirty & /*type*/ 4) {
43566					attr(input, "type", /*type*/ ctx[2]);
43567				}
43568
43569				if (!current || dirty & /*value*/ 256 && input_value_value !== (input_value_value = /*value*/ ctx[8] || null) && input.value !== input_value_value) {
43570					input.value = input_value_value;
43571				}
43572
43573				if (!current || dirty & /*autocomplete*/ 524288 && input_autocomplete_value !== (input_autocomplete_value = /*autocomplete*/ ctx[19] || null)) {
43574					attr(input, "autocomplete", input_autocomplete_value);
43575				}
43576
43577				if (!current || dirty & /*checked*/ 1024 && input_checked_value !== (input_checked_value = /*checked*/ ctx[10] || null)) {
43578					input.checked = input_checked_value;
43579				}
43580
43581				if (!current || dirty & /*placeholder*/ 512 && input_placeholder_value !== (input_placeholder_value = /*placeholder*/ ctx[9] || null)) {
43582					attr(input, "placeholder", input_placeholder_value);
43583				}
43584
43585				if (!current || dirty & /*pattern*/ 2048 && input_pattern_value !== (input_pattern_value = /*pattern*/ ctx[11] || null)) {
43586					attr(input, "pattern", input_pattern_value);
43587				}
43588
43589				if (!current || dirty & /*min*/ 4096 && input_min_value !== (input_min_value = /*min*/ ctx[12] || null)) {
43590					attr(input, "min", input_min_value);
43591				}
43592
43593				if (!current || dirty & /*max*/ 8192 && input_max_value !== (input_max_value = /*max*/ ctx[13] || null)) {
43594					attr(input, "max", input_max_value);
43595				}
43596
43597				if (!current || dirty & /*maxlength*/ 32768) {
43598					attr(input, "maxlength", /*maxlength*/ ctx[15]);
43599				}
43600
43601				if (!current || dirty & /*step*/ 16384 && input_step_value !== (input_step_value = /*step*/ ctx[14] || null)) {
43602					attr(input, "step", input_step_value);
43603				}
43604
43605				if (!current || dirty & /*type, isPaymentForm*/ 132 && input_class_value !== (input_class_value = "" + (null_to_empty(`zephr-form-input ${/*type*/ ctx[2] && `zephr-form-input-${/*type*/ ctx[2]}`} ${/*isPaymentForm*/ ctx[7] && /*type*/ ctx[2] && `zephr-payment-form-input-${/*type*/ ctx[2]}`}`) + " svelte-88cmol"))) {
43606					attr(input, "class", input_class_value);
43607				}
43608
43609				if (!current || dirty & /*type, isPaymentForm, disabled*/ 148) {
43610					toggle_class(input, "disabled", /*disabled*/ ctx[4]);
43611				}
43612
43613				if (!current || dirty & /*type, isPaymentForm, hasError, errorMessage*/ 228) {
43614					toggle_class(input, "error", /*hasError*/ ctx[5] || /*errorMessage*/ ctx[6]);
43615				}
43616
43617				if (!current || dirty & /*type, isPaymentForm, fill*/ 262276) {
43618					toggle_class(input, "zephr-form-input-full-width", /*fill*/ ctx[18]);
43619				}
43620
43621				if (!current || dirty & /*type, isPaymentForm, isPaymentForm*/ 132) {
43622					toggle_class(input, "zephr-payment-form-input", /*isPaymentForm*/ ctx[7]);
43623				}
43624
43625				if (!current || dirty & /*type, isPaymentForm, isPaymentForm, fill*/ 262276) {
43626					toggle_class(input, "zephr-payment-form-input-full-width", /*isPaymentForm*/ ctx[7] && /*fill*/ ctx[18]);
43627				}
43628
43629				if (/*innerText*/ ctx[16]) {
43630					if (if_block0) {
43631						if_block0.p(ctx, dirty);
43632					} else {
43633						if_block0 = create_if_block_1$w(ctx);
43634						if_block0.c();
43635						if_block0.m(div, null);
43636					}
43637				} else if (if_block0) {
43638					if_block0.d(1);
43639					if_block0 = null;
43640				}
43641
43642				if (!current || dirty & /*isPaymentForm*/ 128) {
43643					toggle_class(div, "zephr-payment-form-input-inner-container", /*isPaymentForm*/ ctx[7]);
43644				}
43645
43646				if (default_slot) {
43647					if (default_slot.p && (!current || dirty & /*$$scope*/ 33554432)) {
43648						update_slot_base(
43649							default_slot,
43650							default_slot_template,
43651							ctx,
43652							/*$$scope*/ ctx[25],
43653							!current
43654							? get_all_dirty_from_scope(/*$$scope*/ ctx[25])
43655							: get_slot_changes(default_slot_template, /*$$scope*/ ctx[25], dirty, null),
43656							null
43657						);
43658					}
43659				}
43660
43661				if (/*errorMessage*/ ctx[6]) {
43662					if (if_block1) {
43663						if_block1.p(ctx, dirty);
43664
43665						if (dirty & /*errorMessage*/ 64) {
43666							transition_in(if_block1, 1);
43667						}
43668					} else {
43669						if_block1 = create_if_block$J(ctx);
43670						if_block1.c();
43671						transition_in(if_block1, 1);
43672						if_block1.m(if_block1_anchor.parentNode, if_block1_anchor);
43673					}
43674				} else if (if_block1) {
43675					group_outros();
43676
43677					transition_out(if_block1, 1, 1, () => {
43678						if_block1 = null;
43679					});
43680
43681					check_outros();
43682				}
43683			},
43684			i(local) {
43685				if (current) return;
43686				transition_in(default_slot, local);
43687				transition_in(if_block1);
43688				current = true;
43689			},
43690			o(local) {
43691				transition_out(default_slot, local);
43692				transition_out(if_block1);
43693				current = false;
43694			},
43695			d(detaching) {
43696				if (detaching) {
43697					detach(div);
43698					detach(t1);
43699					detach(t2);
43700					detach(if_block1_anchor);
43701				}
43702
43703				/*input_binding*/ ctx[27](null);
43704				if (if_block0) if_block0.d();
43705				if (default_slot) default_slot.d(detaching);
43706				if (if_block1) if_block1.d(detaching);
43707				mounted = false;
43708				run_all(dispose);
43709			}
43710		};
43711	}
43712
43713	function instance$15($$self, $$props, $$invalidate) {
43714		let { $$slots: slots = {}, $$scope } = $$props;
43715		const dispatch = createEventDispatcher();
43716		let { id } = $$props;
43717		let { name = id } = $$props;
43718		let { type = "text" } = $$props;
43719		let { required = true } = $$props;
43720		let { disabled = false } = $$props;
43721		let { hasError = false } = $$props;
43722		let { errorMessage = null } = $$props;
43723		let { isPaymentForm = false } = $$props;
43724		let { value = "" } = $$props;
43725		let { placeholder = "" } = $$props;
43726		let { checked = false } = $$props;
43727		let { pattern = "" } = $$props;
43728		let { min = 0 } = $$props;
43729		let { max = 0 } = $$props;
43730		let { step = 0 } = $$props;
43731		let { maxlength = null } = $$props;
43732		let { innerText = null } = $$props;
43733		let { innerTextOnClick = null } = $$props;
43734		let { fill = false } = $$props;
43735		let { autocomplete = "" } = $$props;
43736		let { onFocus } = $$props;
43737		let { onBlur } = $$props;
43738		let inputElement;
43739		let buttonElement;
43740
43741		const handleInputChange = e => {
43742			dispatch("change", type !== "checkbox" ? e.target.value : e.target.checked);
43743		};
43744
43745		afterUpdate(() => {
43746			if (innerText && buttonElement && inputElement) {
43747				$$invalidate(22, inputElement.style.paddingRight = `${buttonElement.offsetWidth + 8}px`, inputElement);
43748			}
43749		});
43750
43751		function input_binding($$value) {
43752			binding_callbacks[$$value ? 'unshift' : 'push'](() => {
43753				inputElement = $$value;
43754				$$invalidate(22, inputElement);
43755			});
43756		}
43757
43758		function button_binding($$value) {
43759			binding_callbacks[$$value ? 'unshift' : 'push'](() => {
43760				buttonElement = $$value;
43761				$$invalidate(23, buttonElement);
43762			});
43763		}
43764
43765		$$self.$$set = $$props => {
43766			if ('id' in $$props) $$invalidate(0, id = $$props.id);
43767			if ('name' in $$props) $$invalidate(1, name = $$props.name);
43768			if ('type' in $$props) $$invalidate(2, type = $$props.type);
43769			if ('required' in $$props) $$invalidate(3, required = $$props.required);
43770			if ('disabled' in $$props) $$invalidate(4, disabled = $$props.disabled);
43771			if ('hasError' in $$props) $$invalidate(5, hasError = $$props.hasError);
43772			if ('errorMessage' in $$props) $$invalidate(6, errorMessage = $$props.errorMessage);
43773			if ('isPaymentForm' in $$props) $$invalidate(7, isPaymentForm = $$props.isPaymentForm);
43774			if ('value' in $$props) $$invalidate(8, value = $$props.value);
43775			if ('placeholder' in $$props) $$invalidate(9, placeholder = $$props.placeholder);
43776			if ('checked' in $$props) $$invalidate(10, checked = $$props.checked);
43777			if ('pattern' in $$props) $$invalidate(11, pattern = $$props.pattern);
43778			if ('min' in $$props) $$invalidate(12, min = $$props.min);
43779			if ('max' in $$props) $$invalidate(13, max = $$props.max);
43780			if ('step' in $$props) $$invali
43780date(14, step = $$props.step);
43781			if ('maxlength' in $$props) $$invalidate(15, maxlength = $$props.maxlength);
43782			if ('innerText' in $$props) $$invalidate(16, innerText = $$props.innerText);
43783			if ('innerTextOnClick' in $$props) $$invalidate(17, innerTextOnClick = $$props.innerTextOnClick);
43784			if ('fill' in $$props) $$invalidate(18, fill = $$props.fill);
43785			if ('autocomplete' in $$props) $$invalidate(19, autocomplete = $$props.autocomplete);
43786			if ('onFocus' in $$props) $$invalidate(20, onFocus = $$props.onFocus);
43787			if ('onBlur' in $$props) $$invalidate(21, onBlur = $$props.onBlur);
43788			if ('$$scope' in $$props) $$invalidate(25, $$scope = $$props.$$scope);
43789		};
43790
43791		return [
43792			id,
43793			name,
43794			type,
43795			required,
43796			disabled,
43797			hasError,
43798			errorMessage,
43799			isPaymentForm,
43800			value,
43801			placeholder,
43802			checked,
43803			pattern,
43804			min,
43805			max,
43806			step,
43807			maxlength,
43808			innerText,
43809			innerTextOnClick,
43810			fill,
43811			autocomplete,
43812			onFocus,
43813			onBlur,
43814			inputElement,
43815			buttonElement,
43816			handleInputChange,
43817			$$scope,
43818			slots,
43819			input_binding,
43820			button_binding
43821		];
43822	}
43823
43824	class Input extends SvelteComponent {
43825		constructor(options) {
43826			super();
43827
43828			init(this, options, instance$15, create_fragment$17, safe_not_equal, {
43829				id: 0,
43830				name: 1,
43831				type: 2,
43832				required: 3,
43833				disabled: 4,
43834				hasError: 5,
43835				errorMessage: 6,
43836				isPaymentForm: 7,
43837				value: 8,
43838				placeholder: 9,
43839				checked: 10,
43840				pattern: 11,
43841				min: 12,
43842				max: 13,
43843				step: 14,
43844				maxlength: 15,
43845				innerText: 16,
43846				innerTextOnClick: 17,
43847				fill: 18,
43848				autocomplete: 19,
43849				onFocus: 20,
43850				onBlur: 21
43851			});
43852		}
43853	}
43854
43855	/* src/components/elements/Label.svelte generated by Svelte v4.2.12 */
43856
43857	function create_if_block$I(ctx) {
43858		let span;
43859		let t;
43860
43861		return {
43862			c() {
43863				span = element("span");
43864				t = text(/*sublabel*/ ctx[1]);
43865				attr(span, "class", "svelte-yaw4yg");
43866			},
43867			m(target, anchor) {
43868				insert(target, span, anchor);
43869				append(span, t);
43870			},
43871			p(ctx, dirty) {
43872				if (dirty & /*sublabel*/ 2) set_data(t, /*sublabel*/ ctx[1]);
43873			},
43874			d(detaching) {
43875				if (detaching) {
43876					detach(span);
43877				}
43878			}
43879		};
43880	}
43881
43882	function create_fragment$16(ctx) {
43883		let label_1;
43884		let span;
43885		let t0;
43886		let t1;
43887		let t2;
43888		let current;
43889		let if_block = /*sublabel*/ ctx[1] && create_if_block$I(ctx);
43890		const default_slot_template = /*#slots*/ ctx[6].default;
43891		const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[5], null);
43892
43893		return {
43894			c() {
43895				label_1 = element("label");
43896				span = element("span");
43897				t0 = text(/*label*/ ctx[2]);
43898				t1 = space();
43899				if (if_block) if_block.c();
43900				t2 = space();
43901				if (default_slot) default_slot.c();
43902				attr(span, "class", "svelte-yaw4yg");
43903				attr(label_1, "class", "zephr-form-input-label svelte-yaw4yg");
43904				attr(label_1, "for", /*forInput*/ ctx[0]);
43905				attr(label_1, "style", /*style*/ ctx[3]);
43906				toggle_class(label_1, "zephr-payment-form-input-label", /*isPaymentForm*/ ctx[4]);
43907			},
43908			m(target, anchor) {
43909				insert(target, label_1, anchor);
43910				append(label_1, span);
43911				append(span, t0);
43912				append(label_1, t1);
43913				if (if_block) if_block.m(label_1, null);
43914				append(label_1, t2);
43915
43916				if (default_slot) {
43917					default_slot.m(label_1, null);
43918				}
43919
43920				current = true;
43921			},
43922			p(ctx, [dirty]) {
43923				if (!current || dirty & /*label*/ 4) set_data(t0, /*label*/ ctx[2]);
43924
43925				if (/*sublabel*/ ctx[1]) {
43926					if (if_block) {
43927						if_block.p(ctx, dirty);
43928					} else {
43929						if_block = create_if_block$I(ctx);
43930						if_block.c();
43931						if_block.m(label_1, t2);
43932					}
43933				} else if (if_block) {
43934					if_block.d(1);
43935					if_block = null;
43936				}
43937
43938				if (default_slot) {
43939					if (default_slot.p && (!current || dirty & /*$$scope*/ 32)) {
43940						update_slot_base(
43941							default_slot,
43942							default_slot_template,
43943							ctx,
43944							/*$$scope*/ ctx[5],
43945							!current
43946							? get_all_dirty_from_scope(/*$$scope*/ ctx[5])
43947							: get_slot_changes(default_slot_template, /*$$scope*/ ctx[5], dirty, null),
43948							null
43949						);
43950					}
43951				}
43952
43953				if (!current || dirty & /*forInput*/ 1) {
43954					attr(label_1, "for", /*forInput*/ ctx[0]);
43955				}
43956
43957				if (!current || dirty & /*style*/ 8) {
43958					attr(label_1, "style", /*style*/ ctx[3]);
43959				}
43960
43961				if (!current || dirty & /*isPaymentForm*/ 16) {
43962					toggle_class(label_1, "zephr-payment-form-input-label", /*isPaymentForm*/ ctx[4]);
43963				}
43964			},
43965			i(local) {
43966				if (current) return;
43967				transition_in(default_slot, local);
43968				current = true;
43969			},
43970			o(local) {
43971				transition_out(default_slot, local);
43972				current = false;
43973			},
43974			d(detaching) {
43975				if (detaching) {
43976					detach(label_1);
43977				}
43978
43979				if (if_block) if_block.d();
43980				if (default_slot) default_slot.d(detaching);
43981			}
43982		};
43983	}
43984
43985	function instance$14($$self, $$props, $$invalidate) {
43986		let { $$slots: slots = {}, $$scope } = $$props;
43987		let { forInput } = $$props;
43988		let { sublabel = "" } = $$props;
43989		let { label = "" } = $$props;
43990		let { style = "" } = $$props;
43991		let { isPaymentForm = false } = $$props;
43992
43993		$$self.$$set = $$props => {
43994			if ('forInput' in $$props) $$invalidate(0, forInput = $$props.forInput);
43995			if ('sublabel' in $$props) $$invalidate(1, sublabel = $$props.sublabel);
43996			if ('label' in $$props) $$invalidate(2, label = $$props.label);
43997			if ('style' in $$props) $$invalidate(3, style = $$props.style);
43998			if ('isPaymentForm' in $$props) $$invalidate(4, isPaymentForm = $$props.isPaymentForm);
43999			if ('$$scope' in $$props) $$invalidate(5, $$scope = $$props.$$scope);
44000		};
44001
44002		return [forInput, sublabel, label, style, isPaymentForm, $$scope, slots];
44003	}
44004
44005	class Label extends SvelteComponent {
44006		constructor(options) {
44007			super();
44008
44009			init(this, options, instance$14, create_fragment$16, safe_not_equal, {
44010				forInput: 0,
44011				sublabel: 1,
44012				label: 2,
44013				style: 3,
44014				isPaymentForm: 4
44015			});
44016		}
44017	}
44018
44019	/* src/components/elements/password/PasswordInput.svelte generated by Svelte v4.2.12 */
44020
44021	function create_fragment$15(ctx) {
44022		let label_1;
44023		let t;
44024		let div;
44025		let input;
44026		let current;
44027
44028		label_1 = new Label({
44029				props: {
44030					forInput: /*inputId*/ ctx[13],
44031					label: /*label*/ ctx[1],
44032					isPaymentForm: /*isPaymentForm*/ ctx[8]
44033				}
44034			});
44035
44036		input = new Input({
44037				props: {
44038					disabled: /*disabled*/ ctx[0],
44039					required: true,
44040					id: /*inputId*/ ctx[13],
44041					type: /*passwordInputType*/ ctx[14],
44042					value: /*password*/ ctx[11],
44043					placeholder: /*placeholder*/ ctx[2],
44044					errorMessage: /*error*/ ctx[5],
44045					autocomplete: /*autocomplete*/ ctx[7],
44046					isPaymentForm: /*isPaymentForm*/ ctx[8],
44047					innerTextOnClick: /*func*/ ctx[16],
44048					innerText: /*showPassword*/ ctx[12]
44049					? /*hideLabel*/ ctx[4]
44050					: /*showLabel*/ ctx[3],
44051					onFocus: /*onFocus*/ ctx[9],
44052					onBlur: /*onBlur*/ ctx[10]
44053				}
44054			});
44055
44056		input.$on("change", /*change_handler*/ ctx[17]);
44057
44058		return {
44059			c() {
44060				create_component(label_1.$$.fragment);
44061				t = space();
44062				div = element("div");
44063				create_component(input.$$.fragment);
44064				attr(div, "class", "zephr-form-relative-container");
44065				toggle_class(div, "zephr-payment-form-relative-container", /*isPaymentForm*/ ctx[8]);
44066			},
44067			m(target, anchor) {
44068				mount_component(label_1, target, anchor);
44069				insert(target, t, anchor);
44070				insert(target, div, anchor);
44071				mount_component(input, div, null);
44072				current = true;
44073			},
44074			p(ctx, [dirty]) {
44075				const label_1_changes = {};
44076				if (dirty & /*inputId*/ 8192) label_1_changes.forInput = /*inputId*/ ctx[13];
44077				if (dirty & /*label*/ 2) label_1_changes.label = /*label*/ ctx[1];
44078				if (dirty & /*isPaymentForm*/ 256) label_1_changes.isPaymentForm = /*isPaymentForm*/ ctx[8];
44079				label_1.$set(label_1_changes);
44080				const input_changes = {};
44081				if (dirty & /*disabled*/ 1) input_changes.disabled = /*disabled*/ ctx[0];
44082				if (dirty & /*inputId*/ 8192) input_changes.id = /*inputId*/ ctx[13];
44083				if (dirty & /*passwordInputType*/ 16384) input_changes.type = /*passwordInputType*/ ctx[14];
44084				if (dirty & /*password*/ 2048) input_changes.value = /*password*/ ctx[11];
44085				if (dirty & /*placeholder*/ 4) input_changes.placeholder = /*placeholder*/ ctx[2];
44086				if (dirty & /*error*/ 32) input_changes.errorMessage = /*error*/ ctx[5];
44087				if (dirty & /*autocomplete*/ 128) input_changes.autocomplete = /*autocomplete*/ ctx[7];
44088				if (dirty & /*isPaymentForm*/ 256) input_changes.isPaymentForm = /*isPaymentForm*/ ctx[8];
44089				if (dirty & /*showPassword*/ 4096) input_changes.innerTextOnClick = /*func*/ ctx[16];
44090
44091				if (dirty & /*showPassword, hideLabel, showLabel*/ 4120) input_changes.innerText = /*showPassword*/ ctx[12]
44092				? /*hideLabel*/ ctx[4]
44093				: /*showLabel*/ ctx[3];
44094
44095				if (dirty & /*onFocus*/ 512) input_changes.onFocus = /*onFocus*/ ctx[9];
44096				if (dirty & /*onBlur*/ 1024) input_changes.onBlur = /*onBlur*/ ctx[10];
44097				input.$set(input_changes);
44098
44099				if (!current || dirty & /*isPaymentForm*/ 256) {
44100					toggle_class(div, "zephr-payment-form-relative-container", /*isPaymentForm*/ ctx[8]);
44101				}
44102			},
44103			i(local) {
44104				if (current) return;
44105				transition_in(label_1.$$.fragment, local);
44106				transition_in(input.$$.fragment, local);
44107				current = true;
44108			},
44109			o(local) {
44110				transition_out(label_1.$$.fragment, local);
44111				transition_out(input.$$.fragment, local);
44112				current = false;
44113			},
44114			d(detaching) {
44115				if (detaching) {
44116					detach(t);
44117					detach(div);
44118				}
44119
44120				destroy_component(label_1, detaching);
44121				destroy_component(input);
44122			}
44123		};
44124	}
44125
44126	function instance$13($$self, $$props, $$invalidate) {
44127		let passwordInputType;
44128		let inputId;
44129		let { disabled } = $$props;
44130		let { label } = $$props;
44131		let { placeholder } = $$props;
44132		let { isMainPassword } = $$props;
44133		let { showLabel } = $$props;
44134		let { hideLabel } = $$props;
44135		let { error = null } = $$props;
44136		let { onChange } = $$props;
44137		let { autocomplete } = $$props;
44138		let { isPaymentForm = false } = $$props;
44139		let { onFocus } = $$props;
44140		let { onBlur } = $$props;
44141		let { password } = $$props;
44142		let showPassword = false;
44143		const func = () =>
44143 $$invalidate(12, showPassword = !showPassword);
44144		const change_handler = ({ detail }) => onChange(detail);
44145
44146		$$self.$$set = $$props => {
44147			if ('disabled' in $$props) $$invalidate(0, disabled = $$props.disabled);
44148			if ('label' in $$props) $$invalidate(1, label = $$props.label);
44149			if ('placeholder' in $$props) $$invalidate(2, placeholder = $$props.placeholder);
44150			if ('isMainPassword' in $$props) $$invalidate(15, isMainPassword = $$props.isMainPassword);
44151			if ('showLabel' in $$props) $$invalidate(3, showLabel = $$props.showLabel);
44152			if ('hideLabel' in $$props) $$invalidate(4, hideLabel = $$props.hideLabel);
44153			if ('error' in $$props) $$invalidate(5, error = $$props.error);
44154			if ('onChange' in $$props) $$invalidate(6, onChange = $$props.onChange);
44155			if ('autocomplete' in $$props) $$invalidate(7, autocomplete = $$props.autocomplete);
44156			if ('isPaymentForm' in $$props) $$invalidate(8, isPaymentForm = $$props.isPaymentForm);
44157			if ('onFocus' in $$props) $$invalidate(9, onFocus = $$props.onFocus);
44158			if ('onBlur' in $$props) $$invali
44158date(10, onBlur = $$props.onBlur);
44159			if ('password' in $$props) $$invalidate(11, password = $$props.password);
44160		};
44161
44162		$$self.$$.update = () => {
44163			if ($$self.$$.dirty & /*showPassword*/ 4096) {
44164				$$invalidate(14, passwordInputType = showPassword ? "text" : "password");
44165			}
44166
44167			if ($$self.$$.dirty & /*isMainPassword*/ 32768) {
44168				$$invalidate(13, inputId = `zephr-form-${isMainPassword ? 'password' : 'confirm-password'}`);
44169			}
44170		};
44171
44172		return [
44173			disabled,
44174			label,
44175			placeholder,
44176			showLabel,
44177			hideLabel,
44178			error,
44179			onChange,
44180			autocomplete,
44181			isPaymentForm,
44182			onFocus,
44183			onBlur,
44184			password,
44185			showPassword,
44186			inputId,
44187			passwordInputType,
44188			isMainPassword,
44189			func,
44190			change_handler
44191		];
44192	}
44193
44194	class PasswordInput extends SvelteComponent {
44195		constructor(options) {
44196			super();
44197
44198			init(this, options, instance$13, create_fragment$15, safe_not_equal, {
44199				disabled: 0,
44200				label: 1,
44201				placeholder: 2,
44202				isMainPassword: 15,
44203				showLabel: 3,
44204				hideLabel: 4,
44205				error: 5,
44206				onChange: 6,
44207				autocomplete: 7,
44208				isPaymentForm: 8,
44209				onFocus: 9,
44210				onBlur: 10,
44211				password: 11
44212			});
44213		}
44214	}
44215
44216	function setCustomFontSize(element, size) {
44217	    if (size && size !== "lg" && size !== "sm" && size !== "xs") {
44218	        element.style.fontSize = size.replace("x", "em");
44219	    }
44220	    else {
44221	        element.style.fontSize = "";
44222	    }
44223	}
44224	function getTransform(scale, translateX, translateY, rotate, flip, translateTimes = 1, translateUnit = "", rotateUnit = "") {
44225	    let flipX = 1;
44226	    let flipY = 1;
44227	    if (flip) {
44228	        if (flip == "horizontal") {
44229	            flipX = -1;
44230	        }
44231	        else if (flip == "vertical") {
44232	            flipY = -1;
44233	        }
44234	        else {
44235	            flipX = flipY = -1;
44236	        }
44237	    }
44238	    if (typeof scale === "string") {
44239	        scale = parseFloat(scale);
44240	    }
44241	    if (typeof translateX === "string") {
44242	        translateX = parseFloat(translateX);
44243	    }
44244	    if (typeof translateY === "string") {
44245	        translateY = parseFloat(translateY);
44246	    }
44247	    const x = `${translateX * translateTimes}${translateUnit}`;
44248	    const y = `${translateY * translateTimes}${translateUnit}`;
44249	    let output = `translate(${x},${y}) scale(${flipX * scale},${flipY * scale})`;
44250	    if (rotate) {
44251	        output += ` rotate(${rotate}${rotateUnit})`;
44252	    }
44253	    return output;
44254	}
44255
44256	/* node_modules/svelte-fa/dist/fa.svelte generated by Svelte v4.2.12 */
44257
44258	function create_if_block$H(ctx) {
44259		let svg;
44260		let g1;
44261		let g0;
44262		let g1_transform_value;
44263		let g1_transform_origin_value;
44264		let svg_class_value;
44265		let svg_viewBox_value;
44266
44267		function select_block_type(ctx, dirty) {
44268			if (typeof /*i*/ ctx[16][4] == "string") return create_if_block_1$v;
44269			return create_else_block$a;
44270		}
44271
44272		let current_block_type = select_block_type(ctx);
44273		let if_block = current_block_type(ctx);
44274
44275		return {
44276			c() {
44277				svg = svg_element("svg");
44278				g1 = svg_element("g");
44279				g0 = svg_element("g");
44280				if_block.c();
44281				attr(g0, "transform", /*transform*/ ctx[15]);
44282				attr(g1, "transform", g1_transform_value = "translate(" + /*i*/ ctx[16][0] / 2 + " " + /*i*/ ctx[16][1] / 2 + ")");
44283				attr(g1, "transform-origin", g1_transform_origin_value = "" + (/*i*/ ctx[16][0] / 4 + " 0"));
44284				attr(svg, "id", /*id*/ ctx[1]);
44285				attr(svg, "class", svg_class_value = "svelte-fa svelte-fa-base " + /*clazz*/ ctx[0] + " svelte-f5ydbn");
44286				attr(svg, "style", /*style*/ ctx[2]);
44287				attr(svg, "viewBox", svg_viewBox_value = "0 0 " + /*i*/ ctx[16][0] + " " + /*i*/ ctx[16][1]);
44288				attr(svg, "aria-hidden", "true");
44289				attr(svg, "role", "img");
44290				attr(svg, "xmlns", "http://www.w3.org/2000/svg");
44291				toggle_class(svg, "pulse", /*pulse*/ ctx[8]);
44292				toggle_class(svg, "svelte-fa-size-lg", /*size*/ ctx[3] === "lg");
44293				toggle_class(svg, "svelte-fa-size-sm", /*size*/ ctx[3] === "sm");
44294				toggle_class(svg, "svelte-fa-size-xs", /*size*/ ctx[3] === "xs");
44295				toggle_class(svg, "svelte-fa-fw", /*fw*/ ctx[5]);
44296				toggle_class(svg, "svelte-fa-pull-left", /*pull*/ ctx[6] === "left");
44297				toggle_class(svg, "svelte-fa-pull-right", /*pull*/ ctx[6] === "right");
44298				toggle_class(svg, "spin", /*spin*/ ctx[7]);
44299			},
44300			m(target, anchor) {
44301				insert(target, svg, anchor);
44302				append(svg, g1);
44303				append(g1, g0);
44304				if_block.m(g0, null);
44305				/*svg_binding*/ ctx[23](svg);
44306			},
44307			p(ctx, dirty) {
44308				if (current_block_type === (current_block_type = select_block_type(ctx)) && if_block) {
44309					if_block.p(ctx, dirty);
44310				} else {
44311					if_block.d(1);
44312					if_block = current_block_type(ctx);
44313
44314					if (if_block) {
44315						if_block.c();
44316						if_block.m(g0, null);
44317					}
44318				}
44319
44320				if (dirty & /*transform*/ 32768) {
44321					attr(g0, "transform", /*transform*/ ctx[15]);
44322				}
44323
44324				if (dirty & /*i*/ 65536 && g1_transform_value !== (g1_transform_value = "translate(" + /*i*/ ctx[16][0] / 2 + " " + /*i*/ ctx[16][1] / 2 + ")")) {
44325					attr(g1, "transform", g1_transform_value);
44326				}
44327
44328				if (dirty & /*i*/ 65536 && g1_transform_origin_value !== (g1_transform_origin_value = "" + (/*i*/ ctx[16][0] / 4 + " 0"))) {
44329					attr(g1, "transform-origin", g1_transform_origin_value);
44330				}
44331
44332				if (dirty & /*id*/ 2) {
44333					attr(svg, "id", /*id*/ ctx[1]);
44334				}
44335
44336				if (dirty & /*clazz*/ 1 && svg_class_value !== (svg_class_value = "svelte-fa svelte-fa-base " + /*clazz*/ ctx[0] + " svelte-f5ydbn")) {
44337					attr(svg, "class", svg_class_value);
44338				}
44339
44340				if (dirty & /*style*/ 4) {
44341					attr(svg, "style", /*style*/ ctx[2]);
44342				}
44343
44344				if (dirty & /*i*/ 65536 && svg_viewBox_value !== (svg_viewBox_value = "0 0 " + /*i*/ ctx[16][0] + " " + /*i*/ ctx[16][1])) {
44345					attr(svg, "viewBox", svg_viewBox_value);
44346				}
44347
44348				if (dirty & /*clazz, pulse*/ 257) {
44349					toggle_class(svg, "pulse", /*pulse*/ ctx[8]);
44350				}
44351
44352				if (dirty & /*clazz, size*/ 9) {
44353					toggle_class(svg, "svelte-fa-size-lg", /*size*/ ctx[3] === "lg");
44354				}
44355
44356				if (dirty & /*clazz, size*/ 9) {
44357					toggle_class(svg, "svelte-fa-size-sm", /*size*/ ctx[3] === "sm");
44358				}
44359
44360				if (dirty & /*clazz, size*/ 9) {
44361					toggle_class(svg, "svelte-fa-size-xs", /*size*/ ctx[3] === "xs");
44362				}
44363
44364				if (dirty & /*clazz, fw*/ 33) {
44365					toggle_class(svg, "svelte-fa-fw", /*fw*/ ctx[5]);
44366				}
44367
44368				if (dirty & /*clazz, pull*/ 65) {
44369					toggle_class(svg, "svelte-fa-pull-left", /*pull*/ ctx[6] === "left");
44370				}
44371
44372				if (dirty & /*clazz, pull*/ 65) {
44373					toggle_class(svg, "svelte-fa-pull-right", /*pull*/ ctx[6] === "right");
44374				}
44375
44376				if (dirty & /*clazz, spin*/ 129) {
44377					toggle_class(svg, "spin", /*spin*/ ctx[7]);
44378				}
44379			},
44380			d(detaching) {
44381				if (detaching) {
44382					detach(svg);
44383				}
44384
44385				if_block.d();
44386				/*svg_binding*/ ctx[23](null);
44387			}
44388		};
44389	}
44390
44391	// (61:8) {:else}
44392	function create_else_block$a(ctx) {
44393		let path0;
44394		let path0_d_value;
44395		let path0_fill_value;
44396		let path0_fill_opacity_value;
44397		let path0_transform_value;
44398		let path1;
44399		let path1_d_value;
44400		let path1_fill_value;
44401		let path1_fill_opacity_value;
44402		let path1_transform_value;
44403
44404		return {
44405			c() {
44406				path0 = svg_element("path");
44407				path1 = svg_element("path");
44408				attr(path0, "d", path0_d_value = /*i*/ ctx[16][4][0]);
44409				attr(path0, "fill", path0_fill_value = /*secondaryColor*/ ctx[10] || /*color*/ ctx[4] || "currentColor");
44410
44411				attr(path0, "fill-opacity", path0_fill_opacity_value = /*swapOpacity*/ ctx[13] != false
44412				? /*primaryOpacity*/ ctx[11]
44413				: /*secondaryOpacity*/ ctx[12]);
44414
44415				attr(path0, "transform", path0_transform_value = "translate(" + /*i*/ ctx[16][0] / -2 + " " + /*i*/ ctx[16][1] / -2 + ")");
44416				attr(path1, "d", path1_d_value = /*i*/ ctx[16][4][1]);
44417				attr(path1, "fill", path1_fill_value = /*primaryColor*/ ctx[9] || /*color*/ ctx[4] || "currentColor");
44418
44419				attr(path1, "fill-opacity", path1_fill_opacity_value = /*swapOpacity*/ ctx[13] != false
44420				? /*secondaryOpacity*/ ctx[12]
44421				: /*primaryOpacity*/ ctx[11]);
44422
44423				attr(path1, "transform", path1_transform_value = "translate(" + /*i*/ ctx[16][0] / -2 + " " + /*i*/ ctx[16][1] / -2 + ")");
44424			},
44425			m(target, anchor) {
44426				insert(target, path0, anchor);
44427				insert(target, path1, anchor);
44428			},
44429			p(ctx, dirty) {
44430				if (dirty & /*i*/ 65536 && path0_d_value !== (path0_d_value = /*i*/ ctx[16][4][0])) {
44431					attr(path0, "d", path0_d_value);
44432				}
44433
44434				if (dirty & /*secondaryColor, color*/ 1040 && path0_fill_value !== (path0_fill_value = /*secondaryColor*/ ctx[10] || /*color*/ ctx[4] || "currentColor")) {
44435					attr(path0, "fill", path0_fill_value);
44436				}
44437
44438				if (dirty & /*swapOpacity, primaryOpacity, secondaryOpacity*/ 14336 && path0_fill_opacity_value !== (path0_fill_opacity_value = /*swapOpacity*/ ctx[13] != false
44439				? /*primaryOpacity*/ ctx[11]
44440				: /*secondaryOpacity*/ ctx[12])) {
44441					attr(path0, "fill-opacity", path0_fill_opacity_value);
44442				}
44443
44444				if (dirty & /*i*/ 65536 && path0_transform_value !== (path0_transform_value = "translate(" + /*i*/ ctx[16][0] / -2 + " " + /*i*/ ctx[16][1] / -2 + ")")) {
44445					attr(path0, "transform", path0_transform_value);
44446				}
44447
44448				if (dirty & /*i*/ 65536 && path1_d_value !== (path1_d_value = /*i*/ ctx[16][4][1])) {
44449					attr(path1, "d", path1_d_value);
44450				}
44451
44452				if (dirty & /*primaryColor, color*/ 528 && path1_fill_value !== (path1_fill_value = /*primaryColor*/ ctx[9] || /*color*/ ctx[4] || "currentColor")) {
44453					attr(path1, "fill", path1_fill_value);
44454				}
44455
44456				if (dirty & /*swapOpacity, secondaryOpacity, primaryOpacity*/ 14336 && path1_fill_opacity_value !== (path1_fill_opacity_value = /*swapOpacity*/ ctx[13] != false
44457				? /*secondaryOpacity*/ ctx[12]
44458				: /*primaryOpacity*/ ctx[11])) {
44459					attr(path1, "fill-opacity", path1_fill_opacity_value);
44460				}
44461
44462				if (dirty & /*i*/ 65536 && path1_transform_value !== (path1_transform_value = "translate(" + /*i*/ ctx[16][0] / -2 + " " + /*i*/ ctx[16][1] / -2 + ")")) {
44463					attr(path1, "transform", path1_transform_value);
44464				}
44465			},
44466			d(detaching) {
44467				if (detaching) {
44468					detach(path0);
44469					detach(path1);
44470				}
44471			}
44472		};
44473	}
44474
44475	// (55:8) {#if typeof i[4] == "string"}
44476	function create_if_block_1$v(ctx) {
44477		let path;
44478		let path_d_value;
44479		let path_fill_value;
44480		let path_transform_value;
44481
44482		return {
44483			c() {
44484				path = svg_element("path");
44485				attr(path, "d", path_d_value = /*i*/ ctx[16][4]);
44486				attr(path, "fill", path_fill_value = /*color*/ ctx[4] || /*primaryColor*/ ctx[9] || "currentColor");
44487				attr(path, "transform", path_transform_value = "translate(" + /*i*/ ctx[16][0] / -2 + " " + /*i*/ ctx[16][1] / -2 + ")");
44488			},
44489			m(target, anchor) {
44490				insert(target, path, anchor);
44491			},
44492			p(ctx, dirty) {
44493				if (dirty & /*i*/ 65536 && path_d_value !== (path_d_value = /*i*/ ctx[16][4])) {
44494					attr(path, "d", path_d_value);
44495				}
44496
44497				if (dirty & /*color, primaryColor*/ 528 && path_fill_value !== (path_fill_value = /*color*/ ctx[4] || /*primaryColor*/ ctx[9] || "currentColor")) {
44498					attr(path, "fill", path_fill_value);
44499				}
44500
44501				if (dirty & /*i*/ 65536 && path_transform_value !== (path_transform_value = "translate(" + /*i*/ ctx[16][0] / -2 + " " + /*i*/ ctx[16][1] / -2 + ")")) {
44502					attr(path, "transform", path_transform_value);
44503				}
44504			},
44505			d(detaching) {
44506				if (detaching) {
44507					detach(path);
44508				}
44509			}
44510		};
44511	}
44512
44513	function create_fragment$14(ctx) {
44514		let if_block_anchor;
44515		let if_block = /*i*/ ctx[16][4] && create_if_block$H(ctx);
44516
44517		return {
44518			c() {
44519				if (if_block) if_block.c();
44520				if_block_anchor = empty();
44521			},
44522			m(target, anchor) {
44523				if (if_block) if_block.m(target, anchor);
44524				insert(target, if_block_anchor, anchor);
44525			},
44526			p(ctx, [dirty]) {
44527				if (/*i*/ ctx[16][4]) {
44528					if (if_block) {
44529						if_block.p(ctx, dirty);
44530					} else {
44531						if_block = create_if_block$H(ctx);
44532						if_block.c();
44533						if_block.m(if_block_anchor.parentNode, if_block_anchor);
44534					}
44535				} else if (if_block) {
44536					if_block.d(1);
44537					if_block = null;
44538				}
44539			},
44540			i: noop,
44541			o: noop,
44542			d(detaching) {
44543				if (detaching) {
44544					detach(if_block_anchor);
44545				}
44546
44547				if (if_block) if_block.d(detaching);
44548			}
44549		};
44550	}
44551
44552	function instance$12($$self, $$props, $$invalidate) {
44553		let i;
44554		let transform;
44555		let { class: clazz = void 0 } = $$props;
44556		let { id = void 0 } = $$props;
44557		let { style = void 0 } = $$props;
44558		let { icon } = $$props;
44559		let { size = void 0 } = $$props;
44560		let { color = void 0 } = $$props;
44561		let { fw = false } = $$props;
44562		let { pull = void 0 } = $$props;
44563		let { scale = 1 } = $$props;
44564		let { translateX = 0 } = $$props;
44565		let { translateY = 0 } = $$props;
44566		let { rotate = void 0 } = $$props;
44567		let { flip = void 0 } = $$props;
44568		let { spin = false } = $$props;
44569		let { pulse = false } = $$props;
44570		let { primaryColor = "" } = $$props;
44571		let { secondaryColor = "" } = $$props;
44572		let { primaryOpacity = 1 } = $$props;
44573		let { secondaryOpacity = 0.4 } = $$props;
44574		let { swapOpacity = false } = $$props;
44575		let svgElement;
44576
44577		function svg_binding($$value) {
44578			binding_callbacks[$$value ? 'unshift' : 'push'](() => {
44579				svgElement = $$value;
44580				$$invalidate(14, svgElement);
44581			});
44582		}
44583
44584		$$self.$$set = $$props => {
44585			if ('class' in $$props) $$invalidate(0, clazz = $$props.class);
44586			if ('id' in $$props) $$invalidate(1, id = $$props.id);
44587			if ('style' in $$props) $$invalidate(2, style = $$props.style);
44588			if ('icon' in $$props) $$invalidate(17, icon = $$props.icon);
44589			if ('size' in $$props) $$invalidate(3, size = $$props.size);
44590			if ('color' in $$props) $$invalidate(4, color = $$props.color);
44591			if ('fw' in $$props) $$invalidate(5, fw = $$props.fw);
44592			if ('pull' in $$props) $$invalidate(6, pull = $$props.pull);
44593			if ('scale' in $$props) $$invalidate(18, scale = $$props.scale);
44594			if ('translateX' in $$props) $$invalidate(19, translateX = $$props.translateX);
44595			if ('translateY' in $$props) $$invalidate(20, translateY = $$props.translateY);
44596			if ('rotate' in $$props) $$invalidate(21, rotate = $$props.rotate);
44597			if ('flip' in $$props) $$invalidate(22, flip = $$props.flip);
44598			if ('spin' in $$props) $$invalidate(7, spin = $$props.spin);
44599			if ('pulse' in $$props) $$invali
44599date(8, pulse = $$props.pulse);
44600			if ('primaryColor' in $$props) $$invalidate(9, primaryColor = $$props.primaryColor);
44601			if ('secondaryColor' in $$props) $$invalidate(10, secondaryColor = $$props.secondaryColor);
44602			if ('primaryOpacity' in $$props) $$invalidate(11, primaryOpacity = $$props.primaryOpacity);
44603			if ('secondaryOpacity' in $$props) $$invalidate(12, secondaryOpacity = $$props.secondaryOpacity);
44604			if ('swapOpacity' in $$props) $$invalidate(13, swapOpacity = $$props.swapOpacity);
44605		};
44606
44607		$$self.$$.update = () => {
44608			if ($$self.$$.dirty & /*svgElement, size*/ 16392) {
44609				svgElement && size && setCustomFontSize(svgElement, size);
44610			}
44611
44612			if ($$self.$$.dirty & /*icon*/ 131072) {
44613				$$invalidate(16, i = icon && icon.icon || [0, 0, "", [], ""]);
44614			}
44615
44616			if ($$self.$$.dirty & /*scale, translateX, translateY, rotate, flip*/ 8126464) {
44617				$$invalidate(15, transform = getTransform(scale, translateX, translateY, rotate, flip, 512));
44618			}
44619		};
44620
44621		return [
44622			clazz,
44623			id,
44624			style,
44625			size,
44626			color,
44627			fw,
44628			pull,
44629			spin,
44630			pulse,
44631			primaryColor,
44632			secondaryColor,
44633			primaryOpacity,
44634			secondaryOpacity,
44635			swapOpacity,
44636			svgElement,
44637			transform,
44638			i,
44639			icon,
44640			scale,
44641			translateX,
44642			translateY,
44643			rotate,
44644			flip,
44645			svg_binding
44646		];
44647	}
44648
44649	class Fa extends SvelteComponent {
44650		constructor(options) {
44651			super();
44652
44653			init(this, options, instance$12, create_fragment$14, safe_not_equal, {
44654				class: 0,
44655				id: 1,
44656				style: 2,
44657				icon: 17,
44658				size: 3,
44659				color: 4,
44660				fw: 5,
44661				pull: 6,
44662				scale: 18,
44663				translateX: 19,
44664				translateY: 20,
44665				rotate: 21,
44666				flip: 22,
44667				spin: 7,
44668				pulse: 8,
44669				primaryColor: 9,
44670				secondaryColor: 10,
44671				primaryOpacity: 11,
44672				secondaryOpacity: 12,
44673				swapOpacity: 13
44674			});
44675		}
44676	}
44677
44678	var faCircleCheck = {
44679	  prefix: 'fas',
44680	  iconName: 'circle-check',
44681	  icon: [512, 512, [61533, "check-circle"], "f058", "M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z"]
44682	};
44683	var faCheckCircle = faCircleCheck;
44684	var faSpinner = {
44685	  prefix: 'fas',
44686	  iconName: 'spinner',
44687	  icon: [512, 512, [], "f110", "M304 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm0 416a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM48 304a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm464-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM142.9 437A48 48 0 1 0 75 369.1 48 48 0 1 0 142.9 437zm0-294.2A48 48 0 1 0 75 75a48 48 0 1 0 67.9 67.9zM369.1 437A48 48 0 1 0 437 369.1 48 48 0 1 0 369.1 437z"]
44688	};
44689	var faCheck = {
44690	  prefix: 'fas',
44691	  iconName: 'check',
44692	  icon: [448, 512, [10003, 10004], "f00c", "M438.6 105.4c12.5 12.5 12.5 32.8 0 45.3l-256 256c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 338.7 393.4 105.4c12.5-12.5 32.8-12.5 45.3 0z"]
44693	};
44694	var faCircleXmark = {
44695	  prefix: 'fas',
44696	  iconName: 'circle-xmark',
44697	  icon: [512, 512, [61532, "times-circle", "xmark-circle"], "f057", "M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z"]
44698	};
44699	var faTimesCircle = faCircleXmark;
44700
44701	/* src/components/elements/password/PasswordMatchIndicator.svelte generated by Svelte v4.2.12 */
44702
44703	function create_fragment$13(ctx) {
44704		let div1;
44705		let ul;
44706		let li;
44707		let div0;
44708		let fa;
44709		let t0;
44710		let t1;
44711		let current;
44712
44713		fa = new Fa({
44714				props: {
44715					icon: faCheckCircle,
44716					color: /*password*/ ctx[0] && /*password*/ ctx[0] === /*confirmPassword*/ ctx[1]
44717					? validColor$1
44718					: invalidColor$1
44719				}
44720			});
44721
44722		return {
44723			c() {
44724				div1 = element("div");
44725				ul = element("ul");
44726				li = element("li");
44727				div0 = element("div");
44728				create_component(fa.$$.fragment);
44729				t0 = space();
44730				t1 = text(/*passwordsMatchText*/ ctx[2]);
44731				attr(div0, "class", "zephr-form-password-requirement-icon svelte-tsrdk3");
44732				toggle_class(div0, "zephr-payment-form-password-requirement-icon", /*isPaymentForm*/ ctx[3]);
44733				attr(li, "class", "zephr-form-password-requirement svelte-tsrdk3");
44734				toggle_class(li, "zephr-payment-form-password-requirement", /*isPaymentForm*/ ctx[3]);
44735				attr(ul, "class", "svelte-tsrdk3");
44736				attr(div1, "class", "zephr-form-flex-container zephr-form-password-match svelte-tsrdk3");
44737				toggle_class(div1, "zephr-payment-form-flex-container", /*isPaymentForm*/ ctx[3]);
44738				toggle_class(div1, "zephr-payment-form-password-match", /*isPaymentForm*/ ctx[3]);
44739			},
44740			m(target, anchor) {
44741				insert(target, div1, anchor);
44742				append(div1, ul);
44743				append(ul, li);
44744				append(li, div0);
44745				mount_component(fa, div0, null);
44746				append(li, t0);
44747				append(li, t1);
44748				current = true;
44749			},
44750			p(ctx, [dirty]) {
44751				const fa_changes = {};
44752
44753				if (dirty & /*password, confirmPassword*/ 3) fa_changes.color = /*password*/ ctx[0] && /*password*/ ctx[0] === /*confirmPassword*/ ctx[1]
44754				? validColor$1
44755				: invalidColor$1;
44756
44757				fa.$set(fa_changes);
44758
44759				if (!current || dirty & /*isPaymentForm*/ 8) {
44760					toggle_class(div0, "zephr-payment-form-password-requirement-icon", /*isPaymentForm*/ ctx[3]);
44761				}
44762
44763				if (!current || dirty & /*passwordsMatchText*/ 4) set_data(t1, /*passwordsMatchText*/ ctx[2]);
44764
44765				if (!current || dirty & /*isPaymentForm*/ 8) {
44766					toggle_class(li, "zephr-payment-form-password-requirement", /*isPaymentForm*/ ctx[3]);
44767				}
44768
44769				if (!current || dirty & /*isPaymentForm*/ 8) {
44770					toggle_class(div1, "zephr-payment-form-flex-container", /*isPaymentForm*/ ctx[3]);
44771				}
44772
44773				if (!current || dirty & /*isPaymentForm*/ 8) {
44774					toggle_class(div1, "zephr-payment-form-password-match", /*isPaymentForm*/ ctx[3]);
44775				}
44776			},
44777			i(local) {
44778				if (current) return;
44779				transition_in(fa.$$.fragment, local);
44780				current = true;
44781			},
44782			o(local) {
44783				transition_out(fa.$$.fragment, local);
44784				current = false;
44785			},
44786			d(detaching) {
44787				if (detaching) {
44788					detach(div1);
44789				}
44790
44791				destroy_component(fa);
44792			}
44793		};
44794	}
44795
44796	const validColor$1 = "var(--zf-password-valid-color)";
44797	const invalidColor$1 = "var(--zf-password-invalid-color)";
44798
44799	function instance$11($$self, $$props, $$invalidate) {
44800		let { password } = $$props;
44801		let { confirmPassword } = $$props;
44802		let { passwordsMatchText } = $$props;
44803		let { isPaymentForm = false } = $$props;
44804
44805		$$self.$$set = $$props => {
44806			if ('password' in $$props) $$invalidate(0, password = $$props.password);
44807			if ('confirmPassword' in $$props) $$invalidate(1, confirmPassword = $$props.confirmPassword);
44808			if ('passwordsMatchText' in $$props) $$invalidate(2, passwordsMatchText = $$props.passwordsMatchText);
44809			if ('isPaymentForm' in $$props) $$invalidate(3, isPaymentForm = $$props.isPaymentForm);
44810		};
44811
44812		return [password, confirmPassword, passwordsMatchText, isPaymentForm];
44813	}
44814
44815	class PasswordMatchIndicator extends SvelteComponent {
44816		constructor(options) {
44817			super();
44818
44819			init(this, options, instance$11, create_fragment$13, safe_not_equal, {
44820				password: 0,
44821				confirmPassword: 1,
44822				passwordsMatchText: 2,
44823				isPaymentForm: 3
44824			});
44825		}
44826	}
44827
44828	/* src/components/elements/password/PasswordValidator.svelte generated by Svelte v4.2.12 */
44829
44830	function get_each_context$f(ctx, list, i) {
44831		const child_ctx = ctx.slice();
44832		child_ctx[12] = list[i];
44833		child_ctx[14] = i;
44834		return child_ctx;
44835	}
44836
44837	// (43:2) {#each Array(maxScore) as _, i}
44838	function create_each_block$f(ctx) {
44839		let div;
44840
44841		return {
44842			c() {
44843				div = element("div");
44844				attr(div, "class", "zephr-form-password-bar svelte-1bpbne4");
44845
44846				set_style(div, "background-color", /*score*/ ctx[3] > /*i*/ ctx[14]
44847				? validColor
44848				: invalidColor);
44849
44850				toggle_class(div, "zephr-payment-form-password-bar", /*isPaymentForm*/ ctx[2]);
44851			},
44852			m(target, anchor) {
44853				insert(target, div, anchor);
44854			},
44855			p(ctx, dirty) {
44856				if (dirty & /*score*/ 8) {
44857					set_style(div, "background-color", /*score*/ ctx[3] > /*i*/ ctx[14]
44858					? validColor
44859					: invalidColor);
44860				}
44861
44862				if (dirty & /*isPaymentForm*/ 4) {
44863					toggle_class(div, "zephr-payment-form-password-bar", /*isPaymentForm*/ ctx[2]);
44864				}
44865			},
44866			d(detaching) {
44867				if (detaching) {
44868					detach(div);
44869				}
44870			}
44871		};
44872	}
44873
44874	// (57:4) {#if passwordRequirements.minLength}
44875	function create_if_block_3$e(ctx) {
44876		let li;
44877		let div;
44878		let fa;
44879		let t0;
44880		let t1_value = /*passwordValidationTexts*/ ctx[1].minLengthValidationText + "";
44881		let t1;
44882		let current;
44883
44884		fa = new Fa({
44885				props: {
44886					icon: faCheckCircle,
44887					color: /*isLong*/ ctx[4] ? validColor : invalidColor
44888				}
44889			});
44890
44891		return {
44892			c() {
44893				li = element("li");
44894				div = element("div");
44895				create_component(fa.$$.fragment);
44896				t0 = space();
44897				t1 = text(t1_value);
44898				attr(div, "class", "zephr-form-password-requirement-icon svelte-1bpbne4");
44899				toggle_class(div, "zephr-payment-form-password-requirement-icon", /*isPaymentForm*/ ctx[2]);
44900				attr(li, "class", "zephr-form-password-requirement svelte-1bpbne4");
44901				toggle_class(li, "zephr-payment-form-password-requirement", /*isPaymentForm*/ ctx[2]);
44902			},
44903			m(target, anchor) {
44904				insert(target, li, anchor);
44905				append(li, div);
44906				mount_component(fa, div, null);
44907				append(li, t0);
44908				append(li, t1);
44909				current = true;
44910			},
44911			p(ctx, dirty) {
44912				const fa_changes = {};
44913				if (dirty & /*isLong*/ 16) fa_changes.color = /*isLong*/ ctx[4] ? validColor : invalidColor;
44914				fa.$set(fa_changes);
44915
44916				if (!current || dirty & /*isPaymentForm*/ 4) {
44917					toggle_class(div, "zephr-payment-form-password-requirement-icon", /*isPaymentForm*/ ctx[2]);
44918				}
44919
44920				if ((!current || dirty & /*passwordValidationTexts*/ 2) && t1_value !== (t1_value = /*passwordValidationTexts*/ ctx[1].minLengthValidationText + "")) set_data(t1, t1_value);
44921
44922				if (!current || dirty & /*isPaymentForm*/ 4) {
44923					toggle_class(li, "zephr-payment-form-password-requirement", /*isPaymentForm*/ ctx[2]);
44924				}
44925			},
44926			i(local) {
44927				if (current) return;
44928				transition_in(fa.$$.fragment, local);
44929				current = true;
44930			},
44931			o(local) {
44932				transition_out(fa.$$.fragment, local);
44933				current = false;
44934			},
44935			d(detaching) {
44936				if (detaching) {
44937					detach(li);
44938				}
44939
44940				destroy_component(fa);
44941			}
44942		};
44943	}
44944
44945	// (75:4) {#if passwordRequirements.requireUppercase}
44946	function create_if_block_2$j(ctx) {
44947		let li;
44948		let div;
44949		let fa;
44950		let t0;
44951		let t1_value = /*passwordValidationTexts*/ ctx[1].uppercaseValidationText + "";
44952		let t1;
44953		let current;
44954
44955		fa = new Fa({
44956				props: {
44957					icon: faCheckCircle,
44958					color: /*hasUppercaseLetter*/ ctx[7]
44959					? validColor
44960					: invalidColor
44961				}
44962			});
44963
44964		return {
44965			c() {
44966				li = element("li");
44967				div = element("div");
44968				create_component(fa.$$.fragment);
44969				t0 = space();
44970				t1 = text(t1_value);
44971				attr(div, "class", "zephr-form-password-requirement-icon svelte-1bpbne4");
44972				toggle_class(div, "zephr-payment-form-password-requirement-icon", /*isPaymentForm*/ ctx[2]);
44973				attr(li, "class", "zephr-form-password-requirement svelte-1bpbne4");
44974				toggle_class(li, "zephr-payment-form-password-requirement", /*isPaymentForm*/ ctx[2]);
44975			},
44976			m(target, anchor) {
44977				insert(target, li, anchor);
44978				append(li, div);
44979				mount_component(fa, div, null);
44980				append(li, t0);
44981				append(li, t1);
44982				current = true;
44983			},
44984			p(ctx, dirty) {
44985				const fa_changes = {};
44986
44987				if (dirty & /*hasUppercaseLetter*/ 128) fa_changes.color = /*hasUppercaseLetter*/ ctx[7]
44988				? validColor
44989				: invalidColor;
44990
44991				fa.$set(fa_changes);
44992
44993				if (!current || dirty & /*isPaymentForm*/ 4) {
44994					toggle_class(div, "zephr-payment-form-password-requirement-icon", /*isPaymentForm*/ ctx[2]);
44995				}
44996
44997				if ((!current || dirty & /*passwordValidationTexts*/ 2) && t1_value !== (t1_value = /*passwordValidationTexts*/ ctx[1].uppercaseValidationText + "")) set_data(t1, t1_value);
44998
44999				if (!current || dirty & /*isPaymentForm*/ 4) {
45000					toggle_class(li, "zephr-payment-form-password-requirement", /*isPaymentForm*/ ctx[2]);
45001				}
45002			},
45003			i(local) {
45004				if (current) return;
45005				transition_in(fa.$$.fragment, local);
45006				current = true;
45007			},
45008			o(local) {
45009				transition_out(fa.$$.fragment, local);
45010				current = false;
45011			},
45012			d(detaching) {
45013				if (detaching) {
45014					detach(li);
45015				}
45016
45017				destroy_component(fa);
45018			}
45019		};
45020	}
45021
45022	// (93:4) {#if passwordRequirements.requireNumbers}
45023	function create_if_block_1$u(ctx) {
45024		let li;
45025		let div;
45026		let fa;
45027		let t0;
45028		let t1_value = /*passwordValidationTexts*/ ctx[1].numberValidationText + "";
45029		let t1;
45030		let current;
45031
45032		fa = new Fa({
45033				props: {
45034					icon: faCheckCircle,
45035					color: /*hasNumber*/ ctx[6] ? validColor : invalidColor
45036				}
45037			});
45038
45039		return {
45040			c() {
45041				li = element("li");
45042				div = element("div");
45043				create_component(fa.$$.fragment);
45044				t0 = space();
45045				t1 = text(t1_value);
45046				attr(div, "class", "zephr-form-password-requirement-icon svelte-1bpbne4");
45047				toggle_class(div, "zephr-payment-form-password-requirement-icon", /*isPaymentForm*/ ctx[2]);
45048				attr(li, "class", "zephr-form-password-requirement svelte-1bpbne4");
45049				toggle_class(li, "zephr-payment-form-password-requirement", /*isPaymentForm*/ ctx[2]);
45050			},
45051			m(target, anchor) {
45052				insert(target, li, anchor);
45053				append(li, div);
45054				mount_component(fa, div, null);
45055				append(li, t0);
45056				append(li, t1);
45057				current = true;
45058			},
45059			p(ctx, dirty) {
45060				const fa_changes = {};
45061				if (dirty & /*hasNumber*/ 64) fa_changes.color = /*hasNumber*/ ctx[6] ? validColor : invalidColor;
45062				fa.$set(fa_changes);
45063
45064				if (!current || dirty & /*isPaymentForm*/ 4) {
45065					toggle_class(div, "zephr-payment-form-password-requirement-icon", /*isPaymentForm*/ ctx[2]);
45066				}
45067
45068				if ((!current || dirty & /*passwordValidationTexts*/ 2) && t1_value !== (t1_value = /*passwordValidationTexts*/ ctx[1].numberValidationText + "")) set_data(t1, t1_value);
45069
45070				if (!current || dirty & /*isPaymentForm*/ 4) {
45071					toggle_class(li, "zephr-payment-form-password-requirement", /*isPaymentForm*/ ctx[2]);
45072				}
45073			},
45074			i(local) {
45075				if (current) return;
45076				transition_in(fa.$$.fragment, local);
45077				current = true;
45078			},
45079			o(local) {
45080				transition_out(fa.$$.fragment, local);
45081				current = false;
45082			},
45083			d(detaching) {
45084				if (detaching) {
45085					detach(li);
45086				}
45087
45088				destroy_component(fa);
45089			}
45090		};
45091	}
45092
45093	// (111:4) {#if passwordRequirements.requireSpecialCharacters}
45094	function create_if_block$G(ctx) {
45095		let li;
45096		let div;
45097		let fa;
45098		let t0;
45099		let t1_value = /*passwordValidationTexts*/ ctx[1].symbolValidationText + "";
45100		let t1;
45101		let current;
45102
45103		fa = new Fa({
45104				props: {
45105					icon: faCheckCircle,
45106					color: /*hasSpecialCharacter*/ ctx[5]
45107					? validColor
45108					: invalidColor
45109				}
45110			});
45111
45112		return {
45113			c() {
45114				li = element("li");
45115				div = element("div");
45116				create_component(fa.$$.fragment);
45117				t0 = space();
45118				t1 = text(t1_value);
45119				attr(div, "class", "zephr-form-password-requirement-icon svelte-1bpbne4");
45120				toggle_class(div, "zephr-payment-form-password-requirement-icon", /*isPaymentForm*/ ctx[2]);
45121				attr(li, "class", "zephr-form-password-requirement svelte-1bpbne4");
45122				toggle_class(li, "zephr-payment-form-password-requirement", /*isPaymentForm*/ ctx[2]);
45123			},
45124			m(target, anchor) {
45125				insert(target, li, anchor);
45126				append(li, div);
45127				mount_component(fa, div, null);
45128				append(li, t0);
45129				append(li, t1);
45130				current = true;
45131			},
45132			p(ctx, dirty) {
45133				const fa_changes = {};
45134
45135				if (dirty & /*hasSpecialCharacter*/ 32) fa_changes.color = /*hasSpecialCharacter*/ ctx[5]
45136				? validColor
45137				: invalidColor;
45138
45139				fa.$set(fa_changes);
45140
45141				if (!current || dirty & /*isPaymentForm*/ 4) {
45142					toggle_class(div, "zephr-payment-form-password-requirement-icon", /*isPaymentForm*/ ctx[2]);
45143				}
45144
45145				if ((!current || dirty & /*passwordValidationTexts*/ 2) && t1_value !== (t1_value = /*passwordValidationTexts*/ ctx[1].symbolValidationText 
45145+ "")) set_data(t1, t1_value);
45146
45147				if (!current || dirty & /*isPaymentForm*/ 4) {
45148					toggle_class(li, "zephr-payment-form-password-requirement", /*isPaymentForm*/ ctx[2]);
45149				}
45150			},
45151			i(local) {
45152				if (current) return;
45153				transition_in(fa.$$.fragment, local);
45154				current = true;
45155			},
45156			o(local) {
45157				transition_out(fa.$$.fragment, local);
45158				current = false;
45159			},
45160			d(detaching) {
45161				if (detaching) {
45162					detach(li);
45163				}
45164
45165				destroy_component(fa);
45166			}
45167		};
45168	}
45169
45170	function create_fragment$12(ctx) {
45171		let div0;
45172		let t0;
45173		let div1;
45174		let ul;
45175		let t1;
45176		let t2;
45177		let t3;
45178		let current;
45179		let each_value = ensure_array_like(Array(/*maxScore*/ ctx[8]));
45180		let each_blocks = [];
45181
45182		for (let i = 0; i < each_value.length; i += 1) {
45183			each_blocks[i] = create_each_block$f(get_each_context$f(ctx, each_value, i));
45184		}
45185
45186		let if_block0 = /*passwordRequirements*/ ctx[0].minLength && create_if_block_3$e(ctx);
45187		let if_block1 = /*passwordRequirements*/ ctx[0].requireUppercase && create_if_block_2$j(ctx);
45188		let if_block2 = /*passwordRequirements*/ ctx[0].requireNumbers && create_if_block_1$u(ctx);
45189		let if_block3 = /*passwordRequirements*/ ctx[0].requireSpecialCharacters && create_if_block$G(ctx);
45190
45191		return {
45192			c() {
45193				div0 = element("div");
45194
45195				for (let i = 0; i < each_blocks.length; i += 1) {
45196					each_blocks[i].c();
45197				}
45198
45199				t0 = space();
45200				div1 = element("div");
45201				ul = element("ul");
45202				if (if_block0) if_block0.c();
45203				t1 = space();
45204				if (if_block1) if_block1.c();
45205				t2 = space();
45206				if (if_block2) if_block2.c();
45207				t3 = space();
45208				if (if_block3) if_block3.c();
45209				attr(div0, "class", "zephr-form-password-progress svelte-1bpbne4");
45210				toggle_class(div0, "zephr-payment-form-password-progress", /*isPaymentForm*/ ctx[2]);
45211				attr(ul, "class", "svelte-1bpbne4");
45212				attr(div1, "class", "zephr-form-flex-container zephr-form-password-requirements svelte-1bpbne4");
45213				toggle_class(div1, "zephr-payment-form-flex-container", /*isPaymentForm*/ ctx[2]);
45214				toggle_class(div1, "zephr-payment-form-password-requirements", /*isPaymentForm*/ ctx[2]);
45215			},
45216			m(target, anchor) {
45217				insert(target, div0, anchor);
45218
45219				for (let i = 0; i < each_blocks.length; i += 1) {
45220					if (each_blocks[i]) {
45221						each_blocks[i].m(div0, null);
45222					}
45223				}
45224
45225				insert(target, t0, anchor);
45226				insert(target, div1, anchor);
45227				append(div1, ul);
45228				if (if_block0) if_block0.m(ul, null);
45229				append(ul, t1);
45230				if (if_block1) if_block1.m(ul, null);
45231				append(ul, t2);
45232				if (if_block2) if_block2.m(ul, null);
45233				append(ul, t3);
45234				if (if_block3) if_block3.m(ul, null);
45235				current = true;
45236			},
45237			p(ctx, [dirty]) {
45238				if (dirty & /*score, validColor, invalidColor, isPaymentForm*/ 12) {
45239					each_value = ensure_array_like(Array(/*maxScore*/ ctx[8]));
45240					let i;
45241
45242					for (i = 0; i < each_value.length; i += 1) {
45243						const child_ctx = get_each_context$f(ctx, each_value, i);
45244
45245						if (each_blocks[i]) {
45246							each_blocks[i].p(child_ctx, dirty);
45247						} else {
45248							each_blocks[i] = create_each_block$f(child_ctx);
45249							each_blocks[i].c();
45250							each_blocks[i].m(div0, null);
45251						}
45252					}
45253
45254					for (; i < each_blocks.length; i += 1) {
45255						each_blocks[i].d(1);
45256					}
45257
45258					each_blocks.length = each_value.length;
45259				}
45260
45261				if (!current || dirty & /*isPaymentForm*/ 4) {
45262					toggle_class(div0, "zephr-payment-form-password-progress", /*isPaymentForm*/ ctx[2]);
45263				}
45264
45265				if (/*passwordRequirements*/ ctx[0].minLength) {
45266					if (if_block0) {
45267						if_block0.p(ctx, dirty);
45268
45269						if (dirty & /*passwordRequirements*/ 1) {
45270							transition_in(if_block0, 1);
45271						}
45272					} else {
45273						if_block0 = create_if_block_3$e(ctx);
45274						if_block0.c();
45275						transition_in(if_block0, 1);
45276						if_block0.m(ul, t1);
45277					}
45278				} else if (if_block0) {
45279					group_outros();
45280
45281					transition_out(if_block0, 1, 1, () => {
45282						if_block0 = null;
45283					});
45284
45285					check_outros();
45286				}
45287
45288				if (/*passwordRequirements*/ ctx[0].requireUppercase) {
45289					if (if_block1) {
45290						if_block1.p(ctx, dirty);
45291
45292						if (dirty & /*passwordRequirements*/ 1) {
45293							transition_in(if_block1, 1);
45294						}
45295					} else {
45296						if_block1 = create_if_block_2$j(ctx);
45297						if_block1.c();
45298						transition_in(if_block1, 1);
45299						if_block1.m(ul, t2);
45300					}
45301				} else if (if_block1) {
45302					group_outros();
45303
45304					transition_out(if_block1, 1, 1, () => {
45305						if_block1 = null;
45306					});
45307
45308					check_outros();
45309				}
45310
45311				if (/*passwordRequirements*/ ctx[0].requireNumbers) {
45312					if (if_block2) {
45313						if_block2.p(ctx, dirty);
45314
45315						if (dirty & /*passwordRequirements*/ 1) {
45316							transition_in(if_block2, 1);
45317						}
45318					} else {
45319						if_block2 = create_if_block_1$u(ctx);
45320						if_block2.c();
45321						transition_in(if_block2, 1);
45322						if_block2.m(ul, t3);
45323					}
45324				} else if (if_block2) {
45325					group_outros();
45326
45327					transition_out(if_block2, 1, 1, () => {
45328						if_block2 = null;
45329					});
45330
45331					check_outros();
45332				}
45333
45334				if (/*passwordRequirements*/ ctx[0].requireSpecialCharacters) {
45335					if (if_block3) {
45336						if_block3.p(ctx, dirty);
45337
45338						if (dirty & /*passwordRequirements*/ 1) {
45339							transition_in(if_block3, 1);
45340						}
45341					} else {
45342						if_block3 = create_if_block$G(ctx);
45343						if_block3.c();
45344						transition_in(if_block3, 1);
45345						if_block3.m(ul, null);
45346					}
45347				} else if (if_block3) {
45348					group_outros();
45349
45350					transition_out(if_block3, 1, 1, () => {
45351						if_block3 = null;
45352					});
45353
45354					check_outros();
45355				}
45356
45357				if (!current || dirty & /*isPaymentForm*/ 4) {
45358					toggle_class(div1, "zephr-payment-form-flex-container", /*isPaymentForm*/ ctx[2]);
45359				}
45360
45361				if (!current || dirty & /*isPaymentForm*/ 4) {
45362					toggle_class(div1, "zephr-payment-form-password-requirements", /*isPaymentForm*/ ctx[2]);
45363				}
45364			},
45365			i(local) {
45366				if (current) return;
45367				transition_in(if_block0);
45368				transition_in(if_block1);
45369				transition_in(if_block2);
45370				transition_in(if_block3);
45371				current = true;
45372			},
45373			o(local) {
45374				transition_out(if_block0);
45375				transition_out(if_block1);
45376				transition_out(if_block2);
45377				transition_out(if_block3);
45378				current = false;
45379			},
45380			d(detaching) {
45381				if (detaching) {
45382					detach(div0);
45383					detach(t0);
45384					detach(div1);
45385				}
45386
45387				destroy_each(each_blocks, detaching);
45388				if (if_block0) if_block0.d();
45389				if (if_block1) if_block1.d();
45390				if (if_block2) if_block2.d();
45391				if (if_block3) if_block3.d();
45392			}
45393		};
45394	}
45395
45396	const validColor = "var(--zf-password-valid-color)";
45397	const invalidColor = "var(--zf-password-invalid-color)";
45398
45399	function instance$10($$self, $$props, $$invalidate) {
45400		let hasUppercaseLetter;
45401		let hasNumber;
45402		let hasSpecialCharacter;
45403		let isLong;
45404		let { passwordRequirements } = $$props;
45405		let { passwordValidationTexts } = $$props;
45406		let { isPaymentForm = false } = $$props;
45407		let { onChange } = $$props;
45408		let { password } = $$props;
45409		let { passwordIsValid } = $$props;
45410		let score = 0;
45411
45412		let maxScore = Object.values(passwordRequirements).reduce(
45413			(acc, curr) => {
45414				return acc += curr ? 1 : 0;
45415			},
45416			0
45417		);
45418
45419		$$self.$$set = $$props => {
45420			if ('passwordRequirements' in $$props) $$invalidate(0, passwordRequirements = $$props.passwordRequirements);
45421			if ('passwordValidationTexts' in $$props) $$invalidate(1, passwordValidationTexts = $$props.passwordValidationTexts);
45422			if ('isPaymentForm' in $$props) $$invalidate(2, isPaymentForm = $$props.isPaymentForm);
45423			if ('onChange' in $$props) $$invalidate(9, onChange = $$props.onChange);
45424			if ('password' in $$props) $$invalidate(10, password = $$props.password);
45425			if ('passwordIsValid' in $$props) $$invalidate(11, passwordIsValid = $$props.passwordIsValid);
45426		};
45427
45428		$$self.$$.update = () => {
45429			if ($$self.$$.dirty & /*password*/ 1024) {
45430				$$invalidate(7, hasUppercaseLetter = (/[A-Z]+/).test(password));
45431			}
45432
45433			if ($$self.$$.dirty & /*password*/ 1024) {
45434				$$invalidate(6, hasNumber = (/[0-9]+/).test(password));
45435			}
45436
45437			if ($$self.$$.dirty & /*password*/ 1024) {
45438				$$invalidate(5, hasSpecialCharacter = (/[^a-z0-9A-Z]+/).test(password));
45439			}
45440
45441			if ($$self.$$.dirty & /*password, passwordRequirements*/ 1025) {
45442				$$invalidate(4, isLong = password?.length >= passwordRequirements.minLength);
45443			}
45444
45445			if ($$self.$$.dirty & /*password, passwordRequirements, score, passwordIsValid, onChange*/ 3593) {
45446				{
45447					$$invalidate(3, score = 0);
45448
45449					if ((/[A-Z]+/).test(password) && passwordRequirements.requireUppercase) {
45450						$$invalidate(3, score += 1);
45451					}
45452
45453					if ((/[0-9]+/).test(password) && passwordRequirements.requireNumbers) {
45454						$$invalidate(3, score += 1);
45455					}
45456
45457					if ((/[^a-z0-9A-Z]+/).test(password) && passwordRequirements.requireSpecialCharacters) {
45458						$$invalidate(3, score += 1);
45459					}
45460
45461					if (password?.length >= passwordRequirements.minLength && passwordRequirements.minLength) {
45462						$$invalidate(3, score += 1);
45463					}
45464
45465					score >= maxScore !== passwordIsValid && onChange(score >= maxScore);
45466				}
45467			}
45468		};
45469
45470		return [
45471			passwordRequirements,
45472			passwordValidationTexts,
45473			isPaymentForm,
45474			score,
45475			isLong,
45476			hasSpecialCharacter,
45477			hasNumber,
45478			hasUppercaseLetter,
45479			maxScore,
45480			onChange,
45481			password,
45482			passwordIsValid
45483		];
45484	}
45485
45486	class PasswordValidator extends SvelteComponent {
45487		constructor(options) {
45488			super();
45489
45490			init(this, options, instance$10, create_fragment$12, safe_not_equal, {
45491				passwordRequirements: 0,
45492				passwordValidationTexts: 1,
45493				isPaymentForm: 2,
45494				onChange: 9,
45495				password: 10,
45496				passwordIsValid: 11
45497			});
45498		}
45499	}
45500
45501	/* src/components/elements/password/CreatePassword.svelte generated by Svelte v4.2.12 */
45502
45503	function create_if_block_3$d(ctx) {
45504		let passwordvalidator;
45505		let current;
45506
45507		passwordvalidator = new PasswordValidator({
45508				props: {
45509					password: /*password*/ ctx[12],
45510					passwordIsValid: /*passwordIsValid*/ ctx[14],
45511					passwordRequirements: /*passwordRequirements*/ ctx[1],
45512					passwordValidationTexts: /*passwordValidationTexts*/ ctx[16],
45513					isPaymentForm: /*isPaymentForm*/ ctx[3],
45514					onChange: /*onPasswordIsValidChange*/ ctx[10]
45515				}
45516			});
45517
45518		return {
45519			c() {
45520				create_component(passwordvalidator.$$.fragment);
45521			},
45522			m(target, anchor) {
45523				mount_component(passwordvalidator, target, anchor);
45524				current = true;
45525			},
45526			p(ctx, dirty) {
45527				const passwordvalidator_changes = {};
45528				if (dirty & /*password*/ 4096) passwordvalidator_changes.password = /*password*/ ctx[12];
45529				if (dirty & /*passwordIsValid*/ 16384) passwordvalidator_changes.passwordIsValid = /*passwordIsValid*/ ctx[14];
45530				if (dirty & /*passwordRequirements*/ 2) passwordvalidator_changes.passwordRequirements = /*passwordRequirements*/ ctx[1];
45531				if (dirty & /*isPaymentForm*/ 8) passwordvalidator_changes.isPaymentForm = /*isPaymentForm*/ ctx[3];
45532				if (dirty & /*onPasswordIsValidChange*/ 1024) passwordvalidator_changes.onChange = /*onPasswordIsValidChange*/ ctx[10];
45533				passwordvalidator.$set(passwordvalidator_changes);
45534			},
45535			i(local) {
45536				if (current) return;
45537				transition_in(passwordvalidator.$$.fragment, local);
45538				current = true;
45539			},
45540			o(local) {
45541				transition_out(passwordvalidator.$$.fragment, local);
45542				current = false;
45543			},
45544			d(detaching) {
45545				destroy_component(passwordvalidator, detaching);
45546			}
45547		};
45548	}
45549
45550	// (58:0) {#if !hideConfirmPassword}
45551	function create_if_block_2$i(ctx) {
45552		let passwordinput;
45553		let current;
45554
45555		passwordinput = new PasswordInput({
45556				props: {
45557					disabled: /*disabled*/ ctx[11],
45558					password: /*confirmPassword*/ ctx[13],
45559					isMainPassword: false,
45560					label: /*config*/ ctx[0].confirm,
45561					hideLabel: /*config*/ ctx[0].hide,
45562					showLabel: /*config*/ ctx[0].show,
45563					placeholder: /*config*/ ctx[0].confirmPlaceholder,
45564					isPaymentForm: /*isPaymentForm*/ ctx[3],
45565					autocomplete: "new-password",
45566					onChange: /*onConfirmPasswordChange*/ ctx[7],
45567					onFocus: /*onConfirmPasswordFocus*/ ctx[8],
45568					onBlur: /*onConfirmPasswordBlur*/ ctx[9]
45569				}
45570			});
45571
45572		return {
45573			c() {
45574				create_component(passwordinput.$$.fragment);
45575			},
45576			m(target, anchor) {
45577				mount_component(passwordinput, target, anchor);
45578				current = true;
45579			},
45580			p(ctx, dirty) {
45581				const passwordinput_changes = {};
45582				if (dirty & /*disabled*/ 2048) passwordinput_changes.disabled = /*disabled*/ ctx[11];
45583				if (dirty & /*confirmPassword*/ 8192) passwordinput_changes.password = /*confirmPassword*/ ctx[13];
45584				if (dirty & /*config*/ 1) passwordinput_changes.label = /*config*/ ctx[0].confirm;
45585				if (dirty & /*config*/ 1) passwordinput_changes.hideLabel = /*config*/ ctx[0].hide;
45586				if (dirty & /*config*/ 1) passwordinput_changes.showLabel = /*config*/ ctx[0].show;
45587				if (dirty & /*config*/ 1) passwordinput_changes.placeholder = /*config*/ ctx[0].confirmPlaceholder;
45588				if (dirty & /*isPaymentForm*/ 8) passwordinput_changes.isPaymentForm = /*isPaymentForm*/ ctx[3];
45589				if (dirty & /*onConfirmPasswordChange*/ 128) passwordinput_changes.onChange = /*onConfirmPasswordChange*/ ctx[7];
45590				if (dirty & /*onConfirmPasswordFocus*/ 256) passwordinput_changes.onFocus = /*onConfirmPasswordFocus*/ ctx[8];
45591				if (dirty & /*onConfirmPasswordBlur*/ 512) passwordinput_changes.onBlur = /*onConfirmPasswordBlur*/ ctx[9];
45592				passwordinput.$set(passwordinput_changes);
45593			},
45594			i(local) {
45595				if (current) return;
45596				transition_in(passwordinput.$$.fragment, local);
45597				current = true;
45598			},
45599			o(local) {
45600				transition_out(passwordinput.$$.fragment, local);
45601				current = false;
45602			},
45603			d(detaching) {
45604				destroy_component(passwordinput, detaching);
45605			}
45606		};
45607	}
45608
45609	// (75:0) {#if config.passwordsMatchIndicatorEnabled}
45610	function create_if_block_1$t(ctx) {
45611		let passwordmatchindicator;
45612		let current;
45613
45614		passwordmatchindicator = new PasswordMatchIndicator({
45615				props: {
45616					password: /*password*/ ctx[12],
45617					confirmPassword: /*confirmPassword*/ ctx[13],
45618					passwordsMatchText: /*passwordValidationTexts*/ ctx[16].passwordsMatchText,
45619					isPaymentForm: /*isPaymentForm*/ ctx[3]
45620				}
45621			});
45622
45623		return {
45624			c() {
45625				create_component(passwordmatchindicator.$$.fragment);
45626			},
45627			m(target, anchor) {
45628				mount_component(passwordmatchindicator, target, anchor);
45629				current = true;
45630			},
45631			p(ctx, dirty) {
45632				const passwordmatchindicator_changes = {};
45633				if (dirty & /*password*/ 4096) passwordmatchindicator_changes.password = /*password*/ ctx[12];
45634				if (dirty & /*confirmPassword*/ 8192) passwordmatchindicator_changes.confirmPassword = /*confirmPassword*/ ctx[13];
45635				if (dirty & /*isPaymentForm*/ 8) passwordmatchindicator_changes.isPaymentForm = /*isPaymentForm*/ ctx[3];
45636				passwordmatchindicator.$set(passwordmatchindicator_changes);
45637			},
45638			i(local) {
45639				if (current) return;
45640				transition_in(passwordmatchindicator.$$.fragment, local);
45641				current = true;
45642			},
45643			o(local) {
45644				transition_out(passwordmatchindicator.$$.fragment, local);
45645				current = false;
45646			},
45647			d(detaching) {
45648				destroy_component(passwordmatchindicator, detaching);
45649			}
45650		};
45651	}
45652
45653	// (84:0) {#if error}
45654	function create_if_block$F(ctx) {
45655		let errormessage;
45656		let current;
45657
45658		errormessage = new ErrorMessage({
45659				props: {
45660					error: /*error*/ ctx[15] ?? "",
45661					isPaymentForm: /*isPaymentForm*/ ctx[3]
45662				}
45663			});
45664
45665		return {
45666			c() {
45667				create_component(errormessage.$$.fragment);
45668			},
45669			m(target, anchor) {
45670				mount_component(errormessage, target, anchor);
45671				current = true;
45672			},
45673			p(ctx, dirty) {
45674				const errormessage_changes = {};
45675				if (dirty & /*error*/ 32768) errormessage_changes.error = /*error*/ ctx[15] ?? "";
45676				if (dirty & /*isPaymentForm*/ 8) errormessage_changes.isPaymentForm = /*isPaymentForm*/ ctx[3];
45677				errormessage.$set(errormessage_changes);
45678			},
45679			i(local) {
45680				if (current) return;
45681				transition_in(errormessage.$$.fragment, local);
45682				current = true;
45683			},
45684			o(local) {
45685				transition_out(errormessage.$$.fragment, local);
45686				current = false;
45687			},
45688			d(detaching) {
45689				destroy_component(errormessage, detaching);
45690			}
45691		};
45692	}
45693
45694	function create_fragment$11(ctx) {
45695		let passwordinput;
45696		let t0;
45697		let t1;
45698		let t2;
45699		let t3;
45700		let if_block3_anchor;
45701		let current;
45702
45703		passwordinput = new PasswordInput({
45704				props: {
45705					disabled: /*disabled*/ ctx[11],
45706					password: /*password*/ ctx[12],
45707					isMainPassword: true,
45708					label: /*config*/ ctx[0].password,
45709					hideLabel: /*config*/ ctx[0].hide,
45710					showLabel: /*config*/ ctx[0].show,
45711					placeholder: /*config*/ ctx[0].placeholder,
45712					isPaymentForm: /*isPaymentForm*/ ctx[3],
45713					autocomplete: /*hideConfirmPassword*/ ctx[2]
45714					? "current-password"
45715					: "new-password",
45716					onChange: /*onPasswordChange*/ ctx[4],
45717					onFocus: /*onPasswordFocus*/ ctx[5],
45718					onBlur: /*onPasswordBlur*/ ctx[6]
45719				}
45720			});
45721
45722		let if_block0 = /*config*/ ctx[0].passValidatorEnabled && create_if_block_3$d(ctx);
45723		let if_block1 = !/*hideConfirmPassword*/ ctx[2] && create_if_block_2$i(ctx);
45724		let if_block2 = /*config*/ ctx[0].passwordsMatchIndicatorEnabled && create_if_block_1$t(ctx);
45725		let if_block3 = /*error*/ ctx[15] && create_if_block$F(ctx);
45726
45727		return {
45728			c() {
45729				create_component(passwordinput.$$.fragment);
45730				t0 = space();
45731				if (if_block0) if_block0.c();
45732				t1 = space();
45733				if (if_block1) if_block1.c();
45734				t2 = space();
45735				if (if_block2) if_block2.c();
45736				t3 = space();
45737				if (if_block3) if_block3.c();
45738				if_block3_anchor = empty();
45739			},
45740			m(target, anchor) {
45741				mount_component(passwordinput, target, anchor);
45742				insert(target, t0, anchor);
45743				if (if_block0) if_block0.m(target, anchor);
45744				insert(target, t1, anchor);
45745				if (if_block1) if_block1.m(target, anchor);
45746				insert(target, t2, anchor);
45747				if (if_block2) if_block2.m(target, anchor);
45748				insert(target, t3, anchor);
45749				if (if_block3) if_block3.m(target, anchor);
45750				insert(target, if_block3_anchor, anchor);
45751				current = true;
45752			},
45753			p(ctx, [dirty]) {
45754				const passwordinput_changes = {};
45755				if (dirty & /*disabled*/ 2048) passwordinput_changes.disabled = /*disabled*/ ctx[11];
45756				if (dirty & /*password*/ 4096) passwordinput_changes.password = /*password*/ ctx[12];
45757				if (dirty & /*config*/ 1) passwordinput_changes.label = /*config*/ ctx[0].password;
45758				if (dirty & /*config*/ 1) passwordinput_changes.hideLabel = /*config*/ ctx[0].hide;
45759				if (dirty & /*config*/ 1) passwordinput_changes.showLabel = /*config*/ ctx[0].show;
45760				if (dirty & /*config*/ 1) passwordinput_changes.placeholder = /*config*/ ctx[0].placeholder;
45761				if (dirty & /*isPaymentForm*/ 8) passwordinput_changes.isPaymentForm = /*isPaymentForm*/ ctx[3];
45762
45763				if (dirty & /*hideConfirmPassword*/ 4) passwordinput_changes.autocomplete = /*hideConfirmPassword*/ ctx[2]
45764				? "current-password"
45765				: "new-password";
45766
45767				if (dirty & /*onPasswordChange*/ 16) passwordinput_changes.onChange = /*onPasswordChange*/ ctx[4];
45768				if (dirty & /*onPasswordFocus*/ 32) passwordinput_changes.onFocus = /*onPasswordFocus*/ ctx[5];
45769				if (dirty & /*onPasswordBlur*/ 64) passwordinput_changes.onBlur = /*onPasswordBlur*/ ctx[6];
45770				passwordinput.$set(passwordinput_changes);
45771
45772				if (/*config*/ ctx[0].passValidatorEnabled) {
45773					if (if_block0) {
45774						if_block0.p(ctx, dirty);
45775
45776						if (dirty & /*config*/ 1) {
45777							transition_in(if_block0, 1);
45778						}
45779					} else {
45780						if_block0 = create_if_block_3$d(ctx);
45781						if_block0.c();
45782						transition_in(if_block0, 1);
45783						if_block0.m(t1.parentNode, t1);
45784					}
45785				} else if (if_block0) {
45786					group_outros();
45787
45788					transition_out(if_block0, 1, 1, () => {
45789						if_block0 = null;
45790					});
45791
45792					check_outros();
45793				}
45794
45795				if (!/*hideConfirmPassword*/ ctx[2]) {
45796					if (if_block1) {
45797						if_block1.p(ctx, dirty);
45798
45799						if (dirty & /*hideConfirmPassword*/ 4) {
45800							transition_in(if_block1, 1);
45801						}
45802					} else {
45803						if_block1 = create_if_block_2$i(ctx);
45804						if_block1.c();
45805						transition_in(if_block1, 1);
45806						if_block1.m(t2.parentNode, t2);
45807					}
45808				} else if (if_block1) {
45809					group_outros();
45810
45811					transition_out(if_block1, 1, 1, () => {
45812						if_block1 = null;
45813					});
45814
45815					check_outros();
45816				}
45817
45818				if (/*config*/ ctx[0].passwordsMatchIndicatorEnabled) {
45819					if (if_block2) {
45820						if_block2.p(ctx, dirty);
45821
45822						if (dirty & /*config*/ 1) {
45823							transition_in(if_block2, 1);
45824						}
45825					} else {
45826						if_block2 = create_if_block_1$t(ctx);
45827						if_block2.c();
45828						transition_in(if_block2, 1);
45829						if_block2.m(t3.parentNode, t3);
45830					}
45831				} else if (if_block2) {
45832					group_outros();
45833
45834					transition_out(if_block2, 1, 1, () => {
45835						if_block2 = null;
45836					});
45837
45838					check_outros();
45839				}
45840
45841				if (/*error*/ ctx[15]) {
45842					if (if_block3) {
45843						if_block3.p(ctx, dirty);
45844
45845						if (dirty & /*error*/ 32768) {
45846							transition_in(if_block3, 1);
45847						}
45848					} else {
45849						if_block3 = create_if_block$F(ctx);
45850						if_block3.c();
45851						transition_in(if_block3, 1);
45852						if_block3.m(if_block3_anchor.parentNode, if_block3_anchor);
45853					}
45854				} else if (if_block3) {
45855					group_outros();
45856
45857					transition_out(if_block3, 1, 1, () => {
45858						if_block3 = null;
45859					});
45860
45861					check_outros();
45862				}
45863			},
45864			i(local) {
45865				if (current) return;
45866				transition_in(passwordinput.$$.fragment, local);
45867				transition_in(if_block0);
45868				transition_in(if_block1);
45869				transition_in(if_block2);
45870				transition_in(if_block3);
45871				current = true;
45872			},
45873			o(local) {
45874				transition_out(passwordinput.$$.fragment, local);
45875				transition_out(if_block0);
45876				transition_out(if_block1);
45877				transition_out(if_block2);
45878				transition_out(if_block3);
45879				current = false;
45880			},
45881			d(detaching) {
45882				if (detaching) {
45883					detach(t0);
45884					detach(t1);
45885					detach(t2);
45886					detach(t3);
45887					detach(if_block3_anchor);
45888				}
45889
45890				destroy_component(passwordinput, detaching);
45891				if (if_block0) if_block0.d(detaching);
45892				if (if_block1) if_block1.d(detaching);
45893				if (if_block2) if_block2.d(detaching);
45894				if (if_block3) if_block3.d(detaching);
45895			}
45896		};
45897	}
45898
45899	function instance$$($$self, $$props, $$invalidate) {
45900		let { config } = $$props;
45901		let { passwordRequirements } = $$props;
45902		let { hideConfirmPassword } = $$props;
45903		let { isPaymentForm = false } = $$props;
45904		let { onPasswordChange } = $$props;
45905		let { onPasswordFocus } = $$props;
45906		let { onPasswordBlur } = $$props;
45907		let { onConfirmPasswordChange } = $$props;
45908		let { onConfirmPasswordFocus } = $$props;
45909		let { onConfirmPasswordBlur } = $$props;
45910		let { onPasswordIsValidChange } = $$props;
45911		let { disabled } = $$props;
45912		let { password } = $$props;
45913		let { confirmPassword } = $$props;
45914		let { passwordIsValid } = $$props;
45915		let { error = null } = $$props;
45916
45917		let passwordValidationTexts = {
45918			minLengthValidationText: config.minLengthValidation || `Must include at least ${passwordRequirements.minLength} characters`,
45919			uppercaseValidationText: config.uppercaseValidation || 'Must include an uppercase letter',
45920			numberValidationText: config.numberValidation || 'Must include a number character',
45921			symbolValidationText: config.symbolValidation || 'Must include a supported symbol',
45922			passwordsMatchText: config.passwordsMatchText || 'Passwords match'
45923		};
45924
45925		$$self.$$set = $$props => {
45926			if ('config' in $$props) $$invalidate(0, config = $$props.config);
45927			if ('passwordRequirements' in $$props) $$invalidate(1, passwordRequirements = $$props.passwordRequirements);
45928			if ('hideConfirmPassword' in $$props) $$invalidate(2, hideConfirmPassword = $$props.hideConfirmPassword);
45929			if ('isPaymentForm' in $$props) $$invalidate(3, isPaymentForm = $$props.isPaymentForm);
45930			if ('onPasswordChange' in $$props) $$invalidate(4, onPasswordChange = $$props.onPasswordChange);
45931			if ('onPasswordFocus' in $$props) $$invalidate(5, onPasswordFocus = $$props.onPasswordFocus);
45932			if ('onPasswordBlur' in $$props) $$invalidate(6, onPasswordBlur = $$props.onPasswordBlur);
45933			if ('onConfirmPasswordChange' in $$props) $$invalidate(7, onConfirmPasswordChange = $$props.onConfirmPasswordChange);
45934			if ('onConfirmPasswordFocus' in $$props) $$invalidate(8, onConfirmPasswordFocus = $$props.onConfirmPasswordFocus);
45935			if ('onConfirmPasswordBlur' in $$props) $$invalidate(9, onConfirmPasswordBlur = $$props.onConfirmPasswordBlur);
45936			if ('onPasswordIsValidChange' in $$props) $$invalidate(10, onPasswordIsValidChange = $$props.onPasswordIsValidChange);
45937			if ('disabled' in $$props) $$invalidate(11, disabled = $$props.disabled);
45938			if ('password' in $$props) $$invalidate(12, password = $$props.password);
45939			if ('confirmPassword' in $$props) $$invalidate(13, confirmPassword = $$props.confirmPassword);
45940			if ('passwordIsValid' in $$props) $$invalidate(14, passwordIsValid = $$props.passwordIsValid);
45941			if ('error' in $$props) $$invalidate(15, error = $$props.error);
45942		};
45943
45944		return [
45945			config,
45946			passwordRequirements,
45947			hideConfirmPassword,
45948			isPaymentForm,
45949			onPasswordChange,
45950			onPasswordFocus,
45951			onPasswordBlur,
45952			onConfirmPasswordChange,
45953			onConfirmPasswordFocus,
45954			onConfirmPasswordBlur,
45955			onPasswordIsValidChange,
45956			disabled,
45957			password,
45958			confirmPassword,
45959			passwordIsValid,
45960			error,
45961			passwordValidationTexts
45962		];
45963	}
45964
45965	class CreatePassword extends SvelteComponent {
45966		constructor(options) {
45967			super();
45968
45969			init(this, options, instance$$, create_fragment$11, safe_not_equal, {
45970				config: 0,
45971				passwordRequirements: 1,
45972				hideConfirmPassword: 2,
45973				isPaymentForm: 3,
45974				onPasswordChange: 4,
45975				onPasswordFocus: 5,
45976				onPasswordBlur: 6,
45977				onConfirmPasswordChange: 7,
45978				onConfirmPasswordFocus: 8,
45979				onConfirmPasswordBlur: 9,
45980				onPasswordIsValidChange: 10,
45981				disabled: 11,
45982				password: 12,
45983				confirmPassword: 13,
45984				passwordIsValid: 14,
45985				error: 15
45986			});
45987		}
45988	}
45989
45990	const factory$s = {
45991	    matches: (sectionElement) => sectionElement.type === elementTypes.PASSWORD && sectionElement.config?.confirm != null,
45992	    create: (form, formState, formActions, elementConfig) => ({
45993	        component: CreatePassword,
45994	        props: {
45995	            disabled: formState.isBusy,
45996	            config: elementConfig,
45997	            passwordRequirements: form.organisationConfiguration.passwordStrengthRequirements,
45998	            hideConfirmPassword: form.organisationConfiguration.hideConfirmPasswordOnRegForm,
45999	            isPaymentForm: form.formType === FormType.PAYMENT,
46000	            onPasswordChange: (value) => {
46001	                formActions.updateFormState({
46002	                    createPassword: value
46003	                });
46004	                logDataLayerEvent(form, 'zephr_form_input_change', {
46005	                    inputName: 'zephr-form-password',
46006	                    sectionId: formState.currentSection.type,
46007	                    field: 'create-password'
46008	                });
46009	            },
46010	            onPasswordFocus: () => logDataLayerEvent(form, 'zephr_form_input_focus', {
46011	                inputName: 'zephr-form-password',
46012	                sectionId: formState.currentSection.type,
46013	                field: 'create-password'
46014	            }),
46015	            onPasswordBlur: () => logDataLayerEvent(form, 'zephr_form_input_blur', {
46016	                inputName: 'zephr-form-password',
46017	                sectionId: formState.currentSection.type,
46018	                field: 'create-password'
46019	            }),
46020	            onConfirmPasswordChange: (value) => {
46021	                formActions.updateFormState({
46022	                    confirmCreatePassword: value
46023	                });
46024	                logDataLayerEvent(form, 'zephr_form_input_change', {
46025	                    inputName: 'zephr-form-confirm-password',
46026	                    sectionId: formState.currentSection.type,
46027	                    field: 'confirm-password'
46028	                });
46029	            },
46030	            onConfirmPasswordFocus: () => logDataLayerEvent(form, 'zephr_form_input_focus', {
46031	                inputName: 'zephr-form-confirm-password',
46032	                sectionId: formState.currentSection.type,
46033	                field: 'confirm-password'
46034	            }),
46035	            onConfirmPasswordBlur: () => logDataLayerEvent(form, 'zephr_form_input_blur', {
46036	                inputName: 'zephr-form-confirm-password',
46037	                sectionId: formState.currentSection.type,
46038	                field: 'confirm-password'
46039	            }),
46040	            onPasswordIsValidChange: (value) => formActions.updateFormState({
46041	                passwordIsValid: value
46042	            }),
46043	            password: formState.createPassword,
46044	            confirmPassword: formState.confirmCreatePassword,
46045	            passwordIsValid: formState.passwordIsValid
46046	        },
46047	        isValid: formState.password != null
46048	            && (!elementConfig.passValidatorEnabled || formState.passwordIsValid) && (form.organisationConfiguration.hideConfirmPasswordOnRegForm ||
46049	            formState.createPassword === formState.confirmCreatePassword),
46050	    })
46051	};
46052
46053	// TODO
46054	const isValid = (password) => password != null && password.length > 2;
46055	const factory$r = {
46056	    matches: (sectionElement) => sectionElement.type === elementTypes.PASSWORD && sectionElement.config?.confirm == null,
46057	    create: (form, formState, formActions, elementConfig) => {
46058	        const stateKey = elementConfig.isUpdatePasswordCurrentPassword ? 'currentPassword' : 'password';
46059	        return {
46060	            component: PasswordInput,
46061	            props: {
46062	                disabled: formState.isBusy,
46063	                label: elementConfig.password,
46064	                placeholder: elementConfig.placeholder,
46065	                isMainPassword: true,
46066	                showLabel: elementConfig.showLabel,
46067	                hideLabel: elementConfig.hideLabel,
46068	                password: formState[stateKey],
46069	                autocomplete: 'password',
46070	                onChange: (value) => {
46071	                    formActions.updateFormState({ [stateKey]: value });
46072	                    logDataLayerEvent(form, 'zephr_form_input_change', {
46073	                        inputName: 'zephr-form-password',
46074	                        sectionId: formState.currentSection.type,
46075	                        field: 'password'
46076	                    });
46077	                },
46078	                onFocus: () => logDataLayerEvent(form, 'zephr_form_input_focus', {
46079	                    inputName: 'zephr-form-password',
46080	                    sectionId: formState.currentSection.type,
46081	                    field: 'password'
46082	                }),
46083	                onBlur: () => logDataLayerEvent(form, 'zephr_form_input_blur', {
46084	                    inputName: 'zephr-form-password',
46085	                    sectionId: formState.currentSection.type,
46086	                    field: 'password'
46087	                }),
46088	            },
46089	            isValid: isValid(formState[stateKey])
46090	        };
46091	    }
46092	};
46093
46094	/* src/components/elements/payment/braintree/BraintreeMobilePayment.svelte generated by Svelte v4.2.12 */
46095
46096	function create_fragment$10(ctx) {
46097		let script0;
46098		let script0_src_value;
46099		let script1;
46100		let script1_src_value;
46101		let script2;
46102		let script2_src_value;
46103		let script3;
46104		let script3_src_value;
46105		let t0;
46106		let div0;
46107		let t1;
46108		let div1;
46109
46110		return {
46111			c() {
46112				script0 = element("script");
46113				script0.innerHTML = ``;
46114				script1 = element("script");
46115				script1.innerHTML = ``;
46116				script2 = element("script");
46117				script2.innerHTML = ``;
46118				script3 = element("script");
46119				script3.innerHTML = ``;
46120				t0 = space();
46121				div0 = element("div");
46122				t1 = space();
46123				div1 = element("div");
46124				div1.innerHTML = ``;
46125				if (!src_url_equal(script0.src, script0_src_value = "https://js.braintreegateway.com/web/3.85.3/js/google-payment.min.js")) attr(script0, "src", script0_src_value);
46126				if (!src_url_equal(script1.src, script1_src_value = "https://pay.google.com/gp/p/js/pay.js")) attr(script1, "src", script1_src_value);
46127				attr(script1, "onload", "window.googlePayLoadBraintreeCallback()");
46128				if (!src_url_equal(script2.src, script2_src_value = "https://js.braintreegateway.com/web/3.85.3/js/client.min.js")) attr(script2, "src", script2_src_value);
46129				attr(script2, "onload", "window.braintreeLoadCallback()");
46130				if (!src_url_equal(script3.src, script3_src_value = "https://js.braintreegateway.com/web/3.85.3/js/apple-pay.min.js")) attr(script3, "src", script3_src_value);
46131				attr(script3, "onload", "window.applePayLoadBraintreeCallback()");
46132				attr(div0, "id", "google-pay-button");
46133				attr(div0, "class", "svelte-1drqjgk");
46134				toggle_class(div0, "zephr-form-disabled-div", /*isDisabled*/ ctx[0]);
46135				toggle_class(div0, "zephr-payment-form-disabled-div", /*isDisabled*/ ctx[0]);
46136				attr(div1, "id", "apple_pay_button");
46137			},
46138			m(target, anchor) {
46139				append(document.head, script0);
46140				append(document.head, script1);
46141				append(document.head, script2);
46142				append(document.head, script3);
46143				insert(target, t0, anchor);
46144				insert(target, div0, anchor);
46145				insert(target, t1, anchor);
46146				insert(target, div1, anchor);
46147			},
46148			p(ctx, [dirty]) {
46149				if (dirty & /*isDisabled*/ 1) {
46150					toggle_class(div0, "zephr-form-disabled-div", /*isDisabled*/ ctx[0]);
46151				}
46152
46153				if (dirty & /*isDisabled*/ 1) {
46154					toggle_class(div0, "zephr-payment-form-disabled-div", /*isDisabled*/ ctx[0]);
46155				}
46156			},
46157			i: noop,
46158			o: noop,
46159			d(detaching) {
46160				if (detaching) {
46161					detach(t0);
46162					detach(div0);
46163					detach(t1);
46164					detach(div1);
46165				}
46166
46167				detach(script0);
46168				detach(script1);
46169				detach(script2);
46170				detach(script3);
46171			}
46172		};
46173	}
46174
46175	function instance$_($$self, $$props, $$invalidate) {
46176		let { onMountCallback } = $$props;
46177		let { isDisabled } = $$props;
46178		let { disableCoreDependencyHeader } = $$props;
46179		onMount(onMountCallback);
46180
46181		$$self.$$set = $$props => {
46182			if ('onMountCallback' in $$props) $$invalidate(1, onMountCallback = $$props.onMountCallback);
46183			if ('isDisabled' in $$props) $$invalidate(0, isDisabled = $$props.isDisabled);
46184			if ('disableCoreDependencyHeader' in $$props) $$invalidate(2, disableCoreDependencyHeader = $$props.disableCoreDependencyHeader);
46185		};
46186
46187		return [isDisabled, onMountCallback, disableCoreDependencyHeader];
46188	}
46189
46190	class BraintreeMobilePayment extends SvelteComponent {
46191		constructor(options) {
46192			super();
46193
46194			init(this, options, instance$_, create_fragment$10, safe_not_equal, {
46195				onMountCallback: 1,
46196				isDisabled: 0,
46197				disableCoreDependencyHeader: 2
46198			});
46199		}
46200	}
46201
46202	/* src/components/elements/payment/braintree/BraintreePayment.svelte generated by Svelte v4.2.12 */
46203
46204	function create_fragment$$(ctx) {
46205		let script;
46206		let script_src_value;
46207		let t0;
46208		let div;
46209		let t1;
46210		let errormessage;
46211		let current;
46212
46213		errormessage = new ErrorMessage({
46214				props: {
46215					error: /*providerError*/ ctx[0]?.message ?? /*error*/ ctx[2] ?? "",
46216					isPaymentForm: true
46217				}
46218			});
46219
46220		return {
46221			c() {
46222				script = element("script");
46223				script.innerHTML = ``;
46224				t0 = space();
46225				div = element("div");
46226				t1 = space();
46227				create_component(errormessage.$$.fragment);
46228				if (!src_url_equal(script.src, script_src_value = "https://js.braintreegateway.com/web/dropin/1.33.2/js/dropin.min.js")) attr(script, "src", script_src_value);
46229				attr(script, "onload", "window.braintreeLoadCallback()");
46230				attr(div, "id", "braintree-dropin-container");
46231				attr(div, "class", "svelte-w52z2j");
46232				toggle_class(div, "zephr-form-disabled-div", /*isDisabled*/ ctx[1]);
46233				toggle_class(div, "zephr-payment-form-disabled-div", /*isDisabled*/ ctx[1]);
46234			},
46235			m(target, anchor) {
46236				append(document.head, script);
46237				insert(target, t0, anchor);
46238				insert(target, div, anchor);
46239				insert(target, t1, anchor);
46240				mount_component(errormessage, target, anchor);
46241				current = true;
46242			},
46243			p(ctx, [dirty]) {
46244				if (!current || dirty & /*isDisabled*/ 2) {
46245					toggle_class(div, "zephr-form-disabled-div", /*isDisabled*/ ctx[1]);
46246				}
46247
46248				if (!current || dirty & /*isDisabled*/ 2) {
46249					toggle_class(div, "zephr-payment-form-disabled-div", /*isDisabled*/ ctx[1]);
46250				}
46251
46252				const errormessage_changes = {};
46253				if (dirty & /*providerError, error*/ 5) errormessage_changes.error = /*providerError*/ ctx[0]?.message ?? /*error*/ ctx[2] ?? "";
46254				errormessage.$set(errormessage_changes);
46255			},
46256			i(local) {
46257				if (current) return;
46258				transition_in(errormessage.$$.fragment, local);
46259				current = true;
46260			},
46261			o(local) {
46262				transition_out(errormessage.$$.fragment, local);
46263				current = false;
46264			},
46265			d(detaching) {
46266				if (detaching) {
46267					detach(t0);
46268					detach(div);
46269					detach(t1);
46270				}
46271
46272				detach(script);
46273				destroy_component(errormessage, detaching);
46274			}
46275		};
46276	}
46277
46278	function instance$Z($$self, $$props, $$invalidate) {
46279		let { onMountCallback } = $$props;
46280		let { providerError } = $$props;
46281		let { isDisabled } = $$props;
46282		let { isLoaded } = $$props;
46283		let { error = null } = $$props;
46284		onMount(onMountCallback);
46285
46286		$$self.$$set = $$props => {
46287			if ('onMountCallback' in $$props) $$invalidate(3, onMountCallback = $$props.onMountCallback);
46288			if ('providerError' in $$props) $$invalidate(0, providerError = $$props.providerError);
46289			if ('isDisabled' in $$props) $$invalidate(1, isDisabled = $$props.isDisabled);
46290			if ('isLoaded' in $$props) $$invalidate(4, isLoaded = $$props.isLoaded);
46291			if ('error' in $$props) $$invalidate(2, error = $$props.error);
46292		};
46293
46294		return [providerError, isDisabled, error, onMountCallback, isLoaded];
46295	}
46296
46297	class BraintreePayment extends SvelteComponent {
46298		constructor(options) {
46299			super();
46300
46301			init(this, options, instance$Z, create_fragment$$, safe_not_equal, {
46302				onMountCallback: 3,
46303				providerError: 0,
46304				isDisabled: 1,
46305				isLoaded: 4,
46306				error: 2
46307			});
46308		}
46309	}
46310
46311	/* src/components/elements/payment/stripe/StripePayment.svelte generated by Svelte v4.2.12 */
46312
46313	function create_fragment$_(ctx) {
46314		let script;
46315		let script_src_value;
46316		let t0;
46317		let div;
46318		let t1;
46319		let errormessage;
46320		let current;
46321
46322		errormessage = new ErrorMessage({
46323				props: {
46324					error: /*providerError*/ ctx[0]?.message ?? (/*isComplete*/ ctx[2] ? /*error*/ ctx[3] : "") ?? "",
46325					isPaymentForm: true
46326				}
46327			});
46328
46329		return {
46330			c() {
46331				script = element("script");
46332				script.innerHTML = ``;
46333				t0 = space();
46334				div = element("div");
46335				t1 = space();
46336				create_component(errormessage.$$.fragment);
46337				if (!src_url_equal(script.src, script_src_value = "https://js.stripe.com/v3/")) attr(script, "src", script_src_value);
46338				attr(script, "onload", "window.stripeLoadCallback()");
46339				attr(div, "id", /*id*/ ctx[4]);
46340				attr(div, "class", "stripe-element svelte-1bi6tmz");
46341				toggle_class(div, "zephr-form-disabled-div", /*isDisabled*/ ctx[1]);
46342				toggle_class(div, "zephr-payment-form-disabled-div", /*isDisabled*/ ctx[1]);
46343			},
46344			m(target, anchor) {
46345				append(document.head, script);
46346				insert(target, t0, anchor);
46347				insert(target, div, anchor);
46348				insert(target, t1, anchor);
46349				mount_component(errormessage, target, anchor);
46350				current = true;
46351			},
46352			p(ctx, [dirty]) {
46353				if (!current || dirty & /*isDisabled*/ 2) {
46354					toggle_class(div, "zephr-form-disabled-div", /*isDisabled*/ ctx[1]);
46355				}
46356
46357				if (!current || dirty & /*isDisabled*/ 2) {
46358					toggle_class(div, "zephr-payment-form-disabled-div", /*isDisabled*/ ctx[1]);
46359				}
46360
46361				const errormessage_changes = {};
46362				if (dirty & /*providerError, isComplete, error*/ 13) errormessage_changes.error = /*providerError*/ ctx[0]?.message ?? (/*isComplete*/ ctx[2] ? /*error*/ ctx[3] : "") ?? "";
46363				errormessage.$set(errormessage_changes);
46364			},
46365			i(local) {
46366				if (current) return;
46367				transition_in(errormessage.$$.fragment, local);
46368				current = true;
46369			},
46370			o(local) {
46371				transition_out(errormessage.$$.fragment, local);
46372				current = false;
46373			},
46374			d(detaching) {
46375				if (detaching) {
46376					detach(t0);
46377					detach(div);
46378					detach(t1);
46379				}
46380
46381				detach(script);
46382				destroy_component(errormessage, detaching);
46383			}
46384		};
46385	}
46386
46387	function instance$Y($$self, $$props, $$invalidate) {
46388		let { onMountCallback } = $$props;
46389		let { providerError } = $$props;
46390		let { isDisabled } = $$props;
46391		let { isComplete } = $$props;
46392		let { isLoaded } = $$props;
46393		let { error = null } = $$props;
46394		let { formKey } = $$props;
46395		const id = `stripe-element-${formKey}`;
46396		onMount(onMountCallback);
46397
46398		$$self.$$set = $$props => {
46399			if ('onMountCallback' in $$props) $$invalidate(5, onMountCallback = $$props.onMountCallback);
46400			if ('providerError' in $$props) $$invalidate(0, providerError = $$props.providerError);
46401			if ('isDisabled' in $$props) $$invalidate(1, isDisabled = $$props.isDisabled);
46402			if ('isComplete' in $$props) $$invalidate(2, isComplete = $$props.isComplete);
46403			if ('isLoaded' in $$props) $$invalidate(6, isLoaded = $$props.isLoaded);
46404			if ('error' in $$props) $$invalidate(3, error = $$props.error);
46405			if ('formKey' in $$props) $$invalidate(7, formKey = $$props.formKey);
46406		};
46407
46408		return [
46409			providerError,
46410			isDisabled,
46411			isComplete,
46412			error,
46413			id,
46414			onMountCallback,
46415			isLoaded,
46416			formKey
46417		];
46418	}
46419
46420	class StripePayment extends SvelteComponent {
46421		constructor(options) {
46422			super();
46423
46424			init(this, options, instance$Y, create_fragment$_, safe_not_equal, {
46425				onMountCallback: 5,
46426				providerError: 0,
46427				isDisabled: 1,
46428				isComplete: 2,
46429				isLoaded: 6,
46430				error: 3,
46431				formKey: 7
46432			});
46433		}
46434	}
46435
46436	/* src/components/elements/payment/stripe/StripeMobilePayment.svelte generated by Svelte v4.2.12 */
46437
46438	function create_if_block$E(ctx) {
46439		let script;
46440		let script_src_value;
46441
46442		return {
46443			c() {
46444				script = element("script");
46445				script.innerHTML = ``;
46446				if (!src_url_equal(script.src, script_src_value = "https://js.stripe.com/v3/")) attr(script, "src", script_src_value);
46447				attr(script, "onload", "window.stripeLoadCallback()");
46448			},
46449			m(target, anchor) {
46450				insert(target, script, anchor);
46451			},
46452			d(detaching) {
46453				if (detaching) {
46454					detach(script);
46455				}
46456			}
46457		};
46458	}
46459
46460	function create_fragment$Z(ctx) {
46461		let script;
46462		let script_src_value;
46463		let if_block_anchor;
46464		let t;
46465		let div;
46466		let if_block = !/*disableCoreDependencyHeader*/ ctx[1] && create_if_block$E();
46467
46468		return {
46469			c() {
46470				script = element("script");
46471				script.innerHTML = ``;
46472				if (if_block) if_block.c();
46473				if_block_anchor = empty();
46474				t = space();
46475				div = element("div");
46476				if (!src_url_equal(script.src, script_src_value = "https://pay.google.com/gp/p/js/pay.js")) attr(script, "src", script_src_value);
46477				attr(script, "onload", "window.googlePayLoadStripeCallback()");
46478				attr(div, "id", "stripe-mobile-pay-button");
46479				attr(div, "class", "svelte-12ehv8b");
46480				toggle_class(div, "zephr-form-disabled-div", /*isDisabled*/ ctx[0]);
46481				toggle_class(div, "zephr-payment-form-disabled-div", /*isDisabled*/ ctx[0]);
46482			},
46483			m(target, anchor) {
46484				append(document.head, script);
46485				if (if_block) if_block.m(document.head, null);
46486				append(document.head, if_block_anchor);
46487				insert(target, t, anchor);
46488				insert(target, div, anchor);
46489			},
46490			p(ctx, [dirty]) {
46491				if (!/*disableCoreDependencyHeader*/ ctx[1]) {
46492					if (if_block) ; else {
46493						if_block = create_if_block$E();
46494						if_block.c();
46495						if_block.m(if_block_anchor.parentNode, if_block_anchor);
46496					}
46497				} else if (if_block) {
46498					if_block.d(1);
46499					if_block = null;
46500				}
46501
46502				if (dirty & /*isDisabled*/ 1) {
46503					toggle_class(div, "zephr-form-disabled-div", /*isDisabled*/ ctx[0]);
46504				}
46505
46506				if (dirty & /*isDisabled*/ 1) {
46507					toggle_class(div, "zephr-payment-form-disabled-div", /*isDisabled*/ ctx[0]);
46508				}
46509			},
46510			i: noop,
46511			o: noop,
46512			d(detaching) {
46513				if (detaching) {
46514					detach(t);
46515					detach(div);
46516				}
46517
46518				detach(script);
46519				if (if_block) if_block.d(detaching);
46520				detach(if_block_anchor);
46521			}
46522		};
46523	}
46524
46525	function instance$X($$self, $$props, $$invalidate) {
46526		let { onMountCallback } = $$props;
46527		let { isDisabled } = $$props;
46528		let { disableCoreDependencyHeader } = $$props;
46529		onMount(onMountCallback);
46530
46531		$$self.$$set = $$props => {
46532			if ('onMountCallback' in $$props) $$invalidate(2, onMountCallback = $$props.onMountCallback);
46533			if ('isDisabled' in $$props) $$invalidate(0, isDisabled = $$props.isDisabled);
46534			if ('disableCoreDependencyHeader' in $$props) $$invalidate(1, disableCoreDependencyHeader = $$props.disableCoreDependencyHeader);
46535		};
46536
46537		return [isDisabled, disableCoreDependencyHeader, onMountCallback];
46538	}
46539
46540	class StripeMobilePayment extends SvelteComponent {
46541		constructor(options) {
46542			super();
46543
46544			init(this, options, instance$X, create_fragment$Z, safe_not_equal, {
46545				onMountCallback: 2,
46546				isDisabled: 0,
46547				disableCoreDependencyHeader: 1
46548			});
46549		}
46550	}
46551
46552	/* src/components/elements/Spinner.svelte generated by Svelte v4.2.12 */
46553
46554	function create_fragment$Y(ctx) {
46555		let div;
46556		let fa;
46557		let current;
46558
46559		fa = new Fa({
46560				props: { size: "2x", icon: faSpinner, spin: true }
46561			});
46562
46563		return {
46564			c() {
46565				div = element("div");
46566				create_component(fa.$$.fragment);
46567				attr(div, "class", "spinner-container svelte-1c5ov4v");
46568			},
46569			m(target, anchor) {
46570				insert(target, div, anchor);
46571				mount_component(fa, div, null);
46572				current = true;
46573			},
46574			p: noop,
46575			i(local) {
46576				if (current) return;
46577				transition_in(fa.$$.fragment, local);
46578				current = true;
46579			},
46580			o(local) {
46581				transition_out(fa.$$.fragment, local);
46582				current = false;
46583			},
46584			d(detaching) {
46585				if (detaching) {
46586					detach(div);
46587				}
46588
46589				destroy_component(fa);
46590			}
46591		};
46592	}
46593
46594	class Spinner extends SvelteComponent {
46595		constructor(options) {
46596			super();
46597			init(this, options, null, create_fragment$Y, safe_not_equal, {});
46598		}
46599	}
46600
46601	/* src/components/elements/payment/zuora/ZuoraPayment.svelte generated by Svelte v4.2.12 */
46602
46603	function create_if_block_1$s(ctx) {
46604		let spinner;
46605		let current;
46606		spinner = new Spinner({});
46607
46608		return {
46609			c() {
46610				create_component(spinner.$$.fragment);
46611			},
46612			m(target, anchor) {
46613				mount_component(spinner, target, anchor);
46614				current = true;
46615			},
46616			i(local) {
46617				if (current) return;
46618				transition_in(spinner.$$.fragment, local);
46619				current = true;
46620			},
46621			o(local) {
46622				transition_out(spinner.$$.fragment, local);
46623				current = false;
46624			},
46625			d(detaching) {
46626				destroy_component(spinner, detaching);
46627			}
46628		};
46629	}
46630
46631	// (19:4) {#if isBusy}
46632	function create_if_block$D(ctx) {
46633		let div;
46634		let spinner;
46635		let current;
46636		spinner = new Spinner({});
46637
46638		return {
46639			c() {
46640				div = element("div");
46641				create_component(spinner.$$.fragment);
46642				attr(div, "class", "spinner-overlay svelte-1vnsk3p");
46643			},
46644			m(target, anchor) {
46645				insert(target, div, anchor);
46646				mount_component(spinner, div, null);
46647				current = true;
46648			},
46649			i(local) {
46650				if (current) return;
46651				transition_in(spinner.$$.fragment, local);
46652				current = true;
46653			},
46654			o(local) {
46655				transition_out(spinner.$$.fragment, local);
46656				current = false;
46657			},
46658			d(detaching) {
46659				if (detaching) {
46660					detach(div);
46661				}
46662
46663				destroy_component(spinner);
46664			}
46665		};
46666	}
46667
46668	function create_fragment$X(ctx) {
46669		let t0;
46670		let div1;
46671		let t1;
46672		let div0;
46673		let div0_class_value;
46674		let div1_class_value;
46675		let t2;
46676		let div2;
46677		let t3;
46678		let errormessage;
46679		let current;
46680		let if_block0 = !/*isLoaded*/ ctx[2] && create_if_block_1$s();
46681		let if_block1 = /*isBusy*/ ctx[3] && create_if_block$D();
46682
46683		errormessage = new ErrorMessage({
46684				props: {
46685					error: /*providerError*/ ctx[1]?.message ?? /*error*/ ctx[4] ?? "",
46686					isPaymentForm: true
46687				}
46688			});
46689
46690		return {
46691			c() {
46692				if (if_block0) if_block0.c();
46693				t0 = space();
46694				div1 = element("div");
46695				if (if_block1) if_block1.c();
46696				t1 = space();
46697				div0 = element("div");
46698				t2 = space();
46699				div2 = element("div");
46700				t3 = space();
46701				create_component(errormessage.$$.fragment);
46702				attr(div0, "id", "zuora_payment");
46703
46704				attr(div0, "class", div0_class_value = "" + (null_to_empty(/*isDisabled*/ ctx[0]
46705				? "zuora-disabled-iframe-container zuora-dynamic-form-disabled"
46706				: "") + " svelte-1vnsk3p"));
46707
46708				attr(div1, "class", div1_class_value = "" + (null_to_empty(/*isBusy*/ ctx[3]
46709				? "zuora-dynamic-form-disabled form-wrapper"
46710				: "form-wrapper") + " svelte-1vnsk3p"));
46711
46712				attr(div2, "id", "core-style");
46713			},
46714			m(target, anchor) {
46715				if (if_block0) if_block0.m(target, anchor);
46716				insert(target, t0, anchor);
46717				insert(target, div1, anchor);
46718				if (if_block1) if_block1.m(div1, null);
46719				append(div1, t1);
46720				append(div1, div0);
46721				insert(target, t2, anchor);
46722				insert(target, div2, anchor);
46723				insert(target, t3, anchor);
46724				mount_component(errormessage, target, anchor);
46725				current = true;
46726			},
46727			p(ctx, [dirty]) {
46728				if (!/*isLoaded*/ ctx[2]) {
46729					if (if_block0) {
46730						if (dirty & /*isLoaded*/ 4) {
46731							transition_in(if_block0, 1);
46732						}
46733					} else {
46734						if_block0 = create_if_block_1$s();
46735						if_block0.c();
46736						transition_in(if_block0, 1);
46737						if_block0.m(t0.parentNode, t0);
46738					}
46739				} else if (if_block0) {
46740					group_outros();
46741
46742					transition_out(if_block0, 1, 1, () => {
46743						if_block0 = null;
46744					});
46745
46746					check_outros();
46747				}
46748
46749				if (/*isBusy*/ ctx[3]) {
46750					if (if_block1) {
46751						if (dirty & /*isBusy*/ 8) {
46752							transition_in(if_block1, 1);
46753						}
46754					} else {
46755						if_block1 = create_if_block$D();
46756						if_block1.c();
46757						transition_in(if_block1, 1);
46758						if_block1.m(div1, t1);
46759					}
46760				} else if (if_block1) {
46761					group_outros();
46762
46763					transition_out(if_block1, 1, 1, () => {
46764						if_block1 = null;
46765					});
46766
46767					check_outros();
46768				}
46769
46770				if (!current || dirty & /*isDisabled*/ 1 && div0_class_value !== (div0_class_value = "" + (null_to_empty(/*isDisabled*/ ctx[0]
46771				? "zuora-disabled-iframe-container zuora-dynamic-form-disabled"
46772				: "") + " svelte-1vnsk3p"))) {
46773					attr(div0, "class", div0_class_value);
46774				}
46775
46776				if (!current || dirty & /*isBusy*/ 8 && div1_class_value !== (div1_class_value = "" + (null_to_empty(/*isBusy*/ ctx[3]
46777				? "zuora-dynamic-form-disabled form-wrapper"
46778				: "form-wrapper") + " svelte-1vnsk3p"))) {
46779					attr(div1, "class", div1_class_value);
46780				}
46781
46782				const errormessage_changes = {};
46783				if (dirty & /*providerError, error*/ 18) errormessage_changes.error = /*providerError*/ ctx[1]?.message ?? /*error*/ ctx[4] ?? "";
46784				errormessage.$set(errormessage_changes);
46785			},
46786			i(local) {
46787				if (current) return;
46788				transition_in(if_block0);
46789				transition_in(if_block1);
46790				transition_in(errormessage.$$.fragment, local);
46791				current = true;
46792			},
46793			o(local) {
46794				transition_out(if_block0);
46795				transition_out(if_block1);
46796				transition_out(errormessage.$$.fragment, local);
46797				current = false;
46798			},
46799			d(detaching) {
46800				if (detaching) {
46801					detach(t0);
46802					detach(div1);
46803					detach(t2);
46804					detach(div2);
46805					detach(t3);
46806				}
46807
46808				if (if_block0) if_block0.d(detaching);
46809				if (if_block1) if_block1.d();
46810				destroy_component(errormessage, detaching);
46811			}
46812		};
46813	}
46814
46815	function instance$W($$self, $$props, $$invalidate) {
46816		let { onMountCallback } = $$props;
46817		let { isDisabled } = $$props;
46818		let { providerError } = $$props;
46819		let { isLoaded } = $$props;
46820		let { isBusy } = $$props;
46821		let { error = null } = $$props;
46822		onMount(onMountCallback);
46823
46824		$$self.$$set = $$props => {
46825			if ('onMountCallback' in $$props) $$invalidate(5, onMountCallback = $$props.onMountCallback);
46826			if ('isDisabled' in $$props) $$invalidate(0, isDisabled = $$props.isDisabled);
46827			if ('providerError' in $$props) $$invalidate(1, providerError = $$props.providerError);
46828			if ('isLoaded' in $$props) $$invalidate(2, isLoaded = $$props.isLoaded);
46829			if ('isBusy' in $$props) $$invalidate(3, isBusy = $$props.isBusy);
46830			if ('error' in $$props) $$invalidate(4, error = $$props.error);
46831		};
46832
46833		return [isDisabled, providerError, isLoaded, isBusy, error, onMountCallback];
46834	}
46835
46836	class ZuoraPayment extends SvelteComponent {
46837		constructor(options) {
46838			super();
46839
46840			init(this, options, instance$W, create_fragment$X, safe_not_equal, {
46841				onMountCallback: 5,
46842				isDisabled: 0,
46843				providerError: 1,
46844				isLoaded: 2,
46845				isBusy: 3,
46846				error: 4
46847			});
46848		}
46849	}
46850
46851	/* src/components/elements/payment/zuora/ZuoraPreLoader.svelte generated by Svelte v4.2.12 */
46852
46853	function create_fragment$W(ctx) {
46854		let script;
46855		let script_src_value;
46856
46857		return {
46858			c() {
46859				script = element("script");
46860				script.innerHTML = ``;
46861				attr(script, "type", "text/javascript");
46862				if (!src_url_equal(script.src, script_src_value = "https://static.zuora.com/Resources/libs/hosted/1.3.1/zuora-min.js")) attr(script, "src", script_src_value);
46863				attr(script, "onload", "window.zuoraLoadCallback()");
46864			},
46865			m(target, anchor) {
46866				append(document.head, script);
46867			},
46868			p: noop,
46869			i: noop,
46870			o: noop,
46871			d(detaching) {
46872				detach(script);
46873			}
46874		};
46875	}
46876
46877	function instance$V($$self, $$props, $$invalidate) {
46878		let { onMountCallback } = $$props;
46879		onMount(onMountCallback);
46880
46881		$$self.$$set = $$props => {
46882			if ('onMountCallback' in $$props) $$invalidate(0, onMountCallback = $$props.onMountCallback);
46883		};
46884
46885		return [onMountCallback];
46886	}
46887
46888	class ZuoraPreLoader extends SvelteComponent {
46889		constructor(options) {
46890			super();
46891			init(this, options, instance$V, create_fragment$W, safe_not_equal, { onMountCallback: 0 });
46892		}
46893	}
46894
46895	const paymentProviders = {
46896	    BRAINTREE: 'braintree',
46897	    STRIPE: 'stripe',
46898	    ZUORA: 'zuora-billing',
46899	};
46900
46901	const defaultHeaders = new Headers();
46902	defaultHeaders.append("Content-Type", "application/json");
46903	defaultHeaders.append("Accept", "application/json");
46904	const request = async (url, options, formActions, busyKey = null, clearFormErrors = false) => {
46905	    if (!clearFormErrors) {
46906	        formActions.updateFormState({
46907	            serverErrors: []
46908	        });
46909	    }
46910	    formActions.incrementRequestCount(busyKey);
46911	    try {
46912	        return await fetch(`${formActions.apiUrlBase}/${url}`, {
46913	            method: options.method,
46914	            body: options.bodyObject == null ? undefined : JSON.stringify(options.bodyObject),
46915	            headers: defaultHeaders,
46916	            credentials: "include"
46917	        });
46918	    }
46919	    finally {
46920	        formActions.decrementRequestCount(busyKey);
46921	    }
46922	};
46923
46924	const isOneOffPurchase = (paymentOption) => paymentOption.type === 'ONE_OFF';
46925	const getChangeSubscriptionPaymentConfiguration = (form, formState) => {
46926	    const paymentConfig = formConfigAs(form);
46927	    const environmentKey = formState.paymentOption?.virtualEnvironment || 'live';
46928	    if (formState.requiresPaymentMethodSetup && paymentConfig.paymentMethodSetupFormConfig) {
46929	        const setupConfig = paymentConfig.paymentMethodSetupFormConfig[environmentKey];
46930	        if (setupConfig) {
46931	            return setupConfig;
46932	        }
46933	    }
46934	    // Virtual environments for change subscription
46935	    if (paymentConfig.virtualEnvironmentsPaymentProviderFormConfig &&
46936	        formState.paymentOption?.virtualEnvironment) {
46937	        const envConfig = paymentConfig.virtualEnvironmentsPaymentProviderFormConfig[environmentKey];
46938	        if (envConfig) {
46939	            return envConfig;
46940	        }
46941	    }
46942	    // 3. Fallback to regular config
46943	    return paymentConfig.paymentProviderFormConfig;
46944	};
46945	const mapToPayRequest = (form, formState, paymentProvider, vendorFields) => {
46946	    if (formState.paymentOption.pricePointId) {
46947	        return {
46948	            url: `blaize/payment/${paymentProvider}/buy`,
46949	            body: {
46950	                product_id: formState.paymentOption.productId,
46951	                price_point_id: formState.paymentOption.slug,
46952	                discount_code: formState.promoCodeValid ? formState.promoCode : undefined,
46953	                ...vendorFields
46954	            }
46955	        };
46956	    }
46957	    let endpoint;
46958	    let method;
46959	    let changeSubscriptionBodyParams = {};
46960	    if (formConfigAs(form).changeSubscriptionMode || formState.convertCancelSubscriptionToAcceptOffer) {
46961	        let subscriptionExternalId;
46962	        if (formState.convertCancelSubscriptionToAcceptOffer) {
46963	            // For cancel save offers, use the selected subscription
46964	            subscriptionExternalId = formState.selectedSubscription.externalId;
46965	        }
46966	        else {
46967	            // For regular change subscription, find from validChangeFromPlans
46968	            const changingFromSubscription = formState
46969	                .validChangeFromPlans
46970	                .find(plan => formState.paymentOption.slug === plan.planSlug && formState.paymentOption.productId === plan.productId)
46971	                .changesFromSubscription;
46972	            subscriptionExternalId = changingFromSubscription.externalId;
46973	        }
46974	        endpoint = `subscriptions/${subscriptionExternalId}`;
46975	        method = 'PATCH';
46976	        changeSubscriptionBodyParams = {
46977	            navigated_from: `ChangeForm ${window.location.href}`
46978	        };
46979	    }
46980	    else if (isOneOffPurchase(formState.paymentOption)) {
46981	        endpoint = 'payment/buy';
46982	        method = 'POST';
46983	    }
46984	    else {
46985	        endpoint = 'subscribe';
46986	        method = 'POST';
46987	    }
46988	    return {
46989	        url: `zephr/${endpoint}`,
46990	        method,
46991	        body: {
46992	            product_id: formState.paymentOption.productId,
46993	            plan_id: formState.paymentOption.slug,
46994	            discount_code: formState.promoCodeValid ? formState.promoCode : undefined,
46995	            ...changeSubscriptionBodyParams,
46996	            vendor_fields: vendorFields ?? {}
46997	        }
46998	    };
46999	};
47000
47001	const tokenPath = 'blaize/payment/braintree/token';
47002	let braintreeInstance;
47003	const loadBraintree = new Promise(function (resolve) {
47004	    window.braintreeLoadCallback = resolve;
47005	});
47006	// https://braintree.github.io/braintree-web-drop-in/docs/current/module-braintree-web-drop-in.html#~paypalCreateOptions
47007	const paypalConfiguration = (formState) => ({
47008	    flow: formState.paymentOption.type === 'ONE_OFF' ? 'checkout' : 'vault',
47009	    singleUse: true,
47010	    buttonStyle: {
47011	        shape: 'rect',
47012	        size: 'medium'
47013	    },
47014	    // Show 'continue' button rather than 'pay now' on the PayPal modal
47015	    commit: false,
47016	    currency: formState.paymentOption.currencyCode.toLowerCase(),
47017	    amount: formState.paymentOptionPrices.totalPrice,
47018	});
47019	const getBraintreeToken = (formState, formActions) => request(tokenPath, {
47020	    method: "GET"
47021	}, formActions, null, true)
47022	    .then(response => response.json())
47023	    .then(json => json.token);
47024	const loadBraintreeUi = (form, formState, formActions) => {
47025	    const paypalEnabled = formConfigAs(form).paymentProviderFormConfig?.enablePaypal;
47026	    formActions.incrementRequestCount();
47027	    void loadBraintree
47028	        .then(() => getBraintreeToken(formState, formActions))
47029	        .then((braintreeToken) => {
47030	        window.braintree.dropin.create({
47031	            authorization: braintreeToken,
47032	            container: '#braintree-dropin-container',
47033	            ...(paypalEnabled ? {
47034	                paypal: paypalConfiguration(formState)
47035	            } : {})
47036	        }, (createErr, instance) => {
47037	            formActions.decrementRequestCount();
47038	            braintreeInstance = instance;
47039	            formActions.updateFormState({
47040	                paymentProviderFormLoaded: true,
47041	            });
47042	            if (createErr) {
47043	                throw createErr;
47044	            }
47045	            // If this is an existing user, they may already have a payment option and paymentMethodRequestable won't be fired
47046	            if (braintreeInstance.isPaymentMethodRequestable()) {
47047	                formActions.updateFormState({
47048	                    paymentFormComplete: true
47049	                });
47050	            }
47051	            braintreeInstance.on('paymentMethodRequestable', () => {
47052	                formActions.updateFormState({
47053	                    paymentFormComplete: true
47054	                });
47055	            });
47056	            braintreeInstance.on('noPaymentMethodRequestable', () => {
47057	                formActions.updateFormState({
47058	                    paymentFormComplete: false
47059	                });
47060	            });
47061	        });
47062	    }).catch(err => {
47063	        console.error(err);
47064	        formActions.decrementRequestCount();
47065	    });
47066	};
47067	const braintreePay = async (form, formState, formActions) => {
47068	    formActions.incrementRequestCount();
47069	    let resolveHandle, rejectHandle;
47070	    const promise = new Promise((resolve, reject) => { resolveHandle = resolve, rejectHandle = reject; });
47071	    const success = () => {
47072	        formActions.decrementRequestCount();
47073	        resolveHandle();
47074	    };
47075	    const errored = (err) => {
47076	        console.error(err);
47077	        formActions.decrementRequestCount();
47078	        rejectHandle();
47079	    };
47080	    braintreeInstance.requestPaymentMethod((err, payload) => {
47081	        if (err || !payload) {
47082	            errored(`Error requesting payment method ${JSON.stringify(err)}`);
47083	        }
47084	        const { url, body, method } = mapToPayRequest(form, formState, paymentProviders.BRAINTREE, {
47085	            payment_nonce: payload.nonce,
47086	            ...(payload.type === 'PayPalAccount' ? { paypal: true } : {})
47087	        });
47088	        return request(url, {
47089	            method,
47090	            bodyObject: body
47091	        }, formActions)
47092	            .then(response => {
47093	            if (response?.ok) {
47094	                success();
47095	                return;
47096	            }
47097	            errored(response);
47098	        }).catch((err) => {
47099	            errored(err);
47100	        });
47101	    });
47102	    return promise;
47103	};
47104	const braintreeChangePayment = async (form, formState, formActions) => {
47105	    let resolveHandle, rejectHandle;
47106	    const promise = new Promise((resolve, reject) => { resolveHandle = resolve, rejectHandle = reject; });
47107	    braintreeInstance.requestPaymentMethod((err, payload) => {
47108	        if (err || !payload) {
47109	            console.error(`Error requesting payment method ${JSON.stringify(err)}`);
47110	        }
47111	        return request(`blaize/payment/braintree/subscriptions/${formState.selectedSubscription?.externalId}`, {
47112	            method: 'PATCH',
47113	            bodyObject: {
47114	                payment_method_nonce: payload?.nonce,
47115	            }
47116	        }, formActions)
47117	            .then(response => {
47118	            console.log(response);
47119	            if (response?.ok) {
47120	                resolveHandle();
47121	                return;
47122	            }
47123	            rejectHandle(response);
47124	        }).catch((err) => {
47125	            rejectHandle(err);
47126	        });
47127	    });
47128	    return promise;
47129	};
47130
47131	/**
47132	 * Mobile (Social) payment services
47133	 *
47134	 * note: Using a string-backed enum here for better debug logging.
47135	 */
47136	var MobilePaymentService;
47137	(function (MobilePaymentService) {
47138	    MobilePaymentService["GOOGLE_PAY"] = "GOOGLE_PAY";
47139	    MobilePaymentService["APPLE_PAY"] = "APPLE_PAY";
47140	})(MobilePaymentService || (MobilePaymentService = {}));
47141
47142	const loadGooglePay$1 = new Promise(function (resolve) {
47143	    window.googlePayLoadBraintreeCallback = resolve;
47144	});
47145	const loadBraintreeApplePay = new Promise(function (resolve) {
47146	    window.applePayLoadBraintreeCallback = resolve;
47147	});
47148	const braintreePayWithMobile = (form, formState, formActions) => {
47149	    const { url, body, method } = mapToPayRequest(form, formState, paymentProviders.BRAINTREE, {
47150	        payment_nonce: formState.mobilePaymentMethodId,
47151	        vault_payment_method: true
47152	    });
47153	    return request(url, {
47154	        method,
47155	        bodyObject: body
47156	    }, formActions)
47157	        .then(response => {
47158	        if (!response?.ok) {
47159	            throw JSON.stringify(response);
47160	        }
47161	    });
47162	};
47163	const configureBraintreeMobilePayments = async (form, formState, formActions) => {
47164	    await configureBraintreeGooglePay(form, formState, formActions);
47165	    await configureBraintreeApplePay(form, formState, formActions);
47166	};
47167	const configureBraintreeGooglePay = (form, formState, formActions) => {
47168	    const braintreeMobilePaymentConfig = JSON.parse(form.organisationConfiguration?.braintreeMobilePaymentConfig ?? "{}");
47169	    let googlePaymentsClient;
47170	    return loadGooglePay$1
47171	        .then(() => {
47172	        const container = document.getElementById('google-pay-button');
47173	        // Empty the container
47174	        while (container.firstChild) {
47175	            container.removeChild(container.lastChild);
47176	        }
47177	        // No need to show the user any errors here just hide the button
47178	        if (!braintreeMobilePaymentConfig?.google) {
47179	            container.style.display = 'none';
47180	            console.error("Braintree Mobile payments are not configured in the console");
47181	            return;
47182	        }
47183	        formState = formActions.getFormState();
47184	        googlePaymentsClient = new window.google.payments.api.PaymentsClient({
47185	            environment: form.organisationConfiguration.braintreeSandboxEnv ? 'TEST' : 'PRODUCTION'
47186	        });
47187	        void loadBraintree
47188	            .then(() => getBraintreeToken(formState, formActions))
47189	            .then((braintreeToken) => {
47190	            window.braintree.client.create({
47191	                authorization: braintreeToken
47192	            }, (createErr, clientInstance) => {
47193	                // Empty the container
47194	                while (container.firstChild) {
47195	                    container.removeChild(container.lastChild);
47196	                }
47197	                if (createErr) {
47198	                    // No need to show the user any errors here just hide the button
47199	                    console.error("Error creating braintree client", createErr);
47200	                    container.style.display = 'none';
47201	                    return;
47202	                }
47203	                window.braintree.googlePayment.create({
47204	                    client: clientInstance,
47205	                    googlePayVersion: 2,
47206	                    googleMerchantId: braintreeMobilePaymentConfig.google.googleMerchantId
47207	                }, (googlePaymentErr, googlePaymentInstance) => {
47208	                    if (googlePaymentErr) {
47209	                        // No need to show the user any errors here just hide the button
47210	                        console.error("Error creating braintree client", googlePaymentErr);
47211	                        container.style.display = 'none';
47212	                        return;
47213	                    }
47214	                    googlePaymentsClient.isReadyToPay({
47215	                        apiVersion: 2,
47216	                        apiVersionMinor: 0,
47217	                        allowedPaymentMethods: googlePaymentInstance.createPaymentDataRequest().allowedPaymentMethods,
47218	                        existingPaymentMethodRequired: true,
47219	                    }).then((response) => {
47220	                        if (!response.result || !response.paymentMethodPresent) {
47221	                            container.style.display = 'none';
47222	                            console.error(response.paymentMethodPresent ? "Google Pay supp
47222ort not found" : "No payment method");
47223	                            formActions.updateFormState({
47224	                                serverErrors: [ServerError.MOBILE_PAYMENT_PROCESSING_ERROR]
47225	                            });
47226	                            logDataLayerEvent(form, 'zephr_form_error', {
47227	                                error: ServerError[ServerError.MOBILE_PAYMENT_PROCESSING_ERROR],
47228	                            });
47229	                        }
47230	                        container.appendChild(googlePaymentsClient.createButton({
47231	                            buttonColor: 'default',
47232	                            buttonType: 'plain',
47233	                            buttonSizeMode: 'fill',
47234	                            onClick: () => {
47235	                                onClickPaymentButton$1(form, formState, formActions, googlePaymentInstance, googlePaymentsClient);
47236	                            },
47237	                        }));
47238	                    });
47239	                });
47240	            });
47241	        });
47242	    });
47243	};
47244	const onClickPaymentButton$1 = (form, formState, formActions, googlePaymentInstance, googlePaymentsClient) => {
47245	    formActions.updateFormState({
47246	        mobilePaymentService: MobilePaymentService.GOOGLE_PAY,
47247	        serverErrors: [],
47248	    });
47249	    const paymentDataRequest = googlePaymentInstance.createPaymentDataRequest({
47250	        transactionInfo: {
47251	            currencyCode: formState.paymentOption.currencyCode,
47252	            totalPriceStatus: 'FINAL',
47253	            totalPrice: formState.paymentOptionPrices.totalPrice.toFixed(2)
47254	        },
47255	        emailRequired: false,
47256	        shippingAddressRequired: false
47257	    });
47258	    googlePaymentsClient.loadPaymentData(paymentDataRequest).then(function (paymentData) {
47259	        googlePaymentInstance.parseResponse(paymentData, (err, result) => {
47260	            if (err || !result.nonce) {
47261	                formActions.updateFormState({
47262	                    serverErrors: [ServerError.MOBILE_PAYMENT_PROCESSING_ERROR],
47263	                    mobilePaymentService: null,
47264	                });
47265	                console.error('Error requesting payment data', err, result);
47266	                logDataLayerEvent(form, 'zephr_form_error', {
47267	                    error: ServerError[ServerError.MOBILE_PAYMENT_PROCESSING_ERROR],
47268	                });
47269	                return;
47270	            }
47271	            formActions.updateFormState({
47272	                mobilePaymentMethodId: result.nonce
47273	            });
47274	            formActions.completeSection();
47275	        });
47276	    }).catch(function (err) {
47277	        // If we get heree, the user may have just closed the modal without paying.
47278	        // Not sure if we should be showing an error in that case, but we cant distinguish
47279	        // it from other failure cases https://developers.google.com/pay/api/web/reference/client#errors_1 
47280	        console.warn('Error requesting payment data', err);
47281	        formActions.updateFormState({
47282	            mobilePaymentService: null,
47283	            serverErrors: [ServerError.MOBILE_PAYMENT_PROCESSING_ERROR],
47284	        });
47285	        logDataLayerEvent(form, 'zephr_form_error', {
47286	            error: ServerError[ServerError.MOBILE_PAYMENT_PROCESSING_ERROR],
47287	        });
47288	    });
47289	};
47290	const configureBraintreeApplePay = (form, formState, formActions) => {
47291	    const apple_container = document.getElementById('apple_pay_button');
47292	    while (apple_container.firstChild) {
47293	        apple_container.removeChild(apple_container.lastChild);
47294	    }
47295	    return loadBraintreeApplePay
47296	        .then(() => {
47297	        if (!(window.ApplePaySession && window.ApplePaySession.supportsVersion(3) && window.ApplePaySession.canMakePayments())) {
47298	            apple_container.style.display = 'none';
47299	            console.log('Cannot make payments with Apple Pay');
47300	            return;
47301	        }
47302	        return loadBraintree
47303	            .then(() => getBraintreeToken(formState, formActions))
47304	            .then((braintreeToken) => {
47305	            window.braintree.client.create({
47306	                authorization: braintreeToken
47307	            }, (clientErr, clientInstance) => {
47308	                if (clientErr) {
47309	                    apple_container.style.display = 'none';
47310	                    console.error('Error creating braintree client:', clientErr);
47311	                    return;
47312	                }
47313	                window.braintree.applePay.create({
47314	                    client: clientInstance
47315	                }, function (applePayErr, applePayInstance) {
47316	                    while (apple_container.firstChild) {
47317	                        apple_container.removeChild(apple_container.lastChild);
47318	                    }
47319	                    if (applePayErr) {
47320	                        apple_container.style.display = 'none';
47321	                        console.error('Error creating applePayInstance:', applePayErr);
47322	                        return;
47323	                    }
47324	                    const paymentRequest = applePayInstance.createPaymentRequest({
47325	                        total: {
47326	                            label: formState.paymentOption.label,
47327	                            amount: formState.paymentOptionPrices.totalPrice.toFixed(2)
47328	                        }
47329	                    });
47330	                    const applePayDiv = document.createElement("div");
47331	                    applePayDiv.classList.add("apple-pay-button");
47332	                    applePayDiv.classList.add("apple-pay-button-black");
47333	                    apple_container.appendChild(applePayDiv);
47334	                    applePayDiv.addEventListener('click', function () {
47335	                        onClickApplePayment(form, formState, formActions, paymentRequest, applePayInstance);
47336	                    });
47337	                });
47338	            });
47339	        });
47340	    });
47341	};
47342	const onClickApplePayment = (form, formState, formActions, paymentRequest, applePayInstance) => {
47343	    formActions.updateFormState({
47344	        mobilePaymentService: MobilePaymentService.APPLE_PAY,
47345	        serverErrors: [],
47346	    });
47347	    const session = new ApplePaySession(3, paymentRequest);
47348	    session.onvalidatemerchant = function (event) {
47349	        applePayInstance.performValidation({
47350	            validationURL: event.validationURL,
47351	            displayName: formState.paymentOption.label
47352	        }, function (err, merchantSession) {
47353	            if (err) {
47354	                formActions.updateFormState({
47355	                    serverErrors: [ServerError.MOBILE_PAYMENT_PROCESSING_ERROR],
47356	                    mobilePaymentService: null,
47357	                });
47358	                console.log('err in onvalidatemerchant in apple pay configuration: ', err);
47359	                logDataLayerEvent(form, 'zephr_form_error', {
47360	                    error: ServerError[ServerError.MOBILE_PAYMENT_PROCESSING_ERROR],
47361	                });
47362	                return;
47363	            }
47364	            session.completeMerchantValidation(merchantSession);
47365	        });
47366	    };
47367	    session.onpaymentauthorized = function (event) {
47368	        applePayInstance.tokenize({
47369	            token: event.payment.token
47370	        }, function (tokenizeErr, payload) {
47371	            if (tokenizeErr) {
47372	                formActions.updateFormState({
47373	                    serverErrors: [ServerError.MOBILE_PAYMENT_PROCESSING_ERROR],
47374	                    mobilePaymentService: null,
47375	                });
47376	                console.error('Error tokenizing Apple Pay:', tokenizeErr);
47377	                logDataLayerEvent(form, 'zephr_form_error', {
47378	                    error: ServerError[ServerError.MOBILE_PAYMENT_PROCESSING_ERROR],
47379	                });
47380	                session.completePayment(ApplePaySession.STATUS_FAILURE);
47381	                return;
47382	            }
47383	            formActions.updateFormState({
47384	                mobilePaymentMethodId: payload.nonce
47385	            });
47386	            formActions.completeSection();
47387	            session.completePayment(ApplePaySession.STATUS_SUCCESS);
47388	        });
47389	    };
47390	    session.begin();
47391	};
47392
47393	const invalidCurrencySymbol = '¤';
47394	const roundingErrorSmallNumber = 0.00001;
47395	const formatFromCurrencyCode = (price, currencyCode) => new Intl.NumberFormat(undefined, {
47396	    style: 'currency',
47397	    currency: currencyCode,
47398	    minimumFractionDigits: Math.abs(price) % 1 < roundingErrorSmallNumber ? 0 : undefined,
47399	    maximumFractionDigits: Math.abs(price) % 1 < roundingErrorSmallNumber ? 0 : 2,
47400	}).format(price);
47401	const formatFromCurrencySymbol = (price, currencySymbol) => currencySymbol?.length === 1 ?
47402	    `${currencySymbol}${price}` :
47403	    `${price} ${currencySymbol}`.trim();
47404	/**
47405	 * currency might either be a symbol ($,£,etc) or a code (GBP,EUR)
47406	 */
47407	const formatCurrency = (price, currency) => {
47408	    try {
47409	        if (currency?.length === 3) {
47410	            const formatted = formatFromCurrencyCode(price, currency);
47411	            if (!formatted.includes(invalidCurrencySymbol)) {
47412	                return formatted;
47413	            }
47414	        }
47415	    }
47416	    catch (e) {
47417	        console.warn(`Error formatting currency for symbol ${currency}`, e);
47418	    }
47419	    return formatFromCurrencySymbol(price, currency);
47420	};
47421
47422	const getProductAddons = async (form, formState, formActions, skipMobileReload = false) => {
47423	    const providerConfig = paymentProviderFor(form.organisationConfiguration.paymentProvider);
47424	    if (!providerConfig.hasProductAddons || !(formState.loginRegistrationComplete || formState.userSession)) {
47425	        return Promise.resolve(formState);
47426	    }
47427	    return request(providerConfig.productAddonPath, {
47428	        method: 'POST',
47429	        bodyObject: {
47430	            promoCode: formState.promoCodeValid ? formState.promoCode : null,
47431	            paymentOptions: formConfigAs(form).paymentOptions
47432	        }
47433	    }, formActions, null, true)
47434	        .then(async (response) => {
47435	        if (!response.ok) {
47436	            console.log("error loading product addons", response);
47437	            logDataLayerEvent(form, 'zephr_form_error', {
47438	                error: ServerError[ServerError.UNKNOWN],
47439	            });
47440	            return formActions.updateFormState({
47441	                addons: [],
47442	                serverErrors: [ServerError.UNKNOWN]
47443	            });
47444	        }
47445	        const json = await response.json();
47446	        try {
47447	            const addons = json.map(addon => ({
47448	                id: addon.id,
47449	                label: addon.label,
47450	                planPrices: addon.paymentOptions.map(planAddon => ({
47451	                    planSlug: planAddon.slug,
47452	                    productId: planAddon.productId,
47453	                    addonPrice: planAddon.addonPrice
47454	                }))
47455	            }));
47456	            return formActions.updateFormState({
47457	                addons
47458	            });
47459	        }
47460	        catch (err) {
47461	            console.error("Error parsing product addons response", err, json);
47462	            return formState;
47463	        }
47464	    }).then(async (updatedFormState) => {
47465	        if (!skipMobileReload) {
47466	            await afterProductAddonChange(form, updatedFormState, formActions);
47467	        }
47468	        return updatedFormState;
47469	    });
47470	};
47471	/*
47472	If we're using mobile payment and we're on the payment screen,
47473	we'll need to reload the mobile payment button so it has the discounted amount
47474	and make sure they can't press the button while the button is updating
47475	*/
47476	const afterProductAddonChange = async (form, formState, formActions) => {
47477	    if (formState.currentSection.elements.some(element => element.type === elementTypes.MOBILE_PAYMENT && element.config?.enabled !== false)) {
47478	        formActions.incrementRequestCount();
47479	        try {
47480	            // Only reload mobile payment service if the provider actually supports mobile payments
47481	            if (supportsMobilePayments(form.organisationConfiguration.paymentProvider)) {
47482	                await mobilePaymentServiceFor(form.organisationConfiguration.paymentProvider).loader(form, formState, formActions);
47483	            }
47484	        }
47485	        finally {
47486	            formActions.decrementRequestCount();
47487	        }
47488	    }
47489	};
47490	const addonsForPlan = (formState) => formState.addons.map(addon => {
47491	    const plan = addon.planPrices
47492	        .find(plan => plan.planSlug === formState.paymentOption.slug && plan.productId === formState.paymentOption.productId);
47493	    return plan && {
47494	        label: addon.label,
47495	        addonPrice: plan.addonPrice,
47496	        addonPriceFormattedString: formatCurrency(plan.addonPrice, formState.paymentOption.currencyCode)
47497	    };
47498	}).filter(o => o);
47499
47500	/**
47501	 * Calculate the actual prices for a payment option, considering:
47502	 * - The payment option
47503	 * - Discount code
47504	 *
47505	 * Try not to run the calculation if the inputs have not changed from the previous calculation.
47506	 */
47507	const calculatePrices = async (form, formState, formActions) => {
47508	    if (formState.paymentOptionPrices != null
47509	        && formState.paymentOptionPrices.productId === formState.paymentOption.productId
47510	        && formState.paymentOptionPrices.slug === formState.paymentOption.slug
47511	        && formState.paymentOptionPrices.promoCode === formState.promoCode
47512	        && formState.paymentOptionPrices.addonPrices == addonsForPlan(formState)
47513	        && formState.paymentOptionPrices.billingAddress.country === formState.billingAddress.country
47514	        && formState.paymentOptionPrices.billingAddress.postalCode === formState.billingAddress.postalCode
47515	        // // This is a bit of a fudge but we know that there are only addons for braintree where the price calculation is non-io
47516	        && formState.paymentOptionPrices.addonPrices.length == 0
47517	        && addonsForPlan(formState).length == 0) {
47518	        return formState;
47519	    }
47520	    formActions.updateFormState({
47521	        paymentOptionPrices: null
47522	    });
47523	    const paymentOptionPrices = await paymentProviderFor(form.organisationConfiguration.paymentProvider).priceCalculator(form, formState, formActions);
47524	    return formActions.updateFormState({
47525	        paymentOptionPrices
47526	    });
47527	};
47528
47529	// See https://stripe.com/docs/currencies
47530	const currencies = [
47531	    "BIF",
47532	    "CLP",
47533	    "DJF",
47534	    "GNF",
47535	    "JPY",
47536	    "KMF",
47537	    "KRW",
47538	    "MGA",
47539	    "PYG",
47540	    "RWF",
47541	    "UGX",
47542	    "VND",
47543	    "VUV",
47544	    "XAF",
47545	    "XOF",
47546	    "XPF",
47547	];
47548	const isZeroDecimalCurrency = currencyCode => currencies.includes(currencyCode);
47549
47550	const stripePaymentElementAppearance = (siteStyles) => {
47551	    const stylesObj = JSON.parse(siteStyles ?? "{}");
47552	    return {
47553	        variables: {
47554	            color: stylesObj?.color?.text?.main ?? '#32325d',
47555	            fontFamily: `${stylesObj?.typography?.body?.font}, ${stylesObj?.typography?.body?.fallbackFont},  "Helvetica Neue", Helvetica, sans-serif`,
47556	            fontSmooth: 'always',
47557	            fontSizeBase: '16px',
47558	            colorWarningText: stylesObj?.color?.warning?.main ?? '#fa755a',
47559	            colorIconCardError: stylesObj?.color?.warning?.main ?? '#fa755a',
47560	            borderRadius: `${(stylesObj?.input?.borderRadius ?? '4')}px`
47561	        },
47562	        rules: {
47563	            '.Input::placeholder': {
47564	                color: '#aab7c4'
47565	            },
47566	        }
47567	    };
47568	};
47569	const stripeCardElementStyle = {
47570	    base: {
47571	        color: '#32325d',
47572	        fontFamily: '"Helvetica Neue", Helvetica, sans-serif',
47573	        fontSmoothing: 'antialiased',
47574	        fontSize: '16px',
47575	        '::placeholder': {
47576	            color: '#aab7c4'
47577	        }
47578	    },
47579	    invalid: {
47580	        color: '#fa755a',
47581	        iconColor: '#fa755a'
47582	    }
47583	};
47584	const createStripePaymentElement = (stripe, form, formActions) => {
47585	    const formState = formActions.getFormState();
47586	    const currencyMultiplier = isZeroDecimalCurrency(formState.paymentOption.currencyCode.toUpperCase()) ? 1 : 100;
47587	    const elements = stripe.elements({
47588	        mode: 'payment',
47589	        currency: formState.paymentOption.currencyCode.toLowerCase(),
47590	        amount: parseFloat((formState.paymentOptionPrices.totalPrice * currencyMultiplier).toFixed(2)),
47591	        setup_future_usage: 'off_session',
47592	        appearance: stripePaymentElementAppearance(form.organisationConfiguration.siteStyles),
47593	        paymentMethodTypes: ['card']
47594	    });
47595	    return elements.create('payment', {
47596	        terms: {
47597	            card: 'never'
47598	        },
47599	        wallets: {
47600	            applePay: 'never',
47601	            googlePay: 'never'
47602	        }
47603	    });
47604	};
47605	const createStripeCardElement = (stripe) => {
47606	    return stripe.elements().create('card', { style: stripeCardElementStyle });
47607	};
47608	const createStripeElement = (stripe, form, formActions) => {
47609	    if (form.organisationConfiguration.stripeAutomaticTaxEnabled && form.formType !== FormType.LIST_SUBSCRIPTIONS
47610	        || formConfigAs(form).paymentProviderFormConfig?.usePaymentElement) {
47611	        return createStripePaymentElement(stripe, form, formActions);
47612	    }
47613	    else {
47614	        return createStripeCardElement(stripe);
47615	    }
47616	};
47617
47618	/*!
47619	 * mustache.js - Logic-less {{mustache}} templates with JavaScript
47620	 * http://github.com/janl/mustache.js
47621	 */
47622
47623	var objectToString = Object.prototype.toString;
47624	var isArray = Array.isArray || function isArrayPolyfill (object) {
47625	  return objectToString.call(object) === '[object Array]';
47626	};
47627
47628	function isFunction (object) {
47629	  return typeof object === 'function';
47630	}
47631
47632	/**
47633	 * More correct typeof string handling array
47634	 * which normally returns typeof 'object'
47635	 */
47636	function typeStr (obj) {
47637	  return isArray(obj) ? 'array' : typeof obj;
47638	}
47639
47640	function escapeRegExp (string) {
47641	  return string.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, '\\$&');
47642	}
47643
47644	/**
47645	 * Null safe way of checking whether or not an object,
47646	 * including its prototype, has a given property
47647	 */
47648	function hasProperty (obj, propName) {
47649	  return obj != null && typeof obj === 'object' && (propName in obj);
47650	}
47651
47652	/**
47653	 * Safe way of detecting whether or not the given thing is a primitive and
47654	 * whether it has the given property
47655	 */
47656	function primitiveHasOwnProperty (primitive, propName) {
47657	  return (
47658	    primitive != null
47659	    && typeof primitive !== 'object'
47660	    && primitive.hasOwnProperty
47661	    && primitive.hasOwnProperty(propName)
47662	  );
47663	}
47664
47665	// Workaround for https://issues.apache.org/jira/browse/COUCHDB-577
47666	// See https://github.com/janl/mustache.js/issues/189
47667	var regExpTest = RegExp.prototype.test;
47668	function testRegExp (re, string) {
47669	  return regExpTest.call(re, string);
47670	}
47671
47672	var nonSpaceRe = /\S/;
47673	function isWhitespace (string) {
47674	  return !testRegExp(nonSpaceRe, string);
47675	}
47676
47677	var entityMap = {
47678	  '&': '&amp;',
47679	  '<': '&lt;',
47680	  '>': '&gt;',
47681	  '"': '&quot;',
47682	  "'": '&#39;',
47683	  '/': '&#x2F;',
47684	  '`': '&#x60;',
47685	  '=': '&#x3D;'
47686	};
47687
47688	function escapeHtml (string) {
47689	  return String(string).replace(/[&<>
vendor: 18,467 bytes, lines 47689-48252
47689"'`=\/]/g, function fromEntityMap (s) {
47690	    return entityMap[s];
47691	  });
47692	}
47693
47694	var whiteRe = /\s*/;
47695	var spaceRe = /\s+/;
47696	var equalsRe = /\s*=/;
47697	var curlyRe = /\s*\}/;
47698	var tagRe = /#|\^|\/|>|\{|&|=|!/;
47699
47700	/**
47701	 * Breaks up the given `template` string into a tree of tokens. If the `tags`
47702	 * argument is given here it must be an array with two string values: the
47703	 * opening and closing tags used in the template (e.g. [ "<%", "%>" ]). Of
47704	 * course, the default is to use mustaches (i.e. mustache.tags).
47705	 *
47706	 * A token is an array with at least 4 elements. The first element is the
47707	 * mustache symbol that was used inside the tag, e.g. "#" or "&". If the tag
47708	 * did not contain a symbol (i.e. {{myValue}}) this element is "name". For
47709	 * all text that appears outside a symbol this element is "text".
47710	 *
47711	 * The second element of a token is its "value". For mustache tags this is
47712	 * whatever else was inside the tag besides the opening symbol. For text tokens
47713	 * this is the text itself.
47714	 *
47715	 * The third and fourth elements of the token are the start and end indices,
47716	 * respectively, of the token in the original template.
47717	 *
47718	 * Tokens that are the root node of a subtree contain two more elements: 1) an
47719	 * array of tokens in the subtree and 2) the index in the original template at
47720	 * which the closing tag for that section begins.
47721	 *
47722	 * Tokens for partials also contain two more elements: 1) a string value of
47723	 * indendation prior to that tag and 2) the index of that tag on that line -
47724	 * eg a value of 2 indicates the partial is the third tag on this line.
47725	 */
47726	function parseTemplate (template, tags) {
47727	  if (!template)
47728	    return [];
47729	  var lineHasNonSpace = false;
47730	  var sections = [];     // Stack to hold section tokens
47731	  var tokens = [];       // Buffer to hold the tokens
47732	  var spaces = [];       // Indices of whitespace tokens on the current line
47733	  var hasTag = false;    // Is there a {{tag}} on the current line?
47734	  var nonSpace = false;  // Is there a non-space char on the current line?
47735	  var indentation = '';  // Tracks indentation for tags that use it
47736	  var tagIndex = 0;      // Stores a count of number of tags encountered on a line
47737
47738	  // Strips all whitespace tokens array for the current line
47739	  // if there was a {{#tag}} on it and otherwise only space.
47740	  function stripSpace () {
47741	    if (hasTag && !nonSpace) {
47742	      while (spaces.length)
47743	        delete tokens[spaces.pop()];
47744	    } else {
47745	      spaces = [];
47746	    }
47747
47748	    hasTag = false;
47749	    nonSpace = false;
47750	  }
47751
47752	  var openingTagRe, closingTagRe, closingCurlyRe;
47753	  function compileTags (tagsToCompile) {
47754	    if (typeof tagsToCompile === 'string')
47755	      tagsToCompile = tagsToCompile.split(spaceRe, 2);
47756
47757	    if (!isArray(tagsToCompile) || tagsToCompile.length !== 2)
47758	      throw new Error('Invalid tags: ' + tagsToCompile);
47759
47760	    openingTagRe = new RegExp(escapeRegExp(tagsToCompile[0]) + '\\s*');
47761	    closingTagRe = new RegExp('\\s*' + escapeRegExp(tagsToCompile[1]));
47762	    closingCurlyRe = new RegExp('\\s*' + escapeRegExp('}' + tagsToCompile[1]));
47763	  }
47764
47765	  compileTags(tags || mustache.tags);
47766
47767	  var scanner = new Scanner(template);
47768
47769	  var start, type, value, chr, token, openSection;
47770	  while (!scanner.eos()) {
47771	    start = scanner.pos;
47772
47773	    // Match any text between tags.
47774	    value = scanner.scanUntil(openingTagRe);
47775
47776	    if (value) {
47777	      for (var i = 0, valueLength = value.length; i < valueLength; ++i) {
47778	        chr = value.charAt(i);
47779
47780	        if (isWhitespace(chr)) {
47781	          spaces.push(tokens.length);
47782	          indentation += chr;
47783	        } else {
47784	          nonSpace = true;
47785	          lineHasNonSpace = true;
47786	          indentation += ' ';
47787	        }
47788
47789	        tokens.push([ 'text', chr, start, start + 1 ]);
47790	        start += 1;
47791
47792	        // Check for whitespace on the current line.
47793	        if (chr === '\n') {
47794	          stripSpace();
47795	          indentation = '';
47796	          tagIndex = 0;
47797	          lineHasNonSpace = false;
47798	        }
47799	      }
47800	    }
47801
47802	    // Match the opening tag.
47803	    if (!scanner.scan(openingTagRe))
47804	      break;
47805
47806	    hasTag = true;
47807
47808	    // Get the tag type.
47809	    type = scanner.scan(tagRe) || 'name';
47810	    scanner.scan(whiteRe);
47811
47812	    // Get the tag value.
47813	    if (type === '=') {
47814	      value = scanner.scanUntil(equalsRe);
47815	      scanner.scan(equalsRe);
47816	      scanner.scanUntil(closingTagRe);
47817	    } else if (type === '{') {
47818	      value = scanner.scanUntil(closingCurlyRe);
47819	      scanner.scan(curlyRe);
47820	      scanner.scanUntil(closingTagRe);
47821	      type = '&';
47822	    } else {
47823	      value = scanner.scanUntil(closingTagRe);
47824	    }
47825
47826	    // Match the closing tag.
47827	    if (!scanner.scan(closingTagRe))
47828	      throw new Error('Unclosed tag at ' + scanner.pos);
47829
47830	    if (type == '>') {
47831	      token = [ type, value, start, scanner.pos, indentation, tagIndex, lineHasNonSpace ];
47832	    } else {
47833	      token = [ type, value, start, scanner.pos ];
47834	    }
47835	    tagIndex++;
47836	    tokens.push(token);
47837
47838	    if (type === '#' || type === '^') {
47839	      sections.push(token);
47840	    } else if (type === '/') {
47841	      // Check section nesting.
47842	      openSection = sections.pop();
47843
47844	      if (!openSection)
47845	        throw new Error('Unopened section "' + value + '" at ' + start);
47846
47847	      if (openSection[1] !== value)
47848	        throw new Error('Unclosed section "' + openSection[1] + '" at ' + start);
47849	    } else if (type === 'name' || type === '{' || type === '&') {
47850	      nonSpace = true;
47851	    } else if (type === '=') {
47852	      // Set the tags for the next time around.
47853	      compileTags(value);
47854	    }
47855	  }
47856
47857	  stripSpace();
47858
47859	  // Make sure there are no open sections when we're done.
47860	  openSection = sections.pop();
47861
47862	  if (openSection)
47863	    throw new Error('Unclosed section "' + openSection[1] + '" at ' + scanner.pos);
47864
47865	  return nestTokens(squashTokens(tokens));
47866	}
47867
47868	/**
47869	 * Combines the values of consecutive text tokens in the given `tokens` array
47870	 * to a single token.
47871	 */
47872	function squashTokens (tokens) {
47873	  var squashedTokens = [];
47874
47875	  var token, lastToken;
47876	  for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {
47877	    token = tokens[i];
47878
47879	    if (token) {
47880	      if (token[0] === 'text' && lastToken && lastToken[0] === 'text') {
47881	        lastToken[1] += token[1];
47882	        lastToken[3] = token[3];
47883	      } else {
47884	        squashedTokens.push(token);
47885	        lastToken = token;
47886	      }
47887	    }
47888	  }
47889
47890	  return squashedTokens;
47891	}
47892
47893	/**
47894	 * Forms the given array of `tokens` into a nested tree structure where
47895	 * tokens that represent a section have two additional items: 1) an array of
47896	 * all tokens that appear in that section and 2) the index in the original
47897	 * template that represents the end of that section.
47898	 */
47899	function nestTokens (tokens) {
47900	  var nestedTokens = [];
47901	  var collector = nestedTokens;
47902	  var sections = [];
47903
47904	  var token, section;
47905	  for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {
47906	    token = tokens[i];
47907
47908	    switch (token[0]) {
47909	      case '#':
47910	      case '^':
47911	        collector.push(token);
47912	        sections.push(token);
47913	        collector = token[4] = [];
47914	        break;
47915	      case '/':
47916	        section = sections.pop();
47917	        section[5] = token[2];
47918	        collector = sections.length > 0 ? sections[sections.length - 1][4] : nestedTokens;
47919	        break;
47920	      default:
47921	        collector.push(token);
47922	    }
47923	  }
47924
47925	  return nestedTokens;
47926	}
47927
47928	/**
47929	 * A simple string scanner that is used by the template parser to find
47930	 * tokens in template strings.
47931	 */
47932	function Scanner (string) {
47933	  this.string = string;
47934	  this.tail = string;
47935	  this.pos = 0;
47936	}
47937
47938	/**
47939	 * Returns `true` if the tail is empty (end of string).
47940	 */
47941	Scanner.prototype.eos = function eos () {
47942	  return this.tail === '';
47943	};
47944
47945	/**
47946	 * Tries to match the given regular expression at the current position.
47947	 * Returns the matched text if it can match, the empty string otherwise.
47948	 */
47949	Scanner.prototype.scan = function scan (re) {
47950	  var match = this.tail.match(re);
47951
47952	  if (!match || match.index !== 0)
47953	    return '';
47954
47955	  var string = match[0];
47956
47957	  this.tail = this.tail.substring(string.length);
47958	  this.pos += string.length;
47959
47960	  return string;
47961	};
47962
47963	/**
47964	 * Skips all text until the given regular expression can be matched. Returns
47965	 * the skipped string, which is the entire tail if no match can be made.
47966	 */
47967	Scanner.prototype.scanUntil = function scanUntil (re) {
47968	  var index = this.tail.search(re), match;
47969
47970	  switch (index) {
47971	    case -1:
47972	      match = this.tail;
47973	      this.tail = '';
47974	      break;
47975	    case 0:
47976	      match = '';
47977	      break;
47978	    default:
47979	      match = this.tail.substring(0, index);
47980	      this.tail = this.tail.substring(index);
47981	  }
47982
47983	  this.pos += match.length;
47984
47985	  return match;
47986	};
47987
47988	/**
47989	 * Represents a rendering context by wrapping a view object and
47990	 * maintaining a reference to the parent context.
47991	 */
47992	function Context (view, parentContext) {
47993	  this.view = view;
47994	  this.cache = { '.': this.view };
47995	  this.parent = parentContext;
47996	}
47997
47998	/**
47999	 * Creates a new context using the given view with this context
48000	 * as the parent.
48001	 */
48002	Context.prototype.push = function push (view) {
48003	  return new Context(view, this);
48004	};
48005
48006	/**
48007	 * Returns the value of the given name in this context, traversing
48008	 * up the context hierarchy if the value is absent in this context's view.
48009	 */
48010	Context.prototype.lookup = function lookup (name) {
48011	  var cache = this.cache;
48012
48013	  var value;
48014	  if (cache.hasOwnProperty(name)) {
48015	    value = cache[name];
48016	  } else {
48017	    var context = this, intermediateValue, names, index, lookupHit = false;
48018
48019	    while (context) {
48020	      if (name.indexOf('.') > 0) {
48021	        intermediateValue = context.view;
48022	        names = name.split('.');
48023	        index = 0;
48024
48025	        /**
48026	         * Using the dot notion path in `name`, we descend through the
48027	         * nested objects.
48028	         *
48029	         * To be certain that the lookup has been successful, we have to
48030	         * check if the last object in the path actually has the property
48031	         * we are looking for. We store the result in `lookupHit`.
48032	         *
48033	         * This is specially necessary for when the value has been set to
48034	         * `undefined` and we want to avoid looking up parent contexts.
48035	         *
48036	         * In the case where dot notation is used, we consider the lookup
48037	         * to be successful even if the last "object" in the path is
48038	         * not actually an object but a primitive (e.g., a string, or an
48039	         * integer), because it is sometimes useful to access a property
48040	         * of an autoboxed primitive, such as the length of a string.
48041	         **/
48042	        while (intermediateValue != null && index < names.length) {
48043	          if (index === names.length - 1)
48044	            lookupHit = (
48045	              hasProperty(intermediateValue, names[index])
48046	              || primitiveHasOwnProperty(intermediateValue, names[index])
48047	            );
48048
48049	          intermediateValue = intermediateValue[names[index++]];
48050	        }
48051	      } else {
48052	        intermediateValue = context.view[name];
48053
48054	        /**
48055	         * Only checking against `hasProperty`, which always returns `false` if
48056	         * `context.view` is not an object. Deliberately omitting the check
48057	         * against `primitiveHasOwnProperty` if dot notation is not used.
48058	         *
48059	         * Consider this example:
48060	         * ```
48061	         * Mustache.render("The length of a football field is {{#length}}{{length}}{{/length}}.", {length: "100 yards"})
48062	         * ```
48063	         *
48064	         * If we were to check also against `primitiveHasOwnProperty`, as we do
48065	         * in the dot notation case, then render call would return:
48066	         *
48067	         * "The length of a football field is 9."
48068	         *
48069	         * rather than the expected:
48070	         *
48071	         * "The length of a football field is 100 yards."
48072	         **/
48073	        lookupHit = hasProperty(context.view, name);
48074	      }
48075
48076	      if (lookupHit) {
48077	        value = intermediateValue;
48078	        break;
48079	      }
48080
48081	      context = context.parent;
48082	    }
48083
48084	    cache[name] = value;
48085	  }
48086
48087	  if (isFunction(value))
48088	    value = value.call(this.view);
48089
48090	  return value;
48091	};
48092
48093	/**
48094	 * A Writer knows how to take a stream of tokens and render them to a
48095	 * string, given a context. It also maintains a cache of templates to
48096	 * avoid the need to parse the same template twice.
48097	 */
48098	function Writer () {
48099	  this.templateCache = {
48100	    _cache: {},
48101	    set: function set (key, value) {
48102	      this._cache[key] = value;
48103	    },
48104	    get: function get (key) {
48105	      return this._cache[key];
48106	    },
48107	    clear: function clear () {
48108	      this._cache = {};
48109	    }
48110	  };
48111	}
48112
48113	/**
48114	 * Clears all cached templates in this writer.
48115	 */
48116	Writer.prototype.clearCache = function clearCache () {
48117	  if (typeof this.templateCache !== 'undefined') {
48118	    this.templateCache.clear();
48119	  }
48120	};
48121
48122	/**
48123	 * Parses and caches the given `template` according to the given `tags` or
48124	 * `mustache.tags` if `tags` is omitted,  and returns the array of tokens
48125	 * that is generated from the parse.
48126	 */
48127	Writer.prototype.parse = function parse (template, tags) {
48128	  var cache = this.templateCache;
48129	  var cacheKey = template + ':' + (tags || mustache.tags).join(':');
48130	  var isCacheEnabled = typeof cache !== 'undefined';
48131	  var tokens = isCacheEnabled ? cache.get(cacheKey) : undefined;
48132
48133	  if (tokens == undefined) {
48134	    tokens = parseTemplate(template, tags);
48135	    isCacheEnabled && cache.set(cacheKey, tokens);
48136	  }
48137	  return tokens;
48138	};
48139
48140	/**
48141	 * High-level method that is used to render the given `template` with
48142	 * the given `view`.
48143	 *
48144	 * The optional `partials` argument may be an object that contains the
48145	 * names and templates of partials that are used in the template. It may
48146	 * also be a function that is used to load partial templates on the fly
48147	 * that takes a single argument: the name of the partial.
48148	 *
48149	 * If the optional `config` argument is given here, then it should be an
48150	 * object with a `tags` attribute or an `escape` attribute or both.
48151	 * If an array is passed, then it will be interpreted the same way as
48152	 * a `tags` attribute on a `config` object.
48153	 *
48154	 * The `tags` attribute of a `config` object must be an array with two
48155	 * string values: the opening and closing tags used in the template (e.g.
48156	 * [ "<%", "%>" ]). The default is to mustache.tags.
48157	 *
48158	 * The `escape` attribute of a `config` object must be a function which
48159	 * accepts a string as input and outputs a safely escaped string.
48160	 * If an `escape` function is not provided, then an HTML-safe string
48161	 * escaping function is used as the default.
48162	 */
48163	Writer.prototype.render = function render (template, view, partials, config) {
48164	  var tags = this.getConfigTags(config);
48165	  var tokens = this.parse(template, tags);
48166	  var context = (view instanceof Context) ? view : new Context(view, undefined);
48167	  return this.renderTokens(tokens, context, partials, template, config);
48168	};
48169
48170	/**
48171	 * Low-level method that renders the given array of `tokens` using
48172	 * the given `context` and `partials`.
48173	 *
48174	 * Note: The `originalTemplate` is only ever used to extract the portion
48175	 * of the original template that was contained in a higher-order section.
48176	 * If the template doesn't use higher-order sections, this argument may
48177	 * be omitted.
48178	 */
48179	Writer.prototype.renderTokens = function renderTokens (tokens, context, partials, originalTemplate, config) {
48180	  var buffer = '';
48181
48182	  var token, symbol, value;
48183	  for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {
48184	    value = undefined;
48185	    token = tokens[i];
48186	    symbol = token[0];
48187
48188	    if (symbol === '#') value = this.renderSection(token, context, partials, originalTemplate, config);
48189	    else if (symbol === '^') value = this.renderInverted(token, context, partials, originalTemplate, config);
48190	    else if (symbol === '>') value = this.renderPartial(token, context, partials, config);
48191	    else if (symbol === '&') value = this.unescapedValue(token, context);
48192	    else if (symbol === 'name') value = this.escapedValue(token, context, config);
48193	    else if (symbol === 'text') value = this.rawValue(token);
48194
48195	    if (value !== undefined)
48196	      buffer += value;
48197	  }
48198
48199	  return buffer;
48200	};
48201
48202	Writer.prototype.renderSection = function renderSection (token, context, partials, originalTemplate, config) {
48203	  var self = this;
48204	  var buffer = '';
48205	  var value = context.lookup(token[1]);
48206
48207	  // This function is used to render an arbitrary template
48208	  // in the current context by higher-order sections.
48209	  function subRender (template) {
48210	    return self.render(template, context, partials, config);
48211	  }
48212
48213	  if (!value) return;
48214
48215	  if (isArray(value)) {
48216	    for (var j = 0, valueLength = value.length; j < valueLength; ++j) {
48217	      buffer += this.renderTokens(token[4], context.push(value[j]), partials, originalTemplate, config);
48218	    }
48219	  } else if (typeof value === 'object' || typeof value === 'string' || typeof value === 'number') {
48220	    buffer += this.renderTokens(token[4], context.push(value), partials, originalTemplate, config);
48221	  } else if (isFunction(value)) {
48222	    if (typeof originalTemplate !== 'string')
48223	      throw new Error('Cannot use higher-order sections without the original template');
48224
48225	    // Extract the portion of the original template that the section contains.
48226	    value = value.call(context.view, originalTemplate.slice(token[3], token[5]), subRender);
48227
48228	    if (value != null)
48229	      buffer += value;
48230	  } else {
48231	    buffer += this.renderTokens(token[4], context, partials, originalTemplate, config);
48232	  }
48233	  return buffer;
48234	};
48235
48236	Writer.prototype.renderInverted = function renderInverted (token, context, partials, originalTemplate, config) {
48237	  var value = context.lookup(token[1]);
48238
48239	  // Use JavaScript's definition of falsy. Include empty arrays.
48240	  // See https://github.com/janl/mustache.js/issues/186
48241	  if (!value || (isArray(value) && value.length === 0))
48242	    return this.renderTokens(token[4], context, partials, originalTemplate, config);
48243	};
48244
48245	Writer.prototype.indentPartial = function indentPartial (partial, indentation, lineHasNonSpace) {
48246	  var filteredIndentation = indentation.replace(/[^ \t]/g, '');
48247	  var partialByNl = partial.split('\n');
48248	  for (var i = 0; i < partialByNl.length; i++) {
48249	    if (partialByNl[i].length && (i > 0 || !lineHasNonSpace)) {
48250	      partialByNl[i] = filteredIndentation + partialByNl[i];
48251	    }
48252	  }
48253	  return partialByNl.join('\n');
48254	};
48255
48256	Writer.prototype.renderPartial = function renderPartial (token, context, partials, config) {
48257	  if (!partials) return;
48258	  var tags = this.getConfigTags(config);
48259
48260	  var value = isFunction(partials) ? partials(token[1]) : partials[token[1]];
48261	  if (value != null) {
48262	    var lineHasNonSpace = token[6];
48263	    var tagIndex = token[5];
48264	    var indentation = token[4];
48265	    var indentedValue = value;
48266	    if (tagIndex == 0 && indentation) {
48267	      indentedValue = this.indentPartial(value, indentation, lineHasNonSpace);
48268	    }
48269	    var tokens = this.parse(indentedValue, tags);
48270	    return this.renderTokens(tokens, context, partials, indentedValue, config);
48271	  }
48272	};
48273
48274	Writer.prototype.unescapedValue = function unescapedValue (token, context) {
48275	  var value = context.lookup(token[1]);
48276	  if (value != null)
48277	    return value;
48278	};
48279
48280	Writer.prototype.escapedValue = function escapedValue (token, context, config) {
48281	  var escape = this.getConfigEscape(config) || mustache.escape;
48282	  var value = context.lookup(token[1]);
48283	  if (value != null)
48284	    return (typeof value === 'number' && escape === mustache.escape) ? String(value) : escape(value);
48285	};
48286
48287	Writer.prototype.rawValue = function rawValue (token) {
48288	  return token[1];
48289	};
48290
48291	Writer.prototype.getConfigTags = function getConfigTags (config) {
48292	  if (isArray(config)) {
48293	    return config;
48294	  }
48295	  else if (config && typeof config === 'object') {
48296	    return config.tags;
48297	  }
48298	  else {
48299	    return undefined;
48300	  }
48301	};
48302
48303	Writer.prototype.getConfigEscape = function getConfigEscape (config) {
48304	  if (config && typeof config === 'object' && !isArray(config)) {
48305	    return config.escape;
48306	  }
48307	  else {
48308	    return undefined;
48309	  }
48310	};
48311
48312	var mustache = {
48313	  name: 'mustache.js',
48314	  version: '4.2.0',
48315	  tags: [ '{{', '}}' ],
48316	  clearCache: undefined,
48317	  escape: undefined,
48318	  parse: undefined,
48319	  render: undefined,
48320	  Scanner: undefined,
48321	  Context: undefined,
48322	  Writer: undefined,
48323	  /**
48324	   * Allows a user to override the default caching strategy, by providing an
48325	   * object with set, get and clear methods. This can also be used to disable
48326	   * the cache by setting it to the literal `undefined`.
48327	   */
48328	  set templateCache (cache) {
48329	    defaultWriter.templateCache = cache;
48330	  },
48331	  /**
48332	   * Gets the default or overridden caching object from the default writer.
48333	   */
48334	  get templateCache () {
48335	    return defaultWriter.templateCache;
48336	  }
48337	};
48338
48339	// All high-level mustache.* functions use this writer.
48340	var defaultWriter = new Writer();
48341
48342	/**
48343	 * Clears all cached templates in the default writer.
48344	 */
48345	mustache.clearCache = function clearCache () {
48346	  return defaultWriter.clearCache();
48347	};
48348
48349	/**
48350	 * Parses and caches the given template in the default writer and returns the
48351	 * array of tokens it contains. Doing this ahead of time avoids the need to
48352	 * parse templates on the fly as they are rendered.
48353	 */
48354	mustache.parse = function parse (template, tags) {
48355	  return defaultWriter.parse(template, tags);
48356	};
48357
48358	/**
48359	 * Renders the `template` with the given `view`, `partials`, and `config`
48360	 * using the default writer.
48361	 */
48362	mustache.render = function render (template, view, partials, config) {
48363	  if (typeof template !== 'string') {
48364	    throw new TypeError('Invalid template! Template should be a "string" ' +
48365	                        'but "' + typeStr(template) + '" was given as the first ' +
48366	                        'argument for mustache#render(template, view, partials)');
48367	  }
48368
48369	  return defaultWriter.render(template, view, partials, config);
48370	};
48371
48372	// Export the escaping function so that the user may override it.
48373	// See https://github.com/janl/mustache.js/issues/244
48374	mustache.escape = escapeHtml;
48375
48376	// Export these mainly for testing, but also for advanced usage.
48377	mustache.Scanner = Scanner;
48378	mustache.Context = Context;
48379	mustache.Writer = Writer;
48380
48381	const processMustacheTemplate = (template, scope) => {
48382	    return mustache.render(template, scope);
48383	};
48384
48385	const getUserAttributes = async (formActions) => {
48386	    try {
48387	        return await request('blaize/profile', {
48388	            method: "GET"
48389	        }, formActions).then(response => response.json());
48390	    }
48391	    catch (error) {
48392	        console.error('Failed to fetch user attributes:', error);
48393	        return {};
48394	    }
48395	};
48396	const getSessions = async (formActions) => {
48397	    try {
48398	        const response = await request('zephr/public/sessions/v1/sessions', {
48399	            method: "GET"
48400	        }, formActions, null, true);
48401	        return await response.json();
48402	    }
48403	    catch (error) {
48404	        console.error('Failed to fetch sessions:', error);
48405	        return [];
48406	    }
48407	};
48408	const getUtmParameters = () => {
48409	    const params = new URLSearchParams(window.location.search);
48410	    return {
48411	        source: params.get('utm_source'),
48412	        medium: params.get('utm_medium'),
48413	        campaign: params.get('utm_campaign'),
48414	        term: params.get('utm_term'),
48415	        content: params.get('utm_content')
48416	    };
48417	};
48418	const initializeSubscriptionScope = async (form, formActions) => {
48419	    try {
48420	        const [sessions, attributes] = await Promise.all([
48421	            getSessions(formActions),
48422	            getUserAttributes(formActions)
48423	        ]);
48424	        const deviceSession = sessions.find(session => session.requestingSession) || null;
48425	        return {
48426	            page: {
48427	                url: window.location.href,
48428	                path: window.location.pathname,
48429	                searchParameters: Object.fromEntries(new URLSearchParams(window.location.search)),
48430	                utmParameters: getUtmParameters(),
48431	                referrer: document.referrer || null
48432	            },
48433	            user: {
48434	                attributes: attributes,
48435	                session: deviceSession ? {
48436	                    id: deviceSession.id,
48437	                    tenantId: deviceSession.tenantId,
48438	                    userId: deviceSession.userId,
48439	                    deviceName: deviceSession.deviceName,
48440	                    browser: deviceSession.browser,
48441	                    startDate: deviceSession.startDate,
48442	                    ipAddress: deviceSession.ipAddress ?? null,
48443	                    requestingSession: deviceSession.requestingSession
48444	                } : null,
48445	                geoLocation: {
48446	                    city: deviceSession?.city ?? "unknown",
48447	                    country: deviceSession?.country ?? "unknown",
48448	                    state: deviceSession?.geoState ?? "unknown",
48449	                    ipAddress: deviceSession?.ipAddress ?? null
48450	                }
48451	            },
48452	            form: {
48453	                id: form.id,
48454	                outcomeId: form.outcomeId,
48455	                ruleId: form.ruleId
48456	            }
48457	        };
48458	    }
48459	    catch (error) {
48460	        console.error('Failed to initialize subscription scope:', error);
48461	        throw error;
48462	    }
48463	};
48464
48465	const publicKeyPath = 'blaize/payment/stripe/publicKey';
48466	const getStripePublicKey = (formActions) => request(publicKeyPath, {
48467	    method: "GET"
48468	}, formActions, null, true)
48469	    .then(response => response.text());
48470	let loadStripePromise, stripe, stripeElement;
48471	const loadStripe = (formActions) => {
48472	    if (loadStripePromise) {
48473	        return loadStripePromise;
48474	    }
48475	    return loadStripePromise = new Promise(function (resolve) {
48476	        window.stripeLoadCallback = resolve;
48477	    }).then(() => getStripePublicKey(formActions))
48478	        .then(publicKey => { stripe = window.Stripe(publicKey); return stripe; });
48479	};
48480	const handleStripeFormChecktax = (event, form, formActions) => {
48481	    // only check tax if the form is complete
48482	    if (!event.complete) {
48483	        return;
48484	    }
48485	    formActions.incrementRequestCount();
48486	    stripe
48487	        .createPaymentMethod('card', stripeElement, {})
48488	        .then(({ error, paymentMethod }) => {
48489	        if (error || !paymentMethod) {
48490	            console.error(`Error requesting payment method ${JSON.stringify(error)}`);
48491	            return null;
48492	        }
48493	        formActions.updateFormState({
48494	            paymentMethodId: paymentMethod.id
48495	        });
48496	        return paymentMethod?.billing_details?.address;
48497	    })
48498	        .catch((error) => {
48499	        console.error(`Error requesting payment method ${JSON.stringify(error)}`);
48500	        return null;
48501	    }).then((billingAddress) => calculatePrices(form, formActions.updateFormState({
48502	        billingAddress: {
48503	            country: billingAddress?.country,
48504	            postalCode: billingAddress?.postal_code,
48505	        }
48506	    }), formActions))
48507	        .catch((error) => {
48508	        console.error(`Error requesting payment method ${JSON.stringify(error)}`);
48509	    }).finally(() => {
48510	        formActions.decrementRequestCount();
48511	    });
48512	};
48513	const loadStripeUi = (form, formState, formActions) => {
48514	    formActions.incrementRequestCount();
48515	    void loadStripe(formActions).then(() => {
48516	        stripeElement = createStripeElement(stripe, form, formActions);
48517	        const id = '#stripe-element-' + form.uniqueKey;
48518	        stripeElement.mount(id);
48519	        stripeElement.addEventListener('change', (event) => {
48520	            formActions.updateFormState({
48521	                paymentProviderError: event.error,
48522	                paymentFormComplete: event.complete,
48523	                serverErrors: []
48524	            });
48525	            if (form.organisationConfiguration.stripeAutomaticTaxEnabled && form.formType !== FormType.LIST_SUBSCRIPTIONS) {
48526	                handleStripeFormChecktax(event, form, formActions);
48527	            }
48528	        });
48529	        stripeElement.addEventListener('ready', () => {
48530	            formActions.updateFormState({
48531	                paymentProviderFormLoaded: true,
48532	            });
48533	        });
48534	        formActions.decrementRequestCount();
48535	    }).catch(err => {
48536	        console.error(err);
48537	        formActions.decrementRequestCount();
48538	    });
48539	};
48540	const stripePay = (form, formState, formActions) => {
48541	    const paymentMethodId = formState.paymentMethodId;
48542	    formActions.incrementRequestCount();
48543	    if (paymentMethodId) {
48544	        return performPay(form, formState, formActions, paymentMethodId);
48545	    }
48546	    else {
48547	        return stripe.createPaymentMethod('card', stripeElement, {})
48548	            .then(async ({ error, paymentMethod }) => {
48549	            if (error || !paymentMethod) {
48550	                formActions.decrementRequestCount();
48551	                throw `Error requesting payment method ${JSON.stringify(error)}`;
48552	            }
48553	            await performPay(form, formState, formActions, paymentMethod.id);
48554	        });
48555	    }
48556	};
48557	const stripeChangePayment = (form, formState, formActions) => {
48558	    const paymentMethodId = formState.paymentMethodId;
48559	    formActions.incrementRequestCount();
48560	    if (paymentMethodId) {
48561	        return performChangePayment(form, formState, formActions, paymentMethodId);
48562	    }
48563	    else {
48564	        return stripe.createPaymentMethod('card', stripeElement, {})
48565	            .then(async ({ error, paymentMethod }) => {
48566	            if (error || !paymentMethod) {
48567	                formActions.decrementRequestCount();
48568	                throw `Error requesting payment method ${JSON.stringify(error)}`;
48569	            }
48570	            await request('zephr/payment/stripe/setupIntentSecret', {
48571	                method: 'POST',
48572	            }, formActions)
48573	                .then(async (resp) => {
48574	                const json = await resp.json();
48575	                const token = json.clientSecret;
48576	                return stripe.confirmCardSetup(token, {
48577	                    payment_method: {
48578	                        card: stripeElement,
48579	                    },
48580	                });
48581	            }).then(async (resp) => {
48582	                return performChangePayment(form, formState, formActions, resp.setupIntent.payment_method);
48583	            });
48584	        });
48585	    }
48586	};
48587	const performChangePayment = (form, formState, formActions, paymentMethod) => {
48588	    return request('zephr/payment/stripe/updateSubscription', {
48589	        method: 'POST',
48590	        bodyObject: {
48591	            payment_method_id: paymentMethod,
48592	            subscription_id: formState.selectedSubscription.externalId,
48593	        },
48594	    }, formActions);
48595	};
48596	const performPay = async (form, formState, formActions, paymentMethod) => {
48597	    const subscriptionMetadataRaw = (formConfigAs(form).paymentProviderFormConfig?.subscriptionMetadata || {});
48598	    const subscriptionMetadata = {};
48599	    if (subscriptionMetadataRaw) {
48600	        const subscriptionFormScope = await initializeSubscriptionScope(form, formActions);
48601	        for (const [key, value] of Object.entries(subscriptionMetadataRaw)) {
48602	            subscriptionMetadata[key] = processMustacheTemplate(value, subscriptionFormScope) || '';
48603	        }
48604	    }
48605	    const hasSubscriptionMetadata = !!Object.keys(subscriptionMetadata).length;
48606	    const { url, body, method } = mapToPayRequest(form, formState, paymentProviders.STRIPE, {
48607	        payment_method: paymentMethod,
48608	        billing_address_provided: !!formState.billingAddress.country,
48609	        ...(hasSubscriptionMetadata ? { subscription_metadata: JSON.stringify(subscriptionMetadata) } : {}),
48610	    });
48611	    return request(url, {
48612	        method,
48613	        bodyObject: body
48614	    }, formActions)
48615	        .then(async (response) => {
48616	        if (!response?.ok) {
48617	            throw JSON.stringify(response);
48618	        }
48619	        return response.json();
48620	    }).then(responseJson => {
48621	        if (responseJson.grant_id) {
48622	            return;
48623	        }
48624	        if (responseJson.paymentIntentStatus === 'requires_action') {
48625	            return stripe.confirmCardPayment(responseJson.clientSecret ?? responseJson.client_secret)
48626	                .then(afterConfirmResponse => {
48627	                if (afterConfirmResponse.error || !afterConfirmResponse.paymentIntent) {
48628	                    throw `Error requesting payment method ${JSON.stringify(afterConfirmResponse)}`;
48629	                }
48630	                if (isOneOffPurchase(formState.paymentOption) && responseJson.payment_intent_id) {
48631	                    const { url, body, method } = mapToPayRequest(form, formState, paymentProviders.STRIPE, {
48632	                        payment_method: paymentMethod,
48633	                        billing_address_provided: !!formState.billingAddress.country,
48634	                        payment_intent_id: responseJson.payment_intent_id,
48635	                        ...(hasSubscriptionMetadata ? { subscription_metadata: JSON.stringify(subscriptionMetadata) } : {}),
48636	                    });
48637	                    return request(url, {
48638	                        method,
48639	                        bodyObject: body
48640	                    }, formActions).then(response => {
48641	                        if (response?.ok) {
48642	                            return;
48643	                        }
48644	                        throw response;
48645	                    });
48646	                }
48647	                else {
48648	                    return request('blaize/payment/stripe/subscription/confirmation', {
48649	                        method: 'POST',
48650	                        bodyObject: {
48651	                            subscriptionId: responseJson.subscriptionId
48652	                        }
48653	                    }, formActions)
48654	                        .then(response => {
48655	                        if (response?.ok) {
48656	                            return;
48657	                        }
48658	                        throw response;
48659	                    });
48660	                }
48661	            });
48662	        }
48663	        throw JSON.stringify(responseJson);
48664	    }).catch((err) => {
48665	        console.error(err);
48666	        // TODO
48667	        throw err;
48668	    }).finally(() => {
48669	        formActions.decrementRequestCount();
48670	    });
48671	};
48672
48673	/**
48674	 * See https://stripe.com/docs/stripe-js/elements/payment-request-button
48675	 */
48676	const loadGooglePay = new Promise(function (resolve) {
48677	    window.googlePayLoadStripeCallback = resolve;
48678	});
48679	const configureStripeMobilePay = async (form, formState, formActions) => {
48680	    const stripeMobilePaymentConfig = JSON.parse(form.organisationConfiguration?.stripeMobilePaymentConfig ?? "{}");
48681	    const container = document.getElementById('stripe-mobile-pay-button');
48682	    // No need to show the user any errors here just hide the button
48683	    if (!stripeMobilePaymentConfig?.google && !stripeMobilePaymentConfig?.apple) {
48684	        container.style.display = 'none';
48685	        console.error("Stripe Mobile payments are not configured in the console");
48686	        return;
48687	    }
48688	    return loadGooglePay
48689	        .then(async () => await loadStripe(formActions))
48690	        .then(stripe => {
48691	        formState = formActions.getFormState();
48692	        const currencyMultiplier = isZeroDecimalCurrency(formState.paymentOption.currencyCode.toUpperCase()) ? 1 : 100;
48693	        const paymentLabels = {
48694	            country: stripeMobilePaymentConfig.google?.countryCode ?? stripeMobilePaymentConfig.apple?.countryCode,
48695	            currency: formState.paymentOption.currencyCode.toLowerCase(),
48696	            total: {
48697	                label: formState.paymentOption.label,
48698	                amount: parseFloat((formState.paymentOptionPrices.totalPrice * currencyMultiplier).toFixed(2)),
48699	            },
48700	            requestPayerName: true
48701	        };
48702	        const paymentRequest = stripe.paymentRequest(paymentLabels);
48703	        const elements = stripe.elements();
48704	        const paymentButton = elements.create('paymentRequestButton', {
48705	            paymentRequest: paymentRequest,
48706	        });
48707	        paymentRequest.canMakePayment().then(result => {
48708	            if (!result || (!result.googlePay && !result.applePay)) {
48709	                // Not an error - Google Pay or Apple Pay are not supported here
48710	                console.warn("Cannot make mobile payments on this browser", result);
48711	                container.style.display = 'none';
48712	                return;
48713	            }
48714	            paymentButton.mount('#stripe-mobile-pay-button');
48715	            paymentRequest.on('paymentmethod', (ev) => {
48716	                void onClickPaymentButton(formState, formActions, stripe, ev, result, form);
48717	            });
48718	        });
48719	    }).catch(err => {
48720	        console.error(err);
48721	        formActions.updateFormState({
48722	            serverErrors: [ServerError.UNKNOWN]
48723	        });
48724	        logDataLayerEvent(form, 'zephr_form_error', {
48725	            error: ServerError[ServerError.UNKNOWN],
48726	        });
48727	    });
48728	};
48729	const onClickPaymentButton = async (formState, formActions, stripe, ev, mobilePaymentType, form) => {
48730	    if (mobilePaymentType.googlePay) {
48731	        formActions.updateFormState({
48732	            mobilePaymentService: MobilePaymentService.GOOGLE_PAY,
48733	            serverErrors: [],
48734	        });
48735	    }
48736	    else if (mobilePaymentType.applePay) {
48737	        formActions.updateFormState({
48738	            mobilePaymentService: MobilePaymentService.APPLE_PAY,
48739	            serverErrors: [],
48740	        });
48741	    }
48742	    if (!ev) {
48743	        ev.complete('fail');
48744	        formActions.updateFormState({
48745	            serverErrors: [ServerError.MOBILE_PAYMENT_PROCESSING_ERROR]
48746	        });
48747	        logDataLayerEvent(form, 'zephr_form_error', {
48748	            error: ServerError[ServerError.MOBILE_PAYMENT_PROCESSING_ERROR],
48749	        });
48750	        return;
48751	    }
48752	    const billingAddress = ev.paymentMethod.billing_details.address;
48753	    if (form.organisationConfiguration.stripeAutomaticTaxEnabled) {
48754	        formState = await (calculatePrices(form, formActions.updateFormState({
48755	            billingAddress: {
48756	                country: billingAddress.country,
48757	                postalCode: billingAddress.postal_code,
48758	            }
48759	        }), formActions));
48760	    }
48761	    formState = formActions.updateFormState({
48762	        paymentMethodId: ev.paymentMethod.id
48763	    });
48764	    ev.complete('success');
48765	    if (formState.paymentOptionPrices.taxPrice || !formState.canAttemptSectionCompletion) {
48766	        const elementId = formState.elementValidity.find((e) => !e.isValid && e.elementType != 'payment')?.elementId;
48767	        const element = elementId ? document.getElementById(`zephr-form-${elementId}`) : document.getElementsByClassName('zephr-form-button')[0];
48768	        element?.scrollIntoView({
48769	            block: "center",
48770	        });
48771	    }
48772	    else {
48773	        formActions.completeSection();
48774	    }
48775	};
48776
48777	const calculateBraintreeStripePrice = (form, formState, _) => {
48778	    const addons = addonsForPlan(formState);
48779	    const paymentOption = formConfigAs(form).paymentOptions.find(opt => opt.productId == formState.paymentOption.productId && opt.slug == formState.paymentOption.slug);
48780	    const planPrice = paymentOption.price;
48781	    const priceAfterPromoCode = formState.discountedPlanPrices.find(discount => discount.planSlug === formState.paymentOption.slug && discount.productId === formState.paymentOption.productId)
48782	        ?.discountPrice;
48783	    let finalPrice = priceAfterPromoCode ?? planPrice;
48784	    let discountTotal = planPrice - finalPrice;
48785	    // For Braintree only, we apply discounts on top of any promo code discounts
48786	    if (form.organisationConfiguration.paymentProvider === 'braintree' &&
48787	        paymentOption.discounts &&
48788	        paymentOption.discounts.length > 0) {
48789	        const totalBuiltInDiscount = paymentOption.discounts.reduce((sum, discount) => {
48790	            return sum + (discount.amount || 0);
48791	        }, 0);
48792	        finalPrice = Math.max(0, finalPrice - totalBuiltInDiscount);
48793	        discountTotal = planPrice - finalPrice;
48794	    }
48795	    const total = addons.reduce((total, addon) => total + addon.addonPrice, finalPrice);
48796	    return Promise.resolve({
48797	        slug: formState.paymentOption.slug,
48798	        productId: formState.paymentOption.productId,
48799	        promoCode: formState.promoCode,
48800	        addonPrices: addons,
48801	        billingAddress: formState.billingAddress,
48802	        totalPrice: total,
48803	        totalPriceFormattedString: formatCurrency(total, formState.paymentOption.currencyCode),
48804	        netPrice: planPrice,
48805	        netPriceFormattedString: formatCurrency(planPrice, formState.paymentOption.currencyCode),
48806	        discountPrice: discountTotal,
48807	        discountPriceFormattedPrice: formatCurrency(discountTotal, formState.paymentOption.currencyCode),
48808	        chargeItems: []
48809	    });
48810	};
48811
48812	const getRelevantCurrency = (form, formState) => {
48813	    const formConfig = formConfigAs(form);
48814	    if (formConfig.dynamicOffer?.id) {
48815	        return formState.paymentOption?.currencyCode;
48816	    }
48817	    return formConfigAs(form).formCurrency ?? formState.paymentOption?.currencyCode;
48818	};
48819
48820	const getPaymentFormNumber = (form, formState) => {
48821	    const paymentConfig = formConfigAs(form);
48822	    if (paymentConfig.changeSubscriptionMode) {
48823	        return getChangeSubscriptionPaymentConfiguration(form, formState).paymentFormNumber;
48824	    }
48825	    return paymentConfig.paymentProviderFormConfig?.paymentFormNumber ?? undefined;
48826	};
48827	const loadZuoraDynamicFormKey = async (_, formActions) => {
48828	    const response = await request("zephr/public/payment/v1/billing/publishable-key", { method: "GET", }, formActions);
48829	    return (await response.json())?.message;
48830	};
48831	// Helper to cast custom field values to appropriate types
48832	const castCustomFieldValue$1 = (value, type) => {
48833	    const trimmedValue = value.trim();
48834	    try {
48835	        switch (type.toUpperCase()) {
48836	            case 'INTEGER': {
48837	                const intVal = parseInt(trimmedValue, 10);
48838	                if (isNaN(intVal))
48839	                    throw new Error();
48840	                return intVal;
48841	            }
48842	            case 'NUMBER': {
48843	                const floatVal = parseFloat(trimmedValue);
48844	                if (isNaN(floatVal))
48845	                    throw new Error();
48846	                return floatVal;
48847	            }
48848	            case 'BOOLEAN':
48849	                return trimmedValue.toLowerCase() === 'true';
48850	            case 'TEXT':
48851	            case 'LONGTEXT':
48852	            case 'PICKLIST':
48853	            default:
48854	                return trimmedValue.toString();
48855	        }
48856	    }
48857	    catch (e) {
48858	        console.warn(`Error casting custom field value "${trimmedValue}" to type ${type}`);
48859	        return null;
48860	    }
48861	};
48862	const createPaymentSession = async (form, formActions, context, operation) => {
48863	    if (formActions.getFormState().isBusy) {
48864	        console.warn('Form is busy - ignoring payment request');
48865	        return;
48866	    }
48867	    formActions.updateFormState({
48868	        serverErrors: [],
48869	        paymentProviderFormBusy: true
48870	    });
48871	    formActions.incrementRequestCount();
48872	    try {
48873	        const formConfig = formConfigAs(form);
48874	        const formState = formActions.getFormState();
48875	        const response = await request('zephr/public/payment/v1/billing/payment-sessions', {
48876	            method: "POST",
48877	            bodyObject: {
48878	                currency: getRelevantCurrency(form, formState) || formState.existingSubscriptions?.[0]?.currency,
48879	                amount: formState.paymentOptionPrices?.totalPrice || 0.01,
48880	                paymentMethodType: context?.paymentMethodType,
48881	                // Only include country if it's configured and has a value
48882	                ...(formConfig.countryLabel && formState.billingCountry && {
48883	                    country: formState.billingCountry
48884	                }),
48885	                // Only include state if it's configured, has a value, and country is US/CA
48886	                ...(formConfig.stateLabel && formState.billingState && (formState.billingCountry === "US" ||
48887	                    formState.billingCountry === "CA") && {
48888	                    state: formState.billingState
48889	                }),
48890	                operation: operation,
48891	                ...(formState.pfToken && {
48892	                    pfToken: formState.pfToken
48893	                })
48894	            }
48895	        }, formActions);
48896	        if (response.ok) {
48897	            return (await response.json())?.token;
48898	        }
48899	        else {
48900	            console.error("Error occurred while creating payment session.", response);
48901	            formActions.updateFormState({
48902	                serverErrors: [ServerError.PAYMENT_PROCESSING_ERROR],
48903	                paymentProviderFormBusy: false
48904	            });
48905	            logDataLayerEvent(form, 'zephr_form_error', {
48906	                error: ServerError[ServerError.PAYMENT_PROCESSING_ERROR],
48907	            });
48908	        }
48909	    }
48910	    catch (error) {
48911	        console.error("Error occurred while creating payment session.", error);
48912	        formActions.updateFormState({
48913	            serverErrors: [ServerError.PAYMENT_PROCESSING_ERROR],
48914	            paymentProviderFormBusy: false
48915	        });
48916	        logDataLayerEvent(form, 'zephr_form_error', {
48917	            error: ServerError[ServerError.PAYMENT_PROCESSING_ERROR],
48918	        });
48919	    }
48920	};
48921	const onComplete = async (form, formActions, result) => {
48922	    if (!result?.success || !result.paymentMethodId) {
48923	        formActions.decrementRequestCount();
48924	        console.warn('Non-success payment result', result);
48925	        formActions.updateFormState({
48926	            serverErrors: [ServerError.PAYMENT_PROCESSING_ERROR],
48927	            paymentProviderFormBusy: false
48928	        });
48929	        logDataLayerEvent(form, 'zephr_form_error', {
48930	            error: ServerError[ServerError.PAYMENT_PROCESSING_ERROR],
48931	        });
48932	        return;
48933	    }
48934	    const currentFormState = formActions.getFormState();
48935	    const isPaymentMethodSetupMode = formConfigAs(form).changeSubscriptionMode && currentFormState.requiresPaymentMethodSetup === true;
48936	    if (isPaymentMethodSetupMode) {
48937	        formActions.updateFormState({
48938	            paymentMethodSetupComplete: true,
48939	            requiresPaymentMethodSetup: false,
48940	        });
48941	    }
48942	    if (form.formType === FormType.LIST_SUBSCRIPTIONS || form.formType === FormType.LIST_GIFT_SUBSCRIPTIONS_SENT) {
48943	        formActions.updateFormState({
48944	            paymentFormComplete: true,
48945	            paymentProviderVendorFields: {
48946	                detail: JSON.stringify({
48947	                    creditCardCountry: result.creditCardCountry,
48948	                    creditCardState: result.creditCardState,
48949	                    refId: result.paymentMethodId,
48950	                    email: currentFormState.emailAddress,
48951	                    paymentId: result?.paymentId,
48952	                    paymentMethodId: result?.paymentMethodId,
48953	                }),
48954	            }
48955	        });
48956	    }
48957	    else {
48958	        // Get the autoRenew value based on payment option configuration
48959	        const autoRenewConfig = currentFormState.paymentOption.autoRenewConfig;
48960	        let autoRenewValue;
48961	        if (autoRenewConfig === 'auto_renew') {
48962	            autoRenewValue = true;
48963	        }
48964	        else if (autoRenewConfig === 'no_auto_renew') {
48965	            autoRenewValue = false;
48966	        }
48967	        else if (autoRenewConfig === 'custom_toggle') {
48968	            // Use user's choice from the toggle
48969	            const paymentOptionKey = `${currentFormState.paymentOption.productId}-${currentFormState.paymentOption.slug}`;
48970	            autoRenewValue = currentFormState.paymentOptionAutoRenew?.[paymentOptionKey] ?? false;
48971	        }
48972	        else {
48973	            // Default behavior for legacy payment options without configuration
48974	            autoRenewValue = true;
48975	        }
48976	        // Process subscription custom fields if any
48977	        const rawCustomFields = formConfigAs(form).paymentProviderFormConfig?.subscriptionCustomFields || [];
48978	        const subscriptionCustomFields = {};
48979	        if (rawCustomFields?.length) {
48980	            const subscriptionFormScope = await initializeSubscriptionScope(form, formActions);
48981	            for (const field of rawCustomFields) {
48982	                const processedTemplate = processMustacheTemplate(field.value, subscriptionFormScope) || '';
48983	                subscriptionCustomFields[field.name] = castCustomFieldValue$1(processedTemplate, field.type);
48984	            }
48985	        }
48986	        const hasCustomFields = !!Object.keys(subscriptionCustomFields).length;
48987	        formActions.updateFormState({
48988	            paymentFormComplete: true,
48989	            paymentProviderVendorFields: {
48990	                currency: getRelevantCurrency(form, currentFormState),
48991	                detail: JSON.stringify({
48992	                    creditCardCountry: result.creditCardCountry,
48993	                    creditCardState: result.creditCardState,
48994	                    refId: result.paymentMethodId,
48995	                    email: currentFormState.emailAddress,
48996	                    paymentId: result?.paymentId,
48997	                    paymentMethodId: result?.paymentMethodId,
48998	                }),
48999	                ...(currentFormState.dynamicOfferResult ? { dynamicOfferResult: JSON.stringify(currentFormState.dynamicOfferResult) } : {}),
49000	                ...(currentFormState.paymentOption?.terms ? {
49001	                    terms: JSON.stringify({
49002	                        ...currentFormState.paymentOption.terms,
49003	                        autoRenew: autoRenewValue
49004	                    })
49005	                } : {}),
49006	                ...(currentFormState.paymentOption?.termsAndConditions ? {
49007	                    termsAndConditions: JSON.stringify({
49008	                        ...currentFormState.paymentOption.termsAndConditions,
49009	                        autoRenew: autoRenewValue
49010	                    })
49011	                } : {}),
49012	                ...(currentFormState.paymentOption?.triggerOffsets ? { triggerOffsets: JSON.stringify(currentFormState.paymentOption.triggerOffsets) } : {}),
49013	                ...(currentFormState.paymentOption?.changeSubscriptionTriggerOffsets ? { changeSubscriptionTriggerOffsets: JSON.stringify(currentFormState.paymentOption.changeSubscriptionTriggerOffsets) } : {}),
49014	                ...(hasCustomFields ? { subscriptionCustomFields: JSON.stringify(subscriptionCustomFields) } : {})
49015	            }
49016	        });
49017	    }
49018	    formActions.decrementRequestCount();
49019	    formActions.completeSection();
49020	};
49021	const loadZuoraDynamicFormUi = async (form, formState, formActions, publishableKey, operation) => {
49022	    const state = formState.paymentOption && await calculatePrices(form, formState, formActions);
49023	    const [locale, region] = (navigator.language ?? '').split('-');
49024	    const paymentConfig = formConfigAs(form);
49025	    const requestCountry = paymentConfig?.requestCountry;
49026	    const isValidCountry = requestCountry && requestCountry.toLowerCase() !== 'unknown';
49027	    const configuration = {
49028	        locale: locale || "en",
49029	        region: (isValidCountry ? requestCountry : region) || 'US',
49030	        currency: getRelevantCurrency(form, formState) || formState.existingSubscriptions?.[0]?.currency,
49031	        amount: `${state?.paymentOptionPrices?.totalPrice ?? '0.00'}`,
49032	        profile: getPaymentFormNumber(form, formState),
49033	        createPaymentSession: (context) => createPaymentSession(form, formActions, context, operation),
49034	        onComplete: (result) => onComplete(form, formActions, result),
49035	    };
49036	    // Render form
49037	    const zuora = window.Zuora(publishableKey);
49038	    const paymentForm = await zuora.createPaymentForm(configuration);
49039	    paymentForm.mount("#zuora_payment");
49040	    formActions.updateFormState({
49041	        paymentProviderFormLoaded: true,
49042	    });
49043	};
49044
49045	let zuoraLoadPromise;
49046	const loadZuora = () => {
49047	    if (zuoraLoadPromise != null) {
49048	        return zuoraLoadPromise;
49049	    }
49050	    return zuoraLoadPromise = new Promise(function (resolve) {
49051	        window.zuoraLoadCallback = resolve;
49052	    });
49053	};
49054	const isDynamicForm = (form, formState) => {
49055	    const paymentConfig = formConfigAs(form);
49056	    if (paymentConfig.changeSubscriptionMode && formState) {
49057	        return getChangeSubscriptionPaymentConfiguration(form, formState).useDynamicForm;
49058	    }
49059	    return paymentConfig.paymentProviderFormConfig?.useDynamicForm;
49060	};
49061	/**
49062	 * Determines the autoRenew value based on payment option configuration
49063	 */
49064	const getAutoRenewValue = (formState) => {
49065	    const autoRenewConfig = formState.paymentOption.autoRenewConfig;
49066	    if (autoRenewConfig === 'auto_renew') {
49067	        return true;
49068	    }
49069	    else if (autoRenewConfig === 'no_auto_renew') {
49070	        return false;
49071	    }
49072	    else if (autoRenewConfig === 'custom_toggle') {
49073	        // Use user's choice from the toggle
49074	        const paymentOptionKey = `${formState.paymentOption.productId}-${formState.paymentOption.slug}`;
49075	        return formState.paymentOptionAutoRenew?.[paymentOptionKey] ?? false;
49076	    }
49077	    else {
49078	        // Default behavior for legacy payment options without configuration
49079	        return true;
49080	    }
49081	};
49082	const loadZuoraFormConfiguration = (form, formActions) => {
49083	    const formState = formActions.getFormState();
49084	    if (isDynamicForm(form, formState)) {
49085	        return loadZuoraDynamicFormKey(form, formActions);
49086	    }
49087	    // Get configuration based on form type
49088	    const paymentConfig = formConfigAs(form);
49089	    let hostedPageConfig;
49090	    if (paymentConfig.changeSubscriptionMode) {
49091	        hostedPageConfig = getChangeSubscriptionPaymentConfiguration(form, formState);
49092	    }
49093	    else {
49094	        // Use regular payment provider configuration
49095	        hostedPageConfig = paymentConfig.paymentProviderFormConfig;
49096	    }
49097	    if (!hostedPageConfig) {
49098	        throw new Error('No hosted page configuration found for payment provider');
49099	    }
49100	    return request("plugins/public/zuora-billing/payment-form-token", {
49101	        method: "POST",
49102	        bodyObject: {
49103	            hostedPageId: hostedPageConfig.hostedPageId,
49104	            hostedPageUrl: hostedPageConfig.hostedPageUrl,
49105	        }
49106	    }, formActions).then((response) => response.json());
49107	};
49108	const loadZuoraUi = (form, formState, formActions) => {
49109	    // Check if we're in payment method setup mode for Change Subscription
49110	    const isPaymentMethodSetupMode = formConfigAs(form).changeSubscriptionMode &&
49111	        formState.requiresPaymentMethodSetup === true;
49112	    // Don't show card form if changing a Zuora subscription (unless in payment method setup mode)
49113	    if (formConfigAs(form).changeSubscriptionMode && !isPaymentMethodSetupMode) {
49114	        formActions.updateFormState({
49115	            paymentFormComplete: true,
49116	        });
49117	        return;
49118	    }
49119	    if (form.formType === FormType.LIST_SUBSCRIPTIONS || form.formType === FormType.LIST_GIFT_SUBSCRIPTIONS_SENT || isPaymentMethodSetupMode) {
49120	        void loadZuora()
49121	            .then(() => loadZuoraFormConfiguration(form, formActions))
49122	            .then(formToken => {
49123	            if (isDynamicForm(form, formState)) {
49124	                return loadZuoraDynamicFormUi(form, formState, formActions, formToken, 2);
49125	            }
49126	            const formConfiguration = {
49127	                tenantId: formToken.tenantId,
49128	                token: formToken.token,
49129	                signature: formToken.signature,
49130	                key: formToken.key,
49131	                id: formToken.id,
49132	                url: formToken.url,
49133	                style: 'inline',
49134	                submitEnabled: true,
49135	            };
49136	            const prePopulatedFields = {
49137	                email: formState.emailAddress,
49138	            };
49139	            window.Z.setEventHandler("onloadCallback", () => {
49140	                formActions.updateFormState({
49141	                    paymentProviderFormLoaded: true,
49142	                });
49143	            });
49144	            window.Z.render(formConfiguration, prePopulatedFields, (event) => {
49145	                if (event.success !== "true") {
49146	                    console.error("Payment failed", event);
49147	                    formActions.updateFormState({
49148	                        serverErrors: [ServerError.PAYMENT_PROCESSING_ERROR]
49149	                    });
49150	                    logDataLayerEvent(form, 'zephr_form_error', {
49151	                        error: ServerError[ServerError.PAYMENT_PROCESSING_ERROR],
49152	                    });
49153	                    return;
49154	                }
49155	                // Handle payment method setup completion for Change Subscription forms
49156	                const isPaymentMethodSetupMode = formConfigAs(form).changeSubscriptionMode &&
49157	                    formState.requiresPaymentMethodSetup === true;
49158	                if (isPaymentMethodSetupMode) {
49159	                    formActions.updateFormState({
49160	                        paymentFormComplete: true,
49161	                        paymentMethodSetupComplete: true,
49162	                        requiresPaymentMethodSetup: false,
49163	                        paymentProviderVendorFields: {
49164	                            detail: JSON.stringify({
49165	                                creditCardCountry: event.credit
49165CardCountry,
49166	                                creditCardState: event.creditCardState,
49167	                                refId: event.refId,
49168	                                email: event.email,
49169	                            }),
49170	                        }
49171	                    });
49172	                }
49173	                else {
49174	                    formActions.updateFormState({
49175	                        paymentFormComplete: true,
49176	                        paymentProviderVendorFields: {
49177	                            detail: JSON.stringify({
49178	                                creditCardCountry: event.creditCardCountry,
49179	                                creditCardState: event.creditCardState,
49180	                                refId: event.refId,
49181	                                email: event.email,
49182	                            }),
49183	                        }
49184	                    });
49185	                }
49186	                formActions.completeSection();
49187	            });
49188	        });
49189	    }
49190	    else {
49191	        void loadZuora()
49192	            .then(() => loadZuoraFormConfiguration(form, formActions))
49193	            .then(formToken => {
49194	            if (!getRelevantCurrency(form, formState)) {
49195	                formActions.updateFormState({
49196	                    serverErrors: [ServerError.PAYMENT_PROCESSING_ERROR]
49197	                });
49198	                console.error("Form currency not set");
49199	                logDataLayerEvent(form, 'zephr_form_error', {
49200	                    error: ServerError[ServerError.PAYMENT_PROCESSING_ERROR],
49201	                });
49202	                return;
49203	            }
49204	            if (isDynamicForm(form, formState)) {
49205	                return loadZuoraDynamicFormUi(form, formState, formActions, formToken, 1);
49206	            }
49207	            const formConfiguration = {
49208	                tenantId: formToken.tenantId,
49209	                token: formToken.token,
49210	                signature: formToken.signature,
49211	                key: formToken.key,
49212	                id: formToken.id,
49213	                url: formToken.url,
49214	                style: 'inline',
49215	                submitEnabled: true,
49216	            };
49217	            const prePopulatedFields = {
49218	                email: formState.emailAddress,
49219	            };
49220	            window.Z.setEventHandler("onloadCallback", () => {
49221	                formActions.updateFormState({
49222	                    paymentProviderFormLoaded: true,
49223	                });
49224	            });
49225	            window.Z.render(formConfiguration, prePopulatedFields, (event) => {
49226	                if (event.success !== "true") {
49227	                    console.error("Payment failed", event);
49228	                    formActions.updateFormState({
49229	                        serverErrors: [ServerError.PAYMENT_PROCESSING_ERROR]
49230	                    });
49231	                    logDataLayerEvent(form, 'zephr_form_error', {
49232	                        error: ServerError[ServerError.PAYMENT_PROCESSING_ERROR],
49233	                    });
49234	                    return;
49235	                }
49236	                const currentFormState = formActions.getFormState();
49237	                const autoRenewValue = getAutoRenewValue(currentFormState);
49238	                formActions.updateFormState({
49239	                    paymentFormComplete: true,
49240	                    paymentProviderVendorFields: {
49241	                        currency: getRelevantCurrency(form, currentFormState),
49242	                        detail: JSON.stringify({
49243	                            creditCardCountry: event.creditCardCountry,
49244	                            creditCardState: event.creditCardState,
49245	                            refId: event.refId,
49246	                            email: event.email,
49247	                        }),
49248	                        ...(currentFormState.dynamicOfferResult ? { dynamicOfferResult: JSON.stringify(currentFormState.dynamicOfferResult) } : {}),
49249	                        ...(currentFormState.paymentOption?.terms ? {
49250	                            terms: JSON.stringify({
49251	                                ...currentFormState.paymentOption.terms,
49252	                                autoRenew: autoRenewValue
49253	                            })
49254	                        } : {}),
49255	                        ...(currentFormState.paymentOption?.termsAndConditions ? {
49256	                            termsAndConditions: JSON.stringify({
49257	                                ...currentFormState.paymentOption.termsAndConditions,
49258	                                autoRenew: autoRenewValue
49259	                            })
49260	                        } : {}),
49261	                        ...(currentFormState.paymentOption?.triggerOffsets ? { triggerOffsets: JSON.stringify(currentFormState.paymentOption.triggerOffsets) } : {}),
49262	                        ...(currentFormState.paymentOption?.changeSubscriptionTriggerOffsets ? { changeSubscriptionTriggerOffsets: JSON.stringify(currentFormState.paymentOption.changeSubscriptionTriggerOffsets) } : {}),
49263	                    }
49264	                });
49265	                formActions.completeSection();
49266	            });
49267	        });
49268	    }
49269	};
49270	// TODO: Remove the ability to add MULTISELECT fields in the Console (Filter it out from the listBillingCustomFields endpoint)
49271	const castCustomFieldValue = (value, type) => {
49272	    const trimmedValue = value.trim();
49273	    try {
49274	        switch (type.toUpperCase()) {
49275	            case 'INTEGER': {
49276	                const intVal = parseInt(trimmedValue, 10);
49277	                if (isNaN(intVal))
49278	                    throw new Error();
49279	                return intVal;
49280	            }
49281	            case 'NUMBER': {
49282	                const floatVal = parseFloat(trimmedValue);
49283	                if (isNaN(floatVal))
49284	                    throw new Error();
49285	                return floatVal;
49286	            }
49287	            case 'BOOLEAN':
49288	                return trimmedValue.toLowerCase() === 'true';
49289	            case 'TEXT':
49290	            case 'LONGTEXT':
49291	            case 'PICKLIST':
49292	            default:
49293	                return trimmedValue.toString();
49294	        }
49295	    }
49296	    catch (e) {
49297	        console.warn(`Error casting custom field value "${trimmedValue}" to type ${type}`);
49298	        return null;
49299	    }
49300	};
49301	const zuoraComplete = async (form, formState, formActions) => {
49302	    const typeConfiguration = formConfigAs(form);
49303	    const requires_address = typeConfiguration.requires_address;
49304	    const isChangeSubscriptionMode = formConfigAs(form).changeSubscriptionMode;
49305	    formActions.incrementRequestCount();
49306	    try {
49307	        if (!isChangeSubscriptionMode && !formState.paymentProviderVendorFields) {
49308	            console.error("Flow error - no Zuora vendor fields found");
49309	            formActions.updateFormState({
49310	                serverErrors: [ServerError.PAYMENT_PROCESSING_ERROR]
49311	            });
49312	            logDataLayerEvent(form, 'zephr_form_error', {
49313	                error: ServerError[ServerError.PAYMENT_PROCESSING_ERROR],
49314	            });
49315	            return Promise.resolve();
49316	        }
49317	        const rawCustomFields = formConfigAs(form).paymentProviderFormConfig?.subscriptionCustomFields || [];
49318	        const subscriptionCustomFields = {};
49319	        if (rawCustomFields?.length) {
49320	            const subscriptionFormScope = await initializeSubscriptionScope(form, formActions);
49321	            for (const field of rawCustomFields) {
49322	                const processedTemplate = processMustacheTemplate(field.value, subscriptionFormScope) || '';
49323	                subscriptionCustomFields[field.name] = castCustomFieldValue(processedTemplate, field.type);
49324	            }
49325	        }
49326	        const hasCustomFields = !!Object.keys(subscriptionCustomFields).length;
49327	        // For changeSubscriptionMode, create vendor fields from termsAndConditions
49328	        let vendorFields;
49329	        if (isChangeSubscriptionMode && formState.paymentOption?.termsAndConditions) {
49330	            const autoRenewValue = getAutoRenewValue(formState);
49331	            const changingFromSubscription = formState
49332	                .validChangeFromPlans
49333	                .find(plan => formState.paymentOption.slug === plan.planSlug && formState.paymentOption.productId === plan.productId)
49334	                ?.changesFromSubscription;
49335	            vendorFields = {
49336	                currency: formState.paymentOption.currencyCode,
49337	                detail: JSON.stringify({
49338	                    refId: changingFromSubscription?.externalId || '',
49339	                    email: formState.emailAddress || ''
49340	                }),
49341	                termsAndConditions: JSON.stringify({
49342	                    ...formState.paymentOption.termsAndConditions,
49343	                    autoRenew: autoRenewValue
49344	                }),
49345	                ...(hasCustomFields ? { subscriptionCustomFields: JSON.stringify(subscriptionCustomFields) } : {})
49346	            };
49347	        }
49348	        else if (formState.convertCancelSubscriptionToAcceptOffer) {
49349	            const changingFromSubscription = formState
49350	                .validChangeFromPlans
49351	                .find(plan => formState.paymentOption.slug === plan.planSlug && formState.paymentOption.productId === plan.productId)
49352	                ?.changesFromSubscription;
49353	            vendorFields = {
49354	                currency: formState.paymentOption.currencyCode,
49355	                detail: JSON.stringify({
49356	                    refId: changingFromSubscription?.externalId || '',
49357	                    email: formState.emailAddress || ''
49358	                }),
49359	                ...(hasCustomFields ? { subscriptionCustomFields: JSON.stringify(subscriptionCustomFields) } : {})
49360	            };
49361	        }
49362	        else {
49363	            vendorFields = {
49364	                ...formState.paymentProviderVendorFields,
49365	                ...(hasCustomFields ? { subscriptionCustomFields: JSON.stringify(subscriptionCustomFields) } : {})
49366	            };
49367	        }
49368	        const { url, body, method } = mapToPayRequest(form, formState, paymentProviders.ZUORA, vendorFields);
49369	        if (form.formType === FormType.GIFT_SUBSCRIPTION) {
49370	            const giftBody = {
49371	                ...body, // Includes attributes mapped by mapToPayRequest
49372	                plan_id: `zuora-billing_product_rate_plan-${body.plan_id}-unused`,
49373	                discount_code: formState.promoCodeValid ? formState.promoCode : undefined,
49374	                vendor_fields: {
49375	                    ...(body.vendor_fields || {}),
49376	                    // Only include giftDetails if isGiftForm is true (defaults to true if no gift toggle elements are present)
49377	                    ...(formState.isGiftForm ? {
49378	                        giftDetails: JSON.stringify({
49379	                            recipient_email: formState.giftRecipient.email,
49380	                            firstName: formState.giftRecipient.firstName,
49381	                            lastName: formState.giftRecipient.lastName,
49382	                            message: formState.giftRecipient.customMessage,
49383	                            ...(requires_address ? {
49384	                                recipient_address: {
49385	                                    addressLine1: formState.giftRecipient.recipientAddress?.addressLine1 || '',
49386	                                    addressLine2: formState.giftRecipient.recipientAddress?.addressLine2 || '',
49387	                                    city: formState.giftRecipient.recipientAddress?.city || '',
49388	                                    state: formState.giftRecipient.recipientAddress?.state || '',
49389	                                    country: formState.giftRecipient.recipientAddress?.country || '',
49390	                                    postalCode: formState.giftRecipient.recipientAddress?.postalCode || '',
49391	                                }
49392	                            } : {}),
49393	                            ...(formState.giftRecipient.futureDeliveryEnabled && formState.giftRecipient.futureDeliveryDate ? {
49394	                                startDate: formState.giftRecipient.futureDeliveryDate
49395	                            } : {})
49396	                        })
49397	                    } : {})
49398	                }
49399	            };
49400	            const giftResponse = await request('zephr/subscribe', {
49401	                method: 'POST',
49402	                bodyObject: {
49403	                    ...giftBody,
49404	                    ...(formState.pfToken ? { pf_token: formState.pfToken } : {})
49405	                }
49406	            }, formActions);
49407	            if (!giftResponse?.ok) {
49408	                console.error("Error creating gift subscription", giftResponse);
49409	                formActions.updateFormState({
49410	                    serverErrors: [ServerError.PAYMENT_PROCESSING_ERROR]
49411	                });
49412	                return Promise.reject();
49413	            }
49414	            return Promise.resolve();
49415	        }
49416	        else {
49417	            // Regular flow for non-gift subscriptions
49418	            const modifiedBody = formConfigAs(form).changeSubscriptionMode ? body : {
49419	                ...body,
49420	                // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
49421	                plan_id: `zuora-billing_product_rate_plan-${body.plan_id}-unused`,
49422	            };
49423	            return await request(url, {
49424	                method,
49425	                bodyObject: {
49426	                    ...modifiedBody,
49427	                    ...(url === 'zephr/subscribe' && formState.pfToken ? { pf_token: formState.pfToken } : {})
49428	                }
49429	            }, formActions).then(response => {
49430	                if (!response?.ok) {
49431	                    void response.json().then(json => {
49432	                        console.error("Error when subscribing", json);
49433	                    });
49434	                    return Promise.reject();
49435	                }
49436	            });
49437	        }
49438	    }
49439	    finally {
49440	        formActions.decrementRequestCount();
49441	        formActions.updateFormState({
49442	            paymentProviderFormBusy: false
49443	        });
49444	    }
49445	};
49446	const zuoraChangePayment = (form, formState, formActions) => {
49447	    console.log(formState.paymentProviderVendorFields);
49448	    const paymentMethodId = JSON.parse(formState.paymentProviderVendorFields?.detail).refId;
49449	    return request('plugins/public/zuora-billing/update-account', {
49450	        method: 'POST',
49451	        bodyObject: {
49452	            paymentMethodId,
49453	        }
49454	    }, formActions).then(response => {
49455	        if (!response?.ok) {
49456	            console.error("Error when changing default payment method", response);
49457	            return Promise.reject();
49458	        }
49459	    });
49460	};
49461
49462	const getDynamicOffer = async (form, formActions) => {
49463	    const dynamicOfferId = formConfigAs(form).dynamicOffer?.id;
49464	    const dynamicOfferPreview = formConfigAs(form).dynamicOfferPreview;
49465	    if (form.environment.previewMode) {
49466	        formActions.updateFormState({ dynamicOfferResult: dynamicOfferPreview });
49467	        return;
49468	    }
49469	    let session;
49470	    let jwt;
49471	    try {
49472	        session = document.cookie.match(/blaize_session=[0-9a-z-]+/)[0].substring(15);
49473	    }
49474	    catch {
49475	        session = null;
49476	    }
49477	    try {
49478	        jwt = document.cookie.match(/(?<=blaize_jwt=)[^;]+/)[0];
49479	    }
49480	    catch {
49481	        jwt = null;
49482	    }
49483	    if (!dynamicOfferId) {
49484	        throw Error('Missing Dynamic Offer id');
49485	    }
49486	    const response = await request('zephr/public/decisions/v2/dynamic-offers', {
49487	        method: "POST",
49488	        bodyObject: {
49489	            "dynamic_offer": { "slug": dynamicOfferId },
49490	            "session": session,
49491	            "jwt": jwt
49492	        },
49493	    }, formActions);
49494	    const dynamicOfferResult = await response.json();
49495	    formActions.updateFormState({ dynamicOfferResult });
49496	};
49497	const mockBillingPreviewResponse = (dynamicOfferResult) => {
49498	    const chargeOne = dynamicOfferResult?.products
49499	        ? dynamicOfferResult.products[0].paymentPlans[0].charges[0]
49500	        : { prices: [{ price: 25 }], chargeData: { name: 'Monthly Fee' } };
49501	    const amount = chargeOne.prices[0]?.price;
49502	    const chargeName = chargeOne.chargeData?.name;
49503	    return {
49504	        "success": true,
49505	        "contractedMrr": amount,
49506	        "totalContractedValue": null,
49507	        "amount": amount + 3,
49508	        "amountWithoutTax": amount,
49509	        "taxAmount": 3,
49510	        "invoiceTargetDate": "2024-05-20",
49511	        "documentDate": "2024-05-20",
49512	        "invoiceItems": {
49513	            "0": {
49514	                "serviceStartDate": "2024-05-20",
49515	                "serviceEndDate": "2024-06-19",
49516	                "chargeAmount": amount,
49517	                "taxAmount": 3,
49518	                "chargeDescription": "",
49519	                "chargeName": chargeName,
49520	                "productName": "Product",
49521	                "productRatePlanChargeId": "8ad097b48f533234018f57a8982a5a45",
49522	                "quantity": 1,
49523	                "unitOfMeasure": ""
49524	            }
49525	        }
49526	    };
49527	};
49528	const filterChangeSubDynamicOfferResponse = (dynamicOfferResult, form, formState) => {
49529	    if (!formConfigAs(form).changeSubscriptionMode || form.environment.previewMode) {
49530	        return dynamicOfferResult;
49531	    }
49532	    return {
49533	        ...dynamicOfferResult,
49534	        products: dynamicOfferResult.products.map(product => ({
49535	            ...product,
49536	            paymentPlans: product.paymentPlans.filter(plan => formState
49537	                .validChangeFromPlans
49538	                .some(changeFromPlan => changeFromPlan.planSlug === plan.planId && changeFromPlan.productId === product.id))
49539	        }))
49540	    };
49541	};
49542
49543	function ownKeys(e, r) {
49544	  var t = Object.keys(e);
49545	  if (Object.getOwnPropertySymbols) {
49546	    var o = Object.getOwnPropertySymbols(e);
49547	    r && (o = o.filter(function (r) {
49548	      return Object.getOwnPropertyDescriptor(e, r).enumerable;
49549	    })), t.push.apply(t, o);
49550	  }
49551	  return t;
49552	}
49553	function _objectSpread2(e) {
49554	  for (var r = 1; r < arguments.length; r++) {
49555	    var t = null != arguments[r] ? arguments[r] : {};
49556	    r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {
49557	      _defineProperty(e, r, t[r]);
49558	    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {
49559	      Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
49560	    });
49561	  }
49562	  return e;
49563	}
49564	function _defineProperty(obj, key, value) {
49565	  key = _toPropertyKey(key);
49566	  if (key in obj) {
49567	    Object.defineProperty(obj, key, {
49568	      value: value,
49569	      enumerable: true,
49570	      configurable: true,
49571	      writable: true
49572	    });
49573	  } else {
49574	    obj[key] = value;
49575	  }
49576	  return obj;
49577	}
49578	function _objectWithoutPropertiesLoose(source, excluded) {
49579	  if (source == null) return {};
49580	  var target = {};
49581	  var sourceKeys = Object.keys(source);
49582	  var key, i;
49583	  for (i = 0; i < sourceKeys.length; i++) {
49584	    key = sourceKeys[i];
49585	    if (excluded.indexOf(key) >= 0) continue;
49586	    target[key] = source[key];
49587	  }
49588	  return target;
49589	}
49590	function _objectWithoutProperties(source, excluded) {
49591	  if (source == null) return {};
49592	  var target = _objectWithoutPropertiesLoose(source, excluded);
49593	  var key, i;
49594	  if (Object.getOwnPropertySymbols) {
49595	    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
49596	    for (i = 0; i < sourceSymbolKeys.length; i++) {
49597	      key = sourceSymbolKeys[i];
49598	      if (excluded.indexOf(key) >= 0) continue;
49599	      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
49600	      target[key] = source[key];
49601	    }
49602	  }
49603	  return target;
49604	}
49605	function _toPrimitive(input, hint) {
49606	  if (typeof input !== "object" || input === null) return input;
49607	  var prim = input[Symbol.toPrimitive];
49608	  if (prim !== undefined) {
49609	    var res = prim.call(input, hint || "default");
49610	    if (typeof res !== "object") return res;
49611	    throw new TypeError("@@toPrimitive must return a primitive value.");
49612	  }
49613	  return (hint === "string" ? String : Number)(input);
49614	}
49615	function _toPropertyKey(arg) {
49616	  var key = _toPrimitive(arg, "string");
49617	  return typeof key === "symbol" ? key : String(key);
49618	}
49619
49620	var countries$1 = {
49621		AD: "Andorra",
49622		AE: "United Arab Emirates",
49623		AF: "Afghanistan",
49624		AG: "Antigua and Barbuda",
49625		AI: "Anguilla",
49626		AL: "Albania",
49627		AM: "Armenia",
49628		AO: "Angola",
49629		AQ: "Antarctica",
49630		AR: "Argentina",
49631		AS: "American Samoa",
49632		AT: "Austria",
49633		AU: "Australia",
49634		AW: "Aruba",
49635		AX: "Åland Islands",
49636		AZ: "Azerbaijan",
49637		BA: "Bosnia and Herzegovina",
49638		BB: "Barbados",
49639		BD: "Bangladesh",
49640		BE: "Belgium",
49641		BF: "Burkina Faso",
49642		BG: "Bulgaria",
49643		BH: "Bahrain",
49644		BI: "Burundi",
49645		BJ: "Benin",
49646		BL: "Saint Barthélemy",
49647		BM: "Bermuda",
49648		BN: "Brunei",
49649		BO: "Bolivia",
49650		BQ: "Caribbean Netherlands",
49651		BR: "Brazil",
49652		BS: "Bahamas",
49653		BT: "Bhutan",
49654		BW: "Botswana",
49655		BY: "Belarus",
49656		BZ: "Belize",
49657		CA: "Canada",
49658		CC: "Cocos Islands",
49659		CD: "Democratic Republic of the Congo",
49660		CF: "Central African Republic",
49661		CG: "Republic of the Congo",
49662		CH: "Switzerland",
49663		CI: "Ivory Coast",
49664		CK: "Cook Islands",
49665		CL: "Chile",
49666		CM: "Cameroon",
49667		CN: "China",
49668		CO: "Colombia",
49669		CR: "Costa Rica",
49670		CU: "Cuba",
49671		CV: "Cabo Verde",
49672		CW: "Curaçao",
49673		CX: "Christmas Island",
49674		CY: "Cyprus",
49675		CZ: "Czechia",
49676		DE: "Germany",
49677		DJ: "Djibouti",
49678		DK: "Denmark",
49679		DM: "Dominica",
49680		DO: "Dominican Republic",
49681		DZ: "Algeria",
49682		EC: "Ecuador",
49683		EE: "Estonia",
49684		EG: "Egypt",
49685		EH: "Western Sahara",
49686		ER: "Eritrea",
49687		ES: "Spain",
49688		ET: "Ethiopia",
49689		FI: "Finland",
49690		FJ: "Fiji",
49691		FK: "Falkland Islands",
49692		FM: "Micronesia",
49693		FO: "Faroe Islands",
49694		FR: "France",
49695		GA: "Gabon",
49696		GB: "United Kingdom",
49697		GD: "Grenada",
49698		GE: "Georgia",
49699		GF: "French Guiana",
49700		GG: "Guernsey",
49701		GH: "Ghana",
49702		GI: "Gibraltar",
49703		GL: "Greenland",
49704		GM: "Gambia",
49705		GN: "Guinea",
49706		GP: "Guadeloupe",
49707		GQ: "Equatorial Guinea",
49708		GR: "Greece",
49709		GS: "South Georgia and the South Sandwich Islands",
49710		GT: "Guatemala",
49711		GU: "Guam",
49712		GW: "Guinea-Bissau",
49713		GY: "Guyana",
49714		HK: "Hong Kong",
49715		HN: "Honduras",
49716		HR: "Croatia",
49717		HT: "Haiti",
49718		HU: "Hungary",
49719		ID: "Indonesia",
49720		IE: "Ireland",
49721		IL: "Israel",
49722		IM: "Isle of Man",
49723		IN: "India",
49724		IO: "British Indian Ocean Territory",
49725		IQ: "Iraq",
49726		IR: "Iran",
49727		IS: "Iceland",
49728		IT: "Italy",
49729		JE: "Jersey",
49730		JM: "Jamaica",
49731		JO: "Jordan",
49732		JP: "Japan",
49733		KE: "Kenya",
49734		KG: "Kyrgyzstan",
49735		KH: "Cambodia",
49736		KI: "Kiribati",
49737		KM: "Comoros",
49738		KN: "Saint Kitts and Nevis",
49739		KP: "North Korea",
49740		KR: "South Korea",
49741		KW: "Kuwait",
49742		KY: "Cayman Islands",
49743		KZ: "Kazakhstan",
49744		LA: "Laos",
49745		LB: "Lebanon",
49746		LC: "Saint Lucia",
49747		LI: "Liechtenstein",
49748		LK: "Sri Lanka",
49749		LR: "Liberia",
49750		LS: "Lesotho",
49751		LT: "Lithuania",
49752		LU: "Luxembourg",
49753		LV: "Latvia",
49754		LY: "Libya",
49755		MA: "Morocco",
49756		MC: "Monaco",
49757		MD: "Moldova",
49758		ME: "Montenegro",
49759		MF: "Saint Martin",
49760		MG: "Madagascar",
49761		MH: "Marshall Islands",
49762		MK: "North Macedonia",
49763		ML: "Mali",
49764		MM: "Myanmar",
49765		MN: "Mongolia",
49766		MO: "Macao",
49767		MP: "Northern Mariana Islands",
49768		MQ: "Martinique",
49769		MR: "Mauritania",
49770		MS: "Montserrat",
49771		MT: "Malta",
49772		MU: "Mauritius",
49773		MV: "Maldives",
49774		MW: "Malawi",
49775		MX: "Mexico",
49776		MY: "Malaysia",
49777		MZ: "Mozambique",
49778		NA: "Namibia",
49779		NC: "New Caledonia",
49780		NE: "Niger",
49781		NF: "Norfolk Island",
49782		NG: "Nigeria",
49783		NI: "Nicaragua",
49784		NL: "Netherlands",
49785		NO: "Norway",
49786		NP: "Nepal",
49787		NR: "Nauru",
49788		NU: "Niue",
49789		NZ: "New Zealand",
49790		OM: "Oman",
49791		PA: "Panama",
49792		PE: "Peru",
49793		PF: "French Polynesia",
49794		PG: "Papua New Guinea",
49795		PH: "Philippines",
49796		PK: "Pakistan",
49797		PL: "Poland",
49798		PM: "Saint Pierre and Miquelon",
49799		PN: "Pitcairn",
49800		PR: "Puerto Rico",
49801		PS: "Palestine",
49802		PT: "Portugal",
49803		PW: "Palau",
49804		PY: "Paraguay",
49805		QA: "Qatar",
49806		RE: "Réunion",
49807		RO: "Romania",
49808		RS: "Serbia",
49809		RU: "Russia",
49810		RW: "Rwanda",
49811		SA: "Saudi Arabia",
49812		SB: "Solomon Islands",
49813		SC: "Seychelles",
49814		SD: "Sudan",
49815		SE: "Sweden",
49816		SG: "Singapore",
49817		SH: "Saint Helena, Ascension and Tristan da Cunha",
49818		SI: "Slovenia",
49819		SJ: "Svalbard and Jan Mayen",
49820		SK: "Slovakia",
49821		SL: "Sierra Leone",
49822		SM: "San Marino",
49823		SN: "Senegal",
49824		SO: "Somalia",
49825		SR: "Suriname",
49826		SS: "South Sudan",
49827		ST: "Sao Tome and Principe",
49828		SV: "El Salvador",
49829		SX: "Sint Maarten",
49830		SY: "Syria",
49831		SZ: "Eswatini",
49832		TC: "Turks and Caicos Islands",
49833		TD: "Chad",
49834		TF: "French Southern Territories",
49835		TG: "Togo",
49836		TH: "Thailand",
49837		TJ: "Tajikistan",
49838		TK: "Tokelau",
49839		TL: "Timor-Leste",
49840		TM: "Turkmenistan",
49841		TN: "Tunisia",
49842		TO: "Tonga",
49843		TR: "Türkiye",
49844		TT: "Trinidad and Tobago",
49845		TV: "Tuvalu",
49846		TW: "Taiwan",
49847		TZ: "Tanzania",
49848		UA: "Ukraine",
49849		UG: "Uganda",
49850		UM: "United States Minor Outlying Islands",
49851		US: "United States of America",
49852		UY: "Uruguay",
49853		UZ: "Uzbekistan",
49854		VA: "Holy See",
49855		VC: "Saint Vincent and the Grenadines",
49856		VE: "Venezuela",
49857		VG: "Virgin Islands (UK)",
49858		VI: "Virgin Islands (US)",
49859		VN: "Vietnam",
49860		VU: "Vanuatu",
49861		WF: "Wallis and Futuna",
49862		WS: "Samoa",
49863		YE: "Yemen",
49864		YT: "Mayotte",
49865		ZA: "South Africa",
49866		ZM: "Zambia",
49867		ZW: "Zimbabwe"
49868	};
49869	var timezones$1 = {
49870		"Africa/Abidjan": {
49871			u: 0,
49872			c: [
49873				"CI",
49874				"BF",
49875				"GH",
49876				"GM",
49877				"GN",
49878				"IS",
49879				"ML",
49880				"MR",
49881				"SH",
49882				"SL",
49883				"SN",
49884				"TG"
49885			]
49886		},
49887		"Africa/Accra": {
49888			a: "Africa/Abidjan",
49889			c: [
49890				"GH"
49891			],
49892			r: 1
49893		},
49894		"Africa/Addis_Ababa": {
49895			a: "Africa/Nairobi",
49896			c: [
49897				"ET"
49898			],
49899			r: 1
49900		},
49901		"Africa/Algiers": {
49902			u: 60,
49903			c: [
49904				"DZ"
49905			]
49906		},
49907		"Africa/Asmara": {
49908			a: "Africa/Nairobi",
49909			c: [
49910				"ER"
49911			],
49912			r: 1
49913		},
49914		"Africa/Asmera": {
49915			a: "Africa/Nairobi",
49916			c: [
49917				"ER"
49918			],
49919			r: 1
49920		},
49921		"Africa/Bamako": {
49922			a: "Africa/Abidjan",
49923			c: [
49924				"ML"
49925			],
49926			r: 1
49927		},
49928		"Africa/Bangui": {
49929			a: "Africa/Lagos",
49930			c: [
49931				"CF"
49932			],
49933			r: 1
49934		},
49935		"Africa/Banjul": {
49936			a: "Africa/Abidjan",
49937			c: [
49938				"GM"
49939			],
49940			r: 1
49941		},
49942		"Africa/Bissau": {
49943			u: 0,
49944			c: [
49945				"GW"
49946			]
49947		},
49948		"Africa/Blantyre": {
49949			a: "Africa/Maputo",
49950			c: [
49951				"MW"
49952			],
49953			r: 1
49954		},
49955		"Africa/Brazzaville": {
49956			a: "Africa/Lagos",
49957			c: [
49958				"CG"
49959			],
49960			r: 1
49961		},
49962		"Africa/Bujumbura": {
49963			a: "Africa/Maputo",
49964			c: [
49965				"BI"
49966			],
49967			r: 1
49968		},
49969		"Africa/Cairo": {
49970			u: 120,
49971			d: 180,
49972			c: [
49973				"EG"
49974			]
49975		},
49976		"Africa/Casablanca": {
49977			u: 60,
49978			d: 0,
49979			c: [
49980				"MA"
49981			]
49982		},
49983		"Africa/Ceuta": {
49984			u: 60,
49985			d: 120,
49986			c: [
49987				"ES"
49988			]
49989		},
49990		"Africa/Conakry": {
49991			a: "Africa/Abidjan",
49992			c: [
49993				"GN"
49994			],
49995			r: 1
49996		},
49997		"Africa/Dakar": {
49998			a: "Africa/Abidjan",
49999			c: [
50000				"SN"
50001			],
50002			r: 1
50003		},
50004		"Africa/Dar_es_Salaam": {
50005			a: "Africa/Nairobi",
50006			c: [
50007				"TZ"
50008			],
50009			r: 1
50010		},
50011		"Africa/Djibouti": {
50012			a: "Africa/Nairobi",
50013			c: [
50014				"DJ"
50015			],
50016			r: 1
50017		},
50018		"Africa/Douala": {
50019			a: "Africa/Lagos",
50020			c: [
vendor: 38,090 bytes, lines 50021-53408
50021				"CM"
50022			],
50023			r: 1
50024		},
50025		"Africa/El_Aaiun": {
50026			u: 60,
50027			d: 0,
50028			c: [
50029				"EH"
50030			]
50031		},
50032		"Africa/Freetown": {
50033			a: "Africa/Abidjan",
50034			c: [
50035				"SL"
50036			],
50037			r: 1
50038		},
50039		"Africa/Gaborone": {
50040			a: "Africa/Maputo",
50041			c: [
50042				"BW"
50043			],
50044			r: 1
50045		},
50046		"Africa/Harare": {
50047			a: "Africa/Maputo",
50048			c: [
50049				"ZW"
50050			],
50051			r: 1
50052		},
50053		"Africa/Johannesburg": {
50054			u: 120,
50055			c: [
50056				"ZA",
50057				"LS",
50058				"SZ"
50059			]
50060		},
50061		"Africa/Juba": {
50062			u: 120,
50063			c: [
50064				"SS"
50065			]
50066		},
50067		"Africa/Kampala": {
50068			a: "Africa/Nairobi",
50069			c: [
50070				"UG"
50071			],
50072			r: 1
50073		},
50074		"Africa/Khartoum": {
50075			u: 120,
50076			c: [
50077				"SD"
50078			]
50079		},
50080		"Africa/Kigali": {
50081			a: "Africa/Maputo",
50082			c: [
50083				"RW"
50084			],
50085			r: 1
50086		},
50087		"Africa/Kinshasa": {
50088			a: "Africa/Lagos",
50089			c: [
50090				"CD"
50091			],
50092			r: 1
50093		},
50094		"Africa/Lagos": {
50095			u: 60,
50096			c: [
50097				"NG",
50098				"AO",
50099				"BJ",
50100				"CD",
50101				"CF",
50102				"CG",
50103				"CM",
50104				"GA",
50105				"GQ",
50106				"NE"
50107			]
50108		},
50109		"Africa/Libreville": {
50110			a: "Africa/Lagos",
50111			c: [
50112				"GA"
50113			],
50114			r: 1
50115		},
50116		"Africa/Lome": {
50117			a: "Africa/Abidjan",
50118			c: [
50119				"TG"
50120			],
50121			r: 1
50122		},
50123		"Africa/Luanda": {
50124			a: "Africa/Lagos",
50125			c: [
50126				"AO"
50127			],
50128			r: 1
50129		},
50130		"Africa/Lubumbashi": {
50131			a: "Africa/Maputo",
50132			c: [
50133				"CD"
50134			],
50135			r: 1
50136		},
50137		"Africa/Lusaka": {
50138			a: "Africa/Maputo",
50139			c: [
50140				"ZM"
50141			],
50142			r: 1
50143		},
50144		"Africa/Malabo": {
50145			a: "Africa/Lagos",
50146			c: [
50147				"GQ"
50148			],
50149			r: 1
50150		},
50151		"Africa/Maputo": {
50152			u: 120,
50153			c: [
50154				"MZ",
50155				"BI",
50156				"BW",
50157				"CD",
50158				"MW",
50159				"RW",
50160				"ZM",
50161				"ZW"
50162			]
50163		},
50164		"Africa/Maseru": {
50165			a: "Africa/Johannesburg",
50166			c: [
50167				"LS"
50168			],
50169			r: 1
50170		},
50171		"Africa/Mbabane": {
50172			a: "Africa/Johannesburg",
50173			c: [
50174				"SZ"
50175			],
50176			r: 1
50177		},
50178		"Africa/Mogadishu": {
50179			a: "Africa/Nairobi",
50180			c: [
50181				"SO"
50182			],
50183			r: 1
50184		},
50185		"Africa/Monrovia": {
50186			u: 0,
50187			c: [
50188				"LR"
50189			]
50190		},
50191		"Africa/Nairobi": {
50192			u: 180,
50193			c: [
50194				"KE",
50195				"DJ",
50196				"ER",
50197				"ET",
50198				"KM",
50199				"MG",
50200				"SO",
50201				"TZ",
50202				"UG",
50203				"YT"
50204			]
50205		},
50206		"Africa/Ndjamena": {
50207			u: 60,
50208			c: [
50209				"TD"
50210			]
50211		},
50212		"Africa/Niamey": {
50213			a: "Africa/Lagos",
50214			c: [
50215				"NE"
50216			],
50217			r: 1
50218		},
50219		"Africa/Nouakchott": {
50220			a: "Africa/Abidjan",
50221			c: [
50222				"MR"
50223			],
50224			r: 1
50225		},
50226		"Africa/Ouagadougou": {
50227			a: "Africa/Abidjan",
50228			c: [
50229				"BF"
50230			],
50231			r: 1
50232		},
50233		"Africa/Porto-Novo": {
50234			a: "Africa/Lagos",
50235			c: [
50236				"BJ"
50237			],
50238			r: 1
50239		},
50240		"Africa/Sao_Tome": {
50241			u: 0,
50242			c: [
50243				"ST"
50244			]
50245		},
50246		"Africa/Timbuktu": {
50247			a: "Africa/Abidjan",
50248			c: [
50249				"ML"
50250			],
50251			r: 1
50252		},
50253		"Africa/Tripoli": {
50254			u: 120,
50255			c: [
50256				"LY"
50257			]
50258		},
50259		"Africa/Tunis": {
50260			u: 60,
50261			c: [
50262				"TN"
50263			]
50264		},
50265		"Africa/Windhoek": {
50266			u: 120,
50267			c: [
50268				"NA"
50269			]
50270		},
50271		"America/Adak": {
50272			u: -600,
50273			d: -540,
50274			c: [
50275				"US"
50276			]
50277		},
50278		"America/Anchorage": {
50279			u: -540,
50280			d: -480,
50281			c: [
50282				"US"
50283			]
50284		},
50285		"America/Anguilla": {
50286			a: "America/Puerto_Rico",
50287			c: [
50288				"AI"
50289			],
50290			r: 1
50291		},
50292		"America/Antigua": {
50293			a: "America/Puerto_Rico",
50294			c: [
50295				"AG"
50296			],
50297			r: 1
50298		},
50299		"America/Araguaina": {
50300			u: -180,
50301			c: [
50302				"BR"
50303			]
50304		},
50305		"America/Argentina/Buenos_Aires": {
50306			u: -180,
50307			c: [
50308				"AR"
50309			]
50310		},
50311		"America/Argentina/Catamarca": {
50312			u: -180,
50313			c: [
50314				"AR"
50315			]
50316		},
50317		"America/Argentina/ComodRivadavia": {
50318			a: "America/Argentina/Catamarca",
50319			r: 1
50320		},
50321		"America/Argentina/Cordoba": {
50322			u: -180,
50323			c: [
50324				"AR"
50325			]
50326		},
50327		"America/Argentina/Jujuy": {
50328			u: -180,
50329			c: [
50330				"AR"
50331			]
50332		},
50333		"America/Argentina/La_Rioja": {
50334			u: -180,
50335			c: [
50336				"AR"
50337			]
50338		},
50339		"America/Argentina/Mendoza": {
50340			u: -180,
50341			c: [
50342				"AR"
50343			]
50344		},
50345		"America/Argentina/Rio_Gallegos": {
50346			u: -180,
50347			c: [
50348				"AR"
50349			]
50350		},
50351		"America/Argentina/Salta": {
50352			u: -180,
50353			c: [
50354				"AR"
50355			]
50356		},
50357		"America/Argentina/San_Juan": {
50358			u: -180,
50359			c: [
50360				"AR"
50361			]
50362		},
50363		"America/Argentina/San_Luis": {
50364			u: -180,
50365			c: [
50366				"AR"
50367			]
50368		},
50369		"America/Argentina/Tucuman": {
50370			u: -180,
50371			c: [
50372				"AR"
50373			]
50374		},
50375		"America/Argentina/Ushuaia": {
50376			u: -180,
50377			c: [
50378				"AR"
50379			]
50380		},
50381		"America/Aruba": {
50382			a: "America/Puerto_Rico",
50383			c: [
50384				"AW"
50385			],
50386			r: 1
50387		},
50388		"America/Asuncion": {
50389			u: -240,
50390			d: -180,
50391			c: [
50392				"PY"
50393			]
50394		},
50395		"America/Atikokan": {
50396			a: "America/Panama",
50397			c: [
50398				"CA"
50399			],
50400			r: 1
50401		},
50402		"America/Atka": {
50403			a: "America/Adak",
50404			r: 1
50405		},
50406		"America/Bahia": {
50407			u: -180,
50408			c: [
50409				"BR"
50410			]
50411		},
50412		"America/Bahia_Banderas": {
50413			u: -360,
50414			c: [
50415				"MX"
50416			]
50417		},
50418		"America/Barbados": {
50419			u: -240,
50420			c: [
50421				"BB"
50422			]
50423		},
50424		"America/Belem": {
50425			u: -180,
50426			c: [
50427				"BR"
50428			]
50429		},
50430		"America/Belize": {
50431			u: -360,
50432			c: [
50433				"BZ"
50434			]
50435		},
50436		"America/Blanc-Sablon": {
50437			a: "America/Puerto_Rico",
50438			c: [
50439				"CA"
50440			],
50441			r: 1
50442		},
50443		"America/Boa_Vista": {
50444			u: -240,
50445			c: [
50446				"BR"
50447			]
50448		},
50449		"America/Bogota": {
50450			u: -300,
50451			c: [
50452				"CO"
50453			]
50454		},
50455		"America/Boise": {
50456			u: -420,
50457			d: -360,
50458			c: [
50459				"US"
50460			]
50461		},
50462		"America/Buenos_Aires": {
50463			a: "America/Argentina/Buenos_Aires",
50464			r: 1
50465		},
50466		"America/Cambridge_Bay": {
50467			u: -420,
50468			d: -360,
50469			c: [
50470				"CA"
50471			]
50472		},
50473		"America/Campo_Grande": {
50474			u: -240,
50475			c: [
50476				"BR"
50477			]
50478		},
50479		"America/Cancun": {
50480			u: -300,
50481			c: [
50482				"MX"
50483			]
50484		},
50485		"America/Caracas": {
50486			u: -240,
50487			c: [
50488				"VE"
50489			]
50490		},
50491		"America/Catamarca": {
50492			a: "America/Argentina/Catamarca",
50493			r: 1
50494		},
50495		"America/Cayenne": {
50496			u: -180,
50497			c: [
50498				"GF"
50499			]
50500		},
50501		"America/Cayman": {
50502			a: "America/Panama",
50503			c: [
50504				"KY"
50505			],
50506			r: 1
50507		},
50508		"America/Chicago": {
50509			u: -360,
50510			d: -300,
50511			c: [
50512				"US"
50513			]
50514		},
50515		"America/Chihuahua": {
50516			u: -360,
50517			c: [
50518				"MX"
50519			]
50520		},
50521		"America/Ciudad_Juarez": {
50522			u: -420,
50523			d: -360,
50524			c: [
50525				"MX"
50526			]
50527		},
50528		"America/Coral_Harbour": {
50529			a: "America/Panama",
50530			c: [
50531				"CA"
50532			],
50533			r: 1
50534		},
50535		"America/Cordoba": {
50536			a: "America/Argentina/Cordoba",
50537			r: 1
50538		},
50539		"America/Costa_Rica": {
50540			u: -360,
50541			c: [
50542				"CR"
50543			]
50544		},
50545		"America/Creston": {
50546			a: "America/Phoenix",
50547			c: [
50548				"CA"
50549			],
50550			r: 1
50551		},
50552		"America/Cuiaba": {
50553			u: -240,
50554			c: [
50555				"BR"
50556			]
50557		},
50558		"America/Curacao": {
50559			a: "America/Puerto_Rico",
50560			c: [
50561				"CW"
50562			],
50563			r: 1
50564		},
50565		"America/Danmarkshavn": {
50566			u: 0,
50567			c: [
50568				"GL"
50569			]
50570		},
50571		"America/Dawson": {
50572			u: -420,
50573			c: [
50574				"CA"
50575			]
50576		},
50577		"America/Dawson_Creek": {
50578			u: -420,
50579			c: [
50580				"CA"
50581			]
50582		},
50583		"America/Denver": {
50584			u: -420,
50585			d: -360,
50586			c: [
50587				"US"
50588			]
50589		},
50590		"America/Detroit": {
50591			u: -300,
50592			d: -240,
50593			c: [
50594				"US"
50595			]
50596		},
50597		"America/Dominica": {
50598			a: "America/Puerto_Rico",
50599			c: [
50600				"DM"
50601			],
50602			r: 1
50603		},
50604		"America/Edmonton": {
50605			u: -420,
50606			d: -360,
50607			c: [
50608				"CA"
50609			]
50610		},
50611		"America/Eirunepe": {
50612			u: -300,
50613			c: [
50614				"BR"
50615			]
50616		},
50617		"America/El_Salvador": {
50618			u: -360,
50619			c: [
50620				"SV"
50621			]
50622		},
50623		"America/Ensenada": {
50624			a: "America/Tijuana",
50625			r: 1
50626		},
50627		"America/Fort_Nelson": {
50628			u: -420,
50629			c: [
50630				"CA"
50631			]
50632		},
50633		"America/Fort_Wayne": {
50634			a: "America/Indiana/Indianapolis",
50635			r: 1
50636		},
50637		"America/Fortaleza": {
50638			u: -180,
50639			c: [
50640				"BR"
50641			]
50642		},
50643		"America/Glace_Bay": {
50644			u: -240,
50645			d: -180,
50646			c: [
50647				"CA"
50648			]
50649		},
50650		"America/Godthab": {
50651			a: "America/Nuuk",
50652			r: 1
50653		},
50654		"America/Goose_Bay": {
50655			u: -240,
50656			d: -180,
50657			c: [
50658				"CA"
50659			]
50660		},
50661		"America/Grand_Turk": {
50662			u: -300,
50663			d: -240,
50664			c: [
50665				"TC"
50666			]
50667		},
50668		"America/Grenada": {
50669			a: "America/Puerto_Rico",
50670			c: [
50671				"GD"
50672			],
50673			r: 1
50674		},
50675		"America/Guadeloupe": {
50676			a: "America/Puerto_Rico",
50677			c: [
50678				"GP"
50679			],
50680			r: 1
50681		},
50682		"America/Guatemala": {
50683			u: -360,
50684			c: [
50685				"GT"
50686			]
50687		},
50688		"America/Guayaquil": {
50689			u: -300,
50690			c: [
50691				"EC"
50692			]
50693		},
50694		"America/Guyana": {
50695			u: -240,
50696			c: [
50697				"GY"
50698			]
50699		},
50700		"America/Halifax": {
50701			u: -240,
50702			d: -180,
50703			c: [
50704				"CA"
50705			]
50706		},
50707		"America/Havana": {
50708			u: -300,
50709			d: -240,
50710			c: [
50711				"CU"
50712			]
50713		},
50714		"America/Hermosillo": {
50715			u: -420,
50716			c: [
50717				"MX"
50718			]
50719		},
50720		"America/Indiana/Indianapolis": {
50721			u: -300,
50722			d: -240,
50723			c: [
50724				"US"
50725			]
50726		},
50727		"America/Indiana/Knox": {
50728			u: -360,
50729			d: -300,
50730			c: [
50731				"US"
50732			]
50733		},
50734		"America/Indiana/Marengo": {
50735			u: -300,
50736			d: -240,
50737			c: [
50738				"US"
50739			]
50740		},
50741		"America/Indiana/Petersburg": {
50742			u: -300,
50743			d: -240,
50744			c: [
50745				"US"
50746			]
50747		},
50748		"America/Indiana/Tell_City": {
50749			u: -360,
50750			d: -300,
50751			c: [
50752				"US"
50753			]
50754		},
50755		"America/Indiana/Vevay": {
50756			u: -300,
50757			d: -240,
50758			c: [
50759				"US"
50760			]
50761		},
50762		"America/Indiana/Vincennes": {
50763			u: -300,
50764			d: -240,
50765			c: [
50766				"US"
50767			]
50768		},
50769		"America/Indiana/Winamac": {
50770			u: -300,
50771			d: -240,
50772			c: [
50773				"US"
50774			]
50775		},
50776		"America/Indianapolis": {
50777			a: "America/Indiana/Indianapolis",
50778			r: 1
50779		},
50780		"America/Inuvik": {
50781			u: -420,
50782			d: -360,
50783			c: [
50784				"CA"
50785			]
50786		},
50787		"America/Iqaluit": {
50788			u: -300,
50789			d: -240,
50790			c: [
50791				"CA"
50792			]
50793		},
50794		"America/Jamaica": {
50795			u: -300,
50796			c: [
50797				"JM"
50798			]
50799		},
50800		"America/Jujuy": {
50801			a: "America/Argentina/Jujuy",
50802			r: 1
50803		},
50804		"America/Juneau": {
50805			u: -540,
50806			d: -480,
50807			c: [
50808				"US"
50809			]
50810		},
50811		"America/Kentucky/Louisville": {
50812			u: -300,
50813			d: -240,
50814			c: [
50815				"US"
50816			]
50817		},
50818		"America/Kentucky/Monticello": {
50819			u: -300,
50820			d: -240,
50821			c: [
50822				"US"
50823			]
50824		},
50825		"America/Knox_IN": {
50826			a: "America/Indiana/Knox",
50827			r: 1
50828		},
50829		"America/Kralendijk": {
50830			a: "America/Puerto_Rico",
50831			c: [
50832				"BQ"
50833			],
50834			r: 1
50835		},
50836		"America/La_Paz": {
50837			u: -240,
50838			c: [
50839				"BO"
50840			]
50841		},
50842		"America/Lima": {
50843			u: -300,
50844			c: [
50845				"PE"
50846			]
50847		},
50848		"America/Los_Angeles": {
50849			u: -480,
50850			d: -420,
50851			c: [
50852				"US"
50853			]
50854		},
50855		"America/Louisville": {
50856			a: "America/Kentucky/Louisville",
50857			r: 1
50858		},
50859		"America/Lower_Princes": {
50860			a: "America/Puerto_Rico",
50861			c: [
50862				"SX"
50863			],
50864			r: 1
50865		},
50866		"America/Maceio": {
50867			u: -180,
50868			c: [
50869				"BR"
50870			]
50871		},
50872		"America/Managua": {
50873			u: -360,
50874			c: [
50875				"NI"
50876			]
50877		},
50878		"America/Manaus": {
50879			u: -240,
50880			c: [
50881				"BR"
50882			]
50883		},
50884		"America/Marigot": {
50885			a: "America/Puerto_Rico",
50886			c: [
50887				"MF"
50888			],
50889			r: 1
50890		},
50891		"America/Martinique": {
50892			u: -240,
50893			c: [
50894				"MQ"
50895			]
50896		},
50897		"America/Matamoros": {
50898			u: -360,
50899			d: -300,
50900			c: [
50901				"MX"
50902			]
50903		},
50904		"America/Mazatlan": {
50905			u: -420,
50906			c: [
50907				"MX"
50908			]
50909		},
50910		"America/Mendoza": {
50911			a: "America/Argentina/Mendoza",
50912			r: 1
50913		},
50914		"America/Menominee": {
50915			u: -360,
50916			d: -300,
50917			c: [
50918				"US"
50919			]
50920		},
50921		"America/Merida": {
50922			u: -360,
50923			c: [
50924				"MX"
50925			]
50926		},
50927		"America/Metlakatla": {
50928			u: -540,
50929			d: -480,
50930			c: [
50931				"US"
50932			]
50933		},
50934		"America/Mexico_City": {
50935			u: -360,
50936			c: [
50937				"MX"
50938			]
50939		},
50940		"America/Miquelon": {
50941			u: -180,
50942			d: -120,
50943			c: [
50944				"PM"
50945			]
50946		},
50947		"America/Moncton": {
50948			u: -240,
50949			d: -180,
50950			c: [
50951				"CA"
50952			]
50953		},
50954		"America/Monterrey": {
50955			u: -360,
50956			c: [
50957				"MX"
50958			]
50959		},
50960		"America/Montevideo": {
50961			u: -180,
50962			c: [
50963				"UY"
50964			]
50965		},
50966		"America/Montreal": {
50967			a: "America/Toronto",
50968			c: [
50969				"CA"
50970			],
50971			r: 1
50972		},
50973		"America/Montserrat": {
50974			a: "America/Puerto_Rico",
50975			c: [
50976				"MS"
50977			],
50978			r: 1
50979		},
50980		"America/Nassau": {
50981			a: "America/Toronto",
50982			c: [
50983				"BS"
50984			],
50985			r: 1
50986		},
50987		"America/New_York": {
50988			u: -300,
50989			d: -240,
50990			c: [
50991				"US"
50992			]
50993		},
50994		"America/Nipigon": {
50995			a: "America/Toronto",
50996			c: [
50997				"CA"
50998			],
50999			r: 1
51000		},
51001		"America/Nome": {
51002			u: -540,
51003			d: -480,
51004			c: [
51005				"US"
51006			]
51007		},
51008		"America/Noronha": {
51009			u: -120,
51010			c: [
51011				"BR"
51012			]
51013		},
51014		"America/North_Dakota/Beulah": {
51015			u: -360,
51016			d: -300,
51017			c: [
51018				"US"
51019			]
51020		},
51021		"America/North_Dakota/Center": {
51022			u: -360,
51023			d: -300,
51024			c: [
51025				"US"
51026			]
51027		},
51028		"America/North_Dakota/New_Salem": {
51029			u: -360,
51030			d: -300,
51031			c: [
51032				"US"
51033			]
51034		},
51035		"America/Nuuk": {
51036			u: -120,
51037			d: -60,
51038			c: [
51039				"GL"
51040			]
51041		},
51042		"America/Ojinaga": {
51043			u: -360,
51044			d: -300,
51045			c: [
51046				"MX"
51047			]
51048		},
51049		"America/Panama": {
51050			u: -300,
51051			c: [
51052				"PA",
51053				"CA",
51054				"KY"
51055			]
51056		},
51057		"America/Pangnirtung": {
51058			a: "America/Iqaluit",
51059			r: 1
51060		},
51061		"America/Paramaribo": {
51062			u: -180,
51063			c: [
51064				"SR"
51065			]
51066		},
51067		"America/Phoenix": {
51068			u: -420,
51069			c: [
51070				"US",
51071				"CA"
51072			]
51073		},
51074		"America/Port-au-Prince": {
51075			u: -300,
51076			d: -240,
51077			c: [
51078				"HT"
51079			]
51080		},
51081		"America/Port_of_Spain": {
51082			a: "America/Puerto_Rico",
51083			c: [
51084				"TT"
51085			],
51086			r: 1
51087		},
51088		"America/Porto_Acre": {
51089			a: "America/Rio_Branco",
51090			r: 1
51091		},
51092		"America/Porto_Velho": {
51093			u: -240,
51094			c: [
51095				"BR"
51096			]
51097		},
51098		"America/Puerto_Rico": {
51099			u: -240,
51100			c: [
51101				"PR",
51102				"AG",
51103				"CA",
51104				"AI",
51105				"AW",
51106				"BL",
51107				"BQ",
51108				"CW",
51109				"DM",
51110				"GD",
51111				"GP",
51112				"KN",
51113				"LC",
51114				"MF",
51115				"MS",
51116				"SX",
51117				"TT",
51118				"VC",
51119				"VG",
51120				"VI"
51121			]
51122		},
51123		"America/Punta_Arenas": {
51124			u: -180,
51125			c: [
51126				"CL"
51127			]
51128		},
51129		"America/Rainy_River": {
51130			a: "America/Winnipeg",
51131			r: 1
51132		},
51133		"America/Rankin_Inlet": {
51134			u: -360,
51135			d: -300,
51136			c: [
51137				"CA"
51138			]
51139		},
51140		"America/Recife": {
51141			u: -180,
51142			c: [
51143				"BR"
51144			]
51145		},
51146		"America/Regina": {
51147			u: -360,
51148			c: [
51149				"CA"
51150			]
51151		},
51152		"America/Resolute": {
51153			u: -360,
51154			d: -300,
51155			c: [
51156				"CA"
51157			]
51158		},
51159		"America/Rio_Branco": {
51160			u: -300,
51161			c: [
51162				"BR"
51163			]
51164		},
51165		"America/Rosario": {
51166			a: "America/Argentina/Cordoba",
51167			r: 1
51168		},
51169		"America/Santa_Isabel": {
51170			a: "America/Tijuana",
51171			r: 1
51172		},
51173		"America/Santarem": {
51174			u: -180,
51175			c: [
51176				"BR"
51177			]
51178		},
51179		"America/Santiago": {
51180			u: -240,
51181			d: -180,
51182			c: [
51183				"CL"
51184			]
51185		},
51186		"America/Santo_Domingo": {
51187			u: -240,
51188			c: [
51189				"DO"
51190			]
51191		},
51192		"America/Sao_Paulo": {
51193			u: -180,
51194			c: [
51195				"BR"
51196			]
51197		},
51198		"America/Scoresbysund": {
51199			u: -60,
51200			d: 0,
51201			c: [
51202				"GL"
51203			]
51204		},
51205		"America/Shiprock": {
51206			a: "America/Denver",
51207			r: 1
51208		},
51209		"America/Sitka": {
51210			u: -540,
51211			d: -480,
51212			c: [
51213				"US"
51214			]
51215		},
51216		"America/St_Barthelemy": {
51217			a: "America/Puerto_Rico",
51218			c: [
51219				"BL"
51220			],
51221			r: 1
51222		},
51223		"America/St_Johns": {
51224			u: -210,
51225			d: -150,
51226			c: [
51227				"CA"
51228			]
51229		},
51230		"America/St_Kitts": {
51231			a: "America/Puerto_Rico",
51232			c: [
51233				"KN"
51234			],
51235			r: 1
51236		},
51237		"America/St_Lucia": {
51238			a: "America/Puerto_Rico",
51239			c: [
51240				"LC"
51241			],
51242			r: 1
51243		},
51244		"America/St_Thomas": {
51245			a: "America/Puerto_Rico",
51246			c: [
51247				"VI"
51248			],
51249			r: 1
51250		},
51251		"America/St_Vincent": {
51252			a: "America/Puerto_Rico",
51253			c: [
51254				"VC"
51255			],
51256			r: 1
51257		},
51258		"America/Swift_Current": {
51259			u: -360,
51260			c: [
51261				"CA"
51262			]
51263		},
51264		"America/Tegucigalpa": {
51265			u: -360,
51266			c: [
51267				"HN"
51268			]
51269		},
51270		"America/Thule": {
51271			u: -240,
51272			d: -180,
51273			c: [
51274				"GL"
51275			]
51276		},
51277		"America/Thunder_Bay": {
51278			a: "America/Toronto",
51279			c: [
51280				"CA"
51281			],
51282			r: 1
51283		},
51284		"America/Tijuana": {
51285			u: -480,
51286			d: -420,
51287			c: [
51288				"MX"
51289			]
51290		},
51291		"America/Toronto": {
51292			u: -300,
51293			d: -240,
51294			c: [
51295				"CA",
51296				"BS"
51297			]
51298		},
51299		"America/Tortola": {
51300			a: "America/Puerto_Rico",
51301			c: [
51302				"VG"
51303			],
51304			r: 1
51305		},
51306		"America/Vancouver": {
51307			u: -480,
51308			d: -420,
51309			c: [
51310				"CA"
51311			]
51312		},
51313		"America/Virgin": {
51314			a: "America/Puerto_Rico",
51315			c: [
51316				"VI"
51317			],
51318			r: 1
51319		},
51320		"America/Whitehorse": {
51321			u: -420,
51322			c: [
51323				"CA"
51324			]
51325		},
51326		"America/Winnipeg": {
51327			u: -360,
51328			d: -300,
51329			c: [
51330				"CA"
51331			]
51332		},
51333		"America/Yakutat": {
51334			u: -540,
51335			d: -480,
51336			c: [
51337				"US"
51338			]
51339		},
51340		"America/Yellowknife": {
51341			a: "America/Edmonton",
51342			r: 1
51343		},
51344		"Antarctica/Casey": {
51345			u: 660,
51346			c: [
51347				"AQ"
51348			]
51349		},
51350		"Antarctica/Davis": {
51351			u: 420,
51352			c: [
51353				"AQ"
51354			]
51355		},
51356		"Antarctica/DumontDUrville": {
51357			a: "Pacific/Port_Moresby",
51358			c: [
51359				"AQ"
51360			],
51361			r: 1
51362		},
51363		"Antarctica/Macquarie": {
51364			u: 600,
51365			d: 660,
51366			c: [
51367				"AU"
51368			]
51369		},
51370		"Antarctica/Mawson": {
51371			u: 300,
51372			c: [
51373				"AQ"
51374			]
51375		},
51376		"Antarctica/McMurdo": {
51377			a: "Pacific/Auckland",
51378			c: [
51379				"AQ"
51380			],
51381			r: 1
51382		},
51383		"Antarctica/Palmer": {
51384			u: -180,
51385			c: [
51386				"AQ"
51387			]
51388		},
51389		"Antarctica/Rothera": {
51390			u: -180,
51391			c: [
51392				"AQ"
51393			]
51394		},
51395		"Antarctica/South_Pole": {
51396			a: "Pacific/Auckland",
51397			c: [
51398				"AQ"
51399			],
51400			r: 1
51401		},
51402		"Antarctica/Syowa": {
51403			a: "Asia/Riyadh",
51404			c: [
51405				"AQ"
51406			],
51407			r: 1
51408		},
51409		"Antarctica/Troll": {
51410			u: 0,
51411			d: 120,
51412			c: [
51413				"AQ"
51414			]
51415		},
51416		"Antarctica/Vostok": {
51417			a: "Asia/Urumqi",
51418			c: [
51419				"AQ"
51420			],
51421			r: 1
51422		},
51423		"Arctic/Longyearbyen": {
51424			a: "Europe/Berlin",
51425			c: [
51426				"SJ"
51427			],
51428			r: 1
51429		},
51430		"Asia/Aden": {
51431			a: "Asia/Riyadh",
51432			c: [
51433				"YE"
51434			],
51435			r: 1
51436		},
51437		"Asia/Almaty": {
51438			u: 360,
51439			c: [
51440				"KZ"
51441			]
51442		},
51443		"Asia/Amman": {
51444			u: 180,
51445			c: [
51446				"JO"
51447			]
51448		},
51449		"Asia/Anadyr": {
51450			u: 720,
51451			c: [
51452				"RU"
51453			]
51454		},
51455		"Asia/Aqtau": {
51456			u: 300,
51457			c: [
51458				"KZ"
51459			]
51460		},
51461		"Asia/Aqtobe": {
51462			u: 300,
51463			c: [
51464				"KZ"
51465			]
51466		},
51467		"Asia/Ashgabat": {
51468			u: 300,
51469			c: [
51470				"TM"
51471			]
51472		},
51473		"Asia/Ashkhabad": {
51474			a: "Asia/Ashgabat",
51475			r: 1
51476		},
51477		"Asia/Atyrau": {
51478			u: 300,
51479			c: [
51480				"KZ"
51481			]
51482		},
51483		"Asia/Baghdad": {
51484			u: 180,
51485			c: [
51486				"IQ"
51487			]
51488		},
51489		"Asia/Bahrain": {
51490			a: "Asia/Qatar",
51491			c: [
51492				"BH"
51493			],
51494			r: 1
51495		},
51496		"Asia/Baku": {
51497			u: 240,
51498			c: [
51499				"AZ"
51500			]
51501		},
51502		"Asia/Bangkok": {
51503			u: 420,
51504			c: [
51505				"TH",
51506				"CX",
51507				"KH",
51508				"LA",
51509				"VN"
51510			]
51511		},
51512		"Asia/Barnaul": {
51513			u: 420,
51514			c: [
51515				"RU"
51516			]
51517		},
51518		"Asia/Beirut": {
51519			u: 120,
51520			d: 180,
51521			c: [
51522				"LB"
51523			]
51524		},
51525		"Asia/Bishkek": {
51526			u: 360,
51527			c: [
51528				"KG"
51529			]
51530		},
51531		"Asia/Brunei": {
51532			a: "Asia/Kuching",
51533			c: [
51534				"BN"
51535			],
51536			r: 1
51537		},
51538		"Asia/Calcutta": {
51539			a: "Asia/Kolkata",
51540			r: 1
51541		},
51542		"Asia/Chita": {
51543			u: 540,
51544			c: [
51545				"RU"
51546			]
51547		},
51548		"Asia/Choibalsan": {
51549			u: 480,
51550			c: [
51551				"MN"
51552			]
51553		},
51554		"Asia/Chongqing": {
51555			a: "Asia/Shanghai",
51556			r: 1
51557		},
51558		"Asia/Chungking": {
51559			a: "Asia/Shanghai",
51560			r: 1
51561		},
51562		"Asia/Colombo": {
51563			u: 330,
51564			c: [
51565				"LK"
51566			]
51567		},
51568		"Asia/Dacca": {
51569			a: "Asia/Dhaka",
51570			r: 1
51571		},
51572		"Asia/Damascus": {
51573			u: 180,
51574			c: [
51575				"SY"
51576			]
51577		},
51578		"Asia/Dhaka": {
51579			u: 360,
51580			c: [
51581				"BD"
51582			]
51583		},
51584		"Asia/Dili": {
51585			u: 540,
51586			c: [
51587				"TL"
51588			]
51589		},
51590		"Asia/Dubai": {
51591			u: 240,
51592			c: [
51593				"AE",
51594				"OM",
51595				"RE",
51596				"SC",
51597				"TF"
51598			]
51599		},
51600		"Asia/Dushanbe": {
51601			u: 300,
51602			c: [
51603				"TJ"
51604			]
51605		},
51606		"Asia/Famagusta": {
51607			u: 120,
51608			d: 180,
51609			c: [
51610				"CY"
51611			]
51612		},
51613		"Asia/Gaza": {
51614			u: 120,
51615			d: 180,
51616			c: [
51617				"PS"
51618			]
51619		},
51620		"Asia/Harbin": {
51621			a: "Asia/Shanghai",
51622			r: 1
51623		},
51624		"Asia/Hebron": {
51625			u: 120,
51626			d: 180,
51627			c: [
51628				"PS"
51629			]
51630		},
51631		"Asia/Ho_Chi_Minh": {
51632			u: 420,
51633			c: [
51634				"VN"
51635			]
51636		},
51637		"Asia/Hong_Kong": {
51638			u: 480,
51639			c: [
51640				"HK"
51641			]
51642		},
51643		"Asia/Hovd": {
51644			u: 420,
51645			c: [
51646				"MN"
51647			]
51648		},
51649		"Asia/Irkutsk": {
51650			u: 480,
51651			c: [
51652				"RU"
51653			]
51654		},
51655		"Asia/Istanbul": {
51656			a: "Europe/Istanbul",
51657			r: 1
51658		},
51659		"Asia/Jakarta": {
51660			u: 420,
51661			c: [
51662				"ID"
51663			]
51664		},
51665		"Asia/Jayapura": {
51666			u: 540,
51667			c: [
51668				"ID"
51669			]
51670		},
51671		"Asia/Jerusalem": {
51672			u: 120,
51673			d: 180,
51674			c: [
51675				"IL"
51676			]
51677		},
51678		"Asia/Kabul": {
51679			u: 270,
51680			c: [
51681				"AF"
51682			]
51683		},
51684		"Asia/Kamchatka": {
51685			u: 720,
51686			c: [
51687				"RU"
51688			]
51689		},
51690		"Asia/Karachi": {
51691			u: 300,
51692			c: [
51693				"PK"
51694			]
51695		},
51696		"Asia/Kashgar": {
51697			a: "Asia/Urumqi",
51698			c: [
51699				"CN"
51700			],
51701			r: 1
51702		},
51703		"Asia/Kathmandu": {
51704			u: 345,
51705			c: [
51706				"NP"
51707			]
51708		},
51709		"Asia/Katmandu": {
51710			a: "Asia/Kathmandu",
51711			r: 1
51712		},
51713		"Asia/Khandyga": {
51714			u: 540,
51715			c: [
51716				"RU"
51717			]
51718		},
51719		"Asia/Kolkata": {
51720			u: 330,
51721			c: [
51722				"IN"
51723			]
51724		},
51725		"Asia/Krasnoyarsk": {
51726			u: 420,
51727			c: [
51728				"RU"
51729			]
51730		},
51731		"Asia/Kuala_Lumpur": {
51732			a: "Asia/Singapore",
51733			c: [
51734				"MY"
51735			],
51736			r: 1
51737		},
51738		"Asia/Kuching": {
51739			u: 480,
51740			c: [
51741				"MY",
51742				"BN"
51743			]
51744		},
51745		"Asia/Kuwait": {
51746			a: "Asia/Riyadh",
51747			c: [
51748				"KW"
51749			],
51750			r: 1
51751		},
51752		"Asia/Macao": {
51753			a: "Asia/Macau",
51754			r: 1
51755		},
51756		"Asia/Macau": {
51757			u: 480,
51758			c: [
51759				"MO"
51760			]
51761		},
51762		"Asia/Magadan": {
51763			u: 660,
51764			c: [
51765				"RU"
51766			]
51767		},
51768		"Asia/Makassar": {
51769			u: 480,
51770			c: [
51771				"ID"
51772			]
51773		},
51774		"Asia/Manila": {
51775			u: 480,
51776			c: [
51777				"PH"
51778			]
51779		},
51780		"Asia/Muscat": {
51781			a: "Asia/Dubai",
51782			c: [
51783				"OM"
51784			],
51785			r: 1
51786		},
51787		"Asia/Nicosia": {
51788			u: 120,
51789			d: 180,
51790			c: [
51791				"CY"
51792			]
51793		},
51794		"Asia/Novokuznetsk": {
51795			u: 420,
51796			c: [
51797				"RU"
51798			]
51799		},
51800		"Asia/Novosibirsk": {
51801			u: 420,
51802			c: [
51803				"RU"
51804			]
51805		},
51806		"Asia/Omsk": {
51807			u: 360,
51808			c: [
51809				"RU"
51810			]
51811		},
51812		"Asia/Oral": {
51813			u: 300,
51814			c: [
51815				"KZ"
51816			]
51817		},
51818		"Asia/Phnom_Penh": {
51819			a: "Asia/Bangkok",
51820			c: [
51821				"KH"
51822			],
51823			r: 1
51824		},
51825		"Asia/Pontianak": {
51826			u: 420,
51827			c: [
51828				"ID"
51829			]
51830		},
51831		"Asia/Pyongyang": {
51832			u: 540,
51833			c: [
51834				"KP"
51835			]
51836		},
51837		"Asia/Qatar": {
51838			u: 180,
51839			c: [
51840				"QA",
51841				"BH"
51842			]
51843		},
51844		"Asia/Qostanay": {
51845			u: 360,
51846			c: [
51847				"KZ"
51848			]
51849		},
51850		"Asia/Qyzylorda": {
51851			u: 300,
51852			c: [
51853				"KZ"
51854			]
51855		},
51856		"Asia/Rangoon": {
51857			a: "Asia/Yangon",
51858			c: [
51859				"MM"
51860			],
51861			r: 1
51862		},
51863		"Asia/Riyadh": {
51864			u: 180,
51865			c: [
51866				"SA",
51867				"AQ",
51868				"KW",
51869				"YE"
51870			]
51871		},
51872		"Asia/Saigon": {
51873			a: "Asia/Ho_Chi_Minh",
51874			r: 1
51875		},
51876		"Asia/Sakhalin": {
51877			u: 660,
51878			c: [
51879				"RU"
51880			]
51881		},
51882		"Asia/Samarkand": {
51883			u: 300,
51884			c: [
51885				"UZ"
51886			]
51887		},
51888		"Asia/Seoul": {
51889			u: 540,
51890			c: [
51891				"KR"
51892			]
51893		},
51894		"Asia/Shanghai": {
51895			u: 480,
51896			c: [
51897				"CN"
51898			]
51899		},
51900		"Asia/Singapore": {
51901			u: 480,
51902			c: [
51903				"SG",
51904				"MY"
51905			]
51906		},
51907		"Asia/Srednekolymsk": {
51908			u: 660,
51909			c: [
51910				"RU"
51911			]
51912		},
51913		"Asia/Taipei": {
51914			u: 480,
51915			c: [
51916				"TW"
51917			]
51918		},
51919		"Asia/Tashkent": {
51920			u: 300,
51921			c: [
51922				"UZ"
51923			]
51924		},
51925		"Asia/Tbilisi": {
51926			u: 240,
51927			c: [
51928				"GE"
51929			]
51930		},
51931		"Asia/Tehran": {
51932			u: 210,
51933			c: [
51934				"IR"
51935			]
51936		},
51937		"Asia/Tel_Aviv": {
51938			a: "Asia/Jerusalem",
51939			r: 1
51940		},
51941		"Asia/Thimbu": {
51942			a: "Asia/Thimphu",
51943			r: 1
51944		},
51945		"Asia/Thimphu": {
51946			u: 360,
51947			c: [
51948				"BT"
51949			]
51950		},
51951		"Asia/Tokyo": {
51952			u: 540,
51953			c: [
51954				"JP"
51955			]
51956		},
51957		"Asia/Tomsk": {
51958			u: 420,
51959			c: [
51960				"RU"
51961			]
51962		},
51963		"Asia/Ujung_Pandang": {
51964			a: "Asia/Makassar",
51965			r: 1
51966		},
51967		"Asia/Ulaanbaatar": {
51968			u: 480,
51969			c: [
51970				"MN"
51971			]
51972		},
51973		"Asia/Ulan_Bator": {
51974			a: "Asia/Ulaanbaatar",
51975			r: 1
51976		},
51977		"Asia/Urumqi": {
51978			u: 360,
51979			c: [
51980				"CN",
51981				"AQ"
51982			]
51983		},
51984		"Asia/Ust-Nera": {
51985			u: 600,
51986			c: [
51987				"RU"
51988			]
51989		},
51990		"Asia/Vientiane": {
51991			a: "Asia/Bangkok",
51992			c: [
51993				"LA"
51994			],
51995			r: 1
51996		},
51997		"Asia/Vladivostok": {
51998			u: 600,
51999			c: [
52000				"RU"
52001			]
52002		},
52003		"Asia/Yakutsk": {
52004			u: 540,
52005			c: [
52006				"RU"
52007			]
52008		},
52009		"Asia/Yangon": {
52010			u: 390,
52011			c: [
52012				"MM",
52013				"CC"
52014			]
52015		},
52016		"Asia/Yekaterinburg": {
52017			u: 300,
52018			c: [
52019				"RU"
52020			]
52021		},
52022		"Asia/Yerevan": {
52023			u: 240,
52024			c: [
52025				"AM"
52026			]
52027		},
52028		"Atlantic/Azores": {
52029			u: -60,
52030			d: 0,
52031			c: [
52032				"PT"
52033			]
52034		},
52035		"Atlantic/Bermuda": {
52036			u: -240,
52037			d: -180,
52038			c: [
52039				"BM"
52040			]
52041		},
52042		"Atlantic/Canary": {
52043			u: 0,
52044			d: 60,
52045			c: [
52046				"ES"
52047			]
52048		},
52049		"Atlantic/Cape_Verde": {
52050			u: -60,
52051			c: [
52052				"CV"
52053			]
52054		},
52055		"Atlantic/Faeroe": {
52056			a: "Atlantic/Faroe",
52057			r: 1
52058		},
52059		"Atlantic/Faroe": {
52060			u: 0,
52061			d: 60,
52062			c: [
52063				"FO"
52064			]
52065		},
52066		"Atlantic/Jan_Mayen": {
52067			a: "Europe/Berlin",
52068			c: [
52069				"SJ"
52070			],
52071			r: 1
52072		},
52073		"Atlantic/Madeira": {
52074			u: 0,
52075			d: 60,
52076			c: [
52077				"PT"
52078			]
52079		},
52080		"Atlantic/Reykjavik": {
52081			a: "Africa/Abidjan",
52082			c: [
52083				"IS"
52084			],
52085			r: 1
52086		},
52087		"Atlantic/South_Georgia": {
52088			u: -120,
52089			c: [
52090				"GS"
52091			]
52092		},
52093		"Atlantic/St_Helena": {
52094			a: "Africa/Abidjan",
52095			c: [
52096				"SH"
52097			],
52098			r: 1
52099		},
52100		"Atlantic/Stanley": {
52101			u: -180,
52102			c: [
52103				"FK"
52104			]
52105		},
52106		"Australia/ACT": {
52107			a: "Australia/Sydney",
52108			r: 1
52109		},
52110		"Australia/Adelaide": {
52111			u: 570,
52112			d: 630,
52113			c: [
52114				"AU"
52115			]
52116		},
52117		"Australia/Brisbane": {
52118			u: 600,
52119			c: [
52120				"AU"
52121			]
52122		},
52123		"Australia/Broken_Hill": {
52124			u: 570,
52125			d: 630,
52126			c: [
52127				"AU"
52128			]
52129		},
52130		"Australia/Canberra": {
52131			a: "Australia/Sydney",
52132			r: 1
52133		},
52134		"Australia/Currie": {
52135			a: "Australia/Hobart",
52136			r: 1
52137		},
52138		"Australia/Darwin": {
52139			u: 570,
52140			c: [
52141				"AU"
52142			]
52143		},
52144		"Australia/Eucla": {
52145			u: 525,
52146			c: [
52147				"AU"
52148			]
52149		},
52150		"Australia/Hobart": {
52151			u: 600,
52152			d: 660,
52153			c: [
52154				"AU"
52155			]
52156		},
52157		"Australia/LHI": {
52158			a: "Australia/Lord_Howe",
52159			r: 1
52160		},
52161		"Australia/Lindeman": {
52162			u: 600,
52163			c: [
52164				"AU"
52165			]
52166		},
52167		"Australia/Lord_Howe": {
52168			u: 630,
52169			d: 660,
52170			c: [
52171				"AU"
52172			]
52173		},
52174		"Australia/Melbourne": {
52175			u: 600,
52176			d: 660,
52177			c: [
52178				"AU"
52179			]
52180		},
52181		"Australia/NSW": {
52182			a: "Australia/Sydney",
52183			r: 1
52184		},
52185		"Australia/North": {
52186			a: "Australia/Darwin",
52187			r: 1
52188		},
52189		"Australia/Perth": {
52190			u: 480,
52191			c: [
52192				"AU"
52193			]
52194		},
52195		"Australia/Queensland": {
52196			a: "Australia/Brisbane",
52197			r: 1
52198		},
52199		"Australia/South": {
52200			a: "Australia/Adelaide",
52201			r: 1
52202		},
52203		"Australia/Sydney": {
52204			u: 600,
52205			d: 660,
52206			c: [
52207				"AU"
52208			]
52209		},
52210		"Australia/Tasmania": {
52211			a: "Australia/Hobart",
52212			r: 1
52213		},
52214		"Australia/Victoria": {
52215			a: "Australia/Melbourne",
52216			r: 1
52217		},
52218		"Australia/West": {
52219			a: "Australia/Perth",
52220			r: 1
52221		},
52222		"Australia/Yancowinna": {
52223			a: "Australia/Broken_Hill",
52224			r: 1
52225		},
52226		"Brazil/Acre": {
52227			a: "America/Rio_Branco",
52228			r: 1
52229		},
52230		"Brazil/DeNoronha": {
52231			a: "America/Noronha",
52232			r: 1
52233		},
52234		"Brazil/East": {
52235			a: "America/Sao_Paulo",
52236			r: 1
52237		},
52238		"Brazil/West": {
52239			a: "America/Manaus",
52240			r: 1
52241		},
52242		CET: {
52243			u: 60,
52244			d: 120
52245		},
52246		CST6CDT: {
52247			u: -360,
52248			d: -300
52249		},
52250		"Canada/Atlantic": {
52251			a: "America/Halifax",
52252			r: 1
52253		},
52254		"Canada/Central": {
52255			a: "America/Winnipeg",
52256			r: 1
52257		},
52258		"Canada/Eastern": {
52259			a: "America/Toronto",
52260			c: [
52261				"CA"
52262			],
52263			r: 1
52264		},
52265		"Canada/Mountain": {
52266			a: "America/Edmonton",
52267			r: 1
52268		},
52269		"Canada/Newfoundland": {
52270			a: "America/St_Johns",
52271			r: 1
52272		},
52273		"Canada/Pacific": {
52274			a: "America/Vancouver",
52275			r: 1
52276		},
52277		"Canada/Saskatchewan": {
52278			a: "America/Regina",
52279			r: 1
52280		},
52281		"Canada/Yukon": {
52282			a: "America/Whitehorse",
52283			r: 1
52284		},
52285		"Chile/Continental": {
52286			a: "America/Santiago",
52287			r: 1
52288		},
52289		"Chile/EasterIsland": {
52290			a: "Pacific/Easter",
52291			r: 1
52292		},
52293		Cuba: {
52294			a: "America/Havana",
52295			r: 1
52296		},
52297		EET: {
52298			u: 120,
52299			d: 180
52300		},
52301		EST: {
52302			u: -300
52303		},
52304		EST5EDT: {
52305			u: -300,
52306			d: -240
52307		},
52308		Egypt: {
52309			a: "Africa/Cairo",
52310			r: 1
52311		},
52312		Eire: {
52313			a: "Europe/Dublin",
52314			r: 1
52315		},
52316		"Etc/GMT": {
52317			u: 0
52318		},
52319		"Etc/GMT+0": {
52320			a: "Etc/GMT",
52321			r: 1
52322		},
52323		"Etc/GMT+1": {
52324			u: -60
52325		},
52326		"Etc/GMT+10": {
52327			u: -600
52328		},
52329		"Etc/GMT+11": {
52330			u: -660
52331		},
52332		"Etc/GMT+12": {
52333			u: -720
52334		},
52335		"Etc/GMT+2": {
52336			u: -120
52337		},
52338		"Etc/GMT+3": {
52339			u: -180
52340		},
52341		"Etc/GMT+4": {
52342			u: -240
52343		},
52344		"Etc/GMT+5": {
52345			u: -300
52346		},
52347		"Etc/GMT+6": {
52348			u: -360
52349		},
52350		"Etc/GMT+7": {
52351			u: -420
52352		},
52353		"Etc/GMT+8": {
52354			u: -480
52355		},
52356		"Etc/GMT+9": {
52357			u: -540
52358		},
52359		"Etc/GMT-0": {
52360			a: "Etc/GMT",
52361			r: 1
52362		},
52363		"Etc/GMT-1": {
52364			u: 60
52365		},
52366		"Etc/GMT-10": {
52367			u: 600
52368		},
52369		"Etc/GMT-11": {
52370			u: 660
52371		},
52372		"Etc/GMT-12": {
52373			u: 720
52374		},
52375		"Etc/GMT-13": {
52376			u: 780
52377		},
52378		"Etc/GMT-14": {
52379			u: 840
52380		},
52381		"Etc/GMT-2": {
52382			u: 120
52383		},
52384		"Etc/GMT-3": {
52385			u: 180
52386		},
52387		"Etc/GMT-4": {
52388			u: 240
52389		},
52390		"Etc/GMT-5": {
52391			u: 300
52392		},
52393		"Etc/GMT-6": {
52394			u: 360
52395		},
52396		"Etc/GMT-7": {
52397			u: 420
52398		},
52399		"Etc/GMT-8": {
52400			u: 480
52401		},
52402		"Etc/GMT-9": {
52403			u: 540
52404		},
52405		"Etc/GMT0": {
52406			a: "Etc/GMT",
52407			r: 1
52408		},
52409		"Etc/Greenwich": {
52410			a: "Etc/GMT",
52411			r: 1
52412		},
52413		"Etc/UCT": {
52414			a: "Etc/UTC",
52415			r: 1
52416		},
52417		"Etc/UTC": {
52418			u: 0
52419		},
52420		"Etc/Universal": {
52421			a: "Etc/UTC",
52422			r: 1
52423		},
52424		"Etc/Zulu": {
52425			a: "Etc/UTC",
52426			r: 1
52427		},
52428		"Europe/Amsterdam": {
52429			a: "Europe/Brussels",
52430			c: [
52431				"NL"
52432			],
52433			r: 1
52434		},
52435		"Europe/Andorra": {
52436			u: 60,
52437			d: 120,
52438			c: [
52439				"AD"
52440			]
52441		},
52442		"Europe/Astrakhan": {
52443			u: 240,
52444			c: [
52445				"RU"
52446			]
52447		},
52448		"Europe/Athens": {
52449			u: 120,
52450			d: 180,
52451			c: [
52452				"GR"
52453			]
52454		},
52455		"Europe/Belfast": {
52456			a: "Europe/London",
52457			c: [
52458				"GB"
52459			],
52460			r: 1
52461		},
52462		"Europe/Belgrade": {
52463			u: 60,
52464			d: 120,
52465			c: [
52466				"RS",
52467				"BA",
52468				"HR",
52469				"ME",
52470				"MK",
52471				"SI"
52472			]
52473		},
52474		"Europe/Berlin": {
52475			u: 60,
52476			d: 120,
52477			c: [
52478				"DE",
52479				"DK",
52480				"NO",
52481				"SE",
52482				"SJ"
52483			]
52484		},
52485		"Europe/Bratislava": {
52486			a: "Europe/Prague",
52487			c: [
52488				"SK"
52489			],
52490			r: 1
52491		},
52492		"Europe/Brussels": {
52493			u: 60,
52494			d: 120,
52495			c: [
52496				"BE",
52497				"LU",
52498				"NL"
52499			]
52500		},
52501		"Europe/Bucharest": {
52502			u: 120,
52503			d: 180,
52504			c: [
52505				"RO"
52506			]
52507		},
52508		"Europe/Budapest": {
52509			u: 60,
52510			d: 120,
52511			c: [
52512				"HU"
52513			]
52514		},
52515		"Europe/Busingen": {
52516			a: "Europe/Zurich",
52517			c: [
52518				"DE"
52519			],
52520			r: 1
52521		},
52522		"Europe/Chisinau": {
52523			u: 120,
52524			d: 180,
52525			c: [
52526				"MD"
52527			]
52528		},
52529		"Europe/Copenhagen": {
52530			a: "Europe/Berlin",
52531			c: [
52532				"DK"
52533			],
52534			r: 1
52535		},
52536		"Europe/Dublin": {
52537			u: 60,
52538			d: 0,
52539			c: [
52540				"IE"
52541			]
52542		},
52543		"Europe/Gibraltar": {
52544			u: 60,
52545			d: 120,
52546			c: [
52547				"GI"
52548			]
52549		},
52550		"Europe/Guernsey": {
52551			a: "Europe/London",
52552			c: [
52553				"GG"
52554			],
52555			r: 1
52556		},
52557		"Europe/Helsinki": {
52558			u: 120,
52559			d: 180,
52560			c: [
52561				"FI",
52562				"AX"
52563			]
52564		},
52565		"Europe/Isle_of_Man": {
52566			a: "Europe/London",
52567			c: [
52568				"IM"
52569			],
52570			r: 1
52571		},
52572		"Europe/Istanbul": {
52573			u: 180,
52574			c: [
52575				"TR"
52576			]
52577		},
52578		"Europe/Jersey": {
52579			a: "Europe/London",
52580			c: [
52581				"JE"
52582			],
52583			r: 1
52584		},
52585		"Europe/Kaliningrad": {
52586			u: 120,
52587			c: [
52588				"RU"
52589			]
52590		},
52591		"Europe/Kiev": {
52592			a: "Europe/Kyiv",
52593			r: 1
52594		},
52595		"Europe/Kirov": {
52596			u: 180,
52597			c: [
52598				"RU"
52599			]
52600		},
52601		"Europe/Kyiv": {
52602			u: 120,
52603			d: 180,
52604			c: [
52605				"UA"
52606			]
52607		},
52608		"Europe/Lisbon": {
52609			u: 0,
52610			d: 60,
52611			c: [
52612				"PT"
52613			]
52614		},
52615		"Europe/Ljubljana": {
52616			a: "Europe/Belgrade",
52617			c: [
52618				"SI"
52619			],
52620			r: 1
52621		},
52622		"Europe/London": {
52623			u: 0,
52624			d: 60,
52625			c: [
52626				"GB",
52627				"GG",
52628				"IM",
52629				"JE"
52630			]
52631		},
52632		"Europe/Luxembourg": {
52633			a: "Europe/Brussels",
52634			c: [
52635				"LU"
52636			],
52637			r: 1
52638		},
52639		"Europe/Madrid": {
52640			u: 60,
52641			d: 120,
52642			c: [
52643				"ES"
52644			]
52645		},
52646		"Europe/Malta": {
52647			u: 60,
52648			d: 120,
52649			c: [
52650				"MT"
52651			]
52652		},
52653		"Europe/Mariehamn": {
52654			a: "Europe/Helsinki",
52655			c: [
52656				"AX"
52657			],
52658			r: 1
52659		},
52660		"Europe/Minsk": {
52661			u: 180,
52662			c: [
52663				"BY"
52664			]
52665		},
52666		"Europe/Monaco": {
52667			a: "Europe/Paris",
52668			c: [
52669				"MC"
52670			],
52671			r: 1
52672		},
52673		"Europe/Moscow": {
52674			u: 180,
52675			c: [
52676				"RU"
52677			]
52678		},
52679		"Europe/Nicosia": {
52680			a: "Asia/Nicosia",
52681			r: 1
52682		},
52683		"Europe/Oslo": {
52684			a: "Europe/Berlin",
52685			c: [
52686				"NO"
52687			],
52688			r: 1
52689		},
52690		"Europe/Paris": {
52691			u: 60,
52692			d: 120,
52693			c: [
52694				"FR",
52695				"MC"
52696			]
52697		},
52698		"Europe/Podgorica": {
52699			a: "Europe/Belgrade",
52700			c: [
52701				"ME"
52702			],
52703			r: 1
52704		},
52705		"Europe/Prague": {
52706			u: 60,
52707			d: 120,
52708			c: [
52709				"CZ",
52710				"SK"
52711			]
52712		},
52713		"Europe/Riga": {
52714			u: 120,
52715			d: 180,
52716			c: [
52717				"LV"
52718			]
52719		},
52720		"Europe/Rome": {
52721			u: 60,
52722			d: 120,
52723			c: [
52724				"IT",
52725				"SM",
52726				"VA"
52727			]
52728		},
52729		"Europe/Samara": {
52730			u: 240,
52731			c: [
52732				"RU"
52733			]
52734		},
52735		"Europe/San_Marino": {
52736			a: "Europe/Rome",
52737			c: [
52738				"SM"
52739			],
52740			r: 1
52741		},
52742		"Europe/Sarajevo": {
52743			a: "Europe/Belgrade",
52744			c: [
52745				"BA"
52746			],
52747			r: 1
52748		},
52749		"Europe/Saratov": {
52750			u: 240,
52751			c: [
52752				"RU"
52753			]
52754		},
52755		"Europe/Simferopol": {
52756			u: 180,
52757			c: [
52758				"RU",
52759				"UA"
52760			]
52761		},
52762		"Europe/Skopje": {
52763			a: "Europe/Belgrade",
52764			c: [
52765				"MK"
52766			],
52767			r: 1
52768		},
52769		"Europe/Sofia": {
52770			u: 120,
52771			d: 180,
52772			c: [
52773				"BG"
52774			]
52775		},
52776		"Europe/Stockholm": {
52777			a: "Europe/Berlin",
52778			c: [
52779				"SE"
52780			],
52781			r: 1
52782		},
52783		"Europe/Tallinn": {
52784			u: 120,
52785			d: 180,
52786			c: [
52787				"EE"
52788			]
52789		},
52790		"Europe/Tirane": {
52791			u: 60,
52792			d: 120,
52793			c: [
52794				"AL"
52795			]
52796		},
52797		"Europe/Tiraspol": {
52798			a: "Europe/Chisinau",
52799			r: 1
52800		},
52801		"Europe/Ulyanovsk": {
52802			u: 240,
52803			c: [
52804				"RU"
52805			]
52806		},
52807		"Europe/Uzhgorod": {
52808			a: "Europe/Kyiv",
52809			r: 1
52810		},
52811		"Europe/Vaduz": {
52812			a: "Europe/Zurich",
52813			c: [
52814				"LI"
52815			],
52816			r: 1
52817		},
52818		"Europe/Vatican": {
52819			a: "Europe/Rome",
52820			c: [
52821				"VA"
52822			],
52823			r: 1
52824		},
52825		"Europe/Vienna": {
52826			u: 60,
52827			d: 120,
52828			c: [
52829				"AT"
52830			]
52831		},
52832		"Europe/Vilnius": {
52833			u: 120,
52834			d: 180,
52835			c: [
52836				"LT"
52837			]
52838		},
52839		"Europe/Volgograd": {
52840			u: 180,
52841			c: [
52842				"RU"
52843			]
52844		},
52845		"Europe/Warsaw": {
52846			u: 60,
52847			d: 120,
52848			c: [
52849				"PL"
52850			]
52851		},
52852		"Europe/Zagreb": {
52853			a: "Europe/Belgrade",
52854			c: [
52855				"HR"
52856			],
52857			r: 1
52858		},
52859		"Europe/Zaporozhye": {
52860			a: "Europe/Kyiv",
52861			r: 1
52862		},
52863		"Europe/Zurich": {
52864			u: 60,
52865			d: 120,
52866			c: [
52867				"CH",
52868				"DE",
52869				"LI"
52870			]
52871		},
52872		Factory: {
52873			u: 0
52874		},
52875		GB: {
52876			a: "Europe/London",
52877			c: [
52878				"GB"
52879			],
52880			r: 1
52881		},
52882		"GB-Eire": {
52883			a: "Europe/London",
52884			c: [
52885				"GB"
52886			],
52887			r: 1
52888		},
52889		GMT: {
52890			a: "Etc/GMT",
52891			r: 1
52892		},
52893		"GMT+0": {
52894			a: "Etc/GMT",
52895			r: 1
52896		},
52897		"GMT-0": {
52898			a: "Etc/GMT",
52899			r: 1
52900		},
52901		GMT0: {
52902			a: "Etc/GMT",
52903			r: 1
52904		},
52905		Greenwich: {
52906			a: "Etc/GMT",
52907			r: 1
52908		},
52909		HST: {
52910			u: -600
52911		},
52912		Hongkong: {
52913			a: "Asia/Hong_Kong",
52914			r: 1
52915		},
52916		Iceland: {
52917			a: "Africa/Abidjan",
52918			c: [
52919				"IS"
52920			],
52921			r: 1
52922		},
52923		"Indian/Antananarivo": {
52924			a: "Africa/Nairobi",
52925			c: [
52926				"MG"
52927			],
52928			r: 1
52929		},
52930		"Indian/Chagos": {
52931			u: 360,
52932			c: [
52933				"IO"
52934			]
52935		},
52936		"Indian/Christmas": {
52937			a: "Asia/Bangkok",
52938			c: [
52939				"CX"
52940			],
52941			r: 1
52942		},
52943		"Indian/Cocos": {
52944			a: "Asia/Yangon",
52945			c: [
52946				"CC"
52947			],
52948			r: 1
52949		},
52950		"Indian/Comoro": {
52951			a: "Africa/Nairobi",
52952			c: [
52953				"KM"
52954			],
52955			r: 1
52956		},
52957		"Indian/Kerguelen": {
52958			a: "Indian/Maldives",
52959			c: [
52960				"TF"
52961			],
52962			r: 1
52963		},
52964		"Indian/Mahe": {
52965			a: "Asia/Dubai",
52966			c: [
52967				"SC"
52968			],
52969			r: 1
52970		},
52971		"Indian/Maldives": {
52972			u: 300,
52973			c: [
52974				"MV",
52975				"TF"
52976			]
52977		},
52978		"Indian/Mauritius": {
52979			u: 240,
52980			c: [
52981				"MU"
52982			]
52983		},
52984		"Indian/Mayotte": {
52985			a: "Africa/Nairobi",
52986			c: [
52987				"YT"
52988			],
52989			r: 1
52990		},
52991		"Indian/Reunion": {
52992			a: "Asia/Dubai",
52993			c: [
52994				"RE"
52995			],
52996			r: 1
52997		},
52998		Iran: {
52999			a: "Asia/Tehran",
53000			r: 1
53001		},
53002		Israel: {
53003			a: "Asia/Jerusalem",
53004			r: 1
53005		},
53006		Jamaica: {
53007			a: "America/Jamaica",
53008			r: 1
53009		},
53010		Japan: {
53011			a: "Asia/Tokyo",
53012			r: 1
53013		},
53014		Kwajalein: {
53015			a: "Pacific/Kwajalein",
53016			r: 1
53017		},
53018		Libya: {
53019			a: "Africa/Tripoli",
53020			r: 1
53021		},
53022		MET: {
53023			u: 60,
53024			d: 120
53025		},
53026		MST: {
53027			u: -420
53028		},
53029		MST7MDT: {
53030			u: -420,
53031			d: -360
53032		},
53033		"Mexico/BajaNorte": {
53034			a: "America/Tijuana",
53035			r: 1
53036		},
53037		"Mexico/BajaSur": {
53038			a: "America/Mazatlan",
53039			r: 1
53040		},
53041		"Mexico/General": {
53042			a: "America/Mexico_City",
53043			r: 1
53044		},
53045		NZ: {
53046			a: "Pacific/Auckland",
53047			c: [
53048				"NZ"
53049			],
53050			r: 1
53051		},
53052		"NZ-CHAT": {
53053			a: "Pacific/Chatham",
53054			r: 1
53055		},
53056		Navajo: {
53057			a: "America/Denver",
53058			r: 1
53059		},
53060		PRC: {
53061			a: "Asia/Shanghai",
53062			r: 1
53063		},
53064		PST8PDT: {
53065			u: -480,
53066			d: -420
53067		},
53068		"Pacific/Apia": {
53069			u: 780,
53070			c: [
53071				"WS"
53072			]
53073		},
53074		"Pacific/Auckland": {
53075			u: 720,
53076			d: 780,
53077			c: [
53078				"NZ",
53079				"AQ"
53080			]
53081		},
53082		"Pacific/Bougainville": {
53083			u: 660,
53084			c: [
53085				"PG"
53086			]
53087		},
53088		"Pacific/Chatham": {
53089			u: 765,
53090			d: 825,
53091			c: [
53092				"NZ"
53093			]
53094		},
53095		"Pacific/Chuuk": {
53096			a: "Pacific/Port_Moresby",
53097			c: [
53098				"FM"
53099			],
53100			r: 1
53101		},
53102		"Pacific/Easter": {
53103			u: -360,
53104			d: -300,
53105			c: [
53106				"CL"
53107			]
53108		},
53109		"Pacific/Efate": {
53110			u: 660,
53111			c: [
53112				"VU"
53113			]
53114		},
53115		"Pacific/Enderbury": {
53116			a: "Pacific/Kanton",
53117			r: 1
53118		},
53119		"Pacific/Fakaofo": {
53120			u: 780,
53121			c: [
53122				"TK"
53123			]
53124		},
53125		"Pacific/Fiji": {
53126			u: 720,
53127			c: [
53128				"FJ"
53129			]
53130		},
53131		"Pacific/Funafuti": {
53132			a: "Pacific/Tarawa",
53133			c: [
53134				"TV"
53135			],
53136			r: 1
53137		},
53138		"Pacific/Galapagos": {
53139			u: -360,
53140			c: [
53141				"EC"
53142			]
53143		},
53144		"Pacific/Gambier": {
53145			u: -540,
53146			c: [
53147				"PF"
53148			]
53149		},
53150		"Pacific/Guadalcanal": {
53151			u: 660,
53152			c: [
53153				"SB",
53154				"FM"
53155			]
53156		},
53157		"Pacific/Guam": {
53158			u: 600,
53159			c: [
53160				"GU",
53161				"MP"
53162			]
53163		},
53164		"Pacific/Honolulu": {
53165			u: -600,
53166			c: [
53167				"US"
53168			]
53169		},
53170		"Pacific/Johnston": {
53171			a: "Pacific/Honolulu",
53172			r: 1
53173		},
53174		"Pacific/Kanton": {
53175			u: 780,
53176			c: [
53177				"KI"
53178			]
53179		},
53180		"Pacific/Kiritimati": {
53181			u: 840,
53182			c: [
53183				"KI"
53184			]
53185		},
53186		"Pacific/Kosrae": {
53187			u: 660,
53188			c: [
53189				"FM"
53190			]
53191		},
53192		"Pacific/Kwajalein": {
53193			u: 720,
53194			c: [
53195				"MH"
53196			]
53197		},
53198		"Pacific/Majuro": {
53199			a: "Pacific/Tarawa",
53200			c: [
53201				"MH"
53202			],
53203			r: 1
53204		},
53205		"Pacific/Marquesas": {
53206			u: -570,
53207			c: [
53208				"PF"
53209			]
53210		},
53211		"Pacific/Midway": {
53212			a: "Pacific/Pago_Pago",
53213			c: [
53214				"UM"
53215			],
53216			r: 1
53217		},
53218		"Pacific/Nauru": {
53219			u: 720,
53220			c: [
53221				"NR"
53222			]
53223		},
53224		"Pacific/Niue": {
53225			u: -660,
53226			c: [
53227				"NU"
53228			]
53229		},
53230		"Pacific/Norfolk": {
53231			u: 660,
53232			d: 720,
53233			c: [
53234				"NF"
53235			]
53236		},
53237		"Pacific/Noumea": {
53238			u: 660,
53239			c: [
53240				"NC"
53241			]
53242		},
53243		"Pacific/Pago_Pago": {
53244			u: -660,
53245			c: [
53246				"AS",
53247				"UM"
53248			]
53249		},
53250		"Pacific/Palau": {
53251			u: 540,
53252			c: [
53253				"PW"
53254			]
53255		},
53256		"Pacific/Pitcairn": {
53257			u: -480,
53258			c: [
53259				"PN"
53260			]
53261		},
53262		"Pacific/Pohnpei": {
53263			a: "Pacific/Guadalcanal",
53264			c: [
53265				"FM"
53266			],
53267			r: 1
53268		},
53269		"Pacific/Ponape": {
53270			a: "Pacific/Guadalcanal",
53271			c: [
53272				"FM"
53273			],
53274			r: 1
53275		},
53276		"Pacific/Port_Moresby": {
53277			u: 600,
53278			c: [
53279				"PG",
53280				"AQ",
53281				"FM"
53282			]
53283		},
53284		"Pacific/Rarotonga": {
53285			u: -600,
53286			c: [
53287				"CK"
53288			]
53289		},
53290		"Pacific/Saipan": {
53291			a: "Pacific/Guam",
53292			c: [
53293				"MP"
53294			],
53295			r: 1
53296		},
53297		"Pacific/Samoa": {
53298			a: "Pacific/Pago_Pago",
53299			c: [
53300				"AS"
53301			],
53302			r: 1
53303		},
53304		"Pacific/Tahiti": {
53305			u: -600,
53306			c: [
53307				"PF"
53308			]
53309		},
53310		"Pacific/Tarawa": {
53311			u: 720,
53312			c: [
53313				"KI",
53314				"MH",
53315				"TV",
53316				"UM",
53317				"WF"
53318			]
53319		},
53320		"Pacific/Tongatapu": {
53321			u: 780,
53322			c: [
53323				"TO"
53324			]
53325		},
53326		"Pacific/Truk": {
53327			a: "Pacific/Port_Moresby",
53328			c: [
53329				"FM"
53330			],
53331			r: 1
53332		},
53333		"Pacific/Wake": {
53334			a: "Pacific/Tarawa",
53335			c: [
53336				"UM"
53337			],
53338			r: 1
53339		},
53340		"Pacific/Wallis": {
53341			a: "Pacific/Tarawa",
53342			c: [
53343				"WF"
53344			],
53345			r: 1
53346		},
53347		"Pacific/Yap": {
53348			a: "Pacific/Port_Moresby",
53349			c: [
53350				"FM"
53351			],
53352			r: 1
53353		},
53354		Poland: {
53355			a: "Europe/Warsaw",
53356			r: 1
53357		},
53358		Portugal: {
53359			a: "Europe/Lisbon",
53360			r: 1
53361		},
53362		ROC: {
53363			a: "Asia/Taipei",
53364			r: 1
53365		},
53366		ROK: {
53367			a: "Asia/Seoul",
53368			r: 1
53369		},
53370		Singapore: {
53371			a: "Asia/Singapore",
53372			c: [
53373				"SG"
53374			],
53375			r: 1
53376		},
53377		Turkey: {
53378			a: "Europe/Istanbul",
53379			r: 1
53380		},
53381		UCT: {
53382			a: "Etc/UTC",
53383			r: 1
53384		},
53385		"US/Alaska": {
53386			a: "America/Anchorage",
53387			r: 1
53388		},
53389		"US/Aleutian": {
53390			a: "America/Adak",
53391			r: 1
53392		},
53393		"US/Arizona": {
53394			a: "America/Phoenix",
53395			c: [
53396				"US"
53397			],
53398			r: 1
53399		},
53400		"US/Central": {
53401			a: "America/Chicago",
53402			r: 1
53403		},
53404		"US/East-Indiana": {
53405			a: "America/Indiana/Indianapolis",
53406			r: 1
53407		},
53408		"US/Eastern": {
53409			a: "America/New_York",
53410			r: 1
53411		},
53412		"US/Hawaii": {
53413			a: "Pacific/Honolulu",
53414			r: 1
53415		},
53416		"US/Indiana-Starke": {
53417			a: "America/Indiana/Knox",
53418			r: 1
53419		},
53420		"US/Michigan": {
53421			a: "America/Detroit",
53422			r: 1
53423		},
53424		"US/Mountain": {
53425			a: "America/Denver",
53426			r: 1
53427		},
53428		"US/Pacific": {
53429			a: "America/Los_Angeles",
53430			r: 1
53431		},
53432		"US/Samoa": {
53433			a: "Pacific/Pago_Pago",
53434			c: [
53435				"AS"
53436			],
53437			r: 1
53438		},
53439		UTC: {
53440			a: "Etc/UTC",
53441			r: 1
53442		},
53443		Universal: {
53444			a: "Etc/UTC",
53445			r: 1
53446		},
53447		"W-SU": {
53448			a: "Europe/Moscow",
53449			r: 1
53450		},
53451		WET: {
53452			u: 0,
53453			d: 60
53454		},
53455		Zulu: {
53456			a: "Etc/UTC",
53457			r: 1
53458		}
53459	};
53460	var data = {
53461		countries: countries$1,
53462		timezones: timezones$1
53463	};
53464
53465	var timezonesMap;
53466	function buildCountry(data, id) {
53467	  var name = data.countries[id];
53468	  if (!name) return null;
53469	  var tzMap = getTimezonesMap(data)[id] || {};
53470	  return {
53471	    id: id,
53472	    name: name,
53473	    timezones: tzMap.current || [],
53474	    allTimezones: tzMap.all || []
53475	  };
53476	}
53477	function getTimezonesMap(data) {
53478	  if (!timezonesMap) timezonesMap = buildTimezonesMap(data);
53479	  return timezonesMap;
53480	}
53481	function buildTimezonesMap(data) {
53482	  return Object.keys(data.timezones).reduce(function (result, id) {
53483	    var tz = data.timezones[id];
53484	    var c = tz.c,
53485	      a = tz.a;
53486	    var aliasTz = data.timezones[a] || {};
53487	    var countries = c || aliasTz.c;
53488	    if (!countries) return result;
53489	    countries.forEach(function (country) {
53490	      if (!result[country]) Object.assign(result, _defineProperty({}, country, {
53491	        current: [],
53492	        all: []
53493	      }));
53494	      if (tz.r === undefined) result[country].current.push(id);
53495	      result[country].all.push(id);
53496	    });
53497	    return result;
53498	  }, {});
53499	}
53500
53501	function buildTimezone(data, name) {
53502	  var timezone = data.timezones[name];
53503	  if (!timezone) return null;
53504	  var _timezone$a = timezone.a,
53505	    aliasOf = _timezone$a === void 0 ? null : _timezone$a;
53506	  var aliasTz = aliasOf ? data.timezones[aliasOf] : {};
53507	  var tz = _objectSpread2(_objectSpread2({}, aliasTz), data.timezones[name]);
53508	  var countries = tz.c || [];
53509	  var utcOffset = tz.u;
53510	  var dstOffset = Number.isInteger(tz.d) ? tz.d : utcOffset;
53511	  var result = {
53512	    name: name,
53513	    countries: countries,
53514	    utcOffset: utcOffset,
53515	    utcOffsetStr: getOffsetStr(utcOffset),
53516	    dstOffset: dstOffset,
53517	    dstOffsetStr: getOffsetStr(dstOffset),
53518	    aliasOf: aliasOf
53519	  };
53520	  if (timezone.r) result.deprecated = true;
53521	  return result;
53522	}
53523	function getOffsetStr(offset) {
53524	  var hours = Math.floor(Math.abs(offset) / 60);
53525	  var min = offset % 60;
53526	  var sign = offset < 0 ? '-' : '+';
53527	  return "".concat(sign).concat(getNumStr(hours), ":").concat(getNumStr(min));
53528	}
53529	function getNumStr(input) {
53530	  var num = Math.abs(input);
53531	  var prefix = num < 10 ? '0' : '';
53532	  return "".concat(prefix).concat(num);
53533	}
53534
53535	var _excluded = ["allTimezones"];
53536	Object.keys(data.timezones).length;
53537	var countries$2 = {};
53538	var timezones = {};
53539	function getCountry(id) {
53540	  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
53541	  if (!countries$2[id]) memoizeCountry(buildCountry(data, id));
53542	  return deliverCountry(countries$2[id], options);
53543	}
53544	function memoizeCountry(country) {
53545	  if (!country) return;
53546	  countries$2[country.id] = country;
53547	}
53548	function getTimezone(name) {
53549	  if (!timezones[name]) memoizeTimezone(buildTimezone(data, name));
53550	  return timezones[name] ? _objectSpread2({}, timezones[name]) : null;
53551	}
53552	function memoizeTimezone(timezone) {
53553	  if (!timezone) return;
53554	  timezones[timezone.name] = timezone;
53555	  Object.keys(timezone).length;
53556	}
53557	function getCountriesForTimezone(tzName) {
53558	  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
53559	  var timezone = getTimezone(tzName) || {};
53560	  var values = timezone.countries || [];
53561	  return values.map(function (c) {
53562	    return getCountry(c, options);
53563	  });
53564	}
53565	function deliverCountry(country, options) {
53566	  if (!country) return null;
53567	  var _ref2 = options || {},
53568	    deprecated = _ref2.deprecated;
53569	  country.allTimezones;
53570	    var other = _objectWithoutProperties(country, _excluded);
53571	  var tz = deprecated ? country.allTimezones : country.timezones;
53572	  return _objectSpread2(_objectSpread2({}, other), {}, {
53573	    timezones: tz
53574	  });
53575	}
53576
53577	const timezoneCountryId = () => {
53578	    const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
53579	    return getCountriesForTimezone(timezone)[0]?.id ?? '';
53580	};
53581
53582	function buildPreviewPayload(form, formState) {
53583	    const terms = formState.paymentOption.terms;
53584	    return {
53585	        account: {
53586	            city: unknownToEmpty(formConfigAs(form).requestCity),
53587	            country: unknownToEmpty(formConfigAs(form).requestCountry) || timezoneCountryId(),
53588	            county: '',
53589	            state: unknownToEmpty(formConfigAs(form).requestState),
53590	            zipCode: unknownToEmpty(formConfigAs(form).requestZipCode)
53591	        },
53592	        currency: getRelevantCurrency(form, formState),
53593	        ratePlanIds: [formState.paymentOption.slug],
53594	        ...(terms ? {
53595	            termType: terms.initialTerm.termType,
53596	            ...(terms.initialTerm.termType === 'TERMED' ? {
53597	                initialTerm: terms.initialTerm.period,
53598	                initialTermPeriodType: terms.initialTerm.periodType,
53599	            } : {}),
53600	        } : {
53601	            termType: "EVERGREEN",
53602	        }),
53603	        ...(formState.dynamicOfferResult ? {
53604	            dynamicOfferResult: JSON.stringify(formState.dynamicOfferResult),
53605	            productId: formState.paymentOption.productId
53606	        } : {}),
53607	    };
53608	}
53609	const calculateZuoraPrice = (form, formState, formActions) => {
53610	    return loadZuora()
53611	        .then(() => getPreview(form, formState, formActions))
53612	        .then((previewResponse) => {
53613	        if (previewResponse.pfToken) {
53614	            formActions.updateFormState({
53615	                pfToken: previewResponse.pfToken
53616	            });
53617	        }
53618	        return {
53619	            slug: formState.paymentOption.slug,
53620	            productId: formState.paymentOption.productId,
53621	            promoCode: formState.promoCode,
53622	            addonPrices: [],
53623	            totalPrice: previewResponse.amount,
53624	            totalPriceFormattedString: formatCurrency(previewResponse.amount, getRelevantCurrency(form, formState)),
53625	            netPrice: previewResponse.amountWithoutTax,
53626	            netPriceFormattedString: formatCurrency(previewResponse.amountWithoutTax, getRelevantCurrency(form, formState)),
53627	            taxPrice: previewResponse.taxAmount || null,
53628	            taxPriceFormattedString: previewResponse.taxAmount ? formatCurrency(previewResponse.taxAmount, getRelevantCurrency(form, formState)) : null,
53629	            discountPrice: 0,
53630	            discountPriceFormattedPrice: formatCurrency(0, getRelevantCurrency(form, formState)),
53631	            chargeItems: [...Object.values(previewResponse.invoiceItems)]
53632	                .filter((invoiceItem) => invoiceItem.chargeAmount)
53633	                .map((invoiceItem) => ({
53634	                label: invoiceItem.chargeName,
53635	                priceFormattedString: formatCurrency(invoiceItem.chargeAmount, getRelevantCurrency(form, formState))
53636	            })),
53637	            billingAddress: formState.billingAddress
53638	        };
53639	    });
53640	};
53641	const unknownToEmpty = (location) => location?.toLowerCase() === 'unknown' ? '' : location;
53642	const getPreview = (form, formState, formActions) => {
53643	    if (form.environment.previewMode) {
53644	        return mockBillingPreviewResponse(formConfigAs(form).dynamicOfferPreview ?? {});
53645	    }
53646	    const previewBody = buildPreviewPayload(form, formState);
53647	    return request("zephr/public/payment/v1/billing/preview-subscription", {
53648	        method: "POST",
53649	        bodyObject: previewBody
53650	    }, formActions).then(response => response.json());
53651	};
53652
53653	const formattedDateWord = (date, locale = 'en-UK') => {
53654	    if (!date)
53655	        return '';
53656	    const d = new Date(date);
53657	    if (Number.isNaN(d.getDate()))
53658	        return 'Unknown';
53659	    return d.toLocaleDateString(locale, { day: 'numeric', month: 'short', year: 'numeric' });
53660	};
53661
53662	// Example key: "<<<example.key|Default value>>>"
53663	const keyDefaultRegex = /^<<<([a-z0-9\-.]+)\|(.*)>>>$/;
53664	const resolveErrorLanguagePackKey = (form, serverError) => {
53665	    if (serverError == null) {
53666	        return '';
53667	    }
53668	    const packEntries = form.languagePack?.entries ?? {};
53669	    const error = ServerErrors[serverError];
53670	    return packEntries[error.languagePackKey] ?? error.fallbackMessage;
53671	};
53672	const resolveLanguagePackKey = (languagePack, string) => {
53673	    if (!string) {
53674	        return string;
53675	    }
53676	    try {
53677	        const match = keyDefaultRegex.exec(string);
53678	        if (!match || !match[1]) {
53679	            return string;
53680	        }
53681	        const packEntries = languagePack?.entries ?? {};
53682	        return packEntries[match[1]] ?? match[2];
53683	    }
53684	    catch (e) {
53685	        console.warn(`error resolving language pack key in string ${string}`, e);
53686	        return string;
53687	    }
53688	};
53689	const resolveLanguagePackKeyTyped = (form, key, fallback) => {
53690	    try {
53691	        const packEntries = form.languagePack?.entries ?? {};
53692	        return packEntries[key] ?? fallback;
53693	    }
53694	    catch (e) {
53695	        console.warn(`error resolving language pack key in string ${key}`, e);
53696	        return fallback;
53697	    }
53698	};
53699	const resolveLanguagePackLocale = (form) => resolveLanguagePackKeyTyped(form, 'pages.common.date-time-format-locale', 'en-US');
53700	const resolveLanguagePackKeys = (languagePack, object) => {
53701	    try {
53702	        if (object == null) {
53703	            return object;
53704	        }
53705	        if (typeof object !== 'object' && !Array.isArray(object)) {
53706	            if (typeof object === 'string' || object instanceof String) {
53707	                return resolveLanguagePackKey(languagePack, object);
53708	            }
53709	            return object;
53710	        }
53711	        if (Array.isArray(object)) {
53712	            return object.map(e => resolveLanguagePackKeys(languagePack, e));
53713	        }
53714	        return Object.entries(object).reduce((acc, [key, value]) => {
53715	            return {
53716	                ...acc,
53717	                [key]: resolveLanguagePackKeys(languagePack, value)
53718	            };
53719	        }, {});
53720	    }
53721	    catch (e) {
53722	        console.warn(`error resolving language pack entries`, e);
53723	        return object;
53724	    }
53725	};
53726
53727	const getSubscriptionAmount = (form, subscription) => {
53728	    try {
53729	        if (subscription.isOneOff) {
53730	            return '';
53731	        }
53732	        const everyLabel = resolveLanguagePackKeyTyped(form, 'forms.billing.history.every', 'every');
53733	        const firstPayment = subscription['transaction-history']?.[0] ?? subscription['next-billing-time'];
53734	        const str = firstPayment?.['human-readable-amount'];
53735	        if (!str)
53736	            return '';
53737	        const currency = subscription.currency_code?.toUpperCase() ?? str.replace(/[0-9,.]/g, '');
53738	        const { discounts_applied: discountApplied, pre_discount_price: price, billing_frequency: freq, billing_frequency_unit: freqUnit, } = subscription ?? {};
53739	        if (!discountApplied && price && freq && freqUnit) {
53740	            if (freq === 1) {
53741	                return `${currency} ${price}/${freqUnit.toLowerCase()}`;
53742	            }
53743	            return `${currency} ${price} ${everyLabel} ${freq} ${freqUnit.toLowerCase()}s`;
53744	        }
53745	        const num = Number(str.replace(/[^\d.-]/g, ''));
53746	        const amount = Number.isInteger(num) ? num.toFixed(0) : num;
53747	        if (firstPayment.cycleCount === 1) {
53748	            return `${currency}${amount}/${firstPayment.cycle}`;
53749	        }
53750	        return `${currency} ${amount} ${everyLabel} ${firstPayment.cycleCount} ${firstPayment.cycle}s`;
53751	    }
53752	    catch {
53753	        console.error('Failed to get subscription amount');
53754	        return '';
53755	    }
53756	};
53757	const getPeriod = (time, cycle, cycleCount, locale) => {
53758	    try {
53759	        const d = new Date(time);
53760	        const addCycles = (() => {
53761	            switch (cycle) {
53762	                case 'day': return d.setDate(d.getDate() + cycleCount);
53763	                case 'week': return d.setDate(d.getDate() + cycleCount * 7);
53764	                case 'month': return d.setMonth(d.getMonth() + cycleCount);
53765	                case 'year': return d.setFullYear(d.getFullYear() + cycleCount);
53766	                default: return null;
53767	            }
53768	        })();
53769	        const start = formattedDateWord(time, locale);
53770	        const end = formattedDateWord(addCycles, locale);
53771	        return `${start} - ${end}`;
53772	    }
53773	    catch {
53774	        console.error('Failed to get subscription period');
53775	        return '';
53776	    }
53777	};
53778	const buildTaxString = (inclusive, cents, name) => (`${inclusive ? '' : '+'}`
53779	    + `${(cents / 100).toFixed(2)} ${name}`
53780	    + `${inclusive ? ' incl.' : ''}`);
53781	const getSpecificTax = (cents, displayName, taxInclusive, taxPercent) => {
53782	    try {
53783	        const taxAmount = taxPercent * (cents / 100);
53784	        const totalCents = cents + (taxInclusive ? 0 : taxAmount);
53785	        const total = (totalCents / 100).toFixed(2);
53786	        const taxes = `(${buildTaxString(taxInclusive, taxAmount, displayName)})`;
53787	        return { taxes, total };
53788	    }
53789	    catch {
53790	        console.error('Failed to get subscription tax');
53791	        return { taxes: '', total: 0 };
53792	    }
53793	};
53794	const getDefaultTaxes = (cents, defaultTax) => {
53795	    try {
53796	        const taxes = [];
53797	        let totalCents = cents;
53798	        defaultTax.forEach((e) => {
53799	            const taxCents = e.taxPercent * (cents / 100);
53800	            const tax = buildTaxString(e.taxInclusive, taxCents, e.displayName);
53801	            taxes.push(tax);
53802	            totalCents += e.taxInclusive ? 0 : taxCents;
53803	        });
53804	        const total = (totalCents / 100).toFixed(2);
53805	        return { taxes: `(${taxes.join(', ')})`, total };
53806	    }
53807	    catch {
53808	        console.error('Failed to get subscription default tax');
53809	        return { taxes: '', total: 0 };
53810	    }
53811	};
53812	const getBillingHistory = (form, subscription) => {
53813	    try {
53814	        const defaultTax = subscription['default-tax-rates'];
53815	        const managedBy = subscription['managed-by'].toLowerCase();
53816	        const isCanceled = subscription['subscription-state'].toLowerCase() === 'canceled';
53817	        const cancelDate = formattedDateWord(managedBy === 'stripe' ? subscription.ended : subscription.ends);
53818	        const locale = resolveLanguagePackLocale(form);
53819	        let newArr = subscription['transaction-history'].reduce((acc, e) => {
53820	            const date = formattedDateWord(e.time, locale);
53821	            const period = getPeriod(e.time, e.cycle, e.cycleCount, locale);
53822	            const { cents, currency, taxRate, } = e;
53823	            let total;
53824	            let taxes;
53825	            if (taxRate) {
53826	                const { displayName, taxInclusive, taxPercent } = taxRate;
53827	                ({ taxes, total } = getSpecificTax(cents, displayName, taxInclusive, taxPercent));
53828	            }
53829	            else if (defaultTax?.length) {
53830	                ({ taxes, total } = getDefaultTaxes(cents, defaultTax));
53831	            }
53832	            else {
53833	                total = (cents / 100).toFixed(2);
53834	                taxes = null;
53835	            }
53836	            const subtotal = managedBy === 'stripe'
53837	                ? (e.cents / 100).toFixed(2)
53838	                : null;
53839	            return [...acc, {
53840	                    date, period, subtotal, currency, taxes, total,
53841	                }];
53842	        }, []);
53843	        if (isCanceled) {
53844	            newArr = [{
53845	                    date: cancelDate,
53846	                    period: 'canceled',
53847	                }, ...newArr];
53848	        }
53849	        return newArr;
53850	    }
53851	    catch {
53852	        console.error('Failed to get subscription billing history');
53853	        return null;
53854	    }
53855	};
53856
53857	const loadBraintreeStripeSubscriptions = (form, _, formActions, activeOnly) => {
53858	    return request(`blaize/payment/${form.organisationConfiguration.paymentProvider}/subscriptions`, {
53859	        method: "GET"
53860	    }, formActions, null, true)
53861	        .then(response => response.ok ? response.json() : [])
53862	        .then(subscriptions => subscriptions
53863	        .filter(subscription => !activeOnly || subscription['subscription-state']?.toLowerCase() === 'active')
53864	        .map(subscription => {
53865	        const locale = resolveLanguagePackLocale(form);
53866	        const multiphasePlanMappings = getMultiphasePlanMappings(subscription);
53867	        return {
53868	            externalId: subscription['external-id'],
53869	            productId: subscription['blaize-product'].id,
53870	            productLabel: subscription['blaize-product'].label ?? subscription['blaize-product'].id,
53871	            planId: subscription['plan_id'],
53872	            planLabel: subscription['plan_name'],
53873	            currency: subscription['currency_code'],
53874	            status: subscription['subscription-state']?.toLowerCase() === 'active' ? 'active' : 'inactive',
53875	            nextBillingTime: formattedDateWord(subscription['next-billing-time'], locale),
53876	            amount: getSubscriptionAmount(form, subscription),
53877	            transactionHistory: getBillingHistory(form, subscription),
53878	            ...(subscription['multiphase_plan'] && { multiphasePlan: subscription['multiphase_plan'] }),
53879	            ...(Object.keys(multiphasePlanMappings).length > 0 && { multiphasePlanMappings })
53880	        };
53881	    }));
53882	};
53883	const getMultiphasePlanMappings = (subscription) => {
53884	    const multiPhasedPlans = subscription['blaize-product'].mapping?.recurring?.multiPhasedPlans || [];
53885	    return multiPhasedPlans.reduce((acc, plan) => {
53886	        acc[plan.id] = plan;
53887	        return acc;
53888	    }, {});
53889	};
53890
53891	const calculateStripeSubscriptionProrate = (form, formState, formActions) => {
53892	    const changingFromSubscription = formState
53893	        .validChangeFromPlans
53894	        .find(plan => formState.paymentOption.slug === plan.planSlug && formState.paymentOption.productId === plan.productId)
53895	        ?.changesFromSubscription;
53896	    if (!changingFromSubscription) {
53897	        console.error("No valid change from subscription");
53898	        return;
53899	    }
53900	    return request(`zephr/payment/stripe/subscriptions/${changingFromSubscription.externalId}/change-previews`, {
53901	        method: 'POST',
53902	        bodyObject: {
53903	            plan_id: formState.paymentOption.slug
53904	        }
53905	    }, formActions)
53906	        .then(response => response.json())
53907	        .then(preview => {
53908	        const currencyMultiplier = isZeroDecimalCurrency(formState.paymentOption.currencyCode.toUpperCase()) ? 1 : 0.01;
53909	        return {
53910	            totalPrice: preview.total * currencyMultiplier,
53911	            totalPriceFormattedString: formatCurrency(preview.total * currencyMultiplier, formState.paymentOption.currencyCode),
53912	            subTotalPrice: preview.sub_total * currencyMultiplier,
53913	            subTotalPriceFormattedString: formatCurrency(preview.sub_total * currencyMultiplier, formState.paymentOption.currencyCode),
53914	        };
53915	    });
53916	};
53917
53918	// Standalone service to load gift subscriptions without importing paymentProviderConfigurations
53919	const loadGiftSubscriptions = async (form, formState, formActions) => {
53920	    try {
53921	        const response = await request("zephr/public/gifts/v1/gifts", {
53922	            method: "GET"
53923	        }, formActions, null, true);
53924	        if (response.ok) {
53925	            const json = await response.json();
53926	            const rawGiftSubscriptions = json || [];
53927	            // Map API response fields from camelCase to the structure consumers expect
53928	            const giftSubscriptions = rawGiftSubscriptions
53929	                .filter((gift) => gift.subscriptionDetails)
53930	                .map((gift) => ({
53931	                gift_code: gift.giftCode,
53932	                subscription_number: gift.subscriptionNumber,
53933	                status: gift.status,
53934	                is_purchaser: gift.isPurchaser,
53935	                is_recipient: gift.isRecipient,
53936	                error_reason: gift.errorReason,
53937	                host: gift.host,
53938	                externalId: gift.subscriptionDetails?.id,
53939	                recipientFirstName: gift.subscriptionDetails?.soldToContact?.firstName,
53940	                recipientLastName: gift.subscriptionDetails?.soldToContact?.lastName,
53941	                subscriptionStartDate: gift.subscriptionDetails?.subscriptionStartDate,
53942	                subscriptionEndDate: gift.subscriptionDetails?.termEndDate,
53943	                subscriptionType: gift.subscriptionDetails?.ratePlans?.[0]?.productName,
53944	                currency: gift.subscriptionDetails?.currency,
53945	            }));
53946	            formActions.updateFormState({
53947	                giftSubscriptions: giftSubscriptions,
53948	                formPrerequisiteLoaded: true
53949	            });
53950	        }
53951	        else {
53952	            formActions.updateFormState({
53953	                serverErrors: [ServerError.PAYMENT_PROCESSING_ERROR]
53954	            });
53955	        }
53956	    }
53957	    catch (error) {
53958	        formActions.updateFormState({
53959	            serverErrors: [ServerError.PAYMENT_PROCESSING_ERROR]
53960	        });
53961	    }
53962	};
53963
53964	const formatChargeCadence = (form, charge) => {
53965	    // Early return if we don't have the required charge data
53966	    if (!charge.price || !charge.currency) {
53967	        return null;
53968	    }
53969	    const price = formatCurrency(charge.price, charge.currency);
53970	    // Use listPriceBase as the primary display denominator
53971	    if (charge.listPriceBase && charge.listPriceBase !== 'Per_Billing_Perio
53971d') {
53972	        // Convert "Per_Month" -> "month", "Per_Year" -> "year", etc.
53973	        const unit = charge.listPriceBase.replace('Per_', '').toLowerCase();
53974	        return `${price}/${unit}`;
53975	    }
53976	    // Fall back to billingPeriod for "Per_Billing_Period" or missing listPriceBase
53977	    if (charge.billingPeriod) {
53978	        const period = charge.billingPeriod.toLowerCase();
53979	        // Handle special cases
53980	        if (period === 'specificmonths') {
53981	            return `${price}/month`; // Default to month for specific months
53982	        }
53983	        return `${price}/${period}`;
53984	    }
53985	    // Final fallback - assume monthly
53986	    return `${price}/month`;
53987	};
53988	// Helper function to format Zuora subscription amount based on billing period
53989	const formatZuoraSubscriptionAmount = (form, subscription) => {
53990	    // Early return for completely invalid inputs
53991	    if (!subscription.contractedMrr || !subscription.currency) {
53992	        return '';
53993	    }
53994	    // Get the first active rate plan charge for accurate pricing
53995	    const ratePlanList = [...Object.values(subscription.ratePlans)];
53996	    const activeRatePlans = ratePlanList.length === 1
53997	        ? ratePlanList
53998	        : ratePlanList.filter(ratePlan => ratePlan.lastChangeType === 'Add');
53999	    // Try to use accurate charge-level data first
54000	    if (activeRatePlans[0]?.ratePlanCharges?.[0]) {
54001	        const firstCharge = activeRatePlans[0].ratePlanCharges[0];
54002	        const accurateAmount = formatChargeCadence(form, firstCharge);
54003	        if (accurateAmount) {
54004	            return accurateAmount;
54005	        }
54006	    }
54007	    // Fallback: display MRR per month if we don't have the required charge data
54008	    const fallbackAmount = formatCurrency(subscription.contractedMrr, subscription.currency);
54009	    return `${fallbackAmount}/month`;
54010	};
54011	// Helper function to extract only custom fields (those ending with "__c")
54012	const extractCustomFields = (subscription) => {
54013	    const customFields = {};
54014	    for (const [key, value] of Object.entries(subscription)) {
54015	        if (key.endsWith('__c')) {
54016	            customFields[key] = value;
54017	        }
54018	    }
54019	    return customFields;
54020	};
54021	const zuoraStatusMap = {
54022	    'draft': 'pending',
54023	    'pending activation': 'pending',
54024	    'pending acceptance': 'pending',
54025	    'active': 'active',
54026	    'cancelled': 'inactive',
54027	    'expired': 'inactive',
54028	    'suspended': 'inactive'
54029	};
54030	const loadZuoraSubscriptions = async (form, formState, formActions, activeOnly, isGiftSubscriptions = false) => {
54031	    // Load gift subscriptions first via standalone service (no circular deps)
54032	    let giftSubscriptions = [];
54033	    try {
54034	        await loadGiftSubscriptions(form, formState, formActions);
54035	        const updatedFormState = formActions.getFormState();
54036	        giftSubscriptions = (updatedFormState.giftSubscriptions || []).map((giftSub) => ({
54037	            externalId: giftSub.externalId,
54038	            accountId: '',
54039	            productId: giftSub.subscriptionType || '',
54040	            productLabel: giftSub.subscriptionType || '',
54041	            planId: '',
54042	            planLabel: null,
54043	            currency: giftSub.currency,
54044	            status: giftSub.status,
54045	            amount: '',
54046	            isGift: true,
54047	            recipientFirstName: giftSub.recipientFirstName,
54048	            recipientLastName: giftSub.recipientLastName,
54049	            subscriptionStartDate: giftSub.subscriptionStartDate,
54050	            subscriptionEndDate: giftSub.subscriptionEndDate,
54051	            subscriptionType: giftSub.subscriptionType,
54052	            subscriptionNumber: giftSub.subscriptionNumber,
54053	        }));
54054	    }
54055	    catch (error) {
54056	        console.error('Error loading gift subscriptions:', error);
54057	        // Continue without gift subscriptions
54058	    }
54059	    // Load regular Zuora subscriptions
54060	    const regularSubscriptions = await request('plugins/public/zuora-billing/subscriptions', {
54061	        method: "GET"
54062	    }, formActions, null, true)
54063	        .then(response => response.json())
54064	        .then(subscriptionsResponse => [...Object.values(subscriptionsResponse.subscriptions || {})])
54065	        .then(subscriptions => subscriptions
54066	        .filter(subscription => !activeOnly || subscription.status?.toLowerCase() === 'active')
54067	        .map(subscription => {
54068	        // Assuming that Zephr created Zuora subscriptions only have 1 active rate plan
54069	        const ratePlanList = [...Object.values(subscription.ratePlans)];
54070	        const activeRatePlans = ratePlanList.length === 1
54071	            ? ratePlanList
54072	            : ratePlanList.filter(ratePlan => ratePlan.lastChangeType === 'Add');
54073	        if (activeRatePlans.length !== 1) {
54074	            console.warn(`Subscription ${subscription.id} has ${activeRatePlans.length} active rate plans`, ratePlanList);
54075	        }
54076	        // Verify currency
54077	        if (activeRatePlans[0]
54078	            && !formConfigAs(form).dynamicOffer?.id
54079	            && getRelevantCurrency(form, formState)
54080	            && ![...Object.values(activeRatePlans[0].ratePlanCharges ?? {})]
54081	                .every(charge => charge?.currency === getRelevantCurrency(form, formState))) {
54082	            console.log(`Subscription ${subscription.id} is not in the form currency`);
54083	            return null;
54084	        }
54085	        const amount = formatZuoraSubscriptionAmount(form, subscription);
54086	        return {
54087	            // Start with only custom fields from the raw subscription (those ending with "__c")
54088	            ...extractCustomFields(subscription),
54089	            // Override with our specific mappings
54090	            externalId: subscription.id,
54091	            accountId: subscription.accountId,
54092	            productId: subscription['SubscriptionExperienceProductID__c'],
54093	            productLabel: activeRatePlans[0]?.productName,
54094	            planId: activeRatePlans[0]?.productRatePlanId,
54095	            planLabel: null,
54096	            currency: activeRatePlans[0]?.ratePlanCharges[0]?.currency,
54097	            status: zuoraStatusMap[subscription.status?.toLowerCase()] ?? 'inactive',
54098	            amount,
54099	            autoRenew: subscription?.autoRenew,
54100	            billToContact: subscription.billToContact,
54101	            termType: subscription.termType,
54102	            ...(isGiftSubscriptions ? {
54103	                recipientFirstName: subscription.soldToContact?.firstName,
54104	                recipientLastName: subscription.soldToContact?.lastName,
54105	                recipientEmail: subscription.soldToContact?.personalEmail,
54106	                subscriptionStartDate: subscription.subscriptionStartDate,
54107	                subscriptionEndDate: subscription.termEndDate,
54108	                subscriptionType: subscription?.ratePlans[0]?.productName,
54109	                subscriptionNumber: subscription.subscriptionNumber,
54110	            } : {})
54111	        };
54112	    })
54113	        .filter(existingSubscription => existingSubscription && existingSubscription.planId != null && existingSubscription.productId != null));
54114	    // Combine both lists and return
54115	    return [...regularSubscriptions, ...giftSubscriptions];
54116	};
54117
54118	const calculateZuoraSubscriptionProrate = (form, formState, formActions) => {
54119	    const changingFromSubscription = formState
54120	        .validChangeFromPlans
54121	        .find(plan => formState.paymentOption.slug === plan.planSlug && formState.paymentOption.productId === plan.productId)
54122	        ?.changesFromSubscription;
54123	    if (!changingFromSubscription) {
54124	        console.error("No valid change from subscription");
54125	        return;
54126	    }
54127	    return request(`plugins/public/zuora-billing/subscription-change-preview`, {
54128	        method: 'POST',
54129	        bodyObject: {
54130	            subscriptionId: changingFromSubscription.externalId,
54131	            newProductRatePlanId: formState.paymentOption.slug,
54132	            currency: getRelevantCurrency(form, formState),
54133	            ...(formState.dynamicOfferResult ? {
54134	                dynamicOfferResult: JSON.stringify(formState.dynamicOfferResult),
54135	                productId: formState.paymentOption.productId
54136	            } : {}),
54137	        }
54138	    }, formActions)
54139	        .then(response => response.json())
54140	        .then(preview => {
54141	        return {
54142	            totalPrice: preview.amount,
54143	            totalPriceFormattedString: formatCurrency(preview.amount, getRelevantCurrency(form, formState)),
54144	            subTotalPrice: preview.amountWithoutTax,
54145	            subTotalPriceFormattedString: formatCurrency(preview.amountWithoutTax, getRelevantCurrency(form, formState)),
54146	        };
54147	    });
54148	};
54149
54150	const stripePriceCalculator = (form, formState, formActions) => {
54151	    // Fallback to the generic price calculator if there is no billing address
54152	    if (!form.organisationConfiguration.stripeAutomaticTaxEnabled
54153	        || formState.billingAddress.country == null) {
54154	        return calculateBraintreeStripePrice(form, formState);
54155	    }
54156	    return fetchStripeTaxPreview(formState, formActions)
54157	        .then((taxPreview) => {
54158	        if (!taxPreview.total) {
54159	            return calculateBraintreeStripePrice(form, formState);
54160	        }
54161	        const currencyMultiplier = isZeroDecimalCurrency(formState.paymentOption.currencyCode.toUpperCase())
54162	            ? 1
54163	            : 0.01;
54164	        const currencyFormatter = (value) => formatCurrency(value * currencyMultiplier, formState.paymentOption.currencyCode);
54165	        return {
54166	            slug: formState.paymentOption.slug,
54167	            productId: formState.paymentOption.productId,
54168	            promoCode: formState.promoCode,
54169	            billingAddress: formState.billingAddress,
54170	            addonPrices: [],
54171	            totalPrice: taxPreview.total * currencyMultiplier,
54172	            totalPriceFormattedString: currencyFormatter(taxPreview.total),
54173	            netPrice: taxPreview.sub_total * currencyMultiplier,
54174	            netPriceFormattedString: currencyFormatter(taxPreview.sub_total),
54175	            taxPrice: taxPreview.tax ? taxPreview.tax * currencyMultiplier : null,
54176	            taxPriceFormattedString: taxPreview.tax ? currencyFormatter(taxPreview.tax) : null,
54177	            discountPrice: taxPreview.discount ? taxPreview.discount * currencyMultiplier : null,
54178	            discountPriceFormattedPrice: taxPreview.discount ? currencyFormatter(taxPreview.discount) : null,
54179	            chargeItems: [],
54180	        };
54181	    })
54182	        .catch((error) => {
54183	        console.error(`Error calculating stripe tax preview ${JSON.stringify(error)}`);
54184	        return calculateBraintreeStripePrice(form, formState);
54185	    });
54186	};
54187	const fetchStripeTaxPreview = (formState, formActions) => {
54188	    return request('zephr/payment/stripe/create-subscription-previews', {
54189	        method: 'POST',
54190	        bodyObject: {
54191	            product_id: formState.paymentOption.productId,
54192	            plan_id: formState.paymentOption.slug,
54193	            billing_country: formState.billingAddress.country,
54194	            billing_post_code: formState.billingAddress.postalCode,
54195	            promo_code: formState.promoCodeValid ? formState.promoCode : undefined,
54196	        },
54197	    }, formActions, null, true).then((response) => response.json());
54198	};
54199
54200	const verifyingPromoCodeBusyKey$1 = "promo-code";
54201	const checkDoPromoCode = async (form, formState, formActions) => {
54202	    if (form.environment.previewMode) {
54203	        return;
54204	    }
54205	    const dynamicOfferId = formConfigAs(form).dynamicOffer?.id;
54206	    if (!dynamicOfferId) {
54207	        throw Error('Missing Dynamic Offer id');
54208	    }
54209	    let session;
54210	    try {
54211	        session = document.cookie.match(/blaize_session=[0-9a-z-]+/)[0].substring(15);
54212	    }
54213	    catch {
54214	        session = null;
54215	    }
54216	    const doProducts = formState?.dynamicOfferResult?.products ?? [];
54217	    const promoProducts = doProducts.flatMap(p =>
54217 p.paymentPlans.map(plan => ({
54218	        id: p.id,
54219	        payment_plan: {
54220	            "provider": "zuora-billing",
54221	            "plan_id": plan.planId,
54222	            charges: plan.charges.map(c => ({
54223	                "charge_definition_id": c.chargeDefinitionData.productChargeDefinitionId,
54224	                "currency": c.prices[0]?.currency,
54225	                "price": c.prices[0].price
54226	            }))
54227	        }
54228	    })));
54229	    const response = await request('zephr/public/decisions/v1/promo-codes', {
54230	        method: "POST",
54231	        bodyObject: {
54232	            "promo_code": formState.promoCode,
54233	            "session": session,
54234	            "selected_products": promoProducts
54235	        },
54236	    }, formActions, verifyingPromoCodeBusyKey$1);
54237	    if (!response.ok) {
54238	        logDataLayerEvent(form, 'zephr_form_error', {
54239	            error: ServerError[ServerError.PROMO_CODE_INVALID_ERROR],
54240	        });
54241	        return Promise.resolve(formActions.updateFormState({
54242	            promoCodeValid: false,
54243	            serverErrors: [ServerError.PROMO_CODE_INVALID_ERROR],
54244	            discountedPlanPrices: []
54245	        }));
54246	    }
54247	    const json = await response.json();
54248	    const matchingProduct = json?.products?.find(p => p.id === formState.paymentOption.productId && p.paymentPlans.some(plan => plan.planId === formState.paymentOption.slug));
54249	    if (!matchingProduct) {
54250	        logDataLayerEvent(form, 'zephr_form_error', {
54251	            error: ServerError[ServerError.PROMO_CODE_INVALID_ERROR],
54252	        });
54253	        return Promise.resolve(formActions.updateFormState({
54254	            promoCodeValid: false,
54255	            serverErrors: [ServerError.PROMO_CODE_INVALID_ERROR],
54256	            discountedPlanPrices: []
54257	        }));
54258	    }
54259	    const updatedState = formActions.updateFormState({
54260	        promoCodeValid: true,
54261	        serverErrors: [],
54262	        discountedPlanPrices: [],
54263	        originalDynamicOfferResult: formState.dynamicOfferResult,
54264	        dynamicOfferResult: {
54265	            ...formState.dynamicOfferResult,
54266	            ...json
54267	        }
54268	    });
54269	    await calculatePrices(form, updatedState, formActions);
54270	};
54271	const zuoraDoPromoCodeService = async (form, formState, formActions) => checkDoPromoCode(form, formState, formActions);
54272
54273	/* src/components/elements/payment/zuora/ZuoraDynamicFormPreLoader.svelte generated by Svelte v4.2.12 */
54274
54275	function create_fragment$V(ctx) {
54276		let script;
54277		let script_src_value;
54278
54279		return {
54280			c() {
54281				script = element("script");
54282				script.innerHTML = ``;
54283				attr(script, "type", "text/javascript");
54284				if (!src_url_equal(script.src, script_src_value = "https://js.zuora.com/payment/v3/zuora.js")) attr(script, "src", script_src_value);
54285				attr(script, "onload", "window.zuoraLoadCallback()");
54286			},
54287			m(target, anchor) {
54288				append(document.head, script);
54289			},
54290			p: noop,
54291			i: noop,
54292			o: noop,
54293			d(detaching) {
54294				detach(script);
54295			}
54296		};
54297	}
54298
54299	function instance$U($$self, $$props, $$invalidate) {
54300		let { onMountCallback } = $$props;
54301		onMount(onMountCallback);
54302
54303		$$self.$$set = $$props => {
54304			if ('onMountCallback' in $$props) $$invalidate(0, onMountCallback = $$props.onMountCallback);
54305		};
54306
54307		return [onMountCallback];
54308	}
54309
54310	class ZuoraDynamicFormPreLoader extends SvelteComponent {
54311		constructor(options) {
54312			super();
54313			init(this, options, instance$U, create_fragment$V, safe_not_equal, { onMountCallback: 0 });
54314		}
54315	}
54316
54317	const paymentProviderConfigurations = {
54318	    [paymentProviders.BRAINTREE]: {
54319	        loader: loadBraintreeUi,
54320	        preLoader: null,
54321	        completer: braintreePay,
54322	        changePaymentCompleter: braintreeChangePayment,
54323	        component: BraintreePayment,
54324	        preLoaderComponent: null,
54325	        promoCodeCheckPath: 'blaize/payment/braintree/promo-code-check',
54326	        productAddonPath: 'blaize/payment/braintree/addons-check',
54327	        existingSubscriptionLoader: loadBraintreeStripeSubscriptions,
54328	        priceCalculator: calculateBraintreeStripePrice,
54329	        hasProductAddons: true,
54330	        hasPromoCodes: () => true,
54331	        internalSubmit: () => false,
54332	        noPaymentForm: (form, formState) => false,
54333	        canAttemptIncompletePaymentFormSubmission: false,
54334	    },
54335	    [paymentProviders.STRIPE]: {
54336	        loader: loadStripeUi,
54337	        preLoader: null,
54338	        completer: stripePay,
54339	        changePaymentCompleter: stripeChangePayment,
54340	        component: StripePayment,
54341	        preLoaderComponent: null,
54342	        promoCodeCheckPath: 'zephr/payment/stripe/promo-code-check',
54343	        existingSubscriptionLoader: loadBraintreeStripeSubscriptions,
54344	        priceCalculator: stripePriceCalculator,
54345	        changeSubscriptionProrateCalculator: calculateStripeSubscriptionProrate,
54346	        hasProductAddons: false,
54347	        hasPromoCodes: () => true,
54348	        internalSubmit: () => false,
54349	        noPaymentForm: (form, formState) => false,
54350	        canAttemptIncompletePaymentFormSubmission: true,
54351	    },
54352	    [paymentProviders.ZUORA]: {
54353	        loader: loadZuoraUi,
54354	        preLoader: loadZuora,
54355	        completer: zuoraComplete,
54356	        changePaymentCompleter: zuoraChangePayment,
54357	        component: ZuoraPayment,
54358	        preLoaderComponent: (config) => config?.useDynamicForm ? ZuoraDynamicFormPreLoader : ZuoraPreLoader,
54359	        promoCodeCheckPath: '',
54360	        promoCodeServiceOverride: zuoraDoPromoCodeService,
54361	        priceCalculator: calculateZuoraPrice,
54362	        existingSubscriptionLoader: loadZuoraSubscriptions,
54363	        changeSubscriptionProrateCalculator: calculateZuoraSubscriptionProrate,
54364	        hasProductAddons: false,
54365	        hasPromoCodes: (form) => formConfigAs(form).dynamicOffer && !formConfigAs(form).changeSubscriptionMode,
54366	        internalSubmit: (form) => !formConfigAs(form).changeSubscriptionMode,
54367	        noPaymentForm: (form, formState) => {
54368	            const config = formConfigAs(form);
54369	            const isChangeSubscriptionMode = config.changeSubscriptionMode;
54370	            const requiresPaymentMethodSetup = formState?.requiresPaymentMethodSetup;
54371	            // Show payment form if we're in payment method setup mode, even during change subscription
54372	            return isChangeSubscriptionMode && !requiresPaymentMethodSetup;
54373	        },
54374	        canAttemptIncompletePaymentFormSubmission: false,
54375	    }
54376	};
54377	const mobilePaymentServiceConfigurations = {
54378	    [paymentProviders.BRAINTREE]: {
54379	        loader: configureBraintreeMobilePayments,
54380	        completer: braintreePayWithMobile,
54381	        component: BraintreeMobilePayment,
54382	        previewMode: (form) => form.environment.previewMode,
54383	    },
54384	    [paymentProviders.STRIPE]: {
54385	        loader: configureStripeMobilePay,
54386	        completer: stripePay,
54387	        component: StripeMobilePayment,
54388	        previewMode: (form) => form.environment.previewMode,
54389	    },
54390	};
54391	const paymentProviderFor = (providerName) => {
54392	    const configuration = paymentProviderConfigurations[providerName];
54393	    if (!configuration) {
54394	        throw `Payment provider ${providerName} not configured.`;
54395	    }
54396	    return configuration;
54397	};
54398	const supportsMobilePayments = (providerName) => {
54399	    return !!mobilePaymentServiceConfigurations[providerName];
54400	};
54401	const mobilePaymentServiceFor = (providerName) => {
54402	    const configuration = mobilePaymentServiceConfigurations[providerName];
54403	    if (!configuration) {
54404	        throw `Mobile payment provider ${providerName} not configured.`;
54405	    }
54406	    return configuration;
54407	};
54408
54409	const factory$q = {
54410	    matches: (sectionElement) => sectionElement.type === elementTypes.BUTTON && !sectionElement.config.isLogin && !sectionElement.config.isCancel,
54411	    create: (form, formState, formActions, elementConfig) => {
54412	        const isSubmitButton = elementConfig.isSubmit === true;
54413	        const inChangePaymentSection = formState.currentSection?.type === sectionTypes.CHANGE_PAYMENT.type;
54414	        const providerHandlesSubmit = inChangePaymentSection && isSubmitButton
54415	            ? paymentProviderFor(form.organisationConfiguration.paymentProvider).internalSubmit(form)
54416	            : false;
54417	        const handleClick = () => {
54418	            if (providerHandlesSubmit) {
54419	                return;
54420	            }
54421	            logDataLayerEvent(form, 'zephr_form_button_press', {
54422	                sectionId: formState.currentSection.type,
54423	                buttonType: 'SUBMIT'
54424	            });
54425	            formActions.attemptCompleteSection();
54426	        };
54427	        return {
54428	            component: Button,
54429	            props: {
54430	                disabled: formState.isBusy || !formState.canAttemptSectionCompletion || providerHandlesSubmit,
54431	                text: elementConfig.text,
54432	                onClick: handleClick,
54433	                isPaymentForm: form.formType === FormType.PAYMENT,
54434	                hidden: providerHandlesSubmit,
54435	            }
54436	        };
54437	    }
54438	};
54439
54440	/**
54441	 * Permissive email check: requires exactly one '@' with at least one non-space character
54442	 * on each side. Does not validate full email syntax (e.g., dots, domain rules),
54443	 * just catches obvious typos like spaces or missing parts.
54444	 * Front-end email validation should be lightweight.
54445	 * @param email
54446	 */
54447	const isValidEmail = (email) => {
54448	    if (!email)
54449	        return false;
54450	    return /^[^\s@]+@[^\s@]+$/.test(email);
54451	};
54452	const updateElementValidity = (component, formState, sectionElement, formActions) => {
54453	    if (component?.isValid !== undefined) {
54454	        const validity = {
54455	            partType: formState.currentPart.type,
54456	            sectionType: formState.currentSection.type,
54457	            sectionOrder: formState.currentSection.order,
54458	            elementType: sectionElement.type,
54459	            elementOrder: sectionElement.order,
54460	            isValid: component.isValid,
54461	            elementId: sectionElement.config?.slug,
54462	        };
54463	        const existingValidity = formState.elementValidity.find((other) => other.partType === validity.partType &&
54464	            other.sectionType === validity.sectionType &&
54465	            other.sectionOrder === validity.sectionOrder &&
54466	            other.elementType === validity.elementType &&
54467	            other.elementOrder === validity.elementOrder);
54468	        if (existingValidity?.isValid !== validity.isValid) {
54469	            formActions.updateFormState({
54470	                elementValidity: [
54471	                    ...formState.elementValidity.filter((v) => v != existingValidity),
54472	                    validity,
54473	                ],
54474	            });
54475	        }
54476	    }
54477	};
54478
54479	/* src/components/elements/email/EmailAddress.svelte generated by Svelte v4.2.12 */
54480
54481	function create_fragment$U(ctx) {
54482		let label_1;
54483		let t;
54484		let div;
54485		let input;
54486		let current;
54487
54488		label_1 = new Label({
54489				props: {
54490					forInput: /*id*/ ctx[11],
54491					label: /*label*/ ctx[2],
54492					isPaymentForm: /*isPaymentForm*/ ctx[6]
54493				}
54494			});
54495
54496		input = new Input({
54497				props: {
54498					id: /*id*/ ctx[11],
54499					autocomplete: "email",
54500					type: "email",
54501					name: "email",
54502					disabled: /*disabled*/ ctx[1],
54503					value: /*emailAddress*/ ctx[0],
54504					placeholder: /*placeholder*/ ctx[3],
54505					errorMessage: /*error*/ ctx[5],
54506					innerTextOnClick: /*onEdit*/ ctx[7],
54507					innerText: /*onEdit*/ ctx[7] && (/*editText*/ ctx[4] || 'Edit'),
54508					isPaymentForm: /*isPaymentForm*/ ctx[6],
54509					onFocus: /*onFocus*/ ctx[9],
54510					onBlur: /*onBlur*/ ctx[10]
54511				}
54512			});
54513
54514		input.$on("change", /*change_handler*/ ctx[13]);
54515
54516		return {
54517			c() {
54518				create_component(label_1.$$.fragment);
54519				t = space();
54520				div = element("div");
54521				create_component(input.$$.fragment);
54522				attr(div, "class", "zephr-form-relative-container");
54523				toggle_class(div, "zephr-payment-form-relative-container", /*isPaymentForm*/ ctx[6]);
54524			},
54525			m(target, anchor) {
54526				mount_component(label_1, target, anchor);
54527				insert(target, t, anchor);
54528				insert(target, div, anchor);
54529				mount_component(input, div, null);
54530				current = true;
54531			},
54532			p(ctx, [dirty]) {
54533				const label_1_changes = {};
54534				if (dirty & /*label*/ 4) label_1_changes.label = /*label*/ ctx[2];
54535				if (dirty & /*isPaymentForm*/ 64) label_1_changes.isPaymentForm = /*isPaymentForm*/ ctx[6];
54536				label_1.$set(label_1_changes);
54537				const input_changes = {};
54538				if (dirty & /*disabled*/ 2) input_changes.disabled = /*disabled*/ ctx[1];
54539				if (dirty & /*emailAddress*/ 1) input_changes.value = /*emailAddress*/ ctx[0];
54540				if (dirty & /*placeholder*/ 8) input_changes.placeholder = /*placeholder*/ ctx[3];
54541				if (dirty & /*error*/ 32) input_changes.errorMessage = /*error*/ ctx[5];
54542				if (dirty & /*onEdit*/ 128) input_changes.innerTextOnClick = /*onEdit*/ ctx[7];
54543				if (dirty & /*onEdit, editText*/ 144) input_changes.innerText = /*onEdit*/ ctx[7] && (/*editText*/ ctx[4] || 'Edit');
54544				if (dirty & /*isPaymentForm*/ 64) input_changes.isPaymentForm = /*isPaymentForm*/ ctx[6];
54545				if (dirty & /*onFocus*/ 512) input_changes.onFocus = /*onFocus*/ ctx[9];
54546				if (dirty & /*onBlur*/ 1024) input_changes.onBlur = /*onBlur*/ ctx[10];
54547				input.$set(input_changes);
54548
54549				if (!current || dirty & /*isPaymentForm*/ 64) {
54550					toggle_class(div, "zephr-payment-form-relative-container", /*isPaymentForm*/ ctx[6]);
54551				}
54552			},
54553			i(local) {
54554				if (current) return;
54555				transition_in(label_1.$$.fragment, local);
54556				transition_in(input.$$.fragment, local);
54557				current = true;
54558			},
54559			o(local) {
54560				transition_out(label_1.$$.fragment, local);
54561				transition_out(input.$$.fragment, local);
54562				current = false;
54563			},
54564			d(detaching) {
54565				if (detaching) {
54566					detach(t);
54567					detach(div);
54568				}
54569
54570				destroy_component(label_1, detaching);
54571				destroy_component(input);
54572			}
54573		};
54574	}
54575
54576	function instance$T($$self, $$props, $$invalidate) {
54577		let { formKey } = $$props;
54578		let { emailAddress } = $$props;
54579		let { disabled } = $$props;
54580		let { label } = $$props;
54581		let { placeholder } = $$props;
54582		let { editText } = $$props;
54583		let { error = null } = $$props;
54584		let { isPaymentForm = false } = $$props;
54585		let { onEdit } = $$props;
54586		let { onChange } = $$props;
54587		let { onFocus } = $$props;
54588		let { onBlur } = $$props;
54589		const id = `zephr-form-identifier-${formKey}`;
54590		const change_handler = ({ detail }) => onChange(detail);
54591
54592		$$self.$$set = $$props => {
54593			if ('formKey' in $$props) $$invalidate(12, formKey = $$props.formKey);
54594			if ('emailAddress' in $$props) $$invalidate(0, emailAddress = $$props.emailAddress);
54595			if ('disabled' in $$props) $$invalidate(1, disabled = $$props.disabled);
54596			if ('label' in $$props) $$invalidate(2, label = $$props.label);
54597			if ('placeholder' in $$props) $$invalidate(3, placeholder = $$props.placeholder);
54598			if ('editText' in $$props) $$invalidate(4, editText = $$props.editText);
54599			if ('error' in $$props) $$invalidate(5, error = $$props.error);
54600			if ('isPaymentForm' in $$props) $$invalidate(6, isPaymentForm = $$props.isPaymentForm);
54601			if ('onEdit' in $$props) $$invalidate(7, onEdit = $$props.onEdit);
54602			if ('onChange' in $$props) $$invalidate(8, onChange = $$props.onChange);
54603			if ('onFocus' in $$props) $$invalidate(9, onFocus = $$props.onFocus);
54604			if ('onBlur' in $$props) $$invalidate(10, onBlur = $$props.onBlur);
54605		};
54606
54607		return [
54608			emailAddress,
54609			disabled,
54610			label,
54611			placeholder,
54612			editText,
54613			error,
54614			isPaymentForm,
54615			onEdit,
54616			onChange,
54617			onFocus,
54618			onBlur,
54619			id,
54620			formKey,
54621			change_handler
54622		];
54623	}
54624
54625	class EmailAddress extends SvelteComponent {
54626		constructor(options) {
54627			super();
54628
54629			init(this, options, instance$T, create_fragment$U, safe_not_equal, {
54630				formKey: 12,
54631				emailAddress: 0,
54632				disabled: 1,
54633				label: 2,
54634				placeholder: 3,
54635				editText: 4,
54636				error: 5,
54637				isPaymentForm: 6,
54638				onEdit: 7,
54639				onChange: 8,
54640				onFocus: 9,
54641				onBlur: 10
54642			});
54643		}
54644	}
54645
54646	const factory$p = {
54647	    matches: (sectionElement) => sectionElement.type === elementTypes.EMAIL_ADDRESS,
54648	    create: (form, formState, formActions, elementConfig) => {
54649	        const disabled = elementConfig.disabled || formState.isBusy;
54650	        return ({
54651	            component: EmailAddress,
54652	            props: {
54653	                formKey: form.uniqueKey,
54654	                disabled,
54655	                emailAddress: formState.emailAddress,
54656	                label: elementConfig.label,
54657	                placeholder: elementConfig.placeholder,
54658	                editText: elementConfig.editText,
54659	                onChange: (value) => {
54660	                    !disabled && formActions.updateFormState({
54661	                        userExists: undefined,
54662	                        emailIsContact: undefined,
54663	                        emailAddress: value,
54664	                        verificationCode: "",
54665	                        verificationCodeValid: undefined,
54666	                        serverErrors: []
54667	                    });
54668	                    logDataLayerEvent(form, 'zephr_form_input_change', {
54669	                        inputName: `zephr-form-identifier-${form.uniqueKey}`,
54670	                        sectionId: formState.currentSection.type,
54671	                        field: 'email'
54672	                    });
54673	                },
54674	                onFocus: () => logDataLayerEvent(form, 'zephr_form_input_focus', {
54675	                    inputName: `zephr-form-identifier-${form.uniqueKey}`,
54676	                    sectionId: formState.currentSection.type,
54677	                    field: 'email'
54678	                }),
54679	                onBlur: () => logDataLayerEvent(form, 'zephr_form_input_blur', {
54680	                    inputName: `zephr-form-identifier-${form.uniqueKey}`,
54681	                    sectionId: formState.currentSection.type,
54682	                    field: 'email'
54683	                }),
54684	                onEdit: elementConfig.disabled && (() => {
54685	                    formActions.jumpToPartStart(partTypes.ACCOUNT_VERIFICATION.type);
54686	                }),
54687	                isPaymentForm: form.formType === FormType.PAYMENT,
54688	            },
54689	            isValid: isValidEmail(formState.emailAddress)
54690	        });
54691	    }
54692	};
54693
54694	/* src/components/elements/payment/EmptyPayment.svelte generated by Svelte v4.2.12 */
54695
54696	function create_fragment$T(ctx) {
54697		let errormessage;
54698		let current;
54699
54700		errormessage = new ErrorMessage({
54701				props: {
54702					error: /*providerError*/ ctx[0]?.message ?? /*error*/ ctx[1] ?? "",
54703					isPaymentForm: true
54704				}
54705			});
54706
54707		return {
54708			c() {
54709				create_component(errormessage.$$.fragment);
54710			},
54711			m(target, anchor) {
54712				mount_component(errormessage, target, anchor);
54713				current = true;
54714			},
54715			p(ctx, [dirty]) {
54716				const errormessage_changes = {};
54717				if (dirty & /*providerError, error*/ 3) errormessage_changes.error = /*providerError*/ ctx[0]?.message ?? /*error*/ ctx[1] ?? "";
54718				errormessage.$set(errormessage_changes);
54719			},
54720			i(local) {
54721				if (current) return;
54722				transition_in(errormessage.$$.fragment, local);
54723				current = true;
54724			},
54725			o(local) {
54726				transition_out(errormessage.$$.fragment, local);
54727				current = false;
54728			},
54729			d(detaching) {
54730				destroy_component(errormessage, detaching);
54731			}
54732		};
54733	}
54734
54735	function instance$S($$self, $$props, $$invalidate) {
54736		let { providerError } = $$props;
54737		let { error = null } = $$props;
54738
54739		$$self.$$set = $$props => {
54740			if ('providerError' in $$props) $$invalidate(0, providerError = $$props.providerError);
54741			if ('error' in $$props) $$invalidate(1, error = $$props.error);
54742		};
54743
54744		return [providerError, error];
54745	}
54746
54747	class EmptyPayment extends SvelteComponent {
54748		constructor(options) {
54749			super();
54750			init(this, options, instance$S, create_fragment$T, safe_not_equal, { providerError: 0, error: 1 });
54751		}
54752	}
54753
54754	const factory$o = {
54755	    matches: (sectionElement) => sectionElement.type === elementTypes.PAYMENT || sectionElement.type === elementTypes.CHNAGE_PAYMENT_METHOD,
54756	    create: (form, formState, formActions) => {
54757	        const paymentProvider = paymentProviderFor(form.organisationConfiguration.paymentProvider);
54758	        if (paymentProvider.noPaymentForm(form, formState)) {
54759	            return {
54760	                component: EmptyPayment,
54761	                props: {
54762	                    providerError: formState.paymentProviderError,
54763	                },
54764	                isValid: true
54765	            };
54766	        }
54767	        return {
54768	            component: paymentProvider.component,
54769	            props: {
54770	                isLoaded: formState.paymentProviderFormLoaded,
54771	                isBusy: formState.paymentProviderFormBusy,
54772	                providerError: formState.paymentProviderError,
54773	                isComplete: formState.paymentFormComplete,
54774	                isDisabled: paymentProvider.internalSubmit(form)
54775	                    ? !formState.canAttemptSectionCompletion
54776	                    : (formState.isBusy || formState.mobilePaymentService != null),
54777	                formKey: form.uniqueKey,
54778	                onMountCallback: () => {
54779	                    formActions.updateFormState({
54780	                        paymentProviderFormLoaded: false
54781	                    });
54782	                    void paymentProvider.loader(form, formState, formActions);
54783	                }
54784	            },
54785	            isValid: paymentProvider.internalSubmit(form) ? undefined : formState.paymentFormComplete && !formState.paymentProviderError
54786	        };
54787	    }
54788	};
54789
54790	const regularPaymentElementIsPresent = form => form.parts.flatMap(part => part.sections)
54791	    .flatMap(section => section.elements)
54792	    .some(element => element.type === elementTypes.PAYMENT && element.config?.enabled !== false);
54793	const factory$n = {
54794	    matches: (sectionElement) => sectionElement.type === elementTypes.MOBILE_PAYMENT,
54795	    create: (form, formState, formActions) => {
54796	        if (form.environment.previewMode) {
54797	            return null;
54798	        }
54799	        // Check if the payment provider supports mobile payments
54800	        if (!supportsMobilePayments(form.organisationConfiguration.paymentProvider)) {
54801	            return null;
54802	        }
54803	        const paymentProvider = mobilePaymentServiceFor(form.organisationConfiguration.paymentProvider);
54804	        return {
54805	            component: paymentProvider.component,
54806	            props: {
54807	                isDisabled: formState.isBusy || formState.mobilePaymentService != null,
54808	                onMountCallback: () => paymentProvider.loader(form, formState, formActions),
54809	                // Minor-hack to prevent injecting the payment provider lib twice
54810	                disableCoreDependencyHeader: regularPaymentElementIsPresent(form)
54811	            }
54812	        };
54813	    }
54814	};
54815
54816	/* src/components/elements/Checkbox.svelte generated by Svelte v4.2.12 */
54817
54818	function create_fragment$S(ctx) {
54819		let input;
54820		let t0;
54821		let label_1;
54822		let div;
54823		let t1;
54824		let t2;
54825		let mounted;
54826		let dispose;
54827
54828		let input_levels = [
54829			{ id: /*id*/ ctx[0] },
54830			{ name: /*name*/ ctx[1] },
54831			{ required: /*required*/ ctx[2] },
54832			{ disabled: /*disabled*/ ctx[3] },
54833			/*conditionalProps*/ ctx[8],
54834			{ type: "checkbox" },
54835			{ class: "zephr-form-checkbox" }
54836		];
54837
54838		let input_data = {};
54839
54840		for (let i = 0; i < input_levels.length; i += 1) {
54841			input_data = assign(input_data, input_levels[i]);
54842		}
54843
54844		return {
54845			c() {
54846				input = element("input");
54847				t0 = space();
54848				label_1 = element("label");
54849				div = element("div");
54850				t1 = space();
54851				t2 = text(/*label*/ ctx[6]);
54852				set_attributes(input, input_data);
54853				toggle_class(input, "disabled", /*disabled*/ ctx[3]);
54854				toggle_class(input, "error", /*hasError*/ ctx[4]);
54855				toggle_class(input, "zephr-payment-form-checkbox", /*isPaymentForm*/ ctx[5]);
54856				toggle_class(input, "svelte-ud4i0a", true);
54857				attr(div, "class", "zephr-form-checkmark svelte-ud4i0a");
54858				toggle_class(div, "zephr-payment-form-checkmark", /*isPaymentForm*/ ctx[5]);
54859				toggle_class(div, "disabled", /*disabled*/ ctx[3]);
54860				toggle_class(div, "checked", /*checked*/ ctx[7]);
54861				toggle_class(div, "error", /*hasError*/ ctx[4]);
54862				attr(label_1, "for", /*id*/ ctx[0]);
54863				attr(label_1, "class", "zephr-form-checkbox-label svelte-ud4i0a");
54864				toggle_class(label_1, "zephr-payment-form-checkbox-label", /*isPaymentForm*/ ctx[5]);
54865			},
54866			m(target, anchor) {
54867				insert(target, input, anchor);
54868				if (input.autofocus) input.focus();
54869				insert(target, t0, anchor);
54870				insert(target, label_1, anchor);
54871				append(label_1, div);
54872				append(label_1, t1);
54873				append(label_1, t2);
54874
54875				if (!mounted) {
54876					dispose = listen(input, "input", /*handleInputChange*/ ctx[9]);
54877					mounted = true;
54878				}
54879			},
54880			p(ctx, [dirty]) {
54881				set_attributes(input, input_data = get_spread_update(input_levels, [
54882					dirty & /*id*/ 1 && { id: /*id*/ ctx[0] },
54883					dirty & /*name*/ 2 && { name: /*name*/ ctx[1] },
54884					dirty & /*required*/ 4 && { required: /*required*/ ctx[2] },
54885					dirty & /*disabled*/ 8 && { disabled: /*disabled*/ ctx[3] },
54886					dirty & /*conditionalProps*/ 256 && /*conditionalProps*/ ctx[8],
54887					{ type: "checkbox" },
54888					{ class: "zephr-form-checkbox" }
54889				]));
54890
54891				toggle_class(input, "disabled", /*disabled*/ ctx[3]);
54892				toggle_class(input, "error", /*hasError*/ ctx[4]);
54893				toggle_class(input, "zephr-payment-form-checkbox", /*isPaymentForm*/ ctx[5]);
54894				toggle_class(input, "svelte-ud4i0a", true);
54895
54896				if (dirty & /*isPaymentForm*/ 32) {
54897					toggle_class(div, "zephr-payment-form-checkmark", /*isPaymentForm*/ ctx[5]);
54898				}
54899
54900				if (dirty & /*disabled*/ 8) {
54901					toggle_class(div, "disabled", /*disabled*/ ctx[3]);
54902				}
54903
54904				if (dirty & /*checked*/ 128) {
54905					toggle_class(div, "checked", /*checked*/ ctx[7]);
54906				}
54907
54908				if (dirty & /*hasError*/ 16) {
54909					toggle_class(div, "error", /*hasError*/ ctx[4]);
54910				}
54911
54912				if (dirty & /*label*/ 64) set_data(t2, /*label*/ ctx[6]);
54913
54914				if (dirty & /*id*/ 1) {
54915					attr(label_1, "for", /*id*/ ctx[0]);
54916				}
54917
54918				if (dirty & /*isPaymentForm*/ 32) {
54919					toggle_class(label_1, "zephr-payment-form-checkbox-label", /*isPaymentForm*/ ctx[5]);
54920				}
54921			},
54922			i: noop,
54923			o: noop,
54924			d(detaching) {
54925				if (detaching) {
54926					detach(input);
54927					detach(t0);
54928					detach(label_1);
54929				}
54930
54931				mounted = false;
54932				dispose();
54933			}
54934		};
54935	}
54936
54937	function instance$R($$self, $$props, $$invalidate) {
54938		const dispatch = createEventDispatcher();
54939		let { id } = $$props;
54940		let { name = id } = $$props;
54941		let { required = true } = $$props;
54942		let { disabled = false } = $$props;
54943		let { hasError = false } = $$props;
54944		let { isPaymentForm = false } = $$props;
54945		let { label = "" } = $$props;
54946		let { value } = $$props;
54947		let { placeholder = "" } = $$props;
54948		let { checked = false } = $$props;
54949		let { pattern = "" } = $$props;
54950		let conditionalProps = {};
54951		if (checked) conditionalProps.checked = checked;
54952		if (placeholder) conditionalProps.placeholder = placeholder;
54953		if (pattern) conditionalProps.pattern = pattern;
54954		if (value) conditionalProps.value = value;
54955
54956		const handleInputChange = e => {
54957			dispatch("change", e.target.checked);
54958		};
54959
54960		$$self.$$set = $$props => {
54961			if ('id' in $$props) $$invalidate(0, id = $$props.id);
54962			if ('name' in $$props) $$invalidate(1, name = $$props.name);
54963			if ('required' in $$props) $$invalidate(2, required = $$props.required);
54964			if ('disabled' in $$props) $$invalidate(3, disabled = $$props.disabled);
54965			if ('hasError' in $$props) $$invalidate(4, hasError = $$props.hasError);
54966			if ('isPaymentForm' in $$props) $$invalidate(5, isPaymentForm = $$props.isPaymentForm);
54967			if ('label' in $$props) $$invalidate(6, label = $$props.label);
54968			if ('value' in $$props) $$invalidate(10, value = $$props.value);
54969			if ('placeholder' in $$props) $$invalidate(11, placeholder = $$props.placeholder);
54970			if ('checked' in $$props) $$invalidate(7, checked = $$props.checked);
54971			if ('pattern' in $$props) $$invalidate(12, pattern = $$props.pattern);
54972		};
54973
54974		return [
54975			id,
54976			name,
54977			required,
54978			disabled,
54979			hasError,
54980			isPaymentForm,
54981			label,
54982			checked,
54983			conditionalProps,
54984			handleInputChange,
54985			value,
54986			placeholder,
54987			pattern
54988		];
54989	}
54990
54991	class Checkbox extends SvelteComponent {
54992		constructor(options) {
54993			super();
54994
54995			init(this, options, instance$R, create_fragment$S, safe_not_equal, {
54996				id: 0,
54997				name: 1,
54998				required: 2,
54999				disabled: 3,
55000				hasError: 4,
55001				isPaymentForm: 5,
55002				label: 6,
55003				value: 10,
55004				placeholder: 11,
55005				checked: 7,
55006				pattern: 12
55007			});
55008		}
55009	}
55010
55011	/* src/components/elements/payment/PaymentAutoRenewToggle.svelte generated by Svelte v4.2.12 */
55012
55013	function create_if_block$C(ctx) {
55014		let div;
55015		let checkbox;
55016		let current;
55017
55018		checkbox = new Checkbox({
55019				props: {
55020					id: "payment-auto-renew-toggle-" + /*paymentOption*/ ctx[0].productId + "-" + /*paymentOption*/ ctx[0].slug,
55021					name: "payment-auto-renew-toggle",
55022					label: /*toggleLabel*/ ctx[3],
55023					value: "true",
55024					checked: /*checked*/ ctx[1],
55025					disabled: /*disabled*/ ctx[2],
55026					required: false
55027				}
55028			});
55029
55030		checkbox.$on("change", /*handleChange*/ ctx[5]);
55031
55032		return {
55033			c() {
55034				div = element("div");
55035				create_component(checkbox.$$.fragment);
55036				attr(div, "class", "zephr-form-payment-auto-renew-toggle svelte-1yfwddr");
55037			},
55038			m(target, anchor) {
55039				insert(target, div, anchor);
55040				mount_component(checkbox, div, null);
55041				current = true;
55042			},
55043			p(ctx, dirty) {
55044				const checkbox_changes = {};
55045				if (dirty & /*paymentOption*/ 1) checkbox_changes.id = "payment-auto-renew-toggle-" + /*paymentOption*/ ctx[0].productId + "-" + /*paymentOption*/ ctx[0].slug;
55046				if (dirty & /*toggleLabel*/ 8) checkbox_changes.label = /*toggleLabel*/ ctx[3];
55047				if (dirty & /*checked*/ 2) checkbox_changes.checked = /*checked*/ ctx[1];
55048				if (dirty & /*disabled*/ 4) checkbox_changes.disabled = /*disabled*/ ctx[2];
55049				checkbox.$set(checkbox_changes);
55050			},
55051			i(local) {
55052				if (current) return;
55053				transition_in(checkbox.$$.fragment, local);
55054				current = true;
55055			},
55056			o(local) {
55057				transition_out(checkbox.$$.fragment, local);
55058				current = false;
55059			},
55060			d(detaching) {
55061				if (detaching) {
55062					detach(div);
55063				}
55064
55065				destroy_component(checkbox);
55066			}
55067		};
55068	}
55069
55070	function create_fragment$R(ctx) {
55071		let if_block_anchor;
55072		let current;
55073		let if_block = /*shouldShow*/ ctx[4] && create_if_block$C(ctx);
55074
55075		return {
55076			c() {
55077				if (if_block) if_block.c();
55078				if_block_anchor = empty();
55079			},
55080			m(target, anchor) {
55081				if (if_block) if_block.m(target, anchor);
55082				insert(target, if_block_anchor, anchor);
55083				current = true;
55084			},
55085			p(ctx, [dirty]) {
55086				if (/*shouldShow*/ ctx[4]) {
55087					if (if_block) {
55088						if_block.p(ctx, dirty);
55089
55090						if (dirty & /*shouldShow*/ 16) {
55091							transition_in(if_block, 1);
55092						}
55093					} else {
55094						if_block = create_if_block$C(ctx);
55095						if_block.c();
55096						transition_in(if_block, 1);
55097						if_block.m(if_block_anchor.parentNode, if_block_anchor);
55098					}
55099				} else if (if_block) {
55100					group_outros();
55101
55102					transition_out(if_block, 1, 1, () => {
55103						if_block = null;
55104					});
55105
55106					check_outros();
55107				}
55108			},
55109			i(local) {
55110				if (current) return;
55111				transition_in(if_block);
55112				current = true;
55113			},
55114			o(local) {
55115				transition_out(if_block);
55116				current = false;
55117			},
55118			d(detaching) {
55119				if (detaching) {
55120					detach(if_block_anchor);
55121				}
55122
55123				if (if_block) if_block.d(detaching);
55124			}
55125		};
55126	}
55127
55128	function instance$Q($$self, $$props, $$invalidate) {
55129		let shouldShow;
55130		let toggleLabel;
55131		let { paymentOption } = $$props;
55132		let { checked = false } = $$props;
55133		let { disabled = false } = $$props;
55134		let { onChange } = $$props;
55135
55136		const handleChange = event => {
55137			const isChecked = event.detail;
55138			onChange(isChecked);
55139		};
55140
55141		$$self.$$set = $$props => {
55142			if ('paymentOption' in $$props) $$invalidate(0, paymentOption = $$props.paymentOption);
55143			if ('checked' in $$props) $$invalidate(1, checked = $$props.checked);
55144			if ('disabled' in $$props) $$invalidate(2, disabled = $$props.disabled);
55145			if ('onChange' in $$props) $$invalidate(6, onChange = $$props.onChange);
55146		};
55147
55148		$$self.$$.update = () => {
55149			if ($$self.$$.dirty & /*paymentOption*/ 1) {
55150				// Only show if the payment option is configured for custom toggle
55151				$$invalidate(4, shouldShow = paymentOption?.autoRenewConfig === 'custom_toggle' && paymentOption.type !== 'ONE_OFF');
55152			}
55153
55154			if ($$self.$$.dirty & /*paymentOption*/ 1) {
55155				$$invalidate(3, toggleLabel = paymentOption?.autoRenewToggleLabel || 'Auto-renew subscription');
55156			}
55157		};
55158
55159		return [
55160			paymentOption,
55161			checked,
55162			disabled,
55163			toggleLabel,
55164			shouldShow,
55165			handleChange,
55166			onChange
55167		];
55168	}
55169
55170	class PaymentAutoRenewToggle extends SvelteComponent {
55171		constructor(options) {
55172			super();
55173
55174			init(this, options, instance$Q, create_fragment$R, safe_not_equal, {
55175				paymentOption: 0,
55176				checked: 1,
55177				disabled: 2,
55178				onChange: 6
55179			});
55180		}
55181	}
55182
55183	const paymentAutoRenewToggleFactory = {
55184	    matches: (sectionElement) => sectionElement.type === elementTypes.PAYMENT_AUTO_RENEW_TOGGLE,
55185	    create: (form, formState, formActions) => {
55186	        // Only show for Zuora billing payment forms
55187	        if (form.organisationConfiguration.paymentProvider !== 'zuora-billing') {
55188	            return null;
55189	        }
55190	        // Only show if there's a selected payment option
55191	        if (!formState.paymentOption) {
55192	            return null;
55193	        }
55194	        // Only show if the payment option is configured for custom toggle
55195	        if (formState.paymentOption.autoRenewConfig !== 'custom_toggle') {
55196	            return null;
55197	        }
55198	        // Don't show for one-off purchases
55199	        if (formState.paymentOption.type === 'ONE_OFF') {
55200	            return null;
55201	        }
55202	        const paymentOptionKey = `${formState.paymentOption.productId}-${formState.paymentOption.slug}`;
55203	        const handleToggleChange = (isChecked) => {
55204	            // Update the payment option specific autoRenew state
55205	            const updatedAutoRenewState = {
55206	                ...formState.paymentOptionAutoRenew,
55207	                [paymentOptionKey]: isChecked
55208	            };
55209	            formActions.updateFormState({
55210	                paymentOptionAutoRenew: updatedAutoRenewState
55211	            });
55212	            logDataLayerEvent(form, 'zephr_form_input_change', {
55213	                field: 'payment-auto-renew-toggle',
55214	                inputName: `payment-auto-renew-toggle-${formState.paymentOption.productId}-${formState.paymentOption.slug}`,
55215	                sectionId: formState.currentSection.type,
55216	            });
55217	        };
55218	        // Get the current checked state for this payment option
55219	        // State is now properly initialized when payment option is selected
55220	        const checkedState = formState.paymentOptionAutoRenew?.[paymentOptionKey] ?? false;
55221	        return {
55222	            component: PaymentAutoRenewToggle,
55223	            props: {
55224	                paymentOption: formState.paymentOption,
55225	                checked: checkedState,
55226	                disabled: formState.isBusy || formState.paymentProviderFormBusy || false,
55227	                onChange: handleToggleChange,
55228	            },
55229	            isValid: true,
55230	        };
55231	    },
55232	};
55233
55234	var checkMarkImageBase64 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGEAAABiCAYAAABAkr0NAAAJa0lEQVR4Xu2dT28TRxTA39oGUsHBiC/giKT/LiRHpBYIUPWQEmfVD9BwrQoJpZW4JbkhtRUO9E74AO3GQTkVCLSVOGIurVRCky/QkgNIodjezoxjsrZ3Zt7Mzu7OOraEkOLZ9Zv3m3lv/rx540BWPtc2S1Cvl6DplJjITb/1f/CTc7bAgW1w/G0oFLbg+vBWFqrnWCfkwmYRXtbH4HVuDPJwwp24MBNFRu9BtUbAERjOIzjUrMH3ow+jvC+OZ+2AQFv5q+Y0gF92z0+diaOiwXd691YJCKcKh3MrNvSW9CDQFv9Pk7TyZBTPA8t6iuMswVD+YVpAkofwzbMzUPdn3InpL+Ju8arv99bvLsNQbjFpGMlBoMp/7cwnYW5Uld9dnpmrQ/5iUv4jfgjfbo7BTuOGKeUzBeWpow35NPwi+WsRcn7RPVseiwwjoZ4RHwRq87fr8+5EeU5HGS1lw1PIE1t9AGpaJoI2gCaUoEFGWw3ntG5D8NarFRgqLGnJgKh8PBCI6XE/Lq8jfr+jiLe+ugQFfwWOFGqwMLyt+jyqfASfROS7CJWRZdTvKBQyC0Gj9Sdtfzt0c3VzGhpvplUGCaxXFAuLJhuJOQhkrO+enNzENgBSmUVSmYrJymB/u6fctT9LsJNfUILxeG3YlHkyA+HqxrR7asrDKMEq5XcLrAjD+3XVhR9GVjD1FpWJDuHy83n33IUFmSDM7Bx+cxGufxA+spG9IMnvFWB49+8uwM3ji1HEiwYBC8BQi4lSUa1nv96YcU9P3ZY9GxWEPgQEANb6j+VdK+y+TJO875G9IgoIPQgoAHevwK3jFd26W/fc3DPiuMvzIrl0Qah
55234DwAD4rTqR1JQ/UViI+Y8OCDUIlzdn3XOTwtbtPf6JDN0y4Hx16RHz5J78XDgU9+79TKzA+2grgIdAlgDcjyafCLtjvwNoVx4D4ve1cfhuuIZhjYOAmIj1fQ8ImVNIewRyQoeDcGljXbT4te8AIHsEGx3eGpmQ9QY5BIkj9hS6nUyYTH4vMdMY/yCGIDFD3r0+G4bqtgLJpM6TmCUxhNlnT3ibI2wNqDIqXa7QrVfmnpt7XiGRIbNhcsvMEh+CjG75D7kpy5wmIwhMl/Ff1Nf5jZa/F8FVpFv90OeJtG8dsYyRzD88WTsatoQTDkHgjAdmSEJCsLzB010vBJkzHpghMQViltzxyRdcKxLSG3ohCHxBXHussl6eue/Jtql7ajJ0kyusN/RAEPqCQS/AtwfBBNfr0mMnhEEvwCtZVlKw4ur9QrZFf9zbFu2EoEBPJsPge6IBjj675w17EAQOeeALNJvUpedz7vkLN0IncAEHvQdB9MB+8AU0PH+IHDAxGXQmGCkFHfQehNm/yRLFZz3xmyxSuXL8omZbsP+xrgmWzs6YsJKc5YygSWpBEJmift2qpPXmzHCNml+Rg941SS0IolFRv5oiwRKDd9+rws33yMkhMx/esL8NuwVh7q/lsBDAvjVFsjUewxBk+m1B4PqDeKKQzbQvzbdg9spNb1RJLI0DIg/ebxv3GADrayT8fXhZE3H4Y4LAAI/4BQdEjqOf/EFaAHaxcP0CGfg4wJkfyHaDjLaUuF+WMgBWvcsbK+65qXJ3VekWsQO8cSw9NVMZ0TrqFLdOld5vAwA2+Anf/qSnkxwRoczHktoCgELgWRwyEiPmKDymyMv6JM0mABTCV2SP4ZPePQbvwUrNETmMzAb12gaAQviShJF+Gh5GyocQ1/A0EFTMUhq8U3BNnf1ivsJGAFQuwTA1WQicSYssOArtiG0FYBUEzjCNyhgZhM0AsgIhEgjbAVgFAXPSBRlO/tZEZQGAVRDYpAVx9gsLIisAtCGYXkkMelcTILIEgNZdYAUc7jJ2V1gGeoSCLRgFRNYACCDQNbp0ly10QGQRgHTZIu0FPBUQWQUgXcATLCyZ3GcVWikMCJKaQZbExItjQwZrXmXluIFgdCnblk0dBAhRPa0GQAQXb+rYtL2pCcJ2AMKQIra9KaIUU7qxqKYp+Lz1AKiwvDUzsowNS++O2xnyguwRmQDAnLI4pMje4C8JiMwAQFiaFgSRX0hzh40DIksAhAOf3T2bQFQ2Z5sz7Q3/LhCZAiAyRbv+gBbZgyA6dcg5+ikbGhv7np4R3iGZf02HrhsTkP8i7tA0kA1hD4LIJA3SJ+jhEoU/BraPUcel+ioQTE+dWk/xe0Fn9pdOCJywDCpB5kNgtNQY4SGFQ5joI7SD3qAGROUocu9hcpGDzmp+UzX9RS+t0As6R0ftn9ZICxBd6v56g2pylvAEIxpJMvpLjRFqo5GcJRyCrDfEuf8cof6pP6qZnEUr6RQLXzxamDB65jd1DUYXQGiGBCvS4uxdojQL9DKHyuiV6KL3yRtEZog22qXRcV5NxRAkSVi9+6szcHPkTp+oUb8akszJskxpYghULEG6BTaJ2+/+QXYcF5GwUQ6BgZAlpzV3tYl+c0zhSZkjNpacltYNkxsaG7qYgq5i+UmDqatxPYHWAhPzs19AYAAomGk8BIR/YD6i30FgACgu/atBoFpGbML37YorJrQf4Yi7zaM6BCwIA7cuxWLLdV+KucBDAwAVRw8CFkRCF4jq6hX1HLs3uuHJ7u2MkrRXHwISBPMTaQSRoTQsKYS8xC8KgGg9oS0/wke0QKRz4bQWC3ZdfeO2rPW36hU9e360ntCuoSAjbrcSrIZBTc+/TXJ5k/wGRQbA0CaXGQhUIsSELgjEKhiKym8Nxc3domUOApWMXQXcJJfChV/mEGYaGIy8XzVxkaiy6dG4sp7dGV3ML5hcxjcLoa0F5J2Voaaq0LwTW04N2kheklvK6w65g3kq9NYPEci45j/xQNg1T7BzcE6lV3SYK3Y9vP8I8k4Ncvkt7J1lHUqkDvZNg1wND2fIvxMYRxveW823/uDvxAeh/SvIC0QxpoTt6DUdem38NoETfn18wy/pKrunZ9KGMJS/otUAMBXaLRM/hLYwGvZXoR5GiyZ9ZX1yEGLoGUY1T0c8dJAQp0/iCJw8hCCM/w4QW+3P8m5kMq3kUHtPTQ44VTiWWzY54lGRPT0IQSmp33h1kKRF9sum7LlwlNNW/OHcitGEVyqaD5S1A0K38Mx/5EgGe/805IijPVvuyWavUl9mZhrwFA41a3CkUEurxfNkthNCmLR0uFmvl8AvFMFvFKHpl3qK5Zwt9recvwWFwpYNrRzTWP4HK7laSxb9gaIAAAAASUVORK5CYII=";
55235
55236	/* src/components/elements/successMessage/SuccessMessage.svelte generated by Svelte v4.2.12 */
55237
55238	function create_fragment$Q(ctx) {
55239		let div1;
55240		let img;
55241		let img_src_value;
55242		let t0;
55243		let div0;
55244		let t1;
55245
55246		return {
55247			c() {
55248				div1 = element("div");
55249				img = element("img");
55250				t0 = space();
55251				div0 = element("div");
55252				t1 = text(/*text*/ ctx[0]);
55253				attr(img, "class", "check-image svelte-w5z6iw");
55254				if (!src_url_equal(img.src, img_src_value = checkMarkImageBase64)) attr(img, "src", img_src_value);
55255				attr(img, "alt", "Success indicator");
55256				attr(div0, "class", "zephr-form-success-message svelte-w5z6iw");
55257				toggle_class(div0, "zephr-payment-form-success-message", /*isPaymentForm*/ ctx[1]);
55258			},
55259			m(target, anchor) {
55260				insert(target, div1, anchor);
55261				append(div1, img);
55262				append(div1, t0);
55263				append(div1, div0);
55264				append(div0, t1);
55265			},
55266			p(ctx, [dirty]) {
55267				if (dirty & /*text*/ 1) set_data(t1, /*text*/ ctx[0]);
55268
55269				if (dirty & /*isPaymentForm*/ 2) {
55270					toggle_class(div0, "zephr-payment-form-success-message", /*isPaymentForm*/ ctx[1]);
55271				}
55272			},
55273			i: noop,
55274			o: noop,
55275			d(detaching) {
55276				if (detaching) {
55277					detach(div1);
55278				}
55279			}
55280		};
55281	}
55282
55283	function instance$P($$self, $$props, $$invalidate) {
55284		let { text } = $$props;
55285		let { isPaymentForm = false } = $$props;
55286
55287		$$self.$$set = $$props => {
55288			if ('text' in $$props) $$invalidate(0, text = $$props.text);
55289			if ('isPaymentForm' in $$props) $$invalidate(1, isPaymentForm = $$props.isPaymentForm);
55290		};
55291
55292		return [text, isPaymentForm];
55293	}
55294
55295	class SuccessMessage extends SvelteComponent {
55296		constructor(options) {
55297			super();
55298			init(this, options, instance$P, create_fragment$Q, safe_not_equal, { text: 0, isPaymentForm: 1 });
55299		}
55300	}
55301
55302	const factory$m = {
55303	    matches: (sectionElement) => sectionElement.type === elementTypes.SUCCESS_MESSAGE,
55304	    create: (form, formState, formActions, elementConfig) => ({
55305	        component: SuccessMessage,
55306	        props: {
55307	            text: elementConfig?.text,
55308	            isPaymentForm: form.formType === FormType.PAYMENT,
55309	        }
55310	    })
55311	};
55312
55313	const createTokenExchangePayload = (action, emailAddress) => {
55314	    return {
55315	        identifiers: {
55316	            email_address: emailAddress,
55317	        },
55318	        delivery: {
55319	            method: 'email',
55320	            destination: emailAddress,
55321	            action,
55322	            redirect: window.location.href.replace(window.location.origin, ''),
55323	        },
55324	    };
55325	};
55326	const sendLink = async (form, action, emailAddress, formActions) => {
55327	    try {
55328	        const response = await request('blaize/token-exchange', {
55329	            method: 'POST',
55330	            bodyObject: createTokenExchangePayload(action, emailAddress),
55331	        }, formActions);
55332	        if (!response.ok) {
55333	            formActions.updateFormState({
55334	                serverErrors: [ServerError.UNKNOWN],
55335	            });
55336	            logDataLayerEvent(form, 'zephr_form_error', {
55337	                error: ServerError[ServerError.UNKNOWN],
55338	            });
55339	        }
55340	    }
55341	    catch (err) {
55342	        formActions.updateFormState({
55343	            serverErrors: [ServerError.UNKNOWN],
55344	        });
55345	        logDataLayerEvent(form, 'zephr_form_error', {
55346	            error: ServerError[ServerError.UNKNOWN],
55347	        });
55348	    }
55349	};
55350
55351	const getFormIsPasswordless = (form) => {
55352	    return (form.formType === FormType.REGISTRATION &&
55353	        formConfigAs(form).usePassword === false &&
55354	        form.organisationConfiguration.requireEmailVerfication === true &&
55355	        formConfigAs(form).useVerificationCodes === false);
55356	};
55357
55358	const onEmailEntered = async (form, formState, formActions) => {
55359	    return getUserInfo(formState, formActions)
55360	        .then(async (response) => {
55361	        if (response.redirected) {
55362	            window.location.replace(response.url);
55363	            return;
55364	        }
55365	        else {
55366	            const existsInAnyState = response.status === 200;
55367	            const formCanOtp = form.parts.flatMap(p => p.sections)
55368	                .some(s => s.type === sectionTypes.VERIFICATION_CODE_REGISTRATION.type);
55369	            const isContact = existsInAnyState ? ((await response.json()).contact) && formCanOtp : false;
55370	            const exists = existsInAnyState && !isContact;
55371	            formActions.updateFormState({
55372	                userExists: exists,
55373	                emailIsContact: isContact,
55374	            });
55375	            const isPasswordless = getFormIsPasswordless(form);
55376	            if (isPasswordless) {
55377	                if (exists) {
55378	                    void sendLink(form, 'login', formState.emailAddress, formActions);
55379	                    return jumpToSection(sectionTypes.PASSWORDLESS_VIA_LOGIN_LINK.type, form, formActions);
55380	                }
55381	                else {
55382	                    return moveToNextSection(form, formState, formActions);
55383	                }
55384	            }
55385	            if (isContact
55386	                || formConfigAs(form).useVerificationCodes
55387	                || form.organisationConfiguration.twoFactorEmailAuthenticationEnabled) {
55388	                void send2FaCode(form, formState, formActions);
55389	                return jumpToSection(exists ?
55390	                    sectionTypes.VERIFICATION_CODE_LOGIN.type : sectionTypes.VERIFICATION_CODE_REGISTRATION.type, form, formActions);
55391	            }
55392	            return jumpToSection(exists ?
55393	                sectionTypes.LOGIN_PASSWORD.type : sectionTypes.PASSWORD_SETUP.type, form, formActions);
55394	        }
55395	    });
55396	};
55397	const twoFactorPayload = (formState) => ({
55398	    identifiers: {
55399	        email_address: formState.emailAddress
55400	    },
55401	    delivery: {
55402	        method: "email",
55403	        destination: formState.emailAddress,
55404	        action: formState.userExists ? "login" : "register",
55405	        redirect: window.location.href.replace(window.location.origin, ""),
55406	    }
55407	});
55408	const send2FaCode = async (form, formState, formActions) => {
55409	    formActions.updateFormState({
55410	        verificationCode: "",
55411	        verificationCodeValid: undefined
55412	    });
55413	    const response = await request('blaize/two-factor-authentication', {
55414	        method: "POST",
55415	        bodyObject: twoFactorPayload(formState)
55416	    }, formActions);
55417	    if (!response.ok) {
55418	        formActions.updateFormState({
55419	            serverErrors: [ServerError.VERIFICATION_CODE_SEND_ERROR]
55420	        });
55421	        logDataLayerEvent(form, 'zephr_form_error', {
55422	            error: ServerError[ServerError.MOBILE_PAYMENT_PROCESSING_ERROR],
55423	        });
55424	    }
55425	    return response.ok;
55426	};
55427	const getUserInfo = async (formState, formActions) => {
55428	    formActions.updateFormState({
55429	        password: "",
55430	        verificationCode: undefined,
55431	        verificationCodeValid: undefined,
55432	        forgotPassword: false
55433	    });
55434	    return await request('zephr/media/user/info', {
55435	        method: "POST",
55436	        bodyObject: { identifiers: { email_address: formState.emailAddress } }
55437	    }, formActions);
55438	};
55439
55440	const verifyOtp = async (form, formState, formActions) => {
55441	    const response = await request('zephr/media/user/otp-check', {
55442	        method: "POST",
55443	        bodyObject: {
55444	            code: formState.verificationCode,
55445	            email: formState.emailAddress
55446	        }
55447	    }, formActions);
55448	    if (!response.ok) {
55449	        formActions.updateFormState({
55450	            verificationCodeValid: false,
55451	            serverErrors: [ServerError.VERIFICATION_CODE_INCORRECT]
55452	        });
55453	        logDataLayerEvent(form, 'zephr_form_error', {
55454	            error: ServerError[ServerError.VERIFICATION_CODE_INCORRECT],
55455	        });
55456	        return;
55457	    }
55458	    formActions.updateFormState({
55459	        verificationCodeValid: false,
55460	        serverErrors: []
55461	    });
55462	    formActions.completeSection();
55463	};
55464
55465	const postVerificationCodeDelaySeconds = 1.5;
55466	const waitAfterCode = async (form) => await new Promise(r => setTimeout(r, form.environment.reduceDelays ? 1 : (postVerificationCodeDelaySeconds * 1000)));
55467
55468	const verifiyPasswordResetCode = async (form, formState, formActions) => {
55469	    formActions.incrementRequestCount();
55470	    formActions.updateFormState({
55471	        verificationCodeValid: undefined
55472	    });
55473	    const response = await request(`zephr/users/reset/${formState.verificationCode}`, {
55474	        method: "POST",
55475	        bodyObject: {
55476	            identifiers: {
55477	                email_address: formState.emailAddress,
55478	            },
55479	        }
55480	    }, formActions);
55481	    logDataLayerEvent(form, 'zephr_form_password_reset_code_validate', {
55482	        success: response?.ok
55483	    });
55484	    if (!response.ok) {
55485	        formActions.updateFormState({
55486	            serverErrors: [ServerError.VERIFICATION_CODE_INCORRECT]
55487	        });
55488	        logDataLayerEvent(form, 'zephr_form_error', {
55489	            error: ServerError[ServerError.VERIFICATION_CODE_INCORRECT],
55490	        });
55491	        formActions.decrementRequestCount();
55492	        return Promise.resolve();
55493	    }
55494	    return waitAfterCode(form)
55495	        .then(() => {
55496	        formActions.decrementRequestCount();
55497	        formActions.jumpToSection(sectionTypes.PASSWORD_RESET.type);
55498	    });
55499	};
55500	const sendPasswordResetCode = async (form, formState, formActions) => {
55501	    formActions.updateFormState({
55502	        createPassword: "",
55503	        confirmCreatePassword: "",
55504	        forgotPassword: true,
55505	        verificationCode: "",
55506	    });
55507	    formActions.incrementRequestCount();
55508	    const response = await request('zephr/users/reset', {
55509	        method: "POST",
55510	        bodyObject: {
55511	            identifiers: {
55512	                email_address: formState.emailAddress,
55513	            },
55514	        }
55515	    }, formActions);
55516	    logDataLayerEvent(form, 'zephr_form_password_reset_code_sent', {
55517	        success: response?.ok
55518	    });
55519	    if (!response.ok) {
55520	        formActions.updateFormState({
55521	            serverErrors: [ServerError.PASSWORD_RESET_LINK_SEND_ERROR]
55522	        });
55523	        formActions.decrementRequestCount();
55524	        logDataLayerEvent(form, 'zephr_form_error', {
55525	            error: ServerError[ServerError.PASSWORD_RESET_LINK_SEND_ERROR],
55526	        });
55527	        return Promise.resolve();
55528	    }
55529	    return waitAfterCode(form)
55530	        .then(() => {
55531	        formActions.decrementRequestCount();
55532	        formActions.jumpToSection(sectionTypes.FORGOT_PASSWORD.type);
55533	    });
55534	};
55535	const resetPassword = async (form, formState, formActions) => {
55536	    const response = await request(`zephr/users/reset/${formState.verificationCode}`, {
55537	        method: "POST",
55538	        bodyObject: {
55539	            identifiers: {
55540	                email_address: formState.emailAddress,
55541	            },
55542	            validators: {
55543	                password: formState.createPassword
55544	            }
55545	        }
55546	    }, formActions);
55547	    logDataLayerEvent(form, 'zephr_form_password_reset', {
55548	        success: response?.ok
55549	    });
55550	    if (!response.ok) {
55551	        formActions.updateFormState({
55552	            serverErrors: [ServerError.PASSWORD_RESET_ERROR]
55553	        });
55554	        logDataLayerEvent(form, 'zephr_form_error', {
55555	            error: ServerError[ServerError.MOBILE_PAYMENT_PROCESSING_ERROR],
55556	        });
55557	        return Promise.resolve();
55558	    }
55559	    formActions.updateFormState({
55560	        verificationCode: "",
55561	        forgotPassword: false
55562	    });
55563	    return formActions.jumpToPartStart(partTypes.ACCOUNT_VERIFICATION.type);
55564	};
55565
55566	/* src/components/elements/verificationCode/VerificationCode.svelte generated by Svelte v4.2.12 */
55567
55568	function create_if_block_2$h(ctx) {
55569		let if_block_anchor;
55570
55571		function select_block_type(ctx, dirty) {
55572			if (/*showMessage*/ ctx[14] && !/*error*/ ctx[5]) return create_if_block_3$c;
55573			return create_else_block$9;
55574		}
55575
55576		let current_block_type = select_block_type(ctx);
55577		let if_block = current_block_type(ctx);
55578
55579		return {
55580			c() {
55581				if_block.c();
55582				if_block_anchor = empty();
55583			},
55584			m(target, anchor) {
55585				if_block.m(target, anchor);
55586				insert(target, if_block_anchor, anchor);
55587			},
55588			p(ctx, dirty) {
55589				if (current_block_type === (current_block_type = select_block_type(ctx)) && if_block) {
55590					if_block.p(ctx, dirty);
55591				} else {
55592					if_block.d(1);
55593					if_block = current_block_type(ctx);
55594
55595					if (if_block) {
55596						if_block.c();
55597						if_block.m(if_block_anchor.parentNode, if_block_anchor);
55598					}
55599				}
55600			},
55601			d(detaching) {
55602				if (detaching) {
55603					detach(if_block_anchor);
55604				}
55605
55606				if_block.d(detaching);
55607			}
55608		};
55609	}
55610
55611	// (53:6) {:else}
55612	function create_else_block$9(ctx) {
55613		let button;
55614		let t;
55615		let mounted;
55616		let dispose;
55617
55618		return {
55619			c() {
55620				button = element("button");
55621				t = text(/*resendText*/ ctx[3]);
55622				attr(button, "class", "zephr-form-verification-resend-link svelte-1yj9ceh");
55623				toggle_class(button, "zephr-payment-form-verification-resend-link", /*isPaymentForm*/ ctx[9]);
55624			},
55625			m(target, anchor) {
55626				insert(target, button, anchor);
55627				append(button, t);
55628
55629				if (!mounted) {
55630					dispose = listen(button, "click", /*click_handler*/ ctx[15]);
55631					mounted = true;
55632				}
55633			},
55634			p(ctx, dirty) {
55635				if (dirty & /*resendText*/ 8) set_data(t, /*resendText*/ ctx[3]);
55636
55637				if (dirty & /*isPaymentForm*/ 512) {
55638					toggle_class(button, "zephr-payment-form-verification-resend-link", /*isPaymentForm*/ ctx[9]);
55639				}
55640			},
55641			d(detaching) {
55642				if (detaching) {
55643					detach(button);
55644				}
55645
55646				mounted = false;
55647				dispose();
55648			}
55649		};
55650	}
55651
55652	// (46:6) {#if showMessage && !error}
55653	function create_if_block_3$c(ctx) {
55654		let div;
55655		let t;
55656
55657		return {
55658			c() {
55659				div = element("div");
55660				t = text(/*resendMessage*/ ctx[2]);
55661				attr(div, "class", "zephr-form-verification-resend-text svelte-1yj9ceh");
55662				toggle_class(div, "zephr-payment-form-verification-resend-text", /*isPaymentForm*/ ctx[9]);
55663			},
55664			m(target, anchor) {
55665				insert(target, div, anchor);
55666				append(div, t);
55667			},
55668			p(ctx, dirty) {
55669				if (dirty & /*resendMessage*/ 4) set_data(t, /*resendMessage*/ ctx[2]);
55670
55671				if (dirty & /*isPaymentForm*/ 512) {
55672					toggle_class(div, "zephr-payment-form-verification-resend-text", /*isPaymentForm*/ ctx[9]);
55673				}
55674			},
55675			d(detaching) {
55676				if (detaching) {
55677					detach(div);
55678				}
55679			}
55680		};
55681	}
55682
55683	// (32:2) <Input     id="zephr-form-verification-code"     value={code}     {placeholder}     maxlength={6}     hasError={error != null}     errorMessage={error}     {isPaymentForm}     {disabled}     on:change={({ detail }) => !disabled && onChange(detail)}     onFocus={onFocus}     onBlur={onBlur}   >
55684	function create_default_slot$6(ctx) {
55685		let if_block_anchor;
55686		let if_block = /*resendText*/ ctx[3] && create_if_block_2$h(ctx);
55687
55688		return {
55689			c() {
55690				if (if_block) if_block.c();
55691				if_block_anchor = empty();
55692			},
55693			m(target, anchor) {
55694				if (if_block) if_block.m(target, anchor);
55695				insert(target, if_block_anchor, anchor);
55696			},
55697			p(ctx, dirty) {
55698				if (/*resendText*/ ctx[3]) {
55699					if (if_block) {
55700						if_block.p(ctx, dirty);
55701					} else {
55702						if_block = create_if_block_2$h(ctx);
55703						if_block.c();
55704						if_block.m(if_block_anchor.parentNode, if_block_anchor);
55705					}
55706				} else if (if_block) {
55707					if_block.d(1);
55708					if_block = null;
55709				}
55710			},
55711			d(detaching) {
55712				if (detaching) {
55713					detach(if_block_anchor);
55714				}
55715
55716				if (if_block) if_block.d(detaching);
55717			}
55718		};
55719	}
55720
55721	// (74:4) {#if codeValid}
55722	function create_if_block_1$r(ctx) {
55723		let fa;
55724		let current;
55725		fa = new Fa({ props: { icon: faCheck } });
55726
55727		return {
55728			c() {
55729				create_component(fa.$$.fragment);
55730			},
55731			m(target, anchor) {
55732				mount_component(fa, target, anchor);
55733				current = true;
55734			},
55735			i(local) {
55736				if (current) return;
55737				transition_in(fa.$$.fragment, local);
55738				current = true;
55739			},
55740			o(local) {
55741				transition_out(fa.$$.fragment, local);
55742				current = false;
55743			},
55744			d(detaching) {
55745				destroy_component(fa, detaching);
55746			}
55747		};
55748	}
55749
55750	// (77:4) {#if code && !codeValid && formBusy}
55751	function create_if_block$B(ctx) {
55752		let fa;
55753		let current;
55754		fa = new Fa({ props: { icon: faSpinner, spin: true } });
55755
55756		return {
55757			c() {
55758				create_component(fa.$$.fragment);
55759			},
55760			m(target, anchor) {
55761				mount_component(fa, target, anchor);
55762				current = true;
55763			},
55764			i(local) {
55765				if (current) return;
55766				transition_in(fa.$$.fragment, local);
55767				current = true;
55768			},
55769			o(local) {
55770				transition_out(fa.$$.fragment, local);
55771				current = false;
55772			},
55773			d(detaching) {
55774				destroy_component(fa, detaching);
55775			}
55776		};
55777	}
55778
55779	function create_fragment$P(ctx) {
55780		let label_1;
55781		let t0;
55782		let div1;
55783		let input;
55784		let t1;
55785		let div0;
55786		let t2;
55787		let current;
55788
55789		label_1 = new Label({
55790				props: {
55791					forInput: "zephr-form-verification-code",
55792					label: /*label*/ ctx[0],
55793					isPaymentForm: /*isPaymentForm*/ ctx[9]
55794				}
55795			});
55796
55797		input = new Input({
55798				props: {
55799					id: "zephr-form-verification-code",
55800					value: /*code*/ ctx[8],
55801					placeholder: /*placeholder*/ ctx[1],
55802					maxlength: 6,
55803					hasError: /*error*/ ctx[5] != null,
55804					errorMessage: /*error*/ ctx[5],
55805					isPaymentForm: /*isPaymentForm*/ ctx[9],
55806					disabled: /*disabled*/ ctx[4],
55807					onFocus: /*onFocus*/ ctx[12],
55808					onBlur: /*onBlur*/ ctx[13],
55809					$$slots: { default: [create_default_slot$6] },
55810					$$scope: { ctx }
55811				}
55812			});
55813
55814		input.$on("change", /*change_handler*/ ctx[16]);
55815		let if_block0 = /*codeValid*/ ctx[6] && create_if_block_1$r();
55816		let if_block1 = /*code*/ ctx[8] && !/*codeValid*/ ctx[6] && /*formBusy*/ ctx[7] && create_if_block$B();
55817
55818		return {
55819			c() {
55820				create_component(label_1.$$.fragment);
55821				t0 = space();
55822				div1 = element("div");
55823				create_component(input.$$.fragment);
55824				t1 = space();
55825				div0 = element("div");
55826				if (if_block0) if_block0.c();
55827				t2 = space();
55828				if (if_block1) if_block1.c();
55829				attr(div0, "class", "zephr-form-input-inner-text");
55830				toggle_class(div0, "zephr-payment-form-input-inner-text", /*isPaymentForm*/ ctx[9]);
55831				attr(div1, "class", "zephr-form-relative-container zephr-form-verification-resend-link-container svelte-1yj9ceh");
55832				toggle_class(div1, "zephr-payment-form-relative-container", /*isPaymentForm*/ ctx[9]);
55833				toggle_class(div1, "zephr-payment-form-verification-resend-link-container", /*isPaymentForm*/ ctx[9]);
55834			},
55835			m(target, anchor) {
55836				mount_component(label_1, target, anchor);
55837				insert(target, t0, anchor);
55838				insert(target, div1, anchor);
55839				mount_component(input, div1, null);
55840				append(div1, t1);
55841				append(div1, div0);
55842				if (if_block0) if_block0.m(div0, null);
55843				append(div0, t2);
55844				if (if_block1) if_block1.m(div0, null);
55845				current = true;
55846			},
55847			p(ctx, [dirty]) {
55848				const label_1_changes = {};
55849				if (dirty & /*label*/ 1) label_1_changes.label = /*label*/ ctx[0];
55850				if (dirty & /*isPaymentForm*/ 512) label_1_changes.isPaymentForm = /*isPaymentForm*/ ctx[9];
55851				label_1.$set(label_1_changes);
55852				const input_changes = {};
55853				if (dirty & /*code*/ 256) input_changes.value = /*code*/ ctx[8];
55854				if (dirty & /*placeholder*/ 2) input_changes.placeholder = /*placeholder*/ ctx[1];
55855				if (dirty & /*error*/ 32) input_changes.hasError = /*error*/ ctx[5] != null;
55856				if (dirty & /*error*/ 32) input_changes.errorMessage = /*error*/ ctx[5];
55857				if (dirty & /*isPaymentForm*/ 512) input_changes.isPaymentForm = /*isPaymentForm*/ ctx[9];
55858				if (dirty & /*disabled*/ 16) input_changes.disabled = /*disabled*/ ctx[4];
55859				if (dirty & /*onFocus*/ 4096) input_changes.onFocus = /*onFocus*/ ctx[12];
55860				if (dirty & /*onBlur*/ 8192) input_changes.onBlur = /*onBlur*/ ctx[13];
55861
55862				if (dirty & /*$$scope, isPaymentForm, resendMessage, showMessage, error, onResendVerificationCode, resendText*/ 150060) {
55863					input_changes.$$scope = { dirty, ctx };
55864				}
55865
55866				input.$set(input_changes);
55867
55868				if (/*codeValid*/ ctx[6]) {
55869					if (if_block0) {
55870						if (dirty & /*codeValid*/ 64) {
55871							transition_in(if_block0, 1);
55872						}
55873					} else {
55874						if_block0 = create_if_block_1$r();
55875						if_block0.c();
55876						transition_in(if_block0, 1);
55877						if_block0.m(div0, t2);
55878					}
55879				} else if (if_block0) {
55880					group_outros();
55881
55882					transition_out(if_block0, 1, 1, () => {
55883						if_block0 = null;
55884					});
55885
55886					check_outros();
55887				}
55888
55889				if (/*code*/ ctx[8] && !/*codeValid*/ ctx[6] && /*formBusy*/ ctx[7]) {
55890					if (if_block1) {
55891						if (dirty & /*code, codeValid, formBusy*/ 448) {
55892							transition_in(if_block1, 1);
55893						}
55894					} else {
55895						if_block1 = create_if_block$B();
55896						if_block1.c();
55897						transition_in(if_block1, 1);
55898						if_block1.m(div0, null);
55899					}
55900				} else if (if_block1) {
55901					group_outros();
55902
55903					transition_out(if_block1, 1, 1, () => {
55904						if_block1 = null;
55905					});
55906
55907					check_outros();
55908				}
55909
55910				if (!current || dirty & /*isPaymentForm*/ 512) {
55911					toggle_class(div0, "zephr-payment-form-input-inner-text", /*isPaymentForm*/ ctx[9]);
55912				}
55913
55914				if (!current || dirty & /*isPaymentForm*/ 512) {
55915					toggle_class(div1, "zephr-payment-form-relative-container", /*isPaymentForm*/ ctx[9]);
55916				}
55917
55918				if (!current || dirty & /*isPaymentForm*/ 512) {
55919					toggle_class(div1, "zephr-payment-form-verification-resend-link-container", /*isPaymentForm*/ ctx[9]);
55920				}
55921			},
55922			i(local) {
55923				if (current) return;
55924				transition_in(label_1.$$.fragment, local);
55925				transition_in(input.$$.fragment, local);
55926				transition_in(if_block0);
55927				transition_in(if_block1);
55928				current = true;
55929			},
55930			o(local) {
55931				transition_out(label_1.$$.fragment, local);
55932				transition_out(input.$$.fragment, local);
55933				transition_out(if_block0);
55934				transition_out(if_block1);
55935				current = false;
55936			},
55937			d(detaching) {
55938				if (detaching) {
55939					detach(t0);
55940					detach(div1);
55941				}
55942
55943				destroy_component(label_1, detaching);
55944				destroy_component(input);
55945				if (if_block0) if_block0.d();
55946				if (if_block1) if_block1.d();
55947			}
55948		};
55949	}
55950
55951	function instance$O($$self, $$props, $$invalidate) {
55952		let { label } = $$props;
55953		let { placeholder } = $$props;
55954		let { resendMessage = null } = $$props;
55955		let { resendText = null } = $$props;
55956		let { disabled } = $$props;
55957		let { error = null } = $$props;
55958		let { codeValid } = $$props;
55959		let { formBusy } = $$props;
55960		let { code } = $$props;
55961		let { isPaymentForm = false } = $$props;
55962		let { onChange } = $$props;
55963		let { onResendVerificationCode } = $$props;
55964		let { onFocus } = $$props;
55965		let { onBlur } = $$props;
55966		let showMessage = false;
55967
55968		const click_handler = () => {
55969			if (resendMessage) {
55970				$$invalidate(14, showMessage = true);
55971				setTimeout(() =>
55971 $$invalidate(14, showMessage = false), 2000);
55972			}
55973
55974			onResendVerificationCode();
55975		};
55976
55977		const change_handler = ({ detail }) => !disabled && onChange(detail);
55978
55979		$$self.$$set = $$props => {
55980			if ('label' in $$props) $$invalidate(0, label = $$props.label);
55981			if ('placeholder' in $$props) $$invalidate(1, placeholder = $$props.placeholder);
55982			if ('resendMessage' in $$props) $$invalidate(2, resendMessage = $$props.resendMessage);
55983			if ('resendText' in $$props) $$invalidate(3, resendText = $$props.resendText);
55984			if ('disabled' in $$props) $$invalidate(4, disabled = $$props.disabled);
55985			if ('error' in $$props) $$invalidate(5, error = $$props.error);
55986			if ('codeValid' in $$props) $$invalidate(6, codeValid = $$props.codeValid);
55987			if ('formBusy' in $$props) $$invalidate(7, formBusy = $$props.formBusy);
55988			if ('code' in $$props) $$invalidate(8, code = $$props.code);
55989			if ('isPaymentForm' in $$props) $$invalidate(9, isPaymentForm = $$props.isPaymentForm);
55990			if ('onChange' in $$props) $$invalidate(10, onChange = $$props.onChange);
55991			if ('onResendVerificationCode' in $$props) $$invalidate(11, onResendVerificationCode = $$props.onResendVerificationCode);
55992			if ('onFocus' in $$props) $$invalidate(12, onFocus = $$props.onFocus);
55993			if ('onBlur' in $$props) $$invalidate(13, onBlur = $$props.onBlur);
55994		};
55995
55996		return [
55997			label,
55998			placeholder,
55999			resendMessage,
56000			resendText,
56001			disabled,
56002			error,
56003			codeValid,
56004			formBusy,
56005			code,
56006			isPaymentForm,
56007			onChange,
56008			onResendVerificationCode,
56009			onFocus,
56010			onBlur,
56011			showMessage,
56012			click_handler,
56013			change_handler
56014		];
56015	}
56016
56017	class VerificationCode extends SvelteComponent {
56018		constructor(options) {
56019			super();
56020
56021			init(this, options, instance$O, create_fragment$P, safe_not_equal, {
56022				label: 0,
56023				placeholder: 1,
56024				resendMessage: 2,
56025				resendText: 3,
56026				disabled: 4,
56027				error: 5,
56028				codeValid: 6,
56029				formBusy: 7,
56030				code: 8,
56031				isPaymentForm: 9,
56032				onChange: 10,
56033				onResendVerificationCode: 11,
56034				onFocus: 12,
56035				onBlur: 13
56036			});
56037		}
56038	}
56039
56040	const verificationCodeLength = 6;
56041	const isPossiblyValidCode = code => code?.length === verificationCodeLength;
56042	const checkUserAttributesValid = (formState) => {
56043	    return !formState.elementValidity
56044	        .filter((e) => e.partType === formState.currentPart.type &&
56045	        e.sectionType === formState.currentSection.type &&
56046	        e.sectionOrder === formState.currentSection.order &&
56047	        e.elementType === 'user_attribute')
56048	        .some((e) => !e.isValid);
56049	};
56050	const factory$l = {
56051	    matches: (sectionElement) => sectionElement.type === elementTypes.VERIFICATION_CODE,
56052	    create: (form, formState, formActions, elementConfig) => ({
56053	        component: VerificationCode,
56054	        props: {
56055	            code: formState.verificationCode,
56056	            label: elementConfig.label,
56057	            placeholder: elementConfig.placeholder,
56058	            resendMessage: elementConfig.message,
56059	            resendText: elementConfig.resendText,
56060	            disabled: formState.isBusy || formState.verificationCodeValid || !checkUserAttributesValid(formState),
56061	            codeValid: formState.verificationCodeValid,
56062	            formBusy: formState.isBusy,
56063	            isPaymentForm: form.formType === FormType.PAYMENT,
56064	            onResendVerificationCode: () => {
56065	                void (formState.currentSection.type === sectionTypes.FORGOT_PASSWORD.type ? sendPasswordResetCode : send2FaCode)(form, formState, formActions);
56066	            },
56067	            onChange: (value) => {
56068	                const updatedState = formActions.updateFormState({
56069	                    verificationCodeValid: undefined,
56070	                    verificationCode: value,
56071	                    serverErrors: []
56072	                });
56073	                const userAttributesValid = checkUserAttributesValid(formState);
56074	                formActions.updateFormState({
56075	                    showFieldErrors: !userAttributesValid
56076	                });
56077	                if (isPossiblyValidCode(value)) {
56078	                    if (elementConfig.verificationEvent) {
56079	                        formActions.onEvent(elementConfig.verificationEvent);
56080	                        return;
56081	                    }
56082	                    if (formState.currentSection.type === sectionTypes.FORGOT_PASSWORD.type) {
56083	                        formActions.completeSection();
56084	                    }
56085	                    else if (userAttributesValid) {
56086	                        void verifyOtp(form, updatedState, formActions);
56087	                    }
56088	                }
56089	                logDataLayerEvent(form, 'zephr_form_input_change', {
56090	                    inputName: 'zephr-form-verification-code',
56091	                    sectionId: formState.currentSection.type,
56092	                    field: 'verification-code'
56093	                });
56094	            },
56095	            onFocus: () => logDataLayerEvent(form, 'zephr_form_input_focus', {
56096	                inputName: 'zephr-form-verification-code',
56097	                sectionId: formState.currentSection.type,
56098	                field: 'verification-code'
56099	            }),
56100	            onBlur: () => logDataLayerEvent(form, 'zephr_form_input_blur', {
56101	                inputName: 'zephr-form-verification-code',
56102	                sectionId: formState.currentSection.type,
56103	                field: 'verification-code'
56104	            }),
56105	        },
56106	        isValid: isPossiblyValidCode(formState.verificationCode)
56107	    })
56108	};
56109
56110	/* src/components/elements/text/Text.svelte generated by Svelte v4.2.12 */
56111
56112	function create_fragment$O(ctx) {
56113		let div;
56114
56115		return {
56116			c() {
56117				div = element("div");
56118				attr(div, "class", "zephr-form-custom-text svelte-3sd7s2");
56119				set_style(div, "text-align", /*centerText*/ ctx[1] ? 'center' : 'initial');
56120				toggle_class(div, "zephr-payment-form-custom-text", /*isPaymentForm*/ ctx[2]);
56121			},
56122			m(target, anchor) {
56123				insert(target, div, anchor);
56124				div.innerHTML = /*text*/ ctx[0];
56125			},
56126			p(ctx, [dirty]) {
56127				if (dirty & /*text*/ 1) div.innerHTML = /*text*/ ctx[0];
56128				if (dirty & /*centerText*/ 2) {
56129					set_style(div, "text-align", /*centerText*/ ctx[1] ? 'center' : 'initial');
56130				}
56131
56132				if (dirty & /*isPaymentForm*/ 4) {
56133					toggle_class(div, "zephr-payment-form-custom-text", /*isPaymentForm*/ ctx[2]);
56134				}
56135			},
56136			i: noop,
56137			o: noop,
56138			d(detaching) {
56139				if (detaching) {
56140					detach(div);
56141				}
56142			}
56143		};
56144	}
56145
56146	function instance$N($$self, $$props, $$invalidate) {
56147		let { text } = $$props;
56148		let { centerText = false } = $$props;
56149		let { isPaymentForm = false } = $$props;
56150
56151		$$self.$$set = $$props => {
56152			if ('text' in $$props) $$invalidate(0, text = $$props.text);
56153			if ('centerText' in $$props) $$invalidate(1, centerText = $$props.centerText);
56154			if ('isPaymentForm' in $$props) $$invalidate(2, isPaymentForm = $$props.isPaymentForm);
56155		};
56156
56157		return [text, centerText, isPaymentForm];
56158	}
56159
56160	class Text extends SvelteComponent {
56161		constructor(options) {
56162			super();
56163			init(this, options, instance$N, create_fragment$O, safe_not_equal, { text: 0, centerText: 1, isPaymentForm: 2 });
56164		}
56165	}
56166
56167	const factory$k = {
56168	    matches: (sectionElement) => sectionElement.type === elementTypes.TEXT,
56169	    create: (form, formState, formActions, elementConfig) => ({
56170	        component: Text,
56171	        props: {
56172	            text: elementConfig.text,
56173	            centerText: elementConfig.centerText,
56174	            isPaymentForm: form.formType === FormType.PAYMENT,
56175	        }
56176	    })
56177	};
56178
56179	/* src/components/elements/Radio.svelte generated by Svelte v4.2.12 */
56180
56181	function create_fragment$N(ctx) {
56182		let input;
56183		let t0;
56184		let label_1;
56185		let span;
56186		let t1;
56187		let t2;
56188		let mounted;
56189		let dispose;
56190
56191		let input_levels = [
56192			{ id: /*id*/ ctx[0] },
56193			{ name: /*name*/ ctx[1] },
56194			{ required: /*required*/ ctx[2] },
56195			{ disabled: /*disabled*/ ctx[3] },
56196			/*conditionalProps*/ ctx[8],
56197			{ type: "radio" },
56198			{ class: "zephr-form-input-radio" }
56199		];
56200
56201		let input_data = {};
56202
56203		for (let i = 0; i < input_levels.length; i += 1) {
56204			input_data = assign(input_data, input_levels[i]);
56205		}
56206
56207		return {
56208			c() {
56209				input = element("input");
56210				t0 = space();
56211				label_1 = element("label");
56212				span = element("span");
56213				t1 = space();
56214				t2 = text(/*label*/ ctx[6]);
56215				set_attributes(input, input_data);
56216				toggle_class(input, "zephr-payment-form-input-radio", /*isPaymentForm*/ ctx[5]);
56217				toggle_class(input, "disabled", /*disabled*/ ctx[3]);
56218				toggle_class(input, "error", /*hasError*/ ctx[4]);
56219				toggle_class(input, "svelte-1cbmaif", true);
56220				attr(span, "class", "zephr-form-radio-dot svelte-1cbmaif");
56221				toggle_class(span, "zephr-payment-form-radio-dot", /*isPaymentForm*/ ctx[5]);
56222				toggle_class(span, "disabled", /*disabled*/ ctx[3]);
56223				toggle_class(span, "checked", /*checked*/ ctx[7]);
56224				toggle_class(span, "error", /*hasError*/ ctx[4]);
56225				attr(label_1, "for", /*id*/ ctx[0]);
56226				attr(label_1, "class", "zephr-form-radio-label svelte-1cbmaif");
56227				toggle_class(label_1, "zephr-payment-form-radio-label", /*isPaymentForm*/ ctx[5]);
56228			},
56229			m(target, anchor) {
56230				insert(target, input, anchor);
56231				if (input.autofocus) input.focus();
56232				insert(target, t0, anchor);
56233				insert(target, label_1, anchor);
56234				append(label_1, span);
56235				append(label_1, t1);
56236				append(label_1, t2);
56237
56238				if (!mounted) {
56239					dispose = listen(input, "input", /*handleInputChange*/ ctx[9]);
56240					mounted = true;
56241				}
56242			},
56243			p(ctx, [dirty]) {
56244				set_attributes(input, input_data = get_spread_update(input_levels, [
56245					dirty & /*id*/ 1 && { id: /*id*/ ctx[0] },
56246					dirty & /*name*/ 2 && { name: /*name*/ ctx[1] },
56247					dirty & /*required*/ 4 && { required: /*required*/ ctx[2] },
56248					dirty & /*disabled*/ 8 && { disabled: /*disabled*/ ctx[3] },
56249					dirty & /*conditionalProps*/ 256 && /*conditionalProps*/ ctx[8],
56250					{ type: "radio" },
56251					{ class: "zephr-form-input-radio" }
56252				]));
56253
56254				toggle_class(input, "zephr-payment-form-input-radio", /*isPaymentForm*/ ctx[5]);
56255				toggle_class(input, "disabled", /*disabled*/ ctx[3]);
56256				toggle_class(input, "error", /*hasError*/ ctx[4]);
56257				toggle_class(input, "svelte-1cbmaif", true);
56258
56259				if (dirty & /*isPaymentForm*/ 32) {
56260					toggle_class(span, "zephr-payment-form-radio-dot", /*isPaymentForm*/ ctx[5]);
56261				}
56262
56263				if (dirty & /*disabled*/ 8) {
56264					toggle_class(span, "disabled", /*disabled*/ ctx[3]);
56265				}
56266
56267				if (dirty & /*checked*/ 128) {
56268					toggle_class(span, "checked", /*checked*/ ctx[7]);
56269				}
56270
56271				if (dirty & /*hasError*/ 16) {
56272					toggle_class(span, "error", /*hasError*/ ctx[4]);
56273				}
56274
56275				if (dirty & /*label*/ 64) set_data(t2, /*label*/ ctx[6]);
56276
56277				if (dirty & /*id*/ 1) {
56278					attr(label_1, "for", /*id*/ ctx[0]);
56279				}
56280
56281				if (dirty & /*isPaymentForm*/ 32) {
56282					toggle_class(label_1, "zephr-payment-form-radio-label", /*isPaymentForm*/ ctx[5]);
56283				}
56284			},
56285			i: noop,
56286			o: noop,
56287			d(detaching) {
56288				if (detaching) {
56289					detach(input);
56290					detach(t0);
56291					detach(label_1);
56292				}
56293
56294				mounted = false;
56295				dispose();
56296			}
56297		};
56298	}
56299
56300	function instance$M($$self, $$props, $$invalidate) {
56301		const dispatch = createEventDispatcher();
56302		let { id } = $$props;
56303		let { name = id } = $$props;
56304		let { required = true } = $$props;
56305		let { disabled = false } = $$props;
56306		let { hasError = false } = $$props;
56307		let { isPaymentForm = false } = $$props;
56308		let { label = "" } = $$props;
56309		let { value } = $$props;
56310		let { placeholder = "" } = $$props;
56311		let { checked = false } = $$props;
56312		let { pattern = "" } = $$props;
56313		let conditionalProps = {};
56314		if (checked) conditionalProps.checked = checked;
56315		if (placeholder) conditionalProps.placeholder = placeholder;
56316		if (pattern) conditionalProps.pattern = pattern;
56317		if (value) conditionalProps.value = value;
56318
56319		const handleInputChange = e => {
56320			dispatch("change", e.target.value);
56321		};
56322
56323		$$self.$$set = $$props => {
56324			if ('id' in $$props) $$invalidate(0, id = $$props.id);
56325			if ('name' in $$props) $$invalidate(1, name = $$props.name);
56326			if ('required' in $$props) $$invalidate(2, required = $$props.required);
56327			if ('disabled' in $$props) $$invalidate(3, disabled = $$props.disabled);
56328			if ('hasError' in $$props) $$invalidate(4, hasError = $$props.hasError);
56329			if ('isPaymentForm' in $$props) $$invalidate(5, isPaymentForm = $$props.isPaymentForm);
56330			if ('label' in $$props) $$invalidate(6, label = $$props.label);
56331			if ('value' in $$props) $$invalidate(10, value = $$props.value);
56332			if ('placeholder' in $$props) $$invalidate(11, placeholder = $$props.placeholder);
56333			if ('checked' in $$props) $$invalidate(7, checked = $$props.checked);
56334			if ('pattern' in $$props) $$invalidate(12, pattern = $$props.pattern);
56335		};
56336
56337		return [
56338			id,
56339			name,
56340			required,
56341			disabled,
56342			hasError,
56343			isPaymentForm,
56344			label,
56345			checked,
56346			conditionalProps,
56347			handleInputChange,
56348			value,
56349			placeholder,
56350			pattern
56351		];
56352	}
56353
56354	class Radio extends SvelteComponent {
56355		constructor(options) {
56356			super();
56357
56358			init(this, options, instance$M, create_fragment$N, safe_not_equal, {
56359				id: 0,
56360				name: 1,
56361				required: 2,
56362				disabled: 3,
56363				hasError: 4,
56364				isPaymentForm: 5,
56365				label: 6,
56366				value: 10,
56367				placeholder: 11,
56368				checked: 7,
56369				pattern: 12
56370			});
56371		}
56372	}
56373
56374	/* src/components/elements/userAttribute/UserAttribute.svelte generated by Svelte v4.2.12 */
56375
56376	function get_each_context_1$4(ctx, list, i) {
56377		const child_ctx = ctx.slice();
56378		child_ctx[19] = list[i];
56379		return child_ctx;
56380	}
56381
56382	function get_each_context$e(ctx, list, i) {
56383		const child_ctx = ctx.slice();
56384		child_ctx[19] = list[i];
56385		return child_ctx;
56386	}
56387
56388	// (120:2) {:else}
56389	function create_else_block$8(ctx) {
56390		let input;
56391		let current;
56392
56393		input = new Input({
56394				props: {
56395					id: /*id*/ ctx[10],
56396					name: /*config*/ ctx[0].slug,
56397					required: /*config*/ ctx[0].required || /*attributeSchema*/ ctx[1]?.required,
56398					type: /*attributeSchema*/ ctx[1]?.["input-type"],
56399					value: /*value*/ ctx[2],
56400					checked: /*attributeSchema*/ ctx[1]?.["input-type"] === "checkbox" && /*value*/ ctx[2],
56401					pattern: /*attributeSchema*/ ctx[1]?.["validation-expression"],
56402					placeholder: /*config*/ ctx[0].placeholder,
56403					hasError: /*hasError*/ ctx[8],
56404					isPaymentForm: /*isPaymentForm*/ ctx[3],
56405					onFocus: /*onFocus*/ ctx[5],
56406					onBlur: /*onBlur*/ ctx[6]
56407				}
56408			});
56409
56410		input.$on("change", /*change_handler_4*/ ctx[18]);
56411
56412		return {
56413			c() {
56414				create_component(input.$$.fragment);
56415			},
56416			m(target, anchor) {
56417				mount_component(input, target, anchor);
56418				current = true;
56419			},
56420			p(ctx, dirty) {
56421				const input_changes = {};
56422				if (dirty & /*config*/ 1) input_changes.name = /*config*/ ctx[0].slug;
56423				if (dirty & /*config, attributeSchema*/ 3) input_changes.required = /*config*/ ctx[0].required || /*attributeSchema*/ ctx[1]?.required;
56424				if (dirty & /*attributeSchema*/ 2) input_changes.type = /*attributeSchema*/ ctx[1]?.["input-type"];
56425				if (dirty & /*value*/ 4) input_changes.value = /*value*/ ctx[2];
56426				if (dirty & /*attributeSchema, value*/ 6) input_changes.checked = /*attributeSchema*/ ctx[1]?.["input-type"] === "checkbox" && /*value*/ ctx[2];
56427				if (dirty & /*attributeSchema*/ 2) input_changes.pattern = /*attributeSchema*/ ctx[1]?.["validation-expression"];
56428				if (dirty & /*config*/ 1) input_changes.placeholder = /*config*/ ctx[0].placeholder;
56429				if (dirty & /*hasError*/ 256) input_changes.hasError = /*hasError*/ ctx[8];
56430				if (dirty & /*isPaymentForm*/ 8) input_changes.isPaymentForm = /*isPaymentForm*/ ctx[3];
56431				if (dirty & /*onFocus*/ 32) input_changes.onFocus = /*onFocus*/ ctx[5];
56432				if (dirty & /*onBlur*/ 64) input_changes.onBlur = /*onBlur*/ ctx[6];
56433				input.$set(input_changes);
56434			},
56435			i(local) {
56436				if (current) return;
56437				transition_in(input.$$.fragment, local);
56438				current = true;
56439			},
56440			o(local) {
56441				transition_out(input.$$.fragment, local);
56442				current = false;
56443			},
56444			d(detaching) {
56445				destroy_component(input, detaching);
56446			}
56447		};
56448	}
56449
56450	// (93:56) 
56451	function create_if_block_5$7(ctx) {
56452		let div;
56453		let input;
56454		let t;
56455		let current;
56456
56457		input = new Input({
56458				props: {
56459					id: /*id*/ ctx[10],
56460					required: /*config*/ ctx[0].required || /*attributeSchema*/ ctx[1]?.required,
56461					type: /*attributeSchema*/ ctx[1]["input-type"],
56462					value: /*value*/ ctx[2],
56463					min: /*attributeSchema*/ ctx[1]["range-start"],
56464					max: /*attributeSchema*/ ctx[1]["range-end"],
56465					step: /*attributeSchema*/ ctx[1]["range-start"],
56466					isPaymentForm: /*isPaymentForm*/ ctx[3],
56467					onFocus: /*onFocus*/ ctx[5],
56468					onBlur: /*onBlur*/ ctx[6]
56469				}
56470			});
56471
56472		input.$on("change", /*change_handler_3*/ ctx[17]);
56473		let if_block = /*attributeSchema*/ ctx[1]["input-type"] === "range" && /*value*/ ctx[2] != null && create_if_block_6$7(ctx);
56474
56475		return {
56476			c() {
56477				div = element("div");
56478				create_component(input.$$.fragment);
56479				t = space();
56480				if (if_block) if_block.c();
56481				attr(div, "class", "zephr-form-flex-container");
56482				toggle_class(div, "zephr-payment-form-flex-container", /*isPaymentForm*/ ctx[3]);
56483			},
56484			m(target, anchor) {
56485				insert(target, div, anchor);
56486				mount_component(input, div, null);
56487				append(div, t);
56488				if (if_block) if_block.m(div, null);
56489				current = true;
56490			},
56491			p(ctx, dirty) {
56492				const input_changes = {};
56493				if (dirty & /*config, attributeSchema*/ 3) input_changes.required = /*config*/ ctx[0].required || /*attributeSchema*/ ctx[1]?.required;
56494				if (dirty & /*attributeSchema*/ 2) input_changes.type = /*attributeSchema*/ ctx[1]["input-type"];
56495				if (dirty & /*value*/ 4) input_changes.value = /*value*/ ctx[2];
56496				if (dirty & /*attributeSchema*/ 2) input_changes.min = /*attributeSchema*/ ctx[1]["range-start"];
56497				if (dirty & /*attributeSchema*/ 2) input_changes.max = /*attributeSchema*/ ctx[1]["range-end"];
56498				if (dirty & /*attributeSchema*/ 2) input_changes.step = /*attributeSchema*/ ctx[1]["range-start"];
56499				if (dirty & /*isPaymentForm*/ 8) input_changes.isPaymentForm = /*isPaymentForm*/ ctx[3];
56500				if (dirty & /*onFocus*/ 32) input_changes.onFocus = /*onFocus*/ ctx[5];
56501				if (dirty & /*onBlur*/ 64) input_changes.onBlur = /*onBlur*/ ctx[6];
56502				input.$set(input_changes);
56503
56504				if (/*attributeSchema*/ ctx[1]["input-type"] === "range" && /*value*/ ctx[2] != null) {
56505					if (if_block) {
56506						if_block.p(ctx, dirty);
56507					} else {
56508						if_block = create_if_block_6$7(ctx);
56509						if_block.c();
56510						if_block.m(div, null);
56511					}
56512				} else if (if_block) {
56513					if_block.d(1);
56514					if_block = null;
56515				}
56516
56517				if (!current || dirty & /*isPaymentForm*/ 8) {
56518					toggle_class(div, "zephr-payment-form-flex-container", /*isPaymentForm*/ ctx[3]);
56519				}
56520			},
56521			i(local) {
56522				if (current) return;
56523				transition_in(input.$$.fragment, local);
56524				current = true;
56525			},
56526			o(local) {
56527				transition_out(input.$$.fragment, local);
56528				current = false;
56529			},
56530			d(detaching) {
56531				if (detaching) {
56532					detach(div);
56533				}
56534
56535				destroy_component(input);
56536				if (if_block) if_block.d();
56537			}
56538		};
56539	}
56540
56541	// (84:59) 
56542	function create_if_block_4$9(ctx) {
56543		let textarea;
56544		let textarea_required_value;
56545		let textarea_placeholder_value;
56546		let mounted;
56547		let dispose;
56548
56549		return {
56550			c() {
56551				textarea = element("textarea");
56552				attr(textarea, "id", /*id*/ ctx[10]);
56553				attr(textarea, "class", "zephr-form-input zephr-form-input-textarea svelte-wlae04");
56554				textarea.required = textarea_required_value = /*config*/ ctx[0].required || /*attributeSchema*/ ctx[1]?.required;
56555				attr(textarea, "placeholder", textarea_placeholder_value = /*config*/ ctx[0].placeholder);
56556				toggle_class(textarea, "zephr-payment-form-input", /*isPaymentForm*/ ctx[3]);
56557				toggle_class(textarea, "zephr-payment-form-input-textarea", /*isPaymentForm*/ ctx[3]);
56558			},
56559			m(target, anchor) {
56560				insert(target, textarea, anchor);
56561				set_input_value(textarea, /*currentValue*/ ctx[7]);
56562
56563				if (!mounted) {
56564					dispose = listen(textarea, "input", /*textarea_input_handler*/ ctx[16]);
56565					mounted = true;
56566				}
56567			},
56568			p(ctx, dirty) {
56569				if (dirty & /*config, attributeSchema*/ 3 && textarea_required_value !== (textarea_required_value = /*config*/ ctx[0].required || /*attributeSchema*/ ctx[1]?.required)) {
56570					textarea.required = textarea_required_value;
56571				}
56572
56573				if (dirty & /*config*/ 1 && textarea_placeholder_value !== (textarea_placeholder_value = /*config*/ ctx[0].placeholder)) {
56574					attr(textarea, "placeholder", textarea_placeholder_value);
56575				}
56576
56577				if (dirty & /*currentValue*/ 128) {
56578					set_input_value(textarea, /*currentValue*/ ctx[7]);
56579				}
56580
56581				if (dirty & /*isPaymentForm*/ 8) {
56582					toggle_class(textarea, "zephr-payment-form-input", /*isPaymentForm*/ ctx[3]);
56583				}
56584
56585				if (dirty & /*isPaymentForm*/ 8) {
56586					toggle_class(textarea, "zephr-payment-form-input-textarea", /*isPaymentForm*/ ctx[3]);
56587				}
56588			},
56589			i: noop,
56590			o: noop,
56591			d(detaching) {
56592				if (detaching) {
56593					detach(textarea);
56594				}
56595
56596				mounted = false;
56597				dispose();
56598			}
56599		};
56600	}
56601
56602	// (64:57) 
56603	function create_if_block_3$b(ctx) {
56604		let select;
56605		let option_1;
56606		let t_value = (/*config*/ ctx[0].placeholder ?? "") + "";
56607		let t;
56608		let select_name_value;
56609		let select_required_value;
56610		let select_value_value;
56611		let mounted;
56612		let dispose;
56613		let each_value_1 = ensure_array_like(/*attributeSchema*/ ctx[1]?.["select-options"]);
56614		let each_blocks = [];
56615
56616		for (let i = 0; i < each_value_1.length; i += 1) {
56617			each_blocks[i] = create_each_block_1$4(get_each_context_1$4(ctx, each_value_1, i));
56618		}
56619
56620		return {
56621			c() {
56622				select = element("select");
56623				option_1 = element("option");
56624				t = text(t_value);
56625
56626				for (let i = 0; i < each_blocks.length; i += 1) {
56627					each_blocks[i].c();
56628				}
56629
56630				option_1.disabled = true;
56631				option_1.__value = "";
56632				set_input_value(option_1, option_1.__value);
56633				attr(select, "id", /*id*/ ctx[10]);
56634				attr(select, "name", select_name_value = /*config*/ ctx[0].slug);
56635				attr(select, "class", "zephr-form-input zephr-form-input-select svelte-wlae04");
56636				select.required = select_required_value = /*config*/ ctx[0].required || /*attributeSchema*/ ctx[1]?.required;
56637				toggle_class(select, "zephr-payment-form-input", /*isPaymentForm*/ ctx[3]);
56638				toggle_class(select, "zephr-payment-form-input-select", /*isPaymentForm*/ ctx[3]);
56639				toggle_class(select, "unselected", !/*value*/ ctx[2]);
56640				toggle_class(select, "error", /*hasError*/ ctx[8]);
56641			},
56642			m(target, anchor) {
56643				insert(target, select, anchor);
56644				append(select, option_1);
56645				append(option_1, t);
56646
56647				for (let i = 0; i < each_blocks.length; i += 1) {
56648					if (each_blocks[i]) {
56649						each_blocks[i].m(select, null);
56650					}
56651				}
56652
56653				select_option(select, /*value*/ ctx[2] ?? "");
56654
56655				if (!mounted) {
56656					dispose = listen(select, "change", /*change_handler_2*/ ctx[15]);
56657					mounted = true;
56658				}
56659			},
56660			p(ctx, dirty) {
56661				if (dirty & /*config*/ 1 && t_value !== (t_value = (/*config*/ ctx[0].placeholder ?? "") + "")) set_data(t, t_value);
56662
56663				if (dirty & /*attributeSchema, value*/ 6) {
56664					each_value_1 = ensure_array_like(/*attributeSchema*/ ctx[1]?.["select-options"]);
56665					let i;
56666
56667					for (i = 0; i < each_value_1.length; i += 1) {
56668						const child_ctx = get_each_context_1$4(ctx, each_value_1, i);
56669
56670						if (each_blocks[i]) {
56671							each_blocks[i].p(child_ctx, dirty);
56672						} else {
56673							each_blocks[i] = create_each_block_1$4(child_ctx);
56674							each_blocks[i].c();
56675							each_blocks[i].m(select, null);
56676						}
56677					}
56678
56679					for (; i < each_blocks.length; i += 1) {
56680						each_blocks[i].d(1);
56681					}
56682
56683					each_blocks.length = each_value_1.length;
56684				}
56685
56686				if (dirty & /*config*/ 1 && select_name_value !== (select_name_value = /*config*/ ctx[0].slug)) {
56687					attr(select, "name", select_name_value);
56688				}
56689
56690				if (dirty & /*config, attributeSchema*/ 3 && select_required_value !== (select_required_value = /*config*/ ctx[0].required || /*attributeSchema*/ ctx[1]?.required)) {
56691					select.required = select_required_value;
56692				}
56693
56694				if (dirty & /*value, attributeSchema*/ 6 && select_value_value !== (select_value_value = /*value*/ ctx[2] ?? "")) {
56695					select_option(select, /*value*/ ctx[2] ?? "");
56696				}
56697
56698				if (dirty & /*isPaymentForm*/ 8) {
56699					toggle_class(select, "zephr-payment-form-input", /*isPaymentForm*/ ctx[3]);
56700				}
56701
56702				if (dirty & /*isPaymentForm*/ 8) {
56703					toggle_class(select, "zephr-payment-form-input-select", /*isPaymentForm*/ ctx[3]);
56704				}
56705
56706				if (dirty & /*value*/ 4) {
56707					toggle_class(select, "unselected", !/*value*/ ctx[2]);
56708				}
56709
56710				if (dirty & /*hasError*/ 256) {
56711					toggle_class(select, "error", /*hasError*/ ctx[8]);
56712				}
56713			},
56714			i: noop,
56715			o: noop,
56716			d(detaching) {
56717				if (detaching) {
56718					detach(select);
56719				}
56720
56721				destroy_each(each_blocks, detaching);
56722				mounted = false;
56723				dispose();
56724			}
56725		};
56726	}
56727
56728	// (48:59) 
56729	function create_if_block_2$g(ctx) {
56730		let checkbox;
56731		let current;
56732
56733		checkbox = new Checkbox({
56734				props: {
56735					id: /*id*/ ctx[10],
56736					name: /*config*/ ctx[0].slug,
56737					label: `${/*config*/ ctx[0].label}${/*config*/ ctx[0].required || /*attributeSchema*/ ctx[1]?.required
56738				? "*"
56739				: ""}`,
56740					required: /*config*/ ctx[0].required || /*attributeSchema*/ ctx[1]?.required,
56741					value: /*value*/ ctx[2],
56742					checked: /*value*/ ctx[2],
56743					pattern: /*attributeSchema*/ ctx[1]?.["validation-expression"],
56744					placeholder: /*config*/ ctx[0].placeholder,
56745					hasError: /*hasError*/ ctx[8],
56746					isPaymentForm: /*isPaymentForm*/ ctx[3]
56747				}
56748			});
56749
56750		checkbox.$on("change", /*change_handler_1*/ ctx[14]);
56751
56752		return {
56753			c() {
56754				create_component(checkbox.$$.fragment);
56755			},
56756			m(target, anchor) {
56757				mount_component(checkbox, target, anchor);
56758				current = true;
56759			},
56760			p(ctx, dirty) {
56761				const checkbox_changes = {};
56762				if (dirty & /*config*/ 1) checkbox_changes.name = /*config*/ ctx[0].slug;
56763
56764				if (dirty & /*config, attributeSchema*/ 3) checkbox_changes.label = `${/*config*/ ctx[0].label}${/*config*/ ctx[0].required || /*attributeSchema*/ ctx[1]?.required
56765			? "*"
56766			: ""}`;
56767
56768				if (dirty & /*config, attributeSchema*/ 3) checkbox_changes.required = /*config*/ ctx[0].required || /*attributeSchema*/ ctx[1]?.required;
56769				if (dirty & /*value*/ 4) checkbox_changes.value = /*value*/ ctx[2];
56770				if (dirty & /*value*/ 4) checkbox_changes.checked = /*value*/ ctx[2];
56771				if (dirty & /*attributeSchema*/ 2) checkbox_changes.pattern = /*attributeSchema*/ ctx[1]?.["validation-expression"];
56772				if (dirty & /*config*/ 1) checkbox_changes.placeholder = /*config*/ ctx[0].placeholder;
56773				if (dirty & /*hasError*/ 256) checkbox_changes.hasError = /*hasError*/ ctx[8];
56774				if (dirty & /*isPaymentForm*/ 8) checkbox_changes.isPaymentForm = /*isPaymentForm*/ ctx[3];
56775				checkbox.$set(checkbox_changes);
56776			},
56777			i(local) {
56778				if (current) return;
56779				transition_in(checkbox.$$.fragment, local);
56780				current = true;
56781			},
56782			o(local) {
56783				transition_out(checkbox.$$.fragment, local);
56784				current = false;
56785			},
56786			d(detaching) {
56787				destroy_component(checkbox, detaching);
56788			}
56789		};
56790	}
56791
56792	// (34:2) {#if attributeSchema?.["input-type"] === "radio"}
56793	function create_if_block_1$q(ctx) {
56794		let each_1_anchor;
56795		let current;
56796		let each_value = ensure_array_like(/*attributeSchema*/ ctx[1]?.["select-options"]);
56797		let each_blocks = [];
56798
56799		for (let i = 0; i < each_value.length; i += 1) {
56800			each_blocks[i] = create_each_block$e(get_each_context$e(ctx, each_value, i));
56801		}
56802
56803		const out = i => transition_out(each_blocks[i], 1, 1, () => {
56804			each_blocks[i] = null;
56805		});
56806
56807		return {
56808			c() {
56809				for (let i = 0; i < each_blocks.length; i += 1) {
56810					each_blocks[i].c();
56811				}
56812
56813				each_1_anchor = empty();
56814			},
56815			m(target, anchor) {
56816				for (let i = 0; i < each_blocks.length; i += 1) {
56817					if (each_blocks[i]) {
56818						each_blocks[i].m(target, anchor);
56819					}
56820				}
56821
56822				insert(target, each_1_anchor, anchor);
56823				current = true;
56824			},
56825			p(ctx, dirty) {
56826				if (dirty & /*id, attributeSchema, config, value, hasError, isPaymentForm, onChange*/ 1311) {
56827					each_value = ensure_array_like(/*attributeSchema*/ ctx[1]?.["select-options"]);
56828					let i;
56829
56830					for (i = 0; i < each_value.length; i += 1) {
56831						const child_ctx = get_each_context$e(ctx, each_value, i);
56832
56833						if (each_blocks[i]) {
56834							each_blocks[i].p(child_ctx, dirty);
56835							transition_in(each_blocks[i], 1);
56836						} else {
56837							each_blocks[i] = create_each_block$e(child_ctx);
56838							each_blocks[i].c();
56839							transition_in(each_blocks[i], 1);
56840							each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor);
56841						}
56842					}
56843
56844					group_outros();
56845
56846					for (i = each_value.length; i < each_blocks.length; i += 1) {
56847						out(i);
56848					}
56849
56850					check_outros();
56851				}
56852			},
56853			i(local) {
56854				if (current) return;
56855
56856				for (let i = 0; i < each_value.length; i += 1) {
56857					transition_in(each_blocks[i]);
56858				}
56859
56860				current = true;
56861			},
56862			o(local) {
56863				each_blocks = each_blocks.filter(Boolean);
56864
56865				for (let i = 0; i < each_blocks.length; i += 1) {
56866					transition_out(each_blocks[i]);
56867				}
56868
56869				current = false;
56870			},
56871			d(detaching) {
56872				if (detaching) {
56873					detach(each_1_anchor);
56874				}
56875
56876				destroy_each(each_blocks, detaching);
56877			}
56878		};
56879	}
56880
56881	// (111:6) {#if attributeSchema["input-type"] === "range" && value != null}
56882	function create_if_block_6$7(ctx) {
56883		let output;
56884		let t;
56885
56886		return {
56887			c() {
56888				output = element("output");
56889				t = text(/*value*/ ctx[2]);
56890				attr(output, "class", "zephr-form-input-slider-output svelte-wlae04");
56891				toggle_class(output, "zephr-payment-form-input-slider-output", /*isPaymentForm*/ ctx[3]);
56892			},
56893			m(target, anchor) {
56894				insert(target, output, anchor);
56895				append(output, t);
56896			},
56897			p(ctx, dirty) {
56898				if (dirty & /*value*/ 4) set_data(t, /*value*/ ctx[2]);
56899
56900				if (dirty & /*isPaymentForm*/ 8) {
56901					toggle_class(output, "zephr-payment-form-input-slider-output", /*isPaymentForm*/ ctx[3]);
56902				}
56903			},
56904			d(detaching) {
56905				if (detaching) {
56906					detach(output);
56907				}
56908			}
56909		};
56910	}
56911
56912	// (78:6) {#each attributeSchema?.["select-options"] as option}
56913	function create_each_block_1$4(ctx) {
56914		let option_1;
56915		let t0_value = /*option*/ ctx[19].label + "";
56916		let t0;
56917		let t1;
56918		let option_1_value_value;
56919		let option_1_selected_value;
56920
56921		return {
56922			c() {
56923				option_1 = element("option");
56924				t0 = text(t0_value);
56925				t1 = space();
56926				option_1.__value = option_1_value_value = /*option*/ ctx[19].value;
56927				set_input_value(option_1, option_1.__value);
56928				option_1.selected = option_1_selected_value = /*value*/ ctx[2] === /*option*/ ctx[19].value;
56929			},
56930			m(target, anchor) {
56931				insert(target, option_1, anchor);
56932				append(option_1, t0);
56933				append(option_1, t1);
56934			},
56935			p(ctx, dirty) {
56936				if (dirty & /*attributeSchema*/ 2 && t0_value !== (t0_value = /*option*/ ctx[19].label + "")) set_data(t0, t0_value);
56937
56938				if (dirty & /*attributeSchema*/ 2 && option_1_value_value !== (option_1_value_value = /*option*/ ctx[19].value)) {
56939					option_1.__value = option_1_value_value;
56940					set_input_value(option_1, option_1.__value);
56941				}
56942
56943				if (dirty & /*value, attributeSchema*/ 6 && option_1_selected_value !== (option_1_selected_value = /*value*/ ctx[2] === /*option*/ ctx[19].value)) {
56944					option_1.selected = option_1_selected_value;
56945				}
56946			},
56947			d(detaching) {
56948				if (detaching) {
56949					detach(option_1);
56950				}
56951			}
56952		};
56953	}
56954
56955	// (35:4) {#each attributeSchema?.["select-options"] as option}
56956	function create_each_block$e(ctx) {
56957		let radio;
56958		let current;
56959
56960		radio = new Radio({
56961				props: {
56962					id: "" + (/*id*/ ctx[10] + "-" + /*option*/ ctx[19].value),
56963					name: /*config*/ ctx[0].slug,
56964					label: /*option*/ ctx[19].label,
56965					required: /*config*/ ctx[0].required || /*attributeSchema*/ ctx[1]?.required,
56966					value: /*option*/ ctx[19].value,
56967					checked: /*value*/ ctx[2] === /*option*/ ctx[19].value,
56968					hasError: /*hasError*/ ctx[8],
56969					isPaymentForm: /*isPaymentForm*/ ctx[3]
56970				}
56971			});
56972
56973		radio.$on("change", /*change_handler*/ ctx[13]);
56974
56975		return {
56976			c() {
56977				create_component(radio.$$.fragment);
56978			},
56979			m(target, anchor) {
56980				mount_component(radio, target, anchor);
56981				current = true;
56982			},
56983			p(ctx, dirty) {
56984				const radio_changes = {};
56985				if (dirty & /*attributeSchema*/ 2) radio_changes.id = "" + (/*id*/ ctx[10] + "-" + /*option*/ ctx[19].value);
56986				if (dirty & /*config*/ 1) radio_changes.name = /*config*/ ctx[0].slug;
56987				if (dirty & /*attributeSchema*/ 2) radio_changes.label = /*option*/ ctx[19].label;
56988				if (dirty & /*config, attributeSchema*/ 3) radio_changes.required = /*config*/ ctx[0].required || /*attributeSchema*/ ctx[1]?.required;
56989				if (dirty & /*attributeSchema*/ 2) radio_changes.value = /*option*/ ctx[19].value;
56990				if (dirty & /*value, attributeSchema*/ 6) radio_changes.checked = /*value*/ ctx[2] === /*option*/ ctx[19].value;
56991				if (dirty & /*hasError*/ 256) radio_changes.hasError = /*hasError*/ ctx[8];
56992				if (dirty & /*isPaymentForm*/ 8) radio_changes.isPaymentForm = /*isPaymentForm*/ ctx[3];
56993				radio.$set(radio_changes);
56994			},
56995			i(local) {
56996				if (current) return;
56997				transition_in(radio.$$.fragment, local);
56998				current = true;
56999			},
57000			o(local) {
57001				transition_out(radio.$$.fragment, local);
57002				current = false;
57003			},
57004			d(detaching) {
57005				destroy_component(radio, detaching);
57006			}
57007		};
57008	}
57009
57010	// (24:0) <Label   forInput={id}   sublabel={attributeSchema["public-description"]}   label={!/(hidden|checkbox)/.test(attributeSchema?.["input-type"] || "")     ? `${config.label}${         config.required || attributeSchema?.required ? "*" : ""       }`     : ""}   {isPaymentForm} >
57011	function create_default_slot$5(ctx) {
57012		let current_block_type_index;
57013		let if_block;
57014		let if_block_anchor;
57015		let current;
57016
57017		const if_block_creators = [
57018			create_if_block_1$q,
57019			create_if_block_2$g,
57020			create_if_block_3$b,
57021			create_if_block_4$9,
57022			create_if_block_5$7,
57023			create_else_block$8
57024		];
57025
57026		const if_blocks = [];
57027
57028		function select_block_type(ctx, dirty) {
57029			if (/*attributeSchema*/ ctx[1]?.["input-type"] === "radio") return 0;
57030			if (/*attributeSchema*/ ctx[1]?.["input-type"] === "checkbox") return 1;
57031			if (/*attributeSchema*/ ctx[1]?.["input-type"] === "select") return 2;
57032			if (/*attributeSchema*/ ctx[1]?.["input-type"] === "textarea") return 3;
57033			if (/*attributeSchema*/ ctx[1]?.["input-type"] === "range") return 4;
57034			return 5;
57035		}
57036
57037		current_block_type_index = select_block_type(ctx);
57038		if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
57039
57040		return {
57041			c() {
57042				if_block.c();
57043				if_block_anchor = empty();
57044			},
57045			m(target, anchor) {
57046				if_blocks[current_block_type_index].m(target, anchor);
57047				insert(target, if_block_anchor, anchor);
57048				current = true;
57049			},
57050			p(ctx, dirty) {
57051				let previous_block_index = current_block_type_index;
57052				current_block_type_index = select_block_type(ctx);
57053
57054				if (current_block_type_index === previous_block_index) {
57055					if_blocks[current_block_type_index].p(ctx, dirty);
57056				} else {
57057					group_outros();
57058
57059					transition_out(if_blocks[previous_block_index], 1, 1, () => {
57060						if_blocks[previous_block_index] = null;
57061					});
57062
57063					check_outros();
57064					if_block = if_blocks[current_block_type_index];
57065
57066					if (!if_block) {
57067						if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
57068						if_block.c();
57069					} else {
57070						if_block.p(ctx, dirty);
57071					}
57072
57073					transition_in(if_block, 1);
57074					if_block.m(if_block_anchor.parentNode, if_block_anchor);
57075				}
57076			},
57077			i(local) {
57078				if (current) return;
57079				transition_in(if_block);
57080				current = true;
57081			},
57082			o(local) {
57083				transition_out(if_block);
57084				current = false;
57085			},
57086			d(detaching) {
57087				if (detaching) {
57088					detach(if_block_anchor);
57089				}
57090
57091				if_blocks[current_block_type_index].d(detaching);
57092			}
57093		};
57094	}
57095
57096	// (138:0) {#if hasError}
57097	function create_if_block$A(ctx) {
57098		let div;
57099
57100		return {
57101			c() {
57102				div = element("div");
57103				div.textContent = "Mandatory information must be entered";
57104				attr(div, "class", "zephr-form-input-error-text svelte-wlae04");
57105				toggle_class(div, "zephr-payment-form-input-error-text", /*isPaymentForm*/ ctx[3]);
57106			},
57107			m(target, anchor) {
57108				insert(target, div, anchor);
57109			},
57110			p(ctx, dirty) {
57111				if (dirty & /*isPaymentForm*/ 8) {
57112					toggle_class(div, "zephr-payment-form-input-error-text", /*isPaymentForm*/ ctx[3]);
57113				}
57114			},
57115			d(detaching) {
57116				if (detaching) {
57117					detach(div);
57118				}
57119			}
57120		};
57121	}
57122
57123	function create_fragment$M(ctx) {
57124		let label;
57125		let t;
57126		let if_block_anchor;
57127		let current;
57128
57129		label = new Label({
57130				props: {
57131					forInput: /*id*/ ctx[10],
57132					sublabel: /*attributeSchema*/ ctx[1]["public-description"],
57133					label: !(/(hidden|checkbox)/).test(/*attributeSchema*/ ctx[1]?.["input-type"] || "")
57134					? `${/*config*/ ctx[0].label}${/*config*/ ctx[0].required || /*attributeSchema*/ ctx[1]?.required
57135					? "*"
57136					: ""}`
57137					: "",
57138					isPaymentForm: /*isPaymentForm*/ ctx[3],
57139					$$slots: { default: [create_default_slot$5] },
57140					$$scope: { ctx }
57141				}
57142			});
57143
57144		let if_block = /*hasError*/ ctx[8] && create_if_block$A(ctx);
57145
57146		return {
57147			c() {
57148				create_component(label.$$.fragment);
57149				t = space();
57150				if (if_block) if_block.c();
57151				if_block_anchor = empty();
57152			},
57153			m(target, anchor) {
57154				mount_component(label, target, anchor);
57155				insert(target, t, anchor);
57156				if (if_block) if_block.m(target, anchor);
57157				insert(target, if_block_anchor, anchor);
57158				current = true;
57159			},
57160			p(ctx, [dirty]) {
57161				const label_changes = {};
57162				if (dirty & /*attributeSchema*/ 2) label_changes.sublabel = /*attributeSchema*/ ctx[1]["public-description"];
57163
57164				if (dirty & /*attributeSchema, config*/ 3) label_changes.label = !(/(hidden|checkbox)/).test(/*attributeSchema*/ ctx[1]?.["input-type"] || "")
57165				? `${/*config*/ ctx[0].label}${/*config*/ ctx[0].required || /*attributeSchema*/ ctx[1]?.required
57166				? "*"
57167				: ""}`
57168				: "";
57169
57170				if (dirty & /*isPaymentForm*/ 8) label_changes.isPaymentForm = /*isPaymentForm*/ ctx[3];
57171
57172				if (dirty & /*$$scope, attributeSchema, config, value, hasError, isPaymentForm, onChange, currentValue, onFocus, onBlur*/ 16777727) {
57173					label_changes.$$scope = { dirty, ctx };
57174				}
57175
57176				label.$set(label_changes);
57177
57178				if (/*hasError*/ ctx[8]) {
57179					if (if_block) {
57180						if_block.p(ctx, dirty);
57181					} else {
57182						if_block = create_if_block$A(ctx);
57183						if_block.c();
57184						if_block.m(if_block_anchor.parentNode, if_block_anchor);
57185					}
57186				} else if (if_block) {
57187					if_block.d(1);
57188					if_block = null;
57189				}
57190			},
57191			i(local) {
57192				if (current) return;
57193				transition_in(label.$$.fragment, local);
57194				current = true;
57195			},
57196			o(local) {
57197				transition_out(label.$$.fragment, local);
57198				current = false;
57199			},
57200			d(detaching) {
57201				if (detaching) {
57202					detach(t);
57203					detach(if_block_anchor);
57204				}
57205
57206				destroy_component(label, detaching);
57207				if (if_block) if_block.d(detaching);
57208			}
57209		};
57210	}
57211
57212	function instance$L($$self, $$props, $$invalidate) {
57213		let hasError;
57214		let { formKey } = $$props;
57215		let { config } = $$props;
57216		let { attributeSchema } = $$props;
57217		let { value } = $$props;
57218		let { error } = $$props;
57219		let { isPaymentForm = false } = $$props;
57220		let { onChange } = $$props;
57221		let { onFocus } = $$props;
57222		let { onBlur } = $$props;
57223		let currentValue = value;
57224
57225		// Casting functions for typescript
57226		const asSelect = target => target;
57227
57228		const id = `zephr-form-${config.slug}-${formKey}`;
57229		const change_handler = ({ detail }) => onChange(detail);
57230		const change_handler_1 = ({ detail }) => onChange(detail);
57231		const change_handler_2 = e => onChange(asSelect(e.target).value);
57232
57233		function textarea_input_handler() {
57234			currentValue = this.value;
57235			$$invalidate(7, currentValue);
57236		}
57237
57238		const change_handler_3 = ({ detail }) => onChange(detail);
57239		const change_handler_4 = ({ detail }) => onChange(detail);
57240
57241		$$self.$$set = $$props => {
57242			if ('formKey' in $$props) $$invalidate(11, formKey = $$props.formKey);
57243			if ('config' in $$props) $$invalidate(0, config = $$props.config);
57244			if ('attributeSchema' in $$props) $$invalidate(1, attributeSchema = $$props.attributeSchema);
57245			if ('value' in $$props) $$invalidate(2, value = $$props.value);
57246			if ('error' in $$props) $$invalidate(12, error = $$props.error);
57247			if ('isPaymentForm' in $$props) $$invalidate(3, isPaymentForm = $$props.isPaymentForm);
57248			if ('onChange' in $$props) $$invalidate(4, onChange = $$props.onChange);
57249			if ('onFocus' in $$props) $$invalidate(5, onFocus = $$props.onFocus);
57250			if ('onBlur' in $$props) $$invalidate(6, onBlur = $$props.onBlur);
57251		};
57252
57253		$$self.$$.update = () => {
57254			if ($$self.$$.dirty & /*error*/ 4096) {
57255				$$invalidate(8, hasError = !!error);
57256			}
57257
57258			if ($$self.$$.dirty & /*attributeSchema, currentValue, value, onChange*/ 150) {
57259				if (attributeSchema?.["input-type"] === "textarea" && currentValue !== value) {
57260					onChange(currentValue);
57261				}
57262			}
57263		};
57264
57265		return [
57266			config,
57267			attributeSchema,
57268			value,
57269			isPaymentForm,
57270			onChange,
57271			onFocus,
57272			onBlur,
57273			currentValue,
57274			hasError,
57275			asSelect,
57276			id,
57277			formKey,
57278			error,
57279			change_handler,
57280			change_handler_1,
57281			change_handler_2,
57282			textarea_input_handler,
57283			change_handler_3,
57284			change_handler_4
57285		];
57286	}
57287
57288	class UserAttribute extends SvelteComponent {
57289		constructor(options) {
57290			super();
57291
57292			init(this, options, instance$L, create_fragment$M, safe_not_equal, {
57293				formKey: 11,
57294				config: 0,
57295				attributeSchema: 1,
57296				value: 2,
57297				error: 12,
57298				isPaymentForm: 3,
57299				onChange: 4,
57300				onFocus: 5,
57301				onBlur: 6
57302			});
57303		}
57304	}
57305
57306	const isEmpty = value => value == null || value === "";
57307	const factory$j = {
57308	    matches: (sectionElement) => sectionElement.type === elementTypes.USER_ATTRIBUTE,
57309	    create: (form, formState, formActions, elementConfig) => {
57310	        const attributeSchema = form.organisationConfiguration.schemaFields.find(s => s.slug === elementConfig.slug);
57311	        const hide = formState.hideIfSetAttributes?.includes(elementConfig.slug);
57312	        if (attributeSchema == undefined || hide) {
57313	            return undefined;
57314	        }
57315	        const required = attributeSchema.required || elementConfig.required;
57316	        const currentValue = (formState.userAttributes[elementConfig.slug] ?? (formState.readOnlyAttributeValues ?? {})[elementConfig.slug]);
57317	        return {
57318	            component: UserAttribute,
57319	            props: {
57320	                formKey: form.uniqueKey,
57321	                config: elementConfig,
57322	                value: currentValue,
57323	                attributeSchema,
57324	                isPaymentForm: form.formType === FormType.PAYMENT,
57325	                onChange: (value) => {
57326	                    formActions.updateFormState({
57327	                        userAttributes: {
57328	                            ...formState.userAttributes,
57329	                            [elementConfig.slug]: value
57330	                        }
57331	                    });
57332	                    logDataLayerEvent(form, 'zephr_form_input_change', {
57333	                        inputName: `zephr-form-${elementConfig.slug}-${form.uniqueKey}`,
57334	                        sectionId: formState.currentSection.type,
57335	                        field: elementConfig.slug
57336	                    });
57337	                },
57338	                onFocus: () => logDataLayerEvent(form, 'zephr_form_input_focus', {
57339	                    inputName: `zephr-form-${elementConfig.slug}-${form.uniqueKey}`,
57340	                    sectionId: formState.currentSection.type,
57341	                    field: elementConfig.slug
57342	                }),
57343	                onBlur: () => logDataLayerEvent(form, 'zephr_form_input_blur', {
57344	                    inputName: `zephr-form-${elementConfig.slug}-${form.uniqueKey}`,
57345	                    sectionId: formState.currentSection.type,
57346	                    field: elementConfig.slug
57347	                }),
57348	            },
57349	            isValid: !(required && isEmpty(currentValue))
57350	                && !(required && attributeSchema["input-type"] === 'checkbox' && !currentValue)
57351	                && !(attributeSchema["input-type"] === 'email' && !isEmpty(currentValue) && !isValidEmail(currentValue))
57352	        };
57353	    }
57354	};
57355
57356	/* src/components/elements/Link.svelte generated by Svelte v4.2.12 */
57357
57358	function create_fragment$L(ctx) {
57359		let button;
57360		let t;
57361		let mounted;
57362		let dispose;
57363
57364		return {
57365			c() {
57366				button = element("button");
57367				t = text(/*text*/ ctx[0]);
57368				attr(button, "type", "button");
57369				attr(button, "class", "zephr-form-link svelte-14vxk2u");
57370				toggle_class(button, "zephr-form-link-disabled", /*disabled*/ ctx[1]);
57371				toggle_class(button, "zephr-form-link-no-underline", /*noUnderline*/ ctx[3]);
57372			},
57373			m(target, anchor) {
57374				insert(target, button, anchor);
57375				append(button, t);
57376
57377				if (!mounted) {
57378					dispose = listen(button, "click", /*click_handler*/ ctx[5]);
57379					mounted = true;
57380				}
57381			},
57382			p(ctx, [dirty]) {
57383				if (dirty & /*text*/ 1) set_data(t, /*text*/ ctx[0]);
57384
57385				if (dirty & /*disabled*/ 2) {
57386					toggle_class(button, "zephr-form-link-disabled", /*disabled*/ ctx[1]);
57387				}
57388
57389				if (dirty & /*noUnderline*/ 8) {
57390					toggle_class(button, "zephr-form-link-no-underline", /*noUnderline*/ ctx[3]);
57391				}
57392			},
57393			i: noop,
57394			o: noop,
57395			d(detaching) {
57396				if (detaching) {
57397					detach(button);
57398				}
57399
57400				mounted = false;
57401				dispose();
57402			}
57403		};
57404	}
57405
57406	function instance$K($$self, $$props, $$invalidate) {
57407		let { text } = $$props;
57408		let { disabled = false } = $$props;
57409
57410		let { onClick = () => {
57411			
57412		} } = $$props;
57413
57414		let { noUnderline = false } = $$props;
57415		const dispatch = createEventDispatcher();
57416
57417		const click_handler = () => {
57418			onClick();
57419			dispatch('linkClick', null);
57420		};
57421
57422		$$self.$$set = $$props => {
57423			if ('text' in $$props) $$invalidate(0, text = $$props.text);
57424			if ('disabled' in $$props) $$invalidate(1, disabled = $$props.disabled);
57425			if ('onClick' in $$props) $$invalidate(2, onClick = $$props.onClick);
57426			if ('noUnderline' in $$props) $$invalidate(3, noUnderline = $$props.noUnderline);
57427		};
57428
57429		return [text, disabled, onClick, noUnderline, dispatch, click_handler];
57430	}
57431
57432	class Link extends SvelteComponent {
57433		constructor(options) {
57434			super();
57435
57436			init(this, options, instance$K, create_fragment$L, safe_not_equal, {
57437				text: 0,
57438				disabled: 1,
57439				onClick: 2,
57440				noUnderline: 3
57441			});
57442		}
57443	}
57444
57445	/* src/components/elements/resetPasswordLink/ResetPasswordLink.svelte generated by Svelte v4.2.12 */
57446
57447	function create_else_block$7(ctx) {
57448		let link;
57449		let current;
57450
57451		link = new Link({
57452				props: {
57453					text: /*text*/ ctx[0],
57454					onClick: /*onClick*/ ctx[2]
57455				}
57456			});
57457
57458		link.$on("linkClick", /*linkClick_handler*/ ctx[7]);
57459
57460		return {
57461			c() {
57462				create_component(link.$$.fragment);
57463			},
57464			m(target, anchor) {
57465				mount_component(link, target, anchor);
57466				current = true;
57467			},
57468			p(ctx, dirty) {
57469				const link_changes = {};
57470				if (dirty & /*text*/ 1) link_changes.text = /*text*/ ctx[0];
57471				if (dirty & /*onClick*/ 4) link_changes.onClick = /*onClick*/ ctx[2];
57472				link.$set(link_changes);
57473			},
57474			i(local) {
57475				if (current) return;
57476				transition_in(link.$$.fragment, local);
57477				current = true;
57478			},
57479			o(local) {
57480				transition_out(link.$$.fragment, local);
57481				current = false;
57482			},
57483			d(detaching) {
57484				destroy_component(link, detaching);
57485			}
57486		};
57487	}
57488
57489	// (16:2) {#if showMessage && !error}
57490	function create_if_block_1$p(ctx) {
57491		let div;
57492		let t;
57493
57494		return {
57495			c() {
57496				div = element("div");
57497				t = text(/*message*/ ctx[1]);
57498				attr(div, "class", "zephr-form-link-message svelte-49aomy");
57499			},
57500			m(target, anchor) {
57501				insert(target, div, anchor);
57502				append(div, t);
57503			},
57504			p(ctx, dirty) {
57505				if (dirty & /*message*/ 2) set_data(t, /*message*/ ctx[1]);
57506			},
57507			i: noop,
57508			o: noop,
57509			d(detaching) {
57510				if (detaching) {
57511					detach(div);
57512				}
57513			}
57514		};
57515	}
57516
57517	// (32:2) {#if error}
57518	function create_if_block$z(ctx) {
57519		let errormessage;
57520		let current;
57521
57522		errormessage = new ErrorMessage({
57523				props: {
57524					error: /*error*/ ctx[3],
57525					isPaymentForm: /*isPaymentForm*/ ctx[5]
57526				}
57527			});
57528
57529		return {
57530			c() {
57531				create_component(errormessage.$$.fragment);
57532			},
57533			m(target, anchor) {
57534				mount_component(errormessage, target, anchor);
57535				current = true;
57536			},
57537			p(ctx, dirty) {
57538				const errormessage_changes = {};
57539				if (dirty & /*error*/ 8) errormessage_changes.error = /*error*/ ctx[3];
57540				if (dirty & /*isPaymentForm*/ 32) errormessage_changes.isPaymentForm = /*isPaymentForm*/ ctx[5];
57541				errormessage.$set(errormessage_changes);
57542			},
57543			i(local) {
57544				if (current) return;
57545				transition_in(errormessage.$$.fragment, local);
57546				current = true;
57547			},
57548			o(local) {
57549				transition_out(errormessage.$$.fragment, local);
57550				current = false;
57551			},
57552			d(detaching) {
57553				destroy_component(errormessage, detaching);
57554			}
57555		};
57556	}
57557
57558	function create_fragment$K(ctx) {
57559		let div;
57560		let current_block_type_index;
57561		let if_block0;
57562		let t;
57563		let current;
57564		const if_block_creators = [create_if_block_1$p, create_else_block$7];
57565		const if_blocks = [];
57566
57567		function select_block_type(ctx, dirty) {
57568			if (/*showMessage*/ ctx[6] && !/*error*/ ctx[3]) return 0;
57569			return 1;
57570		}
57571
57572		current_block_type_index = select_block_type(ctx);
57573		if_block0 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
57574		let if_block1 = /*error*/ ctx[3] && create_if_block$z(ctx);
57575
57576		return {
57577			c() {
57578				div = element("div");
57579				if_block0.c();
57580				t = space();
57581				if (if_block1) if_block1.c();
57582				attr(div, "class", "zephr-form-flex-container zephr-form-reset-link-container svelte-49aomy");
57583				toggle_class(div, "zephr-payment-form-flex-container", /*isPaymentForm*/ ctx[5]);
57584			},
57585			m(target, anchor) {
57586				insert(target, div, anchor);
57587				if_blocks[current_block_type_index].m(div, null);
57588				append(div, t);
57589				if (if_block1) if_block1.m(div, null);
57590				current = true;
57591			},
57592			p(ctx, [dirty]) {
57593				let previous_block_index = current_block_type_index;
57594				current_block_type_index = select_block_type(ctx);
57595
57596				if (current_block_type_index === previous_block_index) {
57597					if_blocks[current_block_type_index].p(ctx, dirty);
57598				} else {
57599					group_outros();
57600
57601					transition_out(if_blocks[previous_block_index], 1, 1, () => {
57602						if_blocks[previous_block_index] = null;
57603					});
57604
57605					check_outros();
57606					if_block0 = if_blocks[current_block_type_index];
57607
57608					if (!if_block0) {
57609						if_block0 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
57610						if_block0.c();
57611					} else {
57612						if_block0.p(ctx, dirty);
57613					}
57614
57615					transition_in(if_block0, 1);
57616					if_block0.m(div, t);
57617				}
57618
57619				if (/*error*/ ctx[3]) {
57620					if (if_block1) {
57621						if_block1.p(ctx, dirty);
57622
57623						if (dirty & /*error*/ 8) {
57624							transition_in(if_block1, 1);
57625						}
57626					} else {
57627						if_block1 = create_if_block$z(ctx);
57628						if_block1.c();
57629						transition_in(if_block1, 1);
57630						if_block1.m(div, null);
57631					}
57632				} else if (if_block1) {
57633					group_outros();
57634
57635					transition_out(if_block1, 1, 1, () => {
57636						if_block1 = null;
57637					});
57638
57639					check_outros();
57640				}
57641
57642				if (!current || dirty & /*isPaymentForm*/ 32) {
57643					toggle_class(div, "zephr-payment-form-flex-container", /*isPaymentForm*/ ctx[5]);
57644				}
57645			},
57646			i(local) {
57647				if (current) return;
57648				transition_in(if_block0);
57649				transition_in(if_block1);
57650				current = true;
57651			},
57652			o(local) {
57653				transition_out(if_block0);
57654				transition_out(if_block1);
57655				current = false;
57656			},
57657			d(detaching) {
57658				if (detaching) {
57659					detach(div);
57660				}
57661
57662				if_blocks[current_block_type_index].d();
57663				if (if_block1) if_block1.d();
57664			}
57665		};
57666	}
57667
57668	function instance$J($$self, $$props, $$invalidate) {
57669		let { text } = $$props;
57670		let { message } = $$props;
57671		let { onClick } = $$props;
57672		let { error = null } = $$props;
57673		let { delayMs } = $$props;
57674		let { isPaymentForm = false } = $$props;
57675		let showMessage = false;
57676
57677		const linkClick_handler = () => {
57678			if (message) {
57679				$$invalidate(6, showMessage = true);
57680				setTimeout(() =>
57680 $$invalidate(6, showMessage = false), delayMs);
57681			}
57682		};
57683
57684		$$self.$$set = $$props => {
57685			if ('text' in $$props) $$invalidate(0, text = $$props.text);
57686			if ('message' in $$props) $$invalidate(1, message = $$props.message);
57687			if ('onClick' in $$props) $$invalidate(2, onClick = $$props.onClick);
57688			if ('error' in $$props) $$invalidate(3, error = $$props.error);
57689			if ('delayMs' in $$props) $$invalidate(4, delayMs = $$props.delayMs);
57690			if ('isPaymentForm' in $$props) $$invalidate(5, isPaymentForm = $$props.isPaymentForm);
57691		};
57692
57693		return [
57694			text,
57695			message,
57696			onClick,
57697			error,
57698			delayMs,
57699			isPaymentForm,
57700			showMessage,
57701			linkClick_handler
57702		];
57703	}
57704
57705	class ResetPasswordLink extends SvelteComponent {
57706		constructor(options) {
57707			super();
57708
57709			init(this, options, instance$J, create_fragment$K, safe_not_equal, {
57710				text: 0,
57711				message: 1,
57712				onClick: 2,
57713				error: 3,
57714				delayMs: 4,
57715				isPaymentForm: 5
57716			});
57717		}
57718	}
57719
57720	const factory$i = {
57721	    matches: (sectionElement) => sectionElement.type === elementTypes.RESET_PASSWORD_LINK,
57722	    create: (form, formState, formActions, elementConfig) => ({
57723	        component: ResetPasswordLink,
57724	        props: {
57725	            text: elementConfig.text,
57726	            message: elementConfig.message,
57727	            delayMs: form.environment.reduceDelays ? 1 : 3000,
57728	            isPaymentForm: form.formType === FormType.PAYMENT,
57729	            onClick: async () => {
57730	                logDataLayerEvent(form, 'zephr_form_button_press', {
57731	                    sectionId: formState.currentSection.type,
57732	                    buttonType: 'RESET_PASSWORD_LINK'
57733	                });
57734	                await sendPasswordResetCode(form, formState, formActions);
57735	            }
57736	        }
57737	    })
57738	};
57739
57740	/* src/components/elements/resendLoginLink/ResendLoginLink.svelte generated by Svelte v4.2.12 */
57741
57742	function create_else_block$6(ctx) {
57743		let link;
57744		let current;
57745
57746		link = new Link({
57747				props: {
57748					text: /*text*/ ctx[0],
57749					onClick: /*onClick*/ ctx[2]
57750				}
57751			});
57752
57753		link.$on("linkClick", /*linkClick_handler*/ ctx[7]);
57754
57755		return {
57756			c() {
57757				create_component(link.$$.fragment);
57758			},
57759			m(target, anchor) {
57760				mount_component(link, target, anchor);
57761				current = true;
57762			},
57763			p(ctx, dirty) {
57764				const link_changes = {};
57765				if (dirty & /*text*/ 1) link_changes.text = /*text*/ ctx[0];
57766				if (dirty & /*onClick*/ 4) link_changes.onClick = /*onClick*/ ctx[2];
57767				link.$set(link_changes);
57768			},
57769			i(local) {
57770				if (current) return;
57771				transition_in(link.$$.fragment, local);
57772				current = true;
57773			},
57774			o(local) {
57775				transition_out(link.$$.fragment, local);
57776				current = false;
57777			},
57778			d(detaching) {
57779				destroy_component(link, detaching);
57780			}
57781		};
57782	}
57783
57784	// (16:2) {#if showMessage && !error}
57785	function create_if_block_1$o(ctx) {
57786		let div;
57787		let t;
57788
57789		return {
57790			c() {
57791				div = element("div");
57792				t = text(/*message*/ ctx[1]);
57793				attr(div, "class", "zephr-form-link-message svelte-49aomy");
57794			},
57795			m(target, anchor) {
57796				insert(target, div, anchor);
57797				append(div, t);
57798			},
57799			p(ctx, dirty) {
57800				if (dirty & /*message*/ 2) set_data(t, /*message*/ ctx[1]);
57801			},
57802			i: noop,
57803			o: noop,
57804			d(detaching) {
57805				if (detaching) {
57806					detach(div);
57807				}
57808			}
57809		};
57810	}
57811
57812	// (32:2) {#if error}
57813	function create_if_block$y(ctx) {
57814		let errormessage;
57815		let current;
57816
57817		errormessage = new ErrorMessage({
57818				props: {
57819					error: /*error*/ ctx[3],
57820					isPaymentForm: /*isPaymentForm*/ ctx[5]
57821				}
57822			});
57823
57824		return {
57825			c() {
57826				create_component(errormessage.$$.fragment);
57827			},
57828			m(target, anchor) {
57829				mount_component(errormessage, target, anchor);
57830				current = true;
57831			},
57832			p(ctx, dirty) {
57833				const errormessage_changes = {};
57834				if (dirty & /*error*/ 8) errormessage_changes.error = /*error*/ ctx[3];
57835				if (dirty & /*isPaymentForm*/ 32) errormessage_changes.isPaymentForm = /*isPaymentForm*/ ctx[5];
57836				errormessage.$set(errormessage_changes);
57837			},
57838			i(local) {
57839				if (current) return;
57840				transition_in(errormessage.$$.fragment, local);
57841				current = true;
57842			},
57843			o(local) {
57844				transition_out(errormessage.$$.fragment, local);
57845				current = false;
57846			},
57847			d(detaching) {
57848				destroy_component(errormessage, detaching);
57849			}
57850		};
57851	}
57852
57853	function create_fragment$J(ctx) {
57854		let div;
57855		let current_block_type_index;
57856		let if_block0;
57857		let t;
57858		let current;
57859		const if_block_creators = [create_if_block_1$o, create_else_block$6];
57860		const if_blocks = [];
57861
57862		function select_block_type(ctx, dirty) {
57863			if (/*showMessage*/ ctx[6] && !/*error*/ ctx[3]) return 0;
57864			return 1;
57865		}
57866
57867		current_block_type_index = select_block_type(ctx);
57868		if_block0 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
57869		let if_block1 = /*error*/ ctx[3] && create_if_block$y(ctx);
57870
57871		return {
57872			c() {
57873				div = element("div");
57874				if_block0.c();
57875				t = space();
57876				if (if_block1) if_block1.c();
57877				attr(div, "class", "zephr-form-flex-container zephr-form-reset-link-container svelte-49aomy");
57878				toggle_class(div, "zephr-payment-form-flex-container", /*isPaymentForm*/ ctx[5]);
57879			},
57880			m(target, anchor) {
57881				insert(target, div, anchor);
57882				if_blocks[current_block_type_index].m(div, null);
57883				append(div, t);
57884				if (if_block1) if_block1.m(div, null);
57885				current = true;
57886			},
57887			p(ctx, [dirty]) {
57888				let previous_block_index = current_block_type_index;
57889				current_block_type_index = select_block_type(ctx);
57890
57891				if (current_block_type_index === previous_block_index) {
57892					if_blocks[current_block_type_index].p(ctx, dirty);
57893				} else {
57894					group_outros();
57895
57896					transition_out(if_blocks[previous_block_index], 1, 1, () => {
57897						if_blocks[previous_block_index] = null;
57898					});
57899
57900					check_outros();
57901					if_block0 = if_blocks[current_block_type_index];
57902
57903					if (!if_block0) {
57904						if_block0 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
57905						if_block0.c();
57906					} else {
57907						if_block0.p(ctx, dirty);
57908					}
57909
57910					transition_in(if_block0, 1);
57911					if_block0.m(div, t);
57912				}
57913
57914				if (/*error*/ ctx[3]) {
57915					if (if_block1) {
57916						if_block1.p(ctx, dirty);
57917
57918						if (dirty & /*error*/ 8) {
57919							transition_in(if_block1, 1);
57920						}
57921					} else {
57922						if_block1 = create_if_block$y(ctx);
57923						if_block1.c();
57924						transition_in(if_block1, 1);
57925						if_block1.m(div, null);
57926					}
57927				} else if (if_block1) {
57928					group_outros();
57929
57930					transition_out(if_block1, 1, 1, () => {
57931						if_block1 = null;
57932					});
57933
57934					check_outros();
57935				}
57936
57937				if (!current || dirty & /*isPaymentForm*/ 32) {
57938					toggle_class(div, "zephr-payment-form-flex-container", /*isPaymentForm*/ ctx[5]);
57939				}
57940			},
57941			i(local) {
57942				if (current) return;
57943				transition_in(if_block0);
57944				transition_in(if_block1);
57945				current = true;
57946			},
57947			o(local) {
57948				transition_out(if_block0);
57949				transition_out(if_block1);
57950				current = false;
57951			},
57952			d(detaching) {
57953				if (detaching) {
57954					detach(div);
57955				}
57956
57957				if_blocks[current_block_type_index].d();
57958				if (if_block1) if_block1.d();
57959			}
57960		};
57961	}
57962
57963	function instance$I($$self, $$props, $$invalidate) {
57964		let { text } = $$props;
57965		let { message } = $$props;
57966		let { onClick } = $$props;
57967		let { error = null } = $$props;
57968		let { delayMs } = $$props;
57969		let { isPaymentForm = false } = $$props;
57970		let showMessage = false;
57971
57972		const linkClick_handler = () => {
57973			if (message) {
57974				$$invalidate(6, showMessage = true);
57975				setTimeout(() =>
57975 $$invalidate(6, showMessage = false), delayMs);
57976			}
57977		};
57978
57979		$$self.$$set = $$props => {
57980			if ('text' in $$props) $$invalidate(0, text = $$props.text);
57981			if ('message' in $$props) $$invalidate(1, message = $$props.message);
57982			if ('onClick' in $$props) $$invalidate(2, onClick = $$props.onClick);
57983			if ('error' in $$props) $$invalidate(3, error = $$props.error);
57984			if ('delayMs' in $$props) $$invalidate(4, delayMs = $$props.delayMs);
57985			if ('isPaymentForm' in $$props) $$invalidate(5, isPaymentForm = $$props.isPaymentForm);
57986		};
57987
57988		return [
57989			text,
57990			message,
57991			onClick,
57992			error,
57993			delayMs,
57994			isPaymentForm,
57995			showMessage,
57996			linkClick_handler
57997		];
57998	}
57999
58000	class ResendLoginLink extends SvelteComponent {
58001		constructor(options) {
58002			super();
58003
58004			init(this, options, instance$I, create_fragment$J, safe_not_equal, {
58005				text: 0,
58006				message: 1,
58007				onClick: 2,
58008				error: 3,
58009				delayMs: 4,
58010				isPaymentForm: 5
58011			});
58012		}
58013	}
58014
58015	const factory$h = {
58016	    matches: (sectionElement) => sectionElement.type === elementTypes.RESEND_LOGIN_LINK,
58017	    create: (form, formState, formActions, elementConfig) => ({
58018	        component: ResendLoginLink,
58019	        props: {
58020	            text: elementConfig.text,
58021	            message: elementConfig.message,
58022	            delayMs: form.environment.reduceDelays ? 1 : 3000,
58023	            isPaymentForm: form.formType === FormType.PAYMENT,
58024	            onClick: async () => {
58025	                logDataLayerEvent(form, 'zephr_form_button_press', {
58026	                    sectionId: formState.currentSection.type,
58027	                    buttonType: 'RESEND_LOGIN_LINK'
58028	                });
58029	                await sendLink(form, 'login', formState.emailAddress, formActions);
58030	            }
58031	        }
58032	    })
58033	};
58034
58035	const oauthProviderWindowFeatures = "menubar=no,location=yes,resizable=no,scrollbars=no,status=no,width=500,height=600";
58036	const useOAuthProvider = (provider, form, formActions) => {
58037	    formActions.updateFormState({
58038	        socialSigninError: undefined
58039	    });
58040	    window.open(`${form.environment.apiUrlBase ?? ""}/blaize/oauth/${provider}`, provider + " sign-in", oauthProviderWindowFeatures);
58041	    const listener = messageAction(form, formActions);
58042	    window.zephrOAuthListener = listener;
58043	    window.addEventListener("message", listener);
58044	};
58045	const messageAction = (form, formActions) => (message) => {
58046	    if (!message?.data?.fromZephr) {
58047	        return;
58048	    }
58049	    window.removeEventListener("message", window.zephrOAuthListener);
58050	    form.environment.debugLogging && console.log("Social signin message:", message);
58051	    if (message.data.action === "register") {
58052	        // This is a fresh user who is registering, they may need to add some required attributes first.
58053	        // If not, register immediately.
58054	        const newFormState = formActions.updateFormState({
58055	            emailAddress: message.data.identifier,
58056	            socialSigninToken: message.data.stateKey,
58057	            userAttributes: message.data.userAttributes ?? {},
58058	            socialSignin: true,
58059	            userExists: false,
58060	            emailIsContact: undefined
58061	        });
58062	        if (formConfigAs(form).useVerificationCodes) {
58063	            void send2FaCode(form, newFormState, formActions);
58064	        }
58065	        void moveToNextSection(form, newFormState, formActions);
58066	    }
58067	    else if (message.data.action == "otp") {
58068	        // Already registered user and verification via OTP is needed
58069	        formActions.updateFormState({
58070	            emailAddress: message.data.identifier,
58071	            socialSigninToken: message.data.stateKey,
58072	            userAttributes: message.data.userAttributes ?? {},
58073	            socialSignin: true,
58074	            userExists: true,
58075	            emailIsContact: false
58076	        });
58077	        formActions.jumpToSection(sectionTypes.VERIFICATION_CODE_LOGIN.type);
58078	    }
58079	    else if (message.data.action === "login") {
58080	        // Already registered user who is now logged in.
58081	        document.cookie = message.data.cookie;
58082	        formActions.updateFormState({
58083	            socialSignin: true,
58084	            userExists: true,
58085	            loginRegistrationComplete: true,
58086	            emailIsContact: false
58087	        });
58088	        void formActions.onEvent(FormEvent.LOGIN_REGISTRATION_COMPLETE);
58089	    }
58090	    else {
58091	        // Failure
58092	        formActions.updateFormState({
58093	            socialSigninError: message.data.message ?? "Something went wrong. Please try again later!"
58094	        });
58095	    }
58096	};
58097
58098	var faMicrosoft = {
58099	  prefix: 'fab',
58100	  iconName: 'microsoft',
58101	  icon: [448, 512, [], "f3ca", "M0 32h214.6v214.6H0V32zm233.4 0H448v214.6H233.4V32zM0 265.4h214.6V480H0V265.4zm233.4 0H448V480H233.4V265.4z"]
58102	};
58103	var faApple = {
58104	  prefix: 'fab',
58105	  iconName: 'apple',
58106	  icon: [384, 512, [], "f179", "M318.7 268.7c-.2-36.7 16.4-64.4 50-84.8-18.8-26.9-47.2-41.7-84.7-44.6-35.5-2.8-74.3 20.7-88.5 20.7-15 0-49.4-19.7-76.4-19.7C63.3 141.2 4 184.8 4 273.5q0 39.3 14.4 81.2c12.8 36.7 59 126.7 107.2 125.2 25.2-.6 43-17.9 75.8-17.9 31.8 0 48.3 17.9 76.4 17.9 48.6-.7 90.4-82.5 102.6-119.3-65.2-30.7-61.7-90-61.7-91.9zm-56.6-164.2c27.3-32.4 24.8-61.9 24-72.5-24.1 1.4-52 16.4-67.9 34.9-17.5 19.8-27.8 44.3-25.6 71.9 26.1 2 49.9-11.4 69.5-34.3z"]
58107	};
58108	var faLinkedin = {
58109	  prefix: 'fab',
58110	  iconName: 'linkedin',
58111	  icon: [448, 512, [], "f08c", "M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"]
58112	};
58113	var faFacebook = {
58114	  prefix: 'fab',
58115	  iconName: 'facebook',
58116	  icon: [512, 512, [62000], "f09a", "M512 256C512 114.6 397.4 0 256 0S0 114.6 0 256C0 376 82.7 476.8 194.2 504.5V334.2H141.4V256h52.8V222.3c0-87.1 39.4-127.5 125-127.5c16.2 0 44.2 3.2 55.7 6.4V172c-6-.6-16.5-1-29.6-1c-42 0-58.2 15.9-58.2 57.2V256h83.6l-14.4 78.2H287V510.1C413.8 494.8 512 386.9 512 256h0z"]
58117	};
58118	var faTwitter = {
58119	  prefix: 'fab',
58120	  iconName: 'twitter',
58121	  icon: [512, 512, [], "f099", "M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"]
58122	};
58123
58124	/* src/components/elements/socialSignIn/GoogleLogo.svelte generated by Svelte v4.2.12 */
58125
58126	function create_fragment$I(ctx) {
58127		let svg;
58128		let path0;
58129		let path1;
58130		let path2;
58131		let path3;
58132
58133		return {
58134			c() {
58135				svg = svg_element("svg");
58136				path0 = svg_element("path");
58137				path1 = svg_element("path");
58138				path2 = svg_element("path");
58139				path3 = svg_element("path");
58140				attr(path0, "d", "M533.5 278.4c0-18.5-1.5-37.1-4.7-55.3H272.1v104.8h147c-6.1 33.8-25.7 63.7-54.4 82.7v68h87.7c51.5-47.4 81.1-117.4 81.1-200.2z");
58141				attr(path0, "fill", "#4285f4");
58142				attr(path1, "d", "M272.1 544.3c73.4 0 135.3-24.1 180.4-65.7l-87.7-68c-24.4 16.6-55.9 26-92.6 26-71 0-131.2-47.9-152.8-112.3H28.9v70.1c46.2 91.9 140.3 149.9 243.2 149.9z");
58143				attr(path1, "fill", "#34a853");
58144				attr(path2, "d", "M119.3 324.3c-11.4-33.8-11.4-70.4 0-104.2V150H28.9c-38.6 76.9-38.6 167.5 0 244.4l90.4-70.1z");
58145				attr(path2, "fill", "#fbbc04");
58146				attr(path3, "d", "M272.1 107.7c38.8-.6 76.3 14 104.4 40.8l77.7-77.7C405 24.6 339.7-.8 272.1 0 169.2 0 75.1 58 28.9 150l90.4 70.1c21.5-64.5 81.8-112.4 152.8-112.4z");
58147				attr(path3, "fill", "#ea4335");
58148				attr(svg, "class", "zephr-form-social-sign-in-icon zephr-form-google-icon svelte-aktnoc");
58149				attr(svg, "viewBox", "0 0 533.5 544.3");
58150				attr(svg, "xmlns", "http://www.w3.org/2000/svg");
58151			},
58152			m(target, anchor) {
58153				insert(target, svg, anchor);
58154				append(svg, path0);
58155				append(svg, path1);
58156				append(svg, path2);
58157				append(svg, path3);
58158			},
58159			p: noop,
58160			i: noop,
58161			o: noop,
58162			d(detaching) {
58163				if (detaching) {
58164					detach(svg);
58165				}
58166			}
58167		};
58168	}
58169
58170	class GoogleLogo extends SvelteComponent {
58171		constructor(options) {
58172			super();
58173			init(this, options, null, create_fragment$I, safe_not_equal, {});
58174		}
58175	}
58176
58177	/* src/components/elements/socialSignIn/SocialSignIn.svelte generated by Svelte v4.2.12 */
58178
58179	function get_each_context$d(ctx, list, i) {
58180		const child_ctx = ctx.slice();
58181		child_ctx[8] = list[i];
58182		return child_ctx;
58183	}
58184
58185	// (30:2) {#if config[option] === true && option !== 'labelText' && option !== 'allowEmptyLabel'}
58186	function create_if_block_1$n(ctx) {
58187		let button;
58188		let span1;
58189		let span0;
58190		let current_block_type_index;
58191		let if_block;
58192		let t0;
58193		let t1;
58194		let t2;
58195		let t3_value = /*option*/ ctx[8] + "";
58196		let t3;
58197		let current;
58198		let mounted;
58199		let dispose;
58200		const if_block_creators = [create_if_block_2$f, create_else_block$5];
58201		const if_blocks = [];
58202
58203		function select_block_type(ctx, dirty) {
58204			if (/*option*/ ctx[8] === "Google") return 0;
58205			return 1;
58206		}
58207
58208		current_block_type_index = select_block_type(ctx);
58209		if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
58210
58211		function click_handler() {
58212			return /*click_handler*/ ctx[6](/*option*/ ctx[8]);
58213		}
58214
58215		return {
58216			c() {
58217				button = element("button");
58218				span1 = element("span");
58219				span0 = element("span");
58220				if_block.c();
58221				t0 = space();
58222				t1 = text(/*labelText*/ ctx[4]);
58223				t2 = space();
58224				t3 = text(t3_value);
58225				attr(span0, "class", "zephr-form-social-sign-in-icon svelte-1e2xtn4");
58226				toggle_class(span0, "zephr-payment-form-social-sign-in-icon", /*isPaymentForm*/ ctx[3]);
58227				attr(span1, "class", "zephr-form-flex-container zephr-form-social-sign-in svelte-1e2xtn4");
58228				toggle_class(span1, "zephr-payment-form-flex-container", /*isPaymentForm*/ ctx[3]);
58229				toggle_class(span1, "zephr-payment-form-social-sign-in", /*isPaymentForm*/ ctx[3]);
58230				attr(button, "type", "button");
58231				attr(button, "class", "zephr-form-button zephr-form-social-sign-in-button svelte-1e2xtn4");
58232				toggle_class(button, "zephr-payment-form-button", /*isPaymentForm*/ ctx[3]);
58233				toggle_class(button, "zephr-payment-form-social-sign-in-button", /*isPaymentForm*/ ctx[3]);
58234			},
58235			m(target, anchor) {
58236				insert(target, button, anchor);
58237				append(button, span1);
58238				append(span1, span0);
58239				if_blocks[current_block_type_index].m(span0, null);
58240				append(span1, t0);
58241				append(span1, t1);
58242				append(span1, t2);
58243				append(span1, t3);
58244				current = true;
58245
58246				if (!mounted) {
58247					dispose = listen(button, "click", prevent_default(click_handler));
58248					mounted = true;
58249				}
58250			},
58251			p(new_ctx, dirty) {
58252				ctx = new_ctx;
58253				let previous_block_index = current_block_type_index;
58254				current_block_type_index = select_block_type(ctx);
58255
58256				if (current_block_type_index === previous_block_index) {
58257					if_blocks[current_block_type_index].p(ctx, dirty);
58258				} else {
58259					group_outros();
58260
58261					transition_out(if_blocks[previous_block_index], 1, 1, () => {
58262						if_blocks[previous_block_index] = null;
58263					});
58264
58265					check_outros();
58266					if_block = if_blocks[current_block_type_index];
58267
58268					if (!if_block) {
58269						if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
58270						if_block.c();
58271					} else {
58272						if_block.p(ctx, dirty);
58273					}
58274
58275					transition_in(if_block, 1);
58276					if_block.m(span0, null);
58277				}
58278
58279				if (!current || dirty & /*isPaymentForm*/ 8) {
58280					toggle_class(span0, "zephr-payment-form-social-sign-in-icon", /*isPaymentForm*/ ctx[3]);
58281				}
58282
58283				if ((!current || dirty & /*config*/ 1) && t3_value !== (t3_value = /*option*/ ctx[8] + "")) set_data(t3, t3_value);
58284
58285				if (!current || dirty & /*isPaymentForm*/ 8) {
58286					toggle_class(span1, "zephr-payment-form-flex-container", /*isPaymentForm*/ ctx[3]);
58287				}
58288
58289				if (!current || dirty & /*isPaymentForm*/ 8) {
58290					toggle_class(span1, "zephr-payment-form-social-sign-in", /*isPaymentForm*/ ctx[3]);
58291				}
58292
58293				if (!current || dirty & /*isPaymentForm*/ 8) {
58294					toggle_class(button, "zephr-payment-form-button", /*isPaymentForm*/ ctx[3]);
58295				}
58296
58297				if (!current || dirty & /*isPaymentForm*/ 8) {
58298					toggle_class(button, "zephr-payment-form-social-sign-in-button", /*isPaymentForm*/ ctx[3]);
58299				}
58300			},
58301			i(local) {
58302				if (current) return;
58303				transition_in(if_block);
58304				current = true;
58305			},
58306			o(local) {
58307				transition_out(if_block);
58308				current = false;
58309			},
58310			d(detaching) {
58311				if (detaching) {
58312					detach(button);
58313				}
58314
58315				if_blocks[current_block_type_index].d();
58316				mounted = false;
58317				dispose();
58318			}
58319		};
58320	}
58321
58322	// (49:10) {:else}
58323	function create_else_block$5(ctx) {
58324		let fa;
58325		let current;
58326		const fa_spread_levels = [/*getProviderIcon*/ ctx[5](/*option*/ ctx[8])];
58327		let fa_props = {};
58328
58329		for (let i = 0; i < fa_spread_levels.length; i += 1) {
58330			fa_props = assign(fa_props, fa_spread_levels[i]);
58331		}
58332
58333		fa = new Fa({ props: fa_props });
58334
58335		return {
58336			c() {
58337				create_component(fa.$$.fragment);
58338			},
58339			m(target, anchor) {
58340				mount_component(fa, target, anchor);
58341				current = true;
58342			},
58343			p(ctx, dirty) {
58344				const fa_changes = (dirty & /*getProviderIcon, Object, config*/ 33)
58345				? get_spread_update(fa_spread_levels, [get_spread_object(/*getProviderIcon*/ ctx[5](/*option*/ ctx[8]))])
58346				: {};
58347
58348				fa.$set(fa_changes);
58349			},
58350			i(local) {
58351				if (current) return;
58352				transition_in(fa.$$.fragment, local);
58353				current = true;
58354			},
58355			o(local) {
58356				transition_out(fa.$$.fragment, local);
58357				current = false;
58358			},
58359			d(detaching) {
58360				destroy_component(fa, detaching);
58361			}
58362		};
58363	}
58364
58365	// (47:10) {#if option === "Google"}
58366	function create_if_block_2$f(ctx) {
58367		let googlelogo;
58368		let current;
58369		googlelogo = new GoogleLogo({});
58370
58371		return {
58372			c() {
58373				create_component(googlelogo.$$.fragment);
58374			},
58375			m(target, anchor) {
58376				mount_component(googlelogo, target, anchor);
58377				current = true;
58378			},
58379			p: noop,
58380			i(local) {
58381				if (current) return;
58382				transition_in(googlelogo.$$.fragment, local);
58383				current = true;
58384			},
58385			o(local) {
58386				transition_out(googlelogo.$$.fragment, local);
58387				current = false;
58388			},
58389			d(detaching) {
58390				destroy_component(googlelogo, detaching);
58391			}
58392		};
58393	}
58394
58395	// (29:0) {#each Object.keys(config) as option}
58396	function create_each_block$d(ctx) {
58397		let if_block_anchor;
58398		let current;
58399		let if_block = /*config*/ ctx[0][/*option*/ ctx[8]] === true && /*option*/ ctx[8] !== 'labelText' && /*option*/ ctx[8] !== 'allowEmptyLabel' && create_if_block_1$n(ctx);
58400
58401		return {
58402			c() {
58403				if (if_block) if_block.c();
58404				if_block_anchor = empty();
58405			},
58406			m(target, anchor) {
58407				if (if_block) if_block.m(target, anchor);
58408				insert(target, if_block_anchor, anchor);
58409				current = true;
58410			},
58411			p(ctx, dirty) {
58412				if (/*config*/ ctx[0][/*option*/ ctx[8]] === true && /*option*/ ctx[8] !== 'labelText' && /*option*/ ctx[8] !== 'allowEmptyLabel') {
58413					if (if_block) {
58414						if_block.p(ctx, dirty);
58415
58416						if (dirty & /*config*/ 1) {
58417							transition_in(if_block, 1);
58418						}
58419					} else {
58420						if_block = create_if_block_1$n(ctx);
58421						if_block.c();
58422						transition_in(if_block, 1);
58423						if_block.m(if_block_anchor.parentNode, if_block_anchor);
58424					}
58425				} else if (if_block) {
58426					group_outros();
58427
58428					transition_out(if_block, 1, 1, () => {
58429						if_block = null;
58430					});
58431
58432					check_outros();
58433				}
58434			},
58435			i(local) {
58436				if (current) return;
58437				transition_in(if_block);
58438				current = true;
58439			},
58440			o(local) {
58441				transition_out(if_block);
58442				current = false;
58443			},
58444			d(detaching) {
58445				if (detaching) {
58446					detach(if_block_anchor);
58447				}
58448
58449				if (if_block) if_block.d(detaching);
58450			}
58451		};
58452	}
58453
58454	// (58:0) {#if error}
58455	function create_if_block$x(ctx) {
58456		let errormessage;
58457		let current;
58458
58459		errormessage = new ErrorMessage({
58460				props: {
58461					error: /*error*/ ctx[2],
58462					isPaymentForm: /*isPaymentForm*/ ctx[3]
58463				}
58464			});
58465
58466		return {
58467			c() {
58468				create_component(errormessage.$$.fragment);
58469			},
58470			m(target, anchor) {
58471				mount_component(errormessage, target, anchor);
58472				current = true;
58473			},
58474			p(ctx, dirty) {
58475				const errormessage_changes = {};
58476				if (dirty & /*error*/ 4) errormessage_changes.error = /*error*/ ctx[2];
58477				if (dirty & /*isPaymentForm*/ 8) errormessage_changes.isPaymentForm = /*isPaymentForm*/ ctx[3];
58478				errormessage.$set(errormessage_changes);
58479			},
58480			i(local) {
58481				if (current) return;
58482				transition_in(errormessage.$$.fragment, local);
58483				current = true;
58484			},
58485			o(local) {
58486				transition_out(errormessage.$$.fragment, local);
58487				current = false;
58488			},
58489			d(detaching) {
58490				destroy_component(errormessage, detaching);
58491			}
58492		};
58493	}
58494
58495	function create_fragment$H(ctx) {
58496		let t;
58497		let if_block_anchor;
58498		let current;
58499		let each_value = ensure_array_like(Object.keys(/*config*/ ctx[0]));
58500		let each_blocks = [];
58501
58502		for (let i = 0; i < each_value.length; i += 1) {
58503			each_blocks[i] = create_each_block$d(get_each_context$d(ctx, each_value, i));
58504		}
58505
58506		const out = i => transition_out(each_blocks[i], 1, 1, () => {
58507			each_blocks[i] = null;
58508		});
58509
58510		let if_block = /*error*/ ctx[2] && create_if_block$x(ctx);
58511
58512		return {
58513			c() {
58514				for (let i = 0; i < each_blocks.length; i += 1) {
58515					each_blocks[i].c();
58516				}
58517
58518				t = space();
58519				if (if_block) if_block.c();
58520				if_block_anchor = empty();
58521			},
58522			m(target, anchor) {
58523				for (let i = 0; i < each_blocks.length; i += 1) {
58524					if (each_blocks[i]) {
58525						each_blocks[i].m(target, anchor);
58526					}
58527				}
58528
58529				insert(target, t, anchor);
58530				if (if_block) if_block.m(target, anchor);
58531				insert(target, if_block_anchor, anchor);
58532				current = true;
58533			},
58534			p(ctx, [dirty]) {
58535				if (dirty & /*isPaymentForm, onSelectProvider, Object, config, labelText, getProviderIcon*/ 59) {
58536					each_value = ensure_array_like(Object.keys(/*config*/ ctx[0]));
58537					let i;
58538
58539					for (i = 0; i < each_value.length; i += 1) {
58540						const child_ctx = get_each_context$d(ctx, each_value, i);
58541
58542						if (each_blocks[i]) {
58543							each_blocks[i].p(child_ctx, dirty);
58544							transition_in(each_blocks[i], 1);
58545						} else {
58546							each_blocks[i] = create_each_block$d(child_ctx);
58547							each_blocks[i].c();
58548							transition_in(each_blocks[i], 1);
58549							each_blocks[i].m(t.parentNode, t);
58550						}
58551					}
58552
58553					group_outros();
58554
58555					for (i = each_value.length; i < each_blocks.length; i += 1) {
58556						out(i);
58557					}
58558
58559					check_outros();
58560				}
58561
58562				if (/*error*/ ctx[2]) {
58563					if (if_block) {
58564						if_block.p(ctx, dirty);
58565
58566						if (dirty & /*error*/ 4) {
58567							transition_in(if_block, 1);
58568						}
58569					} else {
58570						if_block = create_if_block$x(ctx);
58571						if_block.c();
58572						transition_in(if_block, 1);
58573						if_block.m(if_block_anchor.parentNode, if_block_anchor);
58574					}
58575				} else if (if_block) {
58576					group_outros();
58577
58578					transition_out(if_block, 1, 1, () => {
58579						if_block = null;
58580					});
58581
58582					check_outros();
58583				}
58584			},
58585			i(local) {
58586				if (current) return;
58587
58588				for (let i = 0; i < each_value.length; i += 1) {
58589					transition_in(each_blocks[i]);
58590				}
58591
58592				transition_in(if_block);
58593				current = true;
58594			},
58595			o(local) {
58596				each_blocks = each_blocks.filter(Boolean);
58597
58598				for (let i = 0; i < each_blocks.length; i += 1) {
58599					transition_out(each_blocks[i]);
58600				}
58601
58602				transition_out(if_block);
58603				current = false;
58604			},
58605			d(detaching) {
58606				if (detaching) {
58607					detach(t);
58608					detach(if_block_anchor);
58609				}
58610
58611				destroy_each(each_blocks, detaching);
58612				if (if_block) if_block.d(detaching);
58613			}
58614		};
58615	}
58616
58617	function instance$H($$self, $$props, $$invalidate) {
58618		let { config } = $$props;
58619		let { onSelectProvider } = $$props;
58620		let { error = null } = $$props;
58621		let { isPaymentForm = false } = $$props;
58622		const defaultLabelText = config.allowEmptyLabel ? "" : "Continue with";
58623		const labelText = config.labelText ? config.labelText : defaultLabelText;
58624
58625		const getProviderIcon = provider => {
58626			switch (provider) {
58627				case "Facebook":
58628					return {
58629						icon: faFacebook,
58630						color: "#1877f2",
58631						size: "lg"
58632					};
58633				case "LinkedIn":
58634					return {
58635						icon: faLinkedin,
58636						color: "#0a66c2",
58637						size: "lg"
58638					};
58639				case "Apple":
58640					return { icon: faApple, color: "#000", size: "lg" };
58641				case "Microsoft":
58642					return {
58643						icon: faMicrosoft,
58644						color: "#00a4ef",
58645						size: "lg"
58646					};
58647				case "Twitter":
58648					return {
58649						icon: faTwitter,
58650						color: "#08a0e9",
58651						size: "lg"
58652					};
58653				default:
58654					return {
58655						icon: faFacebook,
58656						color: "#1877f2",
58657						size: "lg"
58658					};
58659			}
58660		};
58661
58662		const click_handler = option => onSelectProvider(option.toLowerCase());
58663
58664		$$self.$$set = $$props => {
58665			if ('config' in $$props) $$invalidate(0, config = $$props.config);
58666			if ('onSelectProvider' in $$props) $$invalidate(1, onSelectProvider = $$props.onSelectProvider);
58667			if ('error' in $$props) $$invalidate(2, error = $$props.error);
58668			if ('isPaymentForm' in $$props) $$invalidate(3, isPaymentForm = $$props.isPaymentForm);
58669		};
58670
58671		return [
58672			config,
58673			onSelectProvider,
58674			error,
58675			isPaymentForm,
58676			labelText,
58677			getProviderIcon,
58678			click_handler
58679		];
58680	}
58681
58682	class SocialSignIn extends SvelteComponent {
58683		constructor(options) {
58684			super();
58685
58686			init(this, options, instance$H, create_fragment$H, safe_not_equal, {
58687				config: 0,
58688				onSelectProvider: 1,
58689				error: 2,
58690				isPaymentForm: 3
58691			});
58692		}
58693	}
58694
58695	const factory$g = {
58696	    matches: (sectionElement) => sectionElement.type === elementTypes.SOCIAL_SIGNIN,
58697	    create: (form, _, formActions, elementConfig) => {
58698	        const { enabled: __, hide: ___, show: ____, ...cleanedConfig } = elementConfig ?? {};
58699	        return ({
58700	            component: SocialSignIn,
58701	            props: {
58702	                config: cleanedConfig,
58703	                isPaymentForm: form.formType === FormType.PAYMENT,
58704	                onSelectProvider: (provider) => useOAuthProvider(provider, form, formActions)
58705	            }
58706	        });
58707	    }
58708	};
58709
58710	const verifyingPromoCodeBusyKey = "promo-code";
58711	const runPromoCodeValidation = async (form, formState, formActions) => {
58712	    formActions.updateFormState({
58713	        promoCodeValid: undefined,
58714	        serverErrors: [],
58715	        discountedPlanPrices: []
58716	    });
58717	    const providerConfig = paymentProviderFor(form.organisationConfiguration.paymentProvider);
58718	    const response = await request(providerConfig.promoCodeCheckPath, {
58719	        method: 'POST',
58720	        bodyObject: {
58721	            promoCode: formState.promoCode,
58722	            paymentOptions: formConfigAs(form).paymentOptions
58723	        }
58724	    }, formActions, verifyingPromoCodeBusyKey);
58725	    if (!response.ok) {
58726	        let serverError;
58727	        if (response.status === 403) {
58728	            const json = await response.json();
58729	            if (json?.code === 2 || json?.code === 3) {
58730	                serverError = ServerError.PROMO_CODE_EXPIRED_ERROR;
58731	            }
58732	            else {
58733	                serverError = ServerError.PROMO_CODE_INVALID_ERROR;
58734	            }
58735	        }
58736	        else {
58737	            serverError = ServerError.PROMO_CODE_INVALID_ERROR;
58738	            console.error("Unknown error evaluating promo code", response);
58739	        }
58740	        logDataLayerEvent(form, 'zephr_form_error', {
58741	            error: ServerError[serverError],
58742	        });
58743	        return Promise.resolve(formActions.updateFormState({
58744	            promoCodeValid: false,
58745	            serverErrors: [serverError],
58746	            discountedPlanPrices: []
58747	        }));
58748	    }
58749	    const json = await response.json();
58750	    const discountedPlanPrices = json.paymentOptions.map(p => ({
58751	        planSlug: p.slug,
58752	        productId: p.productId,
58753	        discountPrice: p.discountPrice
58754	    }));
58755	    if (!discountedPlanPrices.find(discount => discount.planSlug === formState.paymentOption.slug && discount.productId === formState.paymentOption.productId)) {
58756	        logDataLayerEvent(form, 'zephr_form_error', {
58757	            error: ServerError[ServerError.PROMO_CODE_NOT_VALID_FOR_PLAN_ERROR],
58758	        });
58759	        return Promise.resolve(formActions.updateFormState({
58760	            promoCodeValid: false,
58761	            serverErrors: [ServerError.PROMO_CODE_NOT_VALID_FOR_PLAN_ERROR],
58762	            discountedPlanPrices: discountedPlanPrices
58763	        }));
58764	    }
58765	    return Promise.resolve(formActions.updateFormState({
58766	        promoCodeValid: true,
58767	        serverErrors: [],
58768	        discountedPlanPrices: discountedPlanPrices
58769	    }));
58770	};
58771	/*
58772	If we're using mobile payment and we're on the payment screen,
58773	we'll need to reload the mobile payment button so it has the discounted amount
58774	and make sure they can't press the button while the button is updating
58775	*/
58776	const afterPromoCodeChange = async (form, formState, formActions) => {
58777	    const formStateWithAddons = await getProductAddons(form, formState, formActions, true);
58778	    const formStateWithPrices = await calculatePrices(form, formStateWithAddons, formActions);
58779	    if (formState.currentSection.elements.some(element => element.type === elementTypes.MOBILE_PAYMENT && element.config?.enabled !== false)) {
58780	        formActions.incrementRequestCount();
58781	        try {
58782	            // Only reload mobile payment service if the provider actually supports mobile payments
58783	            if (supportsMobilePayments(form.organisationConfiguration.paymentProvider)) {
58784	                await mobilePaymentServiceFor(form.organisationConfiguration.paymentProvider).loader(form, formStateWithPrices, formActions);
58785	            }
58786	        }
58787	        finally {
58788	            formActions.decrementRequestCount();
58789	        }
58790	    }
58791	};
58792	const validatePromoCode = async (form, formState, formActions) => {
58793	    const providerConfig = paymentProviderFor(form.organisationConfiguration.paymentProvider);
58794	    if (!providerConfig.hasPromoCodes(form)) {
58795	        return formState;
58796	    }
58797	    if (providerConfig?.promoCodeServiceOverride) {
58798	        return providerConfig.promoCodeServiceOverride(form, formState, formActions);
58799	    }
58800	    return runPromoCodeValidation(form, formState, formActions)
58801	        .then((updatedFormState) => afterPromoCodeChange(form, updatedFormState, formActions));
58802	};
58803
58804	/* src/components/elements/paymentSummary/PaymentSummary.svelte generated by Svelte v4.2.12 */
58805
58806	function get_each_context$c(ctx, list, i) {
58807		const child_ctx = ctx.slice();
58808		child_ctx[36] = list[i];
58809		return child_ctx;
58810	}
58811
58812	function get_each_context_1$3(ctx, list, i) {
58813		const child_ctx = ctx.slice();
58814		child_ctx[39] = list[i];
58815		return child_ctx;
58816	}
58817
58818	function get_each_context_2(ctx, list, i) {
58819		const child_ctx = ctx.slice();
58820		child_ctx[42] = list[i];
58821		return child_ctx;
58822	}
58823
58824	// (52:2) {#each chargeItems as chargeItem}
58825	function create_each_block_2(ctx) {
58826		let div1;
58827		let span0;
58828		let t0_value = /*chargeItem*/ ctx[42].label + "";
58829		let t0;
58830		let t1;
58831		let div0;
58832		let span1;
58833		let t2_value = /*chargeItem*/ ctx[42].priceFormattedString + "";
58834		let t2;
58835
58836		return {
58837			c() {
58838				div1 = element("div");
58839				span0 = element("span");
58840				t0 = text(t0_value);
58841				t1 = space();
58842				div0 = element("div");
58843				span1 = element("span");
58844				t2 = text(t2_value);
58845				attr(span0, "class", "zephr-form-summary-charge-description zephr-payment-form-summary-charge-description svelte-xf8v79");
58846				attr(div0, "class", "zephr-form-summary-line-right zephr-payment-form-summary-line-right svelte-xf8v79");
58847				attr(div1, "class", "zephr-form-charge-line zephr-payment-form-charge-line svelte-xf8v79");
58848			},
58849			m(target, anchor) {
58850				insert(target, div1, anchor);
58851				append(div1, span0);
58852				append(span0, t0);
58853				append(div1, t1);
58854				append(div1, div0);
58855				append(div0, span1);
58856				append(span1, t2);
58857			},
58858			p(ctx, dirty) {
58859				if (dirty[0] & /*chargeItems*/ 524288 && t0_value !== (t0_value = /*chargeItem*/ ctx[42].label + "")) set_data(t0, t0_value);
58860				if (dirty[0] & /*chargeItems*/ 524288 && t2_value !== (t2_value = /*chargeItem*/ ctx[42].priceFormattedString + "")) set_data(t2, t2_value);
58861			},
58862			d(detaching) {
58863				if (detaching) {
58864					detach(div1);
58865				}
58866			}
58867		};
58868	}
58869
58870	// (65:2) {#if paymentProvider === 'braintree' && discounts.length > 0}
58871	function create_if_block_14$2(ctx) {
58872		let each_1_anchor;
58873		let each_value_1 = ensure_array_like(/*discounts*/ ctx[23]);
58874		let each_blocks = [];
58875
58876		for (let i = 0; i < each_value_1.length; i += 1) {
58877			each_blocks[i] = create_each_block_1$3(get_each_context_1$3(ctx, each_value_1, i));
58878		}
58879
58880		return {
58881			c() {
58882				for (let i = 0; i < each_blocks.length; i += 1) {
58883					each_blocks[i].c();
58884				}
58885
58886				each_1_anchor = empty();
58887			},
58888			m(target, anchor) {
58889				for (let i = 0; i < each_blocks.length; i += 1) {
58890					if (each_blocks[i]) {
58891						each_blocks[i].m(target, anchor);
58892					}
58893				}
58894
58895				insert(target, each_1_anchor, anchor);
58896			},
58897			p(ctx, dirty) {
58898				if (dirty[0] & /*discounts*/ 8388608) {
58899					each_value_1 = ensure_array_like(/*discounts*/ ctx[23]);
58900					let i;
58901
58902					for (i = 0; i < each_value_1.length; i += 1) {
58903						const child_ctx = get_each_context_1$3(ctx, each_value_1, i);
58904
58905						if (each_blocks[i]) {
58906							each_blocks[i].p(child_ctx, dirty);
58907						} else {
58908							each_blocks[i] = create_each_block_1$3(child_ctx);
58909							each_blocks[i].c();
58910							each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor);
58911						}
58912					}
58913
58914					for (; i < each_blocks.length; i += 1) {
58915						each_blocks[i].d(1);
58916					}
58917
58918					each_blocks.length = each_value_1.length;
58919				}
58920			},
58921			d(detaching) {
58922				if (detaching) {
58923					detach(each_1_anchor);
58924				}
58925
58926				destroy_each(each_blocks, detaching);
58927			}
58928		};
58929	}
58930
58931	// (66:4) {#each discounts as discount}
58932	function create_each_block_1$3(ctx) {
58933		let div2;
58934		let div0;
58935		let t0_value = /*discount*/ ctx[39].description + "";
58936		let t0;
58937		let t1;
58938		let div1;
58939		let t2_value = /*discount*/ ctx[39].formattedAmount + "";
58940		let t2;
58941		let t3;
58942
58943		return {
58944			c() {
58945				div2 = element("div");
58946				div0 = element("div");
58947				t0 = text(t0_value);
58948				t1 = space();
58949				div1 = element("div");
58950				t2 = text(t2_value);
58951				t3 = space();
58952				attr(div0, "class", "zephr-payment-form-summary-discount-description");
58953				attr(div1, "class", "zephr-form-summary-line-right zephr-payment-form-summary-line-right discount-value svelte-xf8v79");
58954				attr(div2, "class", "zephr-form-discount-line zephr-payment-form-discount-line svelte-xf8v79");
58955			},
58956			m(target, anchor) {
58957				insert(target, div2, anchor);
58958				append(div2, div0);
58959				append(div0, t0);
58960				append(div2, t1);
58961				append(div2, div1);
58962				append(div1, t2);
58963				append(div2, t3);
58964			},
58965			p(ctx, dirty) {
58966				if (dirty[0] & /*discounts*/ 8388608 && t0_value !== (t0_value = /*discount*/ ctx[39].description + "")) set_data(t0, t0_value);
58967				if (dirty[0] & /*discounts*/ 8388608 && t2_value !== (t2_value = /*discount*/ ctx[39].formattedAmount + "")) set_data(t2, t2_value);
58968			},
58969			d(detaching) {
58970				if (detaching) {
58971					detach(div2);
58972				}
58973			}
58974		};
58975	}
58976
58977	// (78:2) {#if tax}
58978	function create_if_block_13$2(ctx) {
58979		let div2;
58980		let div0;
58981		let t0;
58982		let t1;
58983		let div1;
58984		let t2;
58985
58986		return {
58987			c() {
58988				div2 = element("div");
58989				div0 = element("div");
58990				t0 = text(/*taxLabel*/ ctx[22]);
58991				t1 = space();
58992				div1 = element("div");
58993				t2 = text(/*tax*/ ctx[21]);
58994				attr(div0, "class", "zephr-form-summary-charge-description zephr-payment-form-summary-charge-description svelte-xf8v79");
58995				attr(div1, "class", "zephr-form-summary-line-right zephr-payment-form-summary-line-right svelte-xf8v79");
58996				attr(div2, "class", "zephr-form-charge-line zephr-payment-form-charge-line svelte-xf8v79");
58997			},
58998			m(target, anchor) {
58999				insert(target, div2, anchor);
59000				append(div2, div0);
59001				append(div0, t0);
59002				append(div2, t1);
59003				append(div2, div1);
59004				append(div1, t2);
59005			},
59006			p(ctx, dirty) {
59007				if (dirty[0] & /*taxLabel*/ 4194304) set_data(t0, /*taxLabel*/ ctx[22]);
59008				if (dirty[0] & /*tax*/ 2097152) set_data(t2, /*tax*/ ctx[21]);
59009			},
59010			d(detaching) {
59011				if (detaching) {
59012					detach(div2);
59013				}
59014			}
59015		};
59016	}
59017
59018	// (88:2) {#each addons as addon}
59019	function create_each_block$c(ctx) {
59020		let div1;
59021		let span0;
59022		let t0_value = /*addon*/ ctx[36].label + "";
59023		let t0;
59024		let t1;
59025		let div0;
59026		let span1;
59027		let t2_value = /*addon*/ ctx[36].addonPrice + "";
59028		let t2;
59029
59030		return {
59031			c() {
59032				div1 = element("div");
59033				span0 = element("span");
59034				t0 = text(t0_value);
59035				t1 = space();
59036				div0 = element("div");
59037				span1 = element("span");
59038				t2 = text(t2_value);
59039				attr(div0, "class", "zephr-form-summary-line-right zephr-payment-form-summary-line-right svelte-xf8v79");
59040				attr(div1, "class", "zephr-form-addon-line zephr-payment-form-addon-line svelte-xf8v79");
59041			},
59042			m(target, anchor) {
59043				insert(target, div1, anchor);
59044				append(div1, span0);
59045				append(span0, t0);
59046				append(div1, t1);
59047				append(div1, div0);
59048				append(div0, span1);
59049				append(span1, t2);
59050			},
59051			p(ctx, dirty) {
59052				if (dirty[0] & /*addons*/ 262144 && t0_value !== (t0_value = /*addon*/ ctx[36].label + "")) set_data(t0, t0_value);
59053				if (dirty[0] & /*addons*/ 262144 && t2_value !== (t2_value = /*addon*/ ctx[36].addonPrice + "")) set_data(t2, t2_value);
59054			},
59055			d(detaching) {
59056				if (detaching) {
59057					detach(div1);
59058				}
59059			}
59060		};
59061	}
59062
59063	// (100:2) {#if allowPromoCodes}
59064	function create_if_block_2$e(ctx) {
59065		let t;
59066		let if_block1_anchor;
59067		let current;
59068		let if_block0 = !/*paymentProcessed*/ ctx[17] && !(/*showPromoCode*/ ctx[29] || /*promoCode*/ ctx[11]) && create_if_block_12$2(ctx);
59069		let if_block1 = (/*showPromoCode*/ ctx[29] || /*promoCode*/ ctx[11]) && create_if_block_3$a(ctx);
59070
59071		return {
59072			c() {
59073				if (if_block0) if_block0.c();
59074				t = space();
59075				if (if_block1) if_block1.c();
59076				if_block1_anchor = empty();
59077			},
59078			m(target, anchor) {
59079				if (if_block0) if_block0.m(target, anchor);
59080				insert(target, t, anchor);
59081				if (if_block1) if_block1.m(target, anchor);
59082				insert(target, if_block1_anchor, anchor);
59083				current = true;
59084			},
59085			p(ctx, dirty) {
59086				if (!/*paymentProcessed*/ ctx[17] && !(/*showPromoCode*/ ctx[29] || /*promoCode*/ ctx[11])) {
59087					if (if_block0) {
59088						if_block0.p(ctx, dirty);
59089					} else {
59090						if_block0 = create_if_block_12$2(ctx);
59091						if_block0.c();
59092						if_block0.m(t.parentNode, t);
59093					}
59094				} else if (if_block0) {
59095					if_block0.d(1);
59096					if_block0 = null;
59097				}
59098
59099				if (/*showPromoCode*/ ctx[29] || /*promoCode*/ ctx[11]) {
59100					if (if_block1) {
59101						if_block1.p(ctx, dirty);
59102
59103						if (dirty[0] & /*showPromoCode, promoCode*/ 536872960) {
59104							transition_in(if_block1, 1);
59105						}
59106					} else {
59107						if_block1 = create_if_block_3$a(ctx);
59108						if_block1.c();
59109						transition_in(if_block1, 1);
59110						if_block1.m(if_block1_anchor.parentNode, if_block1_anchor);
59111					}
59112				} else if (if_block1) {
59113					group_outros();
59114
59115					transition_out(if_block1, 1, 1, () => {
59116						if_block1 = null;
59117					});
59118
59119					check_outros();
59120				}
59121			},
59122			i(local) {
59123				if (current) return;
59124				transition_in(if_block1);
59125				current = true;
59126			},
59127			o(local) {
59128				transition_out(if_block1);
59129				current = false;
59130			},
59131			d(detaching) {
59132				if (detaching) {
59133					detach(t);
59134					detach(if_block1_anchor);
59135				}
59136
59137				if (if_block0) if_block0.d(detaching);
59138				if (if_block1) if_block1.d(detaching);
59139			}
59140		};
59141	}
59142
59143	// (101:4) {#if !paymentProcessed && !(showPromoCode || promoCode)}
59144	function create_if_block_12$2(ctx) {
59145		let button;
59146		let span;
59147		let t;
59148		let mounted;
59149		let dispose;
59150
59151		return {
59152			c() {
59153				button = element("button");
59154				span = element("span");
59155				t = text(/*promoCodeLinkText*/ ctx[4]);
59156				attr(button, "type", "button");
59157				attr(button, "class", "zephr-form-promo-activate-line zephr-payment-form-promo-activate-line svelte-xf8v79");
59158			},
59159			m(target, anchor) {
59160				insert(target, button, anchor);
59161				append(button, span);
59162				append(span, t);
59163
59164				if (!mounted) {
59165					dispose = listen(button, "click", /*click_handler*/ ctx[34]);
59166					mounted = true;
59167				}
59168			},
59169			p(ctx, dirty) {
59170				if (dirty[0] & /*promoCodeLinkText*/ 16) set_data(t, /*promoCodeLinkText*/ ctx[4]);
59171			},
59172			d(detaching) {
59173				if (detaching) {
59174					detach(button);
59175				}
59176
59177				mounted = false;
59178				dispose();
59179			}
59180		};
59181	}
59182
59183	// (110:4) {#if showPromoCode || promoCode}
59184	function create_if_block_3$a(ctx) {
59185		let div2;
59186		let div0;
59187		let current_block_type_index;
59188		let if_block0;
59189		let t0;
59190		let div1;
59191		let current_block_type_index_1;
59192		let if_block1;
59193		let div1_class_value;
59194		let t1;
59195		let if_block2_anchor;
59196		let current;
59197		const if_block_creators = [create_if_block_8$2, create_if_block_9$2];
59198		const if_blocks = [];
59199
59200		function select_block_type(ctx, dirty) {
59201			if (/*paymentProcessed*/ ctx[17] && /*promoCode*/ ctx[11]) return 0;
59202			if (!/*paymentProcessed*/ ctx[17]) return 1;
59203			return -1;
59204		}
59205
59206		if (~(current_block_type_index = select_block_type(ctx))) {
59207			if_block0 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
59208		}
59209
59210		const if_block_creators_1 = [create_if_block_5$6, create_if_block_7$2];
59211		const if_blocks_1 = [];
59212
59213		function select_block_type_2(ctx, dirty) {
59214			if (/*promoCodeValid*/ ctx[12]) return 0;
59215			if (!/*paymentProcessed*/ ctx[17]) return 1;
59216			return -1;
59217		}
59218
59219		if (~(current_block_type_index_1 = select_block_type_2(ctx))) {
59220			if_block1 = if_blocks_1[current_block_type_index_1] = if_block_creators_1[current_block_type_index_1](ctx);
59221		}
59222
59223		let if_block2 = /*error*/ ctx[14] && create_if_block_4$8(ctx);
59224
59225		return {
59226			c() {
59227				div2 = element("div");
59228				div0 = element("div");
59229				if (if_block0) if_block0.c();
59230				t0 = space();
59231				div1 = element("div");
59232				if (if_block1) if_block1.c();
59233				t1 = space();
59234				if (if_block2) if_block2.c();
59235				if_block2_anchor = empty();
59236				attr(div0, "class", "zephr-form-promo-input-container zephr-payment-form-promo-input-container svelte-xf8v79");
59237
59238				attr(div1, "class", div1_class_value = "" + (null_to_empty(/*promoCodeValid*/ ctx[12]
59239				? "zephr-form-summary-line-right zephr-payment-form-summary-line-right"
59240				: "zephr-form-summary-line-left zephr-payment-form-summary-line-left") + " svelte-xf8v79"));
59241
59242				attr(div2, "class", "zephr-form-promo-line zephr-payment-form-promo-line svelte-xf8v79");
59243			},
59244			m(target, anchor) {
59245				insert(target, div2, anchor);
59246				append(div2, div0);
59247
59248				if (~current_block_type_index) {
59249					if_blocks[current_block_type_index].m(div0, null);
59250				}
59251
59252				append(div2, t0);
59253				append(div2, div1);
59254
59255				if (~current_block_type_index_1) {
59256					if_blocks_1[current_block_type_index_1].m(div1, null);
59257				}
59258
59259				insert(target, t1, anchor);
59260				if (if_block2) if_block2.m(target, anchor);
59261				insert(target, if_block2_anchor, anchor);
59262				current = true;
59263			},
59264			p(ctx, dirty) {
59265				let previous_block_index = current_block_type_index;
59266				current_block_type_index = select_block_type(ctx);
59267
59268				if (current_block_type_index === previous_block_index) {
59269					if (~current_block_type_index) {
59270						if_blocks[current_block_type_index].p(ctx, dirty);
59271					}
59272				} else {
59273					if (if_block0) {
59274						group_outros();
59275
59276						transition_out(if_blocks[previous_block_index], 1, 1, () => {
59277							if_blocks[previous_block_index] = null;
59278						});
59279
59280						check_outros();
59281					}
59282
59283					if (~current_block_type_index) {
59284						if_block0 = if_blocks[current_block_type_index];
59285
59286						if (!if_block0) {
59287							if_block0 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
59288							if_block0.c();
59289						} else {
59290							if_block0.p(ctx, dirty);
59291						}
59292
59293						transition_in(if_block0, 1);
59294						if_block0.m(div0, null);
59295					} else {
59296						if_block0 = null;
59297					}
59298				}
59299
59300				let previous_block_index_1 = current_block_type_index_1;
59301				current_block_type_index_1 = select_block_type_2(ctx);
59302
59303				if (current_block_type_index_1 === previous_block_index_1) {
59304					if (~current_block_type_index_1) {
59305						if_blocks_1[current_block_type_index_1].p(ctx, dirty);
59306					}
59307				} else {
59308					if (if_block1) {
59309						group_outros();
59310
59311						transition_out(if_blocks_1[previous_block_index_1], 1, 1, () => {
59312							if_blocks_1[previous_block_index_1] = null;
59313						});
59314
59315						check_outros();
59316					}
59317
59318					if (~current_block_type_index_1) {
59319						if_block1 = if_blocks_1[current_block_type_index_1];
59320
59321						if (!if_block1) {
59322							if_block1 = if_blocks_1[current_block_type_index_1] = if_block_creators_1[current_block_type_index_1](ctx);
59323							if_block1.c();
59324						} else {
59325							if_block1.p(ctx, dirty);
59326						}
59327
59328						transition_in(if_block1, 1);
59329						if_block1.m(div1, null);
59330					} else {
59331						if_block1 = null;
59332					}
59333				}
59334
59335				if (!current || dirty[0] & /*promoCodeValid*/ 4096 && div1_class_value !== (div1_class_value = "" + (null_to_empty(/*promoCodeValid*/ ctx[12]
59336				? "zephr-form-summary-line-right zephr-payment-form-summary-line-right"
59337				: "zephr-form-summary-line-left zephr-payment-form-summary-line-left") + " svelte-xf8v79"))) {
59338					attr(div1, "class", div1_class_value);
59339				}
59340
59341				if (/*error*/ ctx[14]) {
59342					if (if_block2) {
59343						if_block2.p(ctx, dirty);
59344
59345						if (dirty[0] & /*error*/ 16384) {
59346							transition_in(if_block2, 1);
59347						}
59348					} else {
59349						if_block2 = create_if_block_4$8(ctx);
59350						if_block2.c();
59351						transition_in(if_block2, 1);
59352						if_block2.m(if_block2_anchor.parentNode, if_block2_anchor);
59353					}
59354				} else if (if_block2) {
59355					group_outros();
59356
59357					transition_out(if_block2, 1, 1, () => {
59358						if_block2 = null;
59359					});
59360
59361					check_outros();
59362				}
59363			},
59364			i(local) {
59365				if (current) return;
59366				transition_in(if_block0);
59367				transition_in(if_block1);
59368				transition_in(if_block2);
59369				current = true;
59370			},
59371			o(local) {
59372				transition_out(if_block0);
59373				transition_out(if_block1);
59374				transition_out(if_block2);
59375				current = false;
59376			},
59377			d(detaching) {
59378				if (detaching) {
59379					detach(div2);
59380					detach(t1);
59381					detach(if_block2_anchor);
59382				}
59383
59384				if (~current_block_type_index) {
59385					if_blocks[current_block_type_index].d();
59386				}
59387
59388				if (~current_block_type_index_1) {
59389					if_blocks_1[current_block_type_index_1].d();
59390				}
59391
59392				if (if_block2) if_block2.d(detaching);
59393			}
59394		};
59395	}
59396
59397	// (117:38) 
59398	function create_if_block_9$2(ctx) {
59399		let div;
59400		let input;
59401		let current;
59402
59403		input = new Input({
59404				props: {
59405					id: "zephr-form-promo-code",
59406					value: /*promoCode*/ ctx[11],
59407					placeholder: /*promoCodePlaceholder*/ ctx[5],
59408					maxlength: 50,
59409					hasError: /*error*/ ctx[14] != null,
59410					fill: true,
59411					isPaymentForm: true,
59412					onFocus: /*onFocus*/ ctx[27],
59413					onBlur: /*onBlur*/ ctx[28],
59414					$$slots: { default: [create_default_slot$4] },
59415					$$scope: { ctx }
59416				}
59417			});
59418
59419		input.$on("change", /*change_handler*/ ctx[35]);
59420
59421		return {
59422			c() {
59423				div = element("div");
59424				create_component(input.$$.fragment);
59425				attr(div, "class", "zephr-form-relative-container zephr-form-promo-input zephr-form-relative-container zephr-payment-form-promo-input");
59426			},
59427			m(target, anchor) {
59428				insert(target, div, anchor);
59429				mount_component(input, div, null);
59430				current = true;
59431			},
59432			p(ctx, dirty) {
59433				const input_changes = {};
59434				if (dirty[0] & /*promoCode*/ 2048) input_changes.value = /*promoCode*/ ctx[11];
59435				if (dirty[0] & /*promoCodePlaceholder*/ 32) input_changes.placeholder = /*promoCodePlaceholder*/ ctx[5];
59436				if (dirty[0] & /*error*/ 16384) input_changes.hasError = /*error*/ ctx[14] != null;
59437				if (dirty[0] & /*onFocus*/ 134217728) input_changes.onFocus = /*onFocus*/ ctx[27];
59438				if (dirty[0] & /*onBlur*/ 268435456) input_changes.onBlur = /*onBlur*/ ctx[28];
59439
59440				if (dirty[0] & /*promoCodeValid, busy, error*/ 53248 | dirty[1] & /*$$scope*/ 16384) {
59441					input_changes.$$scope = { dirty, ctx };
59442				}
59443
59444				input.$set(input_changes);
59445			},
59446			i(local) {
59447				if (current) return;
59448				transition_in(input.$$.fragment, local);
59449				current = true;
59450			},
59451			o(local) {
59452				transition_out(input.$$.fragment, local);
59453				current = false;
59454			},
59455			d(detaching) {
59456				if (detaching) {
59457					detach(div);
59458				}
59459
59460				destroy_component(input);
59461			}
59462		};
59463	}
59464
59465	// (113:10) {#if paymentProcessed && promoCode}
59466	function create_if_block_8$2(ctx) {
59467		let span;
59468		let t;
59469
59470		return {
59471			c() {
59472				span = element("span");
59473				t = text(/*promoCode*/ ctx[11]);
59474				attr(span, "class", "zephr-form-summary-promo-middle zephr-payment-form-summary-promo-middle svelte-xf8v79");
59475			},
59476			m(target, anchor) {
59477				insert(target, span, anchor);
59478				append(span, t);
59479			},
59480			p(ctx, dirty) {
59481				if (dirty[0] & /*promoCode*/ 2048) set_data(t, /*promoCode*/ ctx[11]);
59482			},
59483			i: noop,
59484			o: noop,
59485			d(detaching) {
59486				if (detaching) {
59487					detach(span);
59488				}
59489			}
59490		};
59491	}
59492
59493	// (136:43) 
59494	function create_if_block_11$2(ctx) {
59495		let fa;
59496		let current;
59497		fa = new Fa({ props: { icon: faSpinner, spin: true } });
59498
59499		return {
59500			c() {
59501				create_component(fa.$$.fragment);
59502			},
59503			m(target, anchor) {
59504				mount_component(fa, target, anchor);
59505				current = true;
59506			},
59507			i(local) {
59508				if (current) return;
59509				transition_in(fa.$$.fragment, local);
59510				current = true;
59511			},
59512			o(local) {
59513				transition_out(fa.$$.fragment, local);
59514				current = false;
59515			},
59516			d(detaching) {
59517				destroy_component(fa, detaching);
59518			}
59519		};
59520	}
59521
59522	// (134:18) {#if promoCodeValid}
59523	function create_if_block_10$2(ctx) {
59524		let fa;
59525		let current;
59526		fa = new Fa({ props: { icon: faCheck } });
59527
59528		return {
59529			c() {
59530				create_component(fa.$$.fragment);
59531			},
59532			m(target, anchor) {
59533				mount_component(fa, target, anchor);
59534				current = true;
59535			},
59536			i(local) {
59537				if (current) return;
59538				transition_in(fa.$$.fragment, local);
59539				current = true;
59540			},
59541			o(local) {
59542				transition_out(fa.$$.fragment, local);
59543				current = false;
59544			},
59545			d(detaching) {
59546				destroy_component(fa, detaching);
59547			}
59548		};
59549	}
59550
59551	// (121:14) <Input                 id="zephr-form-promo-code"                 value={promoCode}                 placeholder={promoCodePlaceholder}                 maxlength={50}                 hasError={error != null}                 fill                 isPaymentForm                 on:change={({ detail }) => onChangePromoCode(detail)}                 onFocus={onFocus}                 onBlur={onBlur}               >
59552	function create_default_slot$4(ctx) {
59553		let div;
59554		let current_block_type_index;
59555		let if_block;
59556		let current;
59557		const if_block_creators = [create_if_block_10$2, create_if_block_11$2];
59558		const if_blocks = [];
59559
59560		function select_block_type_1(ctx, dirty) {
59561			if (/*promoCodeValid*/ ctx[12]) return 0;
59562			if (/*busy*/ ctx[15] && !/*error*/ ctx[14]) return 1;
59563			return -1;
59564		}
59565
59566		if (~(current_block_type_index = select_block_type_1(ctx))) {
59567			if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
59568		}
59569
59570		return {
59571			c() {
59572				div = element("div");
59573				if (if_block) if_block.c();
59574				attr(div, "class", "zephr-form-input-inner-text zephr-payment-form-input-inner-text zephr-form-input-inner-button");
59575			},
59576			m(target, anchor) {
59577				insert(target, div, anchor);
59578
59579				if (~current_block_type_index) {
59580					if_blocks[current_block_type_index].m(div, null);
59581				}
59582
59583				current = true;
59584			},
59585			p(ctx, dirty) {
59586				let previous_block_index = current_block_type_index;
59587				current_block_type_index = select_block_type_1(ctx);
59588
59589				if (current_block_type_index !== previous_block_index) {
59590					if (if_block) {
59591						group_outros();
59592
59593						transition_out(if_blocks[previous_block_index], 1, 1, () => {
59594							if_blocks[previous_block_index] = null;
59595						});
59596
59597						check_outros();
59598					}
59599
59600					if (~current_block_type_index) {
59601						if_block = if_blocks[current_block_type_index];
59602
59603						if (!if_block) {
59604							if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
59605							if_block.c();
59606						}
59607
59608						transition_in(if_block, 1);
59609						if_block.m(div, null);
59610					} else {
59611						if_block = null;
59612					}
59613				}
59614			},
59615			i(local) {
59616				if (current) return;
59617				transition_in(if_block);
59618				current = true;
59619			},
59620			o(local) {
59621				transition_out(if_block);
59622				current = false;
59623			},
59624			d(detaching) {
59625				if (detaching) {
59626					detach(div);
59627				}
59628
59629				if (~current_block_type_index) {
59630					if_blocks[current_block_type_index].d();
59631				}
59632			}
59633		};
59634	}
59635
59636	// (155:38) 
59637	function create_if_block_7$2(ctx) {
59638		let button;
59639		let current;
59640
59641		button = new Button({
59642				props: {
59643					disabled: /*promoCodeDisabled*/ ctx[16],
59644					text: /*promoCodeButtonText*/ ctx[6],
59645					onClick: /*verifyPromoCode*/ ctx[26],
59646					noMargin: true,
59647					inputHeight: true,
59648					isPaymentForm: true
59649				}
59650			});
59651
59652		return {
59653			c() {
59654				create_component(button.$$.fragment);
59655			},
59656			m(target, anchor) {
59657				mount_component(button, target, anchor);
59658				current = true;
59659			},
59660			p(ctx, dirty) {
59661				const button_changes = {};
59662				if (dirty[0] & /*promoCodeDisabled*/ 65536) button_changes.disabled = /*promoCodeDisabled*/ ctx[16];
59663				if (dirty[0] & /*promoCodeButtonText*/ 64) button_changes.text = /*promoCodeButtonText*/ ctx[6];
59664				if (dirty[0] & /*verifyPromoCode*/ 67108864) button_changes.onClick = /*verifyPromoCode*/ ctx[26];
59665				button.$set(button_changes);
59666			},
59667			i(local) {
59668				if (current) return;
59669				transition_in(button.$$.fragment, local);
59670				current = true;
59671			},
59672			o(local) {
59673				transition_out(button.$$.fragment, local);
59674				current = false;
59675			},
59676			d(detaching) {
59677				destroy_component(button, detaching);
59678			}
59679		};
59680	}
59681
59682	// (149:10) {#if promoCodeValid}
59683	function create_if_block_5$6(ctx) {
59684		let span;
59685		let if_block = /*showPromoCodeDiscountAmount*/ ctx[0] && create_if_block_6$6(ctx);
59686
59687		return {
59688			c() {
59689				span = element("span");
59690				if (if_block) if_block.c();
59691				attr(span, "class", "zephr-form-summary-promo-middle zephr-payment-form-summary-promo-middle svelte-xf8v79");
59692			},
59693			m(target, anchor) {
59694				insert(target, span, anchor);
59695				if (if_block) if_block.m(span, null);
59696			},
59697			p(ctx, dirty) {
59698				if (/*showPromoCodeDiscountAmount*/ ctx[0]) {
59699					if (if_block) {
59700						if_block.p(ctx, dirty);
59701					} else {
59702						if_block = create_if_block_6$6(ctx);
59703						if_block.c();
59704						if_block.m(span, null);
59705					}
59706				} else if (if_block) {
59707					if_block.d(1);
59708					if_block = null;
59709				}
59710			},
59711			i: noop,
59712			o: noop,
59713			d(detaching) {
59714				if (detaching) {
59715					detach(span);
59716				}
59717
59718				if (if_block) if_block.d();
59719			}
59720		};
59721	}
59722
59723	// (151:14) {#if showPromoCodeDiscountAmount}
59724	function create_if_block_6$6(ctx) {
59725		let t0;
59726		let t1;
59727
59728		return {
59729			c() {
59730				t0 = text("- ");
59731				t1 = text(/*discountAmount*/ ctx[13]);
59732			},
59733			m(target, anchor) {
59734				insert(target, t0, anchor);
59735				insert(target, t1, anchor);
59736			},
59737			p(ctx, dirty) {
59738				if (dirty[0] & /*discountAmount*/ 8192) set_data(t1, /*discountAmount*/ ctx[13]);
59739			},
59740			d(detaching) {
59741				if (detaching) {
59742					detach(t0);
59743					detach(t1);
59744				}
59745			}
59746		};
59747	}
59748
59749	// (167:6) {#if error}
59750	function create_if_block_4$8(ctx) {
59751		let errormessage;
59752		let current;
59753
59754		errormessage = new ErrorMessage({
59755				props: {
59756					error: /*error*/ ctx[14],
59757					isPaymentForm: true
59758				}
59759			});
59760
59761		return {
59762			c() {
59763				create_component(errormessage.$$.fragment);
59764			},
59765			m(target, anchor) {
59766				mount_component(errormessage, target, anchor);
59767				current = true;
59768			},
59769			p(ctx, dirty) {
59770				const errormessage_changes = {};
59771				if (dirty[0] & /*error*/ 16384) errormessage_changes.error = /*error*/ ctx[14];
59772				errormessage.$set(errormessage_changes);
59773			},
59774			i(local) {
59775				if (current) return;
59776				transition_in(errormessage.$$.fragment, local);
59777				current = true;
59778			},
59779			o(local) {
59780				transition_out(errormessage.$$.fragment, local);
59781				current = false;
59782			},
59783			d(detaching) {
59784				destroy_component(errormessage, detaching);
59785			}
59786		};
59787	}
59788
59789	// (180:2) {#if prorateDisclaimer}
59790	function create_if_block_1$m(ctx) {
59791		let div;
59792		let t;
59793
59794		return {
59795			c() {
59796				div = element("div");
59797				t = text(/*prorateDisclaimer*/ ctx[10]);
59798				attr(div, "class", "zephr-form-summary-prorate-disclaimer zephr-payment-form-summary-prorate-disclaimer svelte-xf8v79");
59799			},
59800			m(target, anchor) {
59801				insert(target, div, anchor);
59802				append(div, t);
59803			},
59804			p(ctx, dirty) {
59805				if (dirty[0] & /*prorateDisclaimer*/ 1024) set_data(t, /*prorateDisclaimer*/ ctx[10]);
59806			},
59807			d(detaching) {
59808				if (detaching) {
59809					detach(div);
59810				}
59811			}
59812		};
59813	}
59814
59815	// (185:2) {#if changeSubscriptionProrate}
59816	function create_if_block$w(ctx) {
59817		let div2;
59818		let div0;
59819		let t0_value = (/*prorateLabel*/ ctx[9] ?? "DUE TODAY") + "";
59820		let t0;
59821		let t1;
59822		let div1;
59823		let t2_value = /*changeSubscriptionProrate*/ ctx[20].totalPriceFormattedString + "";
59824		let t2;
59825
59826		return {
59827			c() {
59828				div2 = element("div");
59829				div0 = element("div");
59830				t0 = text(t0_value);
59831				t1 = space();
59832				div1 = element("div");
59833				t2 = text(t2_value);
59834				attr(div0, "class", "zephr-form-summary-line-total-title zephr-payment-form-summary-line-total-title");
59835				attr(div1, "class", "zephr-form-summary-line-price zephr-payment-form-summary-line-price svelte-xf8v79");
59836				attr(div2, "class", "zephr-form-summary-line zephr-form-summary-price-line zephr-payment-form-summary-line zephr-payment-form-summary-price-line svelte-xf8v79");
59837			},
59838			m(target, anchor) {
59839				insert(target, div2, anchor);
59840				append(div2, div0);
59841				append(div0, t0);
59842				append(div2, t1);
59843				append(div2, div1);
59844				append(div1, t2);
59845			},
59846			p(ctx, dirty) {
59847				if (dirty[0] & /*prorateLabel*/ 512 && t0_value !== (t0_value = (/*prorateLabel*/ ctx[9] ?? "DUE TODAY") + "")) set_data(t0, t0_value);
59848				if (dirty[0] & /*changeSubscriptionProrate*/ 1048576 && t2_value !== (t2_value = /*changeSubscriptionProrate*/ ctx[20].totalPriceFormattedString + "")) set_data(t2, t2_value);
59849			},
59850			d(detaching) {
59851				if (detaching) {
59852					detach(div2);
59853				}
59854			}
59855		};
59856	}
59857
59858	function create_fragment$G(ctx) {
59859		let div7;
59860		let div0;
59861		let t0;
59862		let t1;
59863		let div3;
59864		let div1;
59865		let t2;
59866		let t3;
59867		let div2;
59868		let t4;
59869		let t5;
59870		let t6;
59871		let t7;
59872		let t8;
59873		let t9;
59874		let t10;
59875		let div6;
59876		let div4;
59877		let t11;
59878		let t12;
59879		let div5;
59880		let t13;
59881		let t14;
59882		let t15;
59883		let current;
59884		let each_value_2 = ensure_array_like(/*chargeItems*/ ctx[19]);
59885		let each_blocks_1 = [];
59886
59887		for (let i = 0; i < each_value_2.length; i += 1) {
59888			each_blocks_1[i] = create_each_block_2(get_each_context_2(ctx, each_value_2, i));
59889		}
59890
59891		let if_block0 = /*paymentProvider*/ ctx[24] === 'braintree' && /*discounts*/ ctx[23].length > 0 && create_if_block_14$2(ctx);
59892		let if_block1 = /*tax*/ ctx[21] && create_if_block_13$2(ctx);
59893		let each_value = ensure_array_like(/*addons*/ ctx[18]);
59894		let each_blocks = [];
59895
59896		for (let i = 0; i < each_value.length; i += 1) {
59897			each_blocks[i] = create_each_block$c(get_each_context$c(ctx, each_value, i));
59898		}
59899
59900		let if_block2 = /*allowPromoCodes*/ ctx[3] && create_if_block_2$e(ctx);
59901		let if_block3 = /*prorateDisclaimer*/ ctx[10] && create_if_block_1$m(ctx);
59902		let if_block4 = /*changeSubscriptionProrate*/ ctx[20] && create_if_block$w(ctx);
59903
59904		return {
59905			c() {
59906				div7 = element("div");
59907				div0 = element("div");
59908				t0 = text(/*title*/ ctx[7]);
59909				t1 = space();
59910				div3 = element("div");
59911				div1 = element("div");
59912				t2 = text(/*planTitle*/ ctx[1]);
59913				t3 = space();
59914				div2 = element("div");
59915				t4 = text(/*displayPrice*/ ctx[30]);
59916				t5 = space();
59917
59918				for (let i = 0; i < each_blocks_1.length; i += 1) {
59919					each_blocks_1[i].c();
59920				}
59921
59922				t6 = space();
59923				if (if_block0) if_block0.c();
59924				t7 = space();
59925				if (if_block1) if_block1.c();
59926				t8 = space();
59927
59928				for (let i = 0; i < each_blocks.length; i += 1) {
59929					each_blocks[i].c();
59930				}
59931
59932				t9 = space();
59933				if (if_block2) if_block2.c();
59934				t10 = space();
59935				div6 = element("div");
59936				div4 = element("div");
59937				t11 = text(/*totalLabel*/ ctx[8]);
59938				t12 = space();
59939				div5 = element("div");
59940				t13 = text(/*totalPrice*/ ctx[2]);
59941				t14 = space();
59942				if (if_block3) if_block3.c();
59943				t15 = space();
59944				if (if_block4) if_block4.c();
59945				attr(div0, "class", "zephr-form-summary-title zephr-payment-form-summary-title svelte-xf8v79");
59946				attr(div1, "class", "zephr-form-summary-line-title zephr-payment-form-summary-line-title svelte-xf8v79");
59947				attr(div2, "class", "zephr-form-summary-line-price zephr-payment-form-summary-line-price svelte-xf8v79");
59948				attr(div3, "class", "zephr-form-summary-line zephr-payment-form-summary-line svelte-xf8v79");
59949				attr(div4, "class", "zephr-form-summary-line-total-title zephr-payment-form-summary-line-total-title");
59950				attr(div5, "class", "zephr-form-summary-line-price zephr-payment-form-summary-line-price svelte-xf8v79");
59951				attr(div6, "class", "zephr-form-summary-line zephr-form-summary-price-line zephr-form-summary-price-line-upper zephr-payment-form-summary-line zephr-payment-form-summary-price-line zephr-payment-form-summary-price-line-upper svelte-xf8v79");
59952				attr(div7, "class", "zephr-form-summary zephr-payment-form-summary svelte-xf8v79");
59953			},
59954			m(target, anchor) {
59955				insert(target, div7, anchor);
59956				append(div7, div0);
59957				append(div0, t0);
59958				append(div7, t1);
59959				append(div7, div3);
59960				append(div3, div1);
59961				append(div1, t2);
59962				append(div3, t3);
59963				append(div3, div2);
59964				append(div2, t4);
59965				append(div7, t5);
59966
59967				for (let i = 0; i < each_blocks_1.length; i += 1) {
59968					if (each_blocks_1[i]) {
59969						each_blocks_1[i].m(div7, null);
59970					}
59971				}
59972
59973				append(div7, t6);
59974				if (if_block0) if_block0.m(div7, null);
59975				append(div7, t7);
59976				if (if_block1) if_block1.m(div7, null);
59977				append(div7, t8);
59978
59979				for (let i = 0; i < each_blocks.length; i += 1) {
59980					if (each_blocks[i]) {
59981						each_blocks[i].m(div7, null);
59982					}
59983				}
59984
59985				append(div7, t9);
59986				if (if_block2) if_block2.m(div7, null);
59987				append(div7, t10);
59988				append(div7, div6);
59989				append(div6, div4);
59990				append(div4, t11);
59991				append(div6, t12);
59992				append(div6, div5);
59993				append(div5, t13);
59994				append(div7, t14);
59995				if (if_block3) if_block3.m(div7, null);
59996				append(div7, t15);
59997				if (if_block4) if_block4.m(div7, null);
59998				current = true;
59999			},
60000			p(ctx, dirty) {
60001				if (!current || dirty[0] & /*title*/ 128) set_data(t0, /*title*/ ctx[7]);
60002				if (!current || dirty[0] & /*planTitle*/ 2) set_data(t2, /*planTitle*/ ctx[1]);
60003				if (!current || dirty[0] & /*displayPrice*/ 1073741824) set_data(t4, /*displayPrice*/ ctx[30]);
60004
60005				if (dirty[0] & /*chargeItems*/ 524288) {
60006					each_value_2 = ensure_array_like(/*chargeItems*/ ctx[19]);
60007					let i;
60008
60009					for (i = 0; i < each_value_2.length; i += 1) {
60010						const child_ctx = get_each_context_2(ctx, each_value_2, i);
60011
60012						if (each_blocks_1[i]) {
60013							each_blocks_1[i].p(child_ctx, dirty);
60014						} else {
60015							each_blocks_1[i] = create_each_block_2(child_ctx);
60016							each_blocks_1[i].c();
60017							each_blocks_1[i].m(div7, t6);
60018						}
60019					}
60020
60021					for (; i < each_blocks_1.length; i += 1) {
60022						each_blocks_1[i].d(1);
60023					}
60024
60025					each_blocks_1.length = each_value_2.length;
60026				}
60027
60028				if (/*paymentProvider*/ ctx[24] === 'braintree' && /*discounts*/ ctx[23].length > 0) {
60029					if (if_block0) {
60030						if_block0.p(ctx, dirty);
60031					} else {
60032						if_block0 = create_if_block_14$2(ctx);
60033						if_block0.c();
60034						if_block0.m(div7, t7);
60035					}
60036				} else if (if_block0) {
60037					if_block0.d(1);
60038					if_block0 = null;
60039				}
60040
60041				if (/*tax*/ ctx[21]) {
60042					if (if_block1) {
60043						if_block1.p(ctx, dirty);
60044					} else {
60045						if_block1 = create_if_block_13$2(ctx);
60046						if_block1.c();
60047						if_block1.m(div7, t8);
60048					}
60049				} else if (if_block1) {
60050					if_block1.d(1);
60051					if_block1 = null;
60052				}
60053
60054				if (dirty[0] & /*addons*/ 262144) {
60055					each_value = ensure_array_like(/*addons*/ ctx[18]);
60056					let i;
60057
60058					for (i = 0; i < each_value.length; i += 1) {
60059						const child_ctx = get_each_context$c(ctx, each_value, i);
60060
60061						if (each_blocks[i]) {
60062							each_blocks[i].p(child_ctx, dirty);
60063						} else {
60064							each_blocks[i] = create_each_block$c(child_ctx);
60065							each_blocks[i].c();
60066							each_blocks[i].m(div7, t9);
60067						}
60068					}
60069
60070					for (; i < each_blocks.length; i += 1) {
60071						each_blocks[i].d(1);
60072					}
60073
60074					each_blocks.length = each_value.length;
60075				}
60076
60077				if (/*allowPromoCodes*/ ctx[3]) {
60078					if (if_block2) {
60079						if_block2.p(ctx, dirty);
60080
60081						if (dirty[0] & /*allowPromoCodes*/ 8) {
60082							transition_in(if_block2, 1);
60083						}
60084					} else {
60085						if_block2 = create_if_block_2$e(ctx);
60086						if_block2.c();
60087						transition_in(if_block2, 1);
60088						if_block2.m(div7, t10);
60089					}
60090				} else if (if_block2) {
60091					group_outros();
60092
60093					transition_out(if_block2, 1, 1, () => {
60094						if_block2 = null;
60095					});
60096
60097					check_outros();
60098				}
60099
60100				if (!current || dirty[0] & /*totalLabel*/ 256) set_data(t11, /*totalLabel*/ ctx[8]);
60101				if (!current || dirty[0] & /*totalPrice*/ 4) set_data(t13, /*totalPrice*/ ctx[2]);
60102
60103				if (/*prorateDisclaimer*/ ctx[10]) {
60104					if (if_block3) {
60105						if_block3.p(ctx, dirty);
60106					} else {
60107						if_block3 = create_if_block_1$m(ctx);
60108						if_block3.c();
60109						if_block3.m(div7, t15);
60110					}
60111				} else if (if_block3) {
60112					if_block3.d(1);
60113					if_block3 = null;
60114				}
60115
60116				if (/*changeSubscriptionProrate*/ ctx[20]) {
60117					if (if_block4) {
60118						if_block4.p(ctx, dirty);
60119					} else {
60120						if_block4 = create_if_block$w(ctx);
60121						if_block4.c();
60122						if_block4.m(div7, null);
60123					}
60124				} else if (if_block4) {
60125					if_block4.d(1);
60126					if_block4 = null;
60127				}
60128			},
60129			i(local) {
60130				if (current) return;
60131				transition_in(if_block2);
60132				current = true;
60133			},
60134			o(local) {
60135				transition_out(if_block2);
60136				current = false;
60137			},
60138			d(detaching) {
60139				if (detaching) {
60140					detach(div7);
60141				}
60142
60143				destroy_each(each_blocks_1, detaching);
60144				if (if_block0) if_block0.d();
60145				if (if_block1) if_block1.d();
60146				destroy_each(each_blocks, detaching);
60147				if (if_block2) if_block2.d();
60148				if (if_block3) if_block3.d();
60149				if (if_block4) if_block4.d();
60150			}
60151		};
60152	}
60153
60154	function instance$G($$self, $$props, $$invalidate) {
60155		let displayPrice;
60156		let { showPromoCodeDiscountAmount = true } = $$props;
60157		let { planTitle } = $$props;
60158		let { price } = $$props;
60159		let { totalPrice } = $$props;
60160		let { allowPromoCodes } = $$props;
60161		let { promoCodeLinkText } = $$props;
60162		let { promoCodePlaceholder } = $$props;
60163		let { promoCodeButtonText } = $$props;
60164		let { title } = $$props;
60165		let { totalLabel } = $$props;
60166		let { prorateLabel } = $$props;
60167		let { prorateDisclaimer } = $$props;
60168		let { promoCode } = $$props;
60169		let { promoCodeValid } = $$props;
60170		let { discountAmount } = $$props;
60171		let { error = null } = $$props;
60172		let { busy } = $$props;
60173		let { promoCodeDisabled } = $$props;
60174		let { paymentProcessed } = $$props;
60175		let { addons } = $$props;
60176		let { chargeItems } = $$props;
60177		let { changeSubscriptionProrate } = $$props;
60178		let { tax } = $$props;
60179		let { taxLabel } = $$props;
60180		let { subTotal } = $$props;
60181		let { discounts = [] } = $$props;
60182		let { paymentProvider = '' } = $$props;
60183		let { onChangePromoCode } = $$props;
60184		let { verifyPromoCode } = $$props;
60185		let { onFocus } = $$props;
60186		let { onBlur } = $$props;
60187		let { logBeginCheckout } = $$props;
60188		let showPromoCode = false;
60189		logBeginCheckout();
60190		const click_handler = () => $$invalidate(29, showPromoCode = true);
60191		const change_handler = ({ detail }) => onChangePromoCode(detail);
60192
60193		$$self.$$set = $$props => {
60194			if ('showPromoCodeDiscountAmount' in $$props) $$invalidate(0, showPromoCodeDiscountAmount = $$props.showPromoCodeDiscountAmount);
60195			if ('planTitle' in $$props) $$invalidate(1, planTitle = $$props.planTitle);
60196			if ('price' in $$props) $$invalidate(31, price = $$props.price);
60197			if ('totalPrice' in $$props) $$invalidate(2, totalPrice = $$props.totalPrice);
60198			if ('allowPromoCodes' in $$props) $$invalidate(3, allowPromoCodes = $$props.allowPromoCodes);
60199			if ('promoCodeLinkText' in $$props) $$invalidate(4, promoCodeLinkText = $$props.promoCodeLinkText);
60200			if ('promoCodePlaceholder' in $$props) $$invalidate(5, promoCodePlaceholder = $$props.promoCodePlaceholder);
60201			if ('promoCodeButtonText' in $$props) $$invalidate(6, promoCodeButtonText = $$props.promoCodeButtonText);
60202			if ('title' in $$props) $$invalidate(7, title = $$props.title);
60203			if ('totalLabel' in $$props) $$invalidate(8, totalLabel = $$props.totalLabel);
60204			if ('prorateLabel' in $$props) $$invalidate(9, prorateLabel = $$props.prorateLabel);
60205			if ('prorateDisclaimer' in $$props) $$invalidate(10, prorateDisclaimer = $$props.prorateDisclaimer);
60206			if ('promoCode' in $$props) $$invalidate(11, promoCode = $$props.promoCode);
60207			if ('promoCodeValid' in $$props) $$invalidate(12, promoCodeValid = $$props.promoCodeValid);
60208			if ('discountAmount' in $$props) $$invalidate(13, discountAmount = $$props.discountAmount);
60209			if ('error' in $$props) $$invalidate(14, error = $$props.error);
60210			if ('busy' in $$props) $$invalidate(15, busy = $$props.busy);
60211			if ('promoCodeDisabled' in $$props) $$invalidate(16, promoCodeDisabled = $$props.promoCodeDisabled);
60212			if ('paymentProcessed' in $$props) $$invalidate(17, paymentProcessed = $$props.paymentProcessed);
60213			if ('addons' in $$props) $$invalidate(18, addons = $$props.addons);
60214			if ('chargeItems' in $$props) $$invalidate(19, chargeItems = $$props.chargeItems);
60215			if ('changeSubscriptionProrate' in $$props) $$invalidate(20, changeSubscriptionProrate = $$props.changeSubscriptionProrate);
60216			if ('tax' in $$props) $$invalidate(21, tax = $$props.tax);
60217			if ('taxLabel' in $$props) $$invalidate(22, taxLabel = $$props.taxLabel);
60218			if ('subTotal' in $$props) $$invalidate(32, subTotal = $$props.subTotal);
60219			if ('discounts' in $$props) $$invalidate(23, discounts = $$props.discounts);
60220			if ('paymentProvider' in $$props) $$invalidate(24, paymentProvider = $$props.paymentProvider);
60221			if ('onChangePromoCode' in $$props) $$invalidate(25, onChangePromoCode = $$props.onChangePromoCode);
60222			if ('verifyPromoCode' in $$props) $$invalidate(26, verifyPromoCode = $$props.verifyPromoCode);
60223			if ('onFocus' in $$props) $$invalidate(27, onFocus = $$props.onFocus);
60224			if ('onBlur' in $$props) $$invalidate(28, onBlur = $$props.onBlur);
60225			if ('logBeginCheckout' in $$props) $$invalidate(33, logBeginCheckout = $$props.logBeginCheckout);
60226		};
60227
60228		$$self.$$.update = () => {
60229			if ($$self.$$.dirty[0] & /*chargeItems*/ 524288 | $$self.$$.dirty[1] & /*subTotal, price*/ 3) {
60230				$$invalidate(30, displayPrice = chargeItems.length ? "" : subTotal || price);
60231			}
60232		};
60233
60234		return [
60235			showPromoCodeDiscountAmount,
60236			planTitle,
60237			totalPrice,
60238			allowPromoCodes,
60239			promoCodeLinkText,
60240			promoCodePlaceholder,
60241			promoCodeButtonText,
60242			title,
60243			totalLabel,
60244			prorateLabel,
60245			prorateDisclaimer,
60246			promoCode,
60247			promoCodeValid,
60248			discountAmount,
60249			error,
60250			busy,
60251			promoCodeDisabled,
60252			paymentProcessed,
60253			addons,
60254			chargeItems,
60255			changeSubscriptionProrate,
60256			tax,
60257			taxLabel,
60258			discounts,
60259			paymentProvider,
60260			onChangePromoCode,
60261			verifyPromoCode,
60262			onFocus,
60263			onBlur,
60264			showPromoCode,
60265			displayPrice,
60266			price,
60267			subTotal,
60268			logBeginCheckout,
60269			click_handler,
60270			change_handler
60271		];
60272	}
60273
60274	class PaymentSummary extends SvelteComponent {
60275		constructor(options) {
60276			super();
60277
60278			init(
60279				this,
60280				options,
60281				instance$G,
60282				create_fragment$G,
60283				safe_not_equal,
60284				{
60285					showPromoCodeDiscountAmount: 0,
60286					planTitle: 1,
60287					price: 31,
60288					totalPrice: 2,
60289					allowPromoCodes: 3,
60290					promoCodeLinkText: 4,
60291					promoCodePlaceholder: 5,
60292					promoCodeButtonText: 6,
60293					title: 7,
60294					totalLabel: 8,
60295					prorateLabel: 9,
60296					prorateDisclaimer: 10,
60297					promoCode: 11,
60298					promoCodeValid: 12,
60299					discountAmount: 13,
60300					error: 14,
60301					busy: 15,
60302					promoCodeDisabled: 16,
60303					paymentProcessed: 17,
60304					addons: 18,
60305					chargeItems: 19,
60306					changeSubscriptionProrate: 20,
60307					tax: 21,
60308					taxLabel: 22,
60309					subTotal: 32,
60310					discounts: 23,
60311					paymentProvider: 24,
60312					onChangePromoCode: 25,
60313					verifyPromoCode: 26,
60314					onFocus: 27,
60315					onBlur: 28,
60316					logBeginCheckout: 33
60317				},
60318				null,
60319				[-1, -1]
60320			);
60321		}
60322	}
60323
60324	const factory$f = {
60325	    matches: (sectionElement) => sectionElement.type === elementTypes.PAYMENT_SUMMARY,
60326	    create: (form, formState, formActions, elementConfig) => {
60327	        const paymentProviderConfig = paymentProviderFor(form.organisationConfiguration.paymentProvider);
60328	        return {
60329	            component: PaymentSummary,
60330	            props: {
60331	                showPromoCodeDiscountAmount: !formConfigAs(form).dynamicOffer,
60332	                price: formState.paymentOptionPrices?.netPriceFormattedString ?? '-',
60333	                totalPrice: formState.paymentOptionPrices?.totalPriceFormattedString ?? '-',
60334	                tax: formState.paymentOptionPrices?.taxPriceFormattedString,
60335	                taxLabel: elementConfig.taxLabel ?? "Tax",
60336	                subTotal: formState.paymentOptionPrices?.netPriceFormattedString,
60337	                planTitle: formState.paymentOption.label,
60338	                paymentProvider: form.organisationConfiguration.paymentProvider,
60339	                // If we're using braintree we will need the full discounts array to display each discount
60340	                discounts: form.organisationConfiguration.paymentProvider === 'braintree' ?
60341	                    (formConfigAs(form).paymentOptions
60342	                        .find(opt => opt.productId === formState.paymentOption.productId && opt.slug === formState.paymentOption.slug)
60343	                        ?.discounts || [])
60344	                        .map(discount => ({
60345	                        description: discount.description || discount.name,
60346	                        formattedAmount: `- ${formatCurrency(discount.amount || 0, formState.paymentOption.currencyCode)}`
60347	                    })) : [],
60348	                allowPromoCodes: (formConfigAs(form).promoCodeConfig?.promoCodeAllowed
60349	                    || formConfigAs(form).dynamicOffer /* TODO temp just for customer demo */) && paymentProviderConfig.hasPromoCodes(form),
60350	                promoCodeLinkText: formConfigAs(form).promoCodeConfig?.promoCodeText,
60351	                promoCodePlaceholder: formConfigAs(form).promoCodeConfig?.promoCodePlaceholder,
60352	                promoCodeButtonText: formConfigAs(form).promoCodeConfig?.promoCodeButtonText,
60353	                totalLabel: elementConfig.total,
60354	                prorateLabel: elementConfig.prorateLabel,
60355	                prorateDisclaimer: (!formConfigAs(form).changeSubscriptionMode || paymentProviderConfig.changeSubscriptionProrateCalculator) ? null : elementConfig.prorateDisclaimer,
60356	                title: elementConfig.title,
60357	                promoCode: formState.promoCode,
60358	                busy: formState.isBusyByKey[verifyingPromoCodeBusyKey],
60359	                promoCodeDisabled: formState.isBusy || formState.promoCode?.length === 0,
60360	                paymentProcessed: formState.paymentProcessed,
60361	                discountAmount: formState.paymentOptionPrices?.discountPriceFormattedPrice ?? '-',
60362	                addons: addonsForPlan(formState)
60363	                    .map(addon => ({
60364	                    label: addon.label,
60365	                    addonPrice: formatCurrency(addon.addonPrice, formState.paymentOption.currencyCode)
60366	                })),
60367	                chargeItems: formState.paymentOptionPrices?.chargeItems ?? [],
60368	                promoCodeValid: formState.promoCodeValid,
60369	                changeSubscriptionProrate: formState.changeSubscriptionProrate,
60370	                onChangePromoCode: (value) => {
60371	                    let updateFormState = formActions.updateFormState({
60372	                        promoCode: value,
60373	                        promoCodeValid: undefined,
60374	                        discountedPlanPrices: []
60375	                    });
60376	                    // If we're going from a valid promo code -> incomplete promo code, the mobile payment button needs resetting
60377	                    if (formState.promoCodeValid) {
60378	                        if (formState.originalDynamicOfferResult) {
60379	                            updateFormState = formActions.updateFormState({
60380	                                dynamicOfferResult: formState.originalDynamicOfferResult
60381	                            });
60382	                        }
60383	                        void afterPromoCodeChange(form, updateFormState, formActions);
60384	                    }
60385	                    logDataLayerEvent(form, 'zephr_form_input_change', {
60386	                        inputName: 'zephr-form-promo-code',
60387	                        sectionId: formState.currentSection.type,
60388	                        field: 'promo-code'
60389	                    });
60390	                },
60391	                onFocus: () => logDataLayerEvent(form, 'zephr_form_input_focus', {
60392	                    inputName: 'zephr-form-promo-code',
60393	                    sectionId: formState.currentSection.type,
60394	                    field: 'promo-code'
60395	                }),
60396	                onBlur: () => logDataLayerEvent(form, 'zephr_form_input_blur', {
60397	                    inputName: 'zephr-form-promo-code',
60398	                    sectionId: formState.currentSection.type,
60399	                    field: 'promo-code'
60400	                }),
60401	                verifyPromoCode: () => {
60402	                    void validatePromoCode(form, formState, formActions);
60403	                },
60404	                logBeginCheckout: async () => {
60405	                    if (formState.currentPart.type === partTypes.PAYMENT.type) {
60406	                        if (form.organisationConfiguration.trackFormDataLayerEvents) {
60407	                            await calculatePrices(form, formState, formActions);
60408	                        }
60409	                        logDataLayerEvent(form, 'begin_checkout', {
60410	                            ecommerce: {
60411	                                currency: getRelevantCurrency(form, formState),
60412	                                value: formActions.getFormState().paymentOptionPrices?.totalPrice,
60413	                                items: [{
60414	                                        item_id: formState.paymentOption.slug,
60415	                                        item_name: formState.paymentOption.productId,
60416	                                        price: formActions.getFormState().paymentOptionPrices?.totalPrice,
60417	                                        quantity: 1
60418	                                    }]
60419	                            }
60420	                        });
60421	                    }
60422	                }
60423	            }
60424	        };
60425	    }
60426	};
60427
60428	/* src/components/elements/divider/Divider.svelte generated by Svelte v4.2.12 */
60429
60430	function create_if_block$v(ctx) {
60431		let div;
60432		let t0;
60433		let t1;
60434		let if_block0 = /*showLine*/ ctx[1] && create_if_block_3$9(ctx);
60435		let if_block1 = /*text*/ ctx[0] && create_if_block_2$d(ctx);
60436		let if_block2 = /*showLine*/ ctx[1] && /*text*/ ctx[0] && create_if_block_1$l(ctx);
60437
60438		return {
60439			c() {
60440				div = element("div");
60441				if (if_block0) if_block0.c();
60442				t0 = space();
60443				if (if_block1) if_block1.c();
60444				t1 = space();
60445				if (if_block2) if_block2.c();
60446				attr(div, "class", "zephr-form-divider-container svelte-1jhhsfx");
60447				toggle_class(div, "zephr-payment-form-divider-container", /*isPaymentForm*/ ctx[3]);
60448			},
60449			m(target, anchor) {
60450				insert(target, div, anchor);
60451				if (if_block0) if_block0.m(div, null);
60452				append(div, t0);
60453				if (if_block1) if_block1.m(div, null);
60454				append(div, t1);
60455				if (if_block2) if_block2.m(div, null);
60456			},
60457			p(ctx, dirty) {
60458				if (/*showLine*/ ctx[1]) {
60459					if (if_block0) {
60460						if_block0.p(ctx, dirty);
60461					} else {
60462						if_block0 = create_if_block_3$9(ctx);
60463						if_block0.c();
60464						if_block0.m(div, t0);
60465					}
60466				} else if (if_block0) {
60467					if_block0.d(1);
60468					if_block0 = null;
60469				}
60470
60471				if (/*text*/ ctx[0]) {
60472					if (if_block1) {
60473						if_block1.p(ctx, dirty);
60474					} else {
60475						if_block1 = create_if_block_2$d(ctx);
60476						if_block1.c();
60477						if_block1.m(div, t1);
60478					}
60479				} else if (if_block1) {
60480					if_block1.d(1);
60481					if_block1 = null;
60482				}
60483
60484				if (/*showLine*/ ctx[1] && /*text*/ ctx[0]) {
60485					if (if_block2) {
60486						if_block2.p(ctx, dirty);
60487					} else {
60488						if_block2 = create_if_block_1$l(ctx);
60489						if_block2.c();
60490						if_block2.m(div, null);
60491					}
60492				} else if (if_block2) {
60493					if_block2.d(1);
60494					if_block2 = null;
60495				}
60496
60497				if (dirty & /*isPaymentForm*/ 8) {
60498					toggle_class(div, "zephr-payment-form-divider-container", /*isPaymentForm*/ ctx[3]);
60499				}
60500			},
60501			d(detaching) {
60502				if (detaching) {
60503					detach(div);
60504				}
60505
60506				if (if_block0) if_block0.d();
60507				if (if_block1) if_block1.d();
60508				if (if_block2) if_block2.d();
60509			}
60510		};
60511	}
60512
60513	// (12:4) {#if showLine}
60514	function create_if_block_3$9(ctx) {
60515		let if_block_anchor;
60516
60517		function select_block_type(ctx, dirty) {
60518			if (/*text*/ ctx[0]) return create_if_block_4$7;
60519			return create_else_block$4;
60520		}
60521
60522		let current_block_type = select_block_type(ctx);
60523		let if_block = current_block_type(ctx);
60524
60525		return {
60526			c() {
60527				if_block.c();
60528				if_block_anchor = empty();
60529			},
60530			m(target, anchor) {
60531				if_block.m(target, anchor);
60532				insert(target, if_block_anchor, anchor);
60533			},
60534			p(ctx, dirty) {
60535				if (current_block_type === (current_block_type = select_block_type(ctx)) && if_block) {
60536					if_block.p(ctx, dirty);
60537				} else {
60538					if_block.d(1);
60539					if_block = current_block_type(ctx);
60540
60541					if (if_block) {
60542						if_block.c();
60543						if_block.m(if_block_anchor.parentNode, if_block_anchor);
60544					}
60545				}
60546			},
60547			d(detaching) {
60548				if (detaching) {
60549					detach(if_block_anchor);
60550				}
60551
60552				if_block.d(detaching);
60553			}
60554		};
60555	}
60556
60557	// (18:8) {:else}
60558	function create_else_block$4(ctx) {
60559		let div;
60560
60561		return {
60562			c() {
60563				div = element("div");
60564				attr(div, "class", "zephr-form-divider-line-complete svelte-1jhhsfx");
60565			},
60566			m(target, anchor) {
60567				insert(target, div, anchor);
60568			},
60569			p: noop,
60570			d(detaching) {
60571				if (detaching) {
60572					detach(div);
60573				}
60574			}
60575		};
60576	}
60577
60578	// (13:6) {#if text}
60579	function create_if_block_4$7(ctx) {
60580		let div;
60581
60582		return {
60583			c() {
60584				div = element("div");
60585				attr(div, "class", "zephr-form-divider-line svelte-1jhhsfx");
60586				toggle_class(div, "zephr-payment-form-divider-line", /*isPaymentForm*/ ctx[3]);
60587			},
60588			m(target, anchor) {
60589				insert(target, div, anchor);
60590			},
60591			p(ctx, dirty) {
60592				if (dirty & /*isPaymentForm*/ 8) {
60593					toggle_class(div, "zephr-payment-form-divider-line", /*isPaymentForm*/ ctx[3]);
60594				}
60595			},
60596			d(detaching) {
60597				if (detaching) {
60598					detach(div);
60599				}
60600			}
60601		};
60602	}
60603
60604	// (22:4) {#if text}
60605	function create_if_block_2$d(ctx) {
60606		let span;
60607		let t;
60608
60609		return {
60610			c() {
60611				span = element("span");
60612				t = text(/*text*/ ctx[0]);
60613				attr(span, "class", "zephr-form-divider-text svelte-1jhhsfx");
60614				toggle_class(span, "zephr-payment-form-divider-text", /*isPaymentForm*/ ctx[3]);
60615			},
60616			m(target, anchor) {
60617				insert(target, span, anchor);
60618				append(span, t);
60619			},
60620			p(ctx, dirty) {
60621				if (dirty & /*text*/ 1) set_data(t, /*text*/ ctx[0]);
60622
60623				if (dirty & /*isPaymentForm*/ 8) {
60624					toggle_class(span, "zephr-payment-form-divider-text", /*isPaymentForm*/ ctx[3]);
60625				}
60626			},
60627			d(detaching) {
60628				if (detaching) {
60629					detach(span);
60630				}
60631			}
60632		};
60633	}
60634
60635	// (30:4) {#if showLine && text}
60636	function create_if_block_1$l(ctx) {
60637		let div;
60638
60639		return {
60640			c() {
60641				div = element("div");
60642				attr(div, "class", "zephr-form-divider-line svelte-1jhhsfx");
60643				toggle_class(div, "zephr-payment-form-divider-line", /*isPaymentForm*/ ctx[3]);
60644			},
60645			m(target, anchor) {
60646				insert(target, div, anchor);
60647			},
60648			p(ctx, dirty) {
60649				if (dirty & /*isPaymentForm*/ 8) {
60650					toggle_class(div, "zephr-payment-form-divider-line", /*isPaymentForm*/ ctx[3]);
60651				}
60652			},
60653			d(detaching) {
60654				if (detaching) {
60655					detach(div);
60656				}
60657			}
60658		};
60659	}
60660
60661	function create_fragment$F(ctx) {
60662		let if_block_anchor;
60663		let if_block = /*show*/ ctx[2] && create_if_block$v(ctx);
60664
60665		return {
60666			c() {
60667				if (if_block) if_block.c();
60668				if_block_anchor = empty();
60669			},
60670			m(target, anchor) {
60671				if (if_block) if_block.m(target, anchor);
60672				insert(target, if_block_anchor, anchor);
60673			},
60674			p(ctx, [dirty]) {
60675				if (/*show*/ ctx[2]) {
60676					if (if_block) {
60677						if_block.p(ctx, dirty);
60678					} else {
60679						if_block = create_if_block$v(ctx);
60680						if_block.c();
60681						if_block.m(if_block_anchor.parentNode, if_block_anchor);
60682					}
60683				} else if (if_block) {
60684					if_block.d(1);
60685					if_block = null;
60686				}
60687			},
60688			i: noop,
60689			o: noop,
60690			d(detaching) {
60691				if (detaching) {
60692					detach(if_block_anchor);
60693				}
60694
60695				if (if_block) if_block.d(detaching);
60696			}
60697		};
60698	}
60699
60700	function instance$F($$self, $$props, $$invalidate) {
60701		let { text } = $$props;
60702		let { showLine } = $$props;
60703		let { show } = $$props;
60704		let { isPaymentForm = false } = $$props;
60705
60706		$$self.$$set = $$props => {
60707			if ('text' in $$props) $$invalidate(0, text = $$props.text);
60708			if ('showLine' in $$props) $$invalidate(1, showLine = $$props.showLine);
60709			if ('show' in $$props) $$invalidate(2, show = $$props.show);
60710			if ('isPaymentForm' in $$props) $$invalidate(3, isPaymentForm = $$props.isPaymentForm);
60711		};
60712
60713		return [text, showLine, show, isPaymentForm];
60714	}
60715
60716	class Divider extends SvelteComponent {
60717		constructor(options) {
60718			super();
60719
60720			init(this, options, instance$F, create_fragment$F, safe_not_equal, {
60721				text: 0,
60722				showLine: 1,
60723				show: 2,
60724				isPaymentForm: 3
60725			});
60726		}
60727	}
60728
60729	const factory$e = {
60730	    matches: (sectionElement) => sectionElement.type === elementTypes.DIVIDER,
60731	    create: (form, formState, formActions, elementConfig) => ({
60732	        component: Divider,
60733	        props: {
60734	            text: elementConfig.text,
60735	            showLine: elementConfig.showLine,
60736	            show: elementConfig.show,
60737	            isPaymentForm: form.formType === FormType.PAYMENT,
60738	        }
60739	    })
60740	};
60741
60742	/* src/components/elements/loginLink/LoginLink.svelte generated by Svelte v4.2.12 */
60743
60744	function create_fragment$E(ctx) {
60745		let div;
60746		let t0;
60747		let t1;
60748		let a;
60749		let t2;
60750
60751		return {
60752			c() {
60753				div = element("div");
60754				t0 = text(/*text*/ ctx[0]);
60755				t1 = space();
60756				a = element("a");
60757				t2 = text(/*linkText*/ ctx[1]);
60758				attr(a, "href", /*url*/ ctx[2]);
60759				attr(a, "class", "svelte-1jmemom");
60760				attr(div, "class", "zephr-form-login-link svelte-1jmemom");
60761				toggle_class(div, "zephr-payment-login-link", /*isPaymentForm*/ ctx[3]);
60762			},
60763			m(target, anchor) {
60764				insert(target, div, anchor);
60765				append(div, t0);
60766				append(div, t1);
60767				append(div, a);
60768				append(a, t2);
60769			},
60770			p(ctx, [dirty]) {
60771				if (dirty & /*text*/ 1) set_data(t0, /*text*/ ctx[0]);
60772				if (dirty & /*linkText*/ 2) set_data(t2, /*linkText*/ ctx[1]);
60773
60774				if (dirty & /*url*/ 4) {
60775					attr(a, "href", /*url*/ ctx[2]);
60776				}
60777
60778				if (dirty & /*isPaymentForm*/ 8) {
60779					toggle_class(div, "zephr-payment-login-link", /*isPaymentForm*/ ctx[3]);
60780				}
60781			},
60782			i: noop,
60783			o: noop,
60784			d(detaching) {
60785				if (detaching) {
60786					detach(div);
60787				}
60788			}
60789		};
60790	}
60791
60792	function instance$E($$self, $$props, $$invalidate) {
60793		let { text } = $$props;
60794		let { linkText } = $$props;
60795		let { url } = $$props;
60796		let { isPaymentForm = false } = $$props;
60797
60798		$$self.$$set = $$props => {
60799			if ('text' in $$props) $$invalidate(0, text = $$props.text);
60800			if ('linkText' in $$props) $$invalidate(1, linkText = $$props.linkText);
60801			if ('url' in $$props) $$invalidate(2, url = $$props.url);
60802			if ('isPaymentForm' in $$props) $$invalidate(3, isPaymentForm = $$props.isPaymentForm);
60803		};
60804
60805		return [text, linkText, url, isPaymentForm];
60806	}
60807
60808	class LoginLink extends SvelteComponent {
60809		constructor(options) {
60810			super();
60811
60812			init(this, options, instance$E, create_fragment$E, safe_not_equal, {
60813				text: 0,
60814				linkText: 1,
60815				url: 2,
60816				isPaymentForm: 3
60817			});
60818		}
60819	}
60820
60821	const factory$d = {
60822	    matches: (sectionElement) => sectionElement.type === elementTypes.LOGIN_LINK,
60823	    create: (form, formState, formActions, elementConfig) => ({
60824	        component: LoginLink,
60825	        props: {
60826	            text: elementConfig.alreadyRegText,
60827	            linkText: elementConfig.loginText,
60828	            url: elementConfig.url,
60829	            isPaymentForm: form.formType === FormType.PAYMENT,
60830	        }
60831	    })
60832	};
60833
60834	const factory$c = {
60835	    matches: (sectionElement) => sectionElement.type === elementTypes.BUTTON && sectionElement.config.isLogin,
60836	    create: (form, formState, formActions, elementConfig) => ({
60837	        component: Button,
60838	        props: {
60839	            disabled: formState.isBusy,
60840	            text: elementConfig.text,
60841	            onClick: () => {
60842	                logDataLayerEvent(form, 'zephr_form_button_press', {
60843	                    sectionId: formState.currentSection.type,
60844	                    buttonType: 'SUBMIT'
60845	                });
60846	                formActions.updateFormState({
60847	                    forgotPassword: false,
60848	                });
60849	                formActions.jumpToPartStart(partTypes.ACCOUNT_VERIFICATION.type);
60850	            },
60851	            isPaymentForm: form.formType === FormType.PAYMENT,
60852	        }
60853	    })
60854	};
60855
60856	const factory$b = {
60857	    matches: (sectionElement) => sectionElement.type === elementTypes.BUTTON && sectionElement.config.isCancel,
60858	    create: (form, formState, formActions, elementConfig) => ({
60859	        component: Button,
60860	        props: {
60861	            text: elementConfig.text,
60862	            onClick: () => {
60863	                logDataLayerEvent(form, 'zephr_form_button_press', {
60864	                    sectionId: formState.currentSection.type,
60865	                    buttonType: 'SUBMIT'
60866	                });
60867	                formActions.updateFormState({
60868	                    confirmCancel: true,
60869	                });
60870	                formActions.completeSection();
60871	            },
60872	        }
60873	    })
60874	};
60875
60876	/* src/components/elements/accountMembershipCode/AccountMembershipCode.svelte generated by Svelte v4.2.12 */
60877
60878	function create_if_block_1$k(ctx) {
60879		let link;
60880		let current;
60881		link = new Link({ props: { text: /*label*/ ctx[0] } });
60882		link.$on("linkClick", /*linkClick_handler*/ ctx[10]);
60883
60884		return {
60885			c() {
60886				create_component(link.$$.fragment);
60887			},
60888			m(target, anchor) {
60889				mount_component(link, target, anchor);
60890				current = true;
60891			},
60892			p(ctx, dirty) {
60893				const link_changes = {};
60894				if (dirty & /*label*/ 1) link_changes.text = /*label*/ ctx[0];
60895				link.$set(link_changes);
60896			},
60897			i(local) {
60898				if (current) return;
60899				transition_in(link.$$.fragment, local);
60900				current = true;
60901			},
60902			o(local) {
60903				transition_out(link.$$.fragment, local);
60904				current = false;
60905			},
60906			d(detaching) {
60907				destroy_component(link, detaching);
60908			}
60909		};
60910	}
60911
60912	// (23:2) {#if accountMembershipCode || showInput}
60913	function create_if_block$u(ctx) {
60914		let label_1;
60915		let t;
60916		let input;
60917		let current;
60918
60919		label_1 = new Label({
60920				props: {
60921					forInput: /*id*/ ctx[8],
60922					label: /*label*/ ctx[0]
60923				}
60924			});
60925
60926		input = new Input({
60927				props: {
60928					id: /*id*/ ctx[8],
60929					value: /*accountMembershipCode*/ ctx[2],
60930					errorMessage: /*error*/ ctx[3],
60931					placeholder: /*placeholder*/ ctx[1],
60932					onFocus: /*onFocus*/ ctx[5],
60933					onBlur: /*onBlur*/ ctx[6]
60934				}
60935			});
60936
60937		input.$on("change", /*change_handler*/ ctx[11]);
60938
60939		return {
60940			c() {
60941				create_component(label_1.$$.fragment);
60942				t = space();
60943				create_component(input.$$.fragment);
60944			},
60945			m(target, anchor) {
60946				mount_component(label_1, target, anchor);
60947				insert(target, t, anchor);
60948				mount_component(input, target, anchor);
60949				current = true;
60950			},
60951			p(ctx, dirty) {
60952				const label_1_changes = {};
60953				if (dirty & /*label*/ 1) label_1_changes.label = /*label*/ ctx[0];
60954				label_1.$set(label_1_changes);
60955				const input_changes = {};
60956				if (dirty & /*accountMembershipCode*/ 4) input_changes.value = /*accountMembershipCode*/ ctx[2];
60957				if (dirty & /*error*/ 8) input_changes.errorMessage = /*error*/ ctx[3];
60958				if (dirty & /*placeholder*/ 2) input_changes.placeholder = /*placeholder*/ ctx[1];
60959				if (dirty & /*onFocus*/ 32) input_changes.onFocus = /*onFocus*/ ctx[5];
60960				if (dirty & /*onBlur*/ 64) input_changes.onBlur = /*onBlur*/ ctx[6];
60961				input.$set(input_changes);
60962			},
60963			i(local) {
60964				if (current) return;
60965				transition_in(label_1.$$.fragment, local);
60966				transition_in(input.$$.fragment, local);
60967				current = true;
60968			},
60969			o(local) {
60970				transition_out(label_1.$$.fragment, local);
60971				transition_out(input.$$.fragment, local);
60972				current = false;
60973			},
60974			d(detaching) {
60975				if (detaching) {
60976					detach(t);
60977				}
60978
60979				destroy_component(label_1, detaching);
60980				destroy_component(input, detaching);
60981			}
60982		};
60983	}
60984
60985	function create_fragment$D(ctx) {
60986		let div;
60987		let t;
60988		let current;
60989		let if_block0 = !/*showInput*/ ctx[7] && create_if_block_1$k(ctx);
60990		let if_block1 = (/*accountMembershipCode*/ ctx[2] || /*showInput*/ ctx[7]) && create_if_block$u(ctx);
60991
60992		return {
60993			c() {
60994				div = element("div");
60995				if (if_block0) if_block0.c();
60996				t = space();
60997				if (if_block1) if_block1.c();
60998				attr(div, "class", "zephr-form-account-code-container svelte-1hhep92");
60999			},
61000			m(target, anchor) {
61001				insert(target, div, anchor);
61002				if (if_block0) if_block0.m(div, null);
61003				append(div, t);
61004				if (if_block1) if_block1.m(div, null);
61005				current = true;
61006			},
61007			p(ctx, [dirty]) {
61008				if (!/*showInput*/ ctx[7]) {
61009					if (if_block0) {
61010						if_block0.p(ctx, dirty);
61011
61012						if (dirty & /*showInput*/ 128) {
61013							transition_in(if_block0, 1);
61014						}
61015					} else {
61016						if_block0 = create_if_block_1$k(ctx);
61017						if_block0.c();
61018						transition_in(if_block0, 1);
61019						if_block0.m(div, t);
61020					}
61021				} else if (if_block0) {
61022					group_outros();
61023
61024					transition_out(if_block0, 1, 1, () => {
61025						if_block0 = null;
61026					});
61027
61028					check_outros();
61029				}
61030
61031				if (/*accountMembershipCode*/ ctx[2] || /*showInput*/ ctx[7]) {
61032					if (if_block1) {
61033						if_block1.p(ctx, dirty);
61034
61035						if (dirty & /*accountMembershipCode, showInput*/ 132) {
61036							transition_in(if_block1, 1);
61037						}
61038					} else {
61039						if_block1 = create_if_block$u(ctx);
61040						if_block1.c();
61041						transition_in(if_block1, 1);
61042						if_block1.m(div, null);
61043					}
61044				} else if (if_block1) {
61045					group_outros();
61046
61047					transition_out(if_block1, 1, 1, () => {
61048						if_block1 = null;
61049					});
61050
61051					check_outros();
61052				}
61053			},
61054			i(local) {
61055				if (current) return;
61056				transition_in(if_block0);
61057				transition_in(if_block1);
61058				current = true;
61059			},
61060			o(local) {
61061				transition_out(if_block0);
61062				transition_out(if_block1);
61063				current = false;
61064			},
61065			d(detaching) {
61066				if (detaching) {
61067					detach(div);
61068				}
61069
61070				if (if_block0) if_block0.d();
61071				if (if_block1) if_block1.d();
61072			}
61073		};
61074	}
61075
61076	function instance$D($$self, $$props, $$invalidate) {
61077		let { formKey } = $$props;
61078		let { label } = $$props;
61079		let { placeholder } = $$props;
61080		let { accountMembershipCode } = $$props;
61081		let { error = null } = $$props;
61082		let { onChange } = $$props;
61083		let { onFocus } = $$props;
61084		let { onBlur } = $$props;
61085		let showInput = false;
61086		const id = `zephr-form-account-code-${formKey}`;
61087		const linkClick_handler = () =>
61087 $$invalidate(7, showInput = true);
61088		const change_handler = value => onChange(value.detail);
61089
61090		$$self.$$set = $$props => {
61091			if ('formKey' in $$props) $$invalidate(9, formKey = $$props.formKey);
61092			if ('label' in $$props) $$invalidate(0, label = $$props.label);
61093			if ('placeholder' in $$props) $$invalidate(1, placeholder = $$props.placeholder);
61094			if ('accountMembershipCode' in $$props) $$invalidate(2, accountMembershipCode = $$props.accountMembershipCode);
61095			if ('error' in $$props) $$invalidate(3, error = $$props.error);
61096			if ('onChange' in $$props) $$invalidate(4, onChange = $$props.onChange);
61097			if ('onFocus' in $$props) $$invalidate(5, onFocus = $$props.onFocus);
61098			if ('onBlur' in $$props) $$invalidate(6, onBlur = $$props.onBlur);
61099		};
61100
61101		return [
61102			label,
61103			placeholder,
61104			accountMembershipCode,
61105			error,
61106			onChange,
61107			onFocus,
61108			onBlur,
61109			showInput,
61110			id,
61111			formKey,
61112			linkClick_handler,
61113			change_handler
61114		];
61115	}
61116
61117	class AccountMembershipCode extends SvelteComponent {
61118		constructor(options) {
61119			super();
61120
61121			init(this, options, instance$D, create_fragment$D, safe_not_equal, {
61122				formKey: 9,
61123				label: 0,
61124				placeholder: 1,
61125				accountMembershipCode: 2,
61126				error: 3,
61127				onChange: 4,
61128				onFocus: 5,
61129				onBlur: 6
61130			});
61131		}
61132	}
61133
61134	const factory$a = {
61135	    matches: (sectionElement) => sectionElement.type === elementTypes.ACCOUNT_MEMBERSHIP_CODE,
61136	    create: (form, formState, formActions, elementConfig) => ({
61137	        component: AccountMembershipCode,
61138	        props: {
61139	            formKey: form.uniqueKey,
61140	            label: elementConfig.label,
61141	            placeholder: elementConfig.placeholder,
61142	            accountMembershipCode: formState.accountMembershipCode,
61143	            onChange: (value) => {
61144	                formActions.updateFormState({
61145	                    accountMembershipCode: value,
61146	                    serverErrors: [],
61147	                });
61148	                logDataLayerEvent(form, 'zephr_form_input_change', {
61149	                    inputName: `zephr-form-account-code-${form.uniqueKey}`,
61150	                    sectionId: formState.currentSection.type,
61151	                    field: 'account-code'
61152	                });
61153	            },
61154	            onFocus: () => logDataLayerEvent(form, 'zephr_form_input_focus', {
61155	                inputName: `zephr-form-account-code-${form.uniqueKey}`,
61156	                sectionId: formState.currentSection.type,
61157	                field: 'account-code'
61158	            }),
61159	            onBlur: () => logDataLayerEvent(form, 'zephr_form_input_blur', {
61160	                inputName: `zephr-form-account-code-${form.uniqueKey}`,
61161	                sectionId: formState.currentSection.type,
61162	                field: 'account-code'
61163	            }),
61164	        }
61165	    })
61166	};
61167
61168	/* src/components/elements/invitation/Invitation.svelte generated by Svelte v4.2.12 */
61169
61170	function create_if_block$t(ctx) {
61171		let div;
61172		let successmessage;
61173		let current;
61174		successmessage = new SuccessMessage({ props: { text: /*linkSentText*/ ctx[4] } });
61175
61176		return {
61177			c() {
61178				div = element("div");
61179				create_component(successmessage.$$.fragment);
61180				attr(div, "class", "zephr-form-invitation-success-message svelte-1qkv7d3");
61181			},
61182			m(target, anchor) {
61183				insert(target, div, anchor);
61184				mount_component(successmessage, div, null);
61185				current = true;
61186			},
61187			p(ctx, dirty) {
61188				const successmessage_changes = {};
61189				if (dirty & /*linkSentText*/ 16) successmessage_changes.text = /*linkSentText*/ ctx[4];
61190				successmessage.$set(successmessage_changes);
61191			},
61192			i(local) {
61193				if (current) return;
61194				transition_in(successmessage.$$.fragment, local);
61195				current = true;
61196			},
61197			o(local) {
61198				transition_out(successmessage.$$.fragment, local);
61199				current = false;
61200			},
61201			d(detaching) {
61202				if (detaching) {
61203					detach(div);
61204				}
61205
61206				destroy_component(successmessage);
61207			}
61208		};
61209	}
61210
61211	function create_fragment$C(ctx) {
61212		let div4;
61213		let div0;
61214		let t0;
61215		let t1;
61216		let div1;
61217		let t2;
61218		let t3;
61219		let label_1;
61220		let t4;
61221		let div3;
61222		let div2;
61223		let input;
61224		let t5;
61225		let button;
61226		let t6;
61227		let current;
61228
61229		label_1 = new Label({
61230				props: {
61231					forInput: /*id*/ ctx[14],
61232					label: /*label*/ ctx[2],
61233					isPaymentForm: /*isPaymentForm*/ ctx[11]
61234				}
61235			});
61236
61237		input = new Input({
61238				props: {
61239					disabled: /*isBusy*/ ctx[10],
61240					required: true,
61241					id: /*id*/ ctx[14],
61242					value: /*invitationEmail*/ ctx[7] ?? '',
61243					errorMessage: /*error*/ ctx[9],
61244					isPaymentForm: /*isPaymentForm*/ ctx[11],
61245					onFocus: /*onFocus*/ ctx[12],
61246					onBlur: /*onBlur*/ ctx[13]
61247				}
61248			});
61249
61250		input.$on("change", /*change_handler*/ ctx[16]);
61251
61252		button = new Button({
61253				props: {
61254					disabled: !isValidEmail(/*invitationEmail*/ ctx[7]) || /*isBusy*/ ctx[10],
61255					text: /*btnText*/ ctx[3],
61256					onClick: /*onSendInviteClick*/ ctx[5],
61257					noMargin: true,
61258					inputHeight: true,
61259					aside: true,
61260					isPaymentForm: /*isPaymentForm*/ ctx[11]
61261				}
61262			});
61263
61264		let if_block = /*invitationSent*/ ctx[8] && create_if_block$t(ctx);
61265
61266		return {
61267			c() {
61268				div4 = element("div");
61269				div0 = element("div");
61270				t0 = text(/*title*/ ctx[0]);
61271				t1 = space();
61272				div1 = element("div");
61273				t2 = text(/*description*/ ctx[1]);
61274				t3 = space();
61275				create_component(label_1.$$.fragment);
61276				t4 = space();
61277				div3 = element("div");
61278				div2 = element("div");
61279				create_component(input.$$.fragment);
61280				t5 = space();
61281				create_component(button.$$.fragment);
61282				t6 = space();
61283				if (if_block) if_block.c();
61284				attr(div0, "class", "zephr-form-invitation-title svelte-1qkv7d3");
61285				attr(div1, "class", "zephr-form-invitation-description");
61286				attr(div2, "class", "zephr-form-invitation-input-container svelte-1qkv7d3");
61287				attr(div3, "class", "zephr-form-relative-container zephr-form-invitation-email svelte-1qkv7d3");
61288				toggle_class(div3, "zephr-payment-form-relative-container", /*isPaymentForm*/ ctx[11]);
61289				attr(div4, "class", "zephr-form-invitation-container svelte-1qkv7d3");
61290			},
61291			m(target, anchor) {
61292				insert(target, div4, anchor);
61293				append(div4, div0);
61294				append(div0, t0);
61295				append(div4, t1);
61296				append(div4, div1);
61297				append(div1, t2);
61298				append(div4, t3);
61299				mount_component(label_1, div4, null);
61300				append(div4, t4);
61301				append(div4, div3);
61302				append(div3, div2);
61303				mount_component(input, div2, null);
61304				append(div3, t5);
61305				mount_component(button, div3, null);
61306				append(div4, t6);
61307				if (if_block) if_block.m(div4, null);
61308				current = true;
61309			},
61310			p(ctx, [dirty]) {
61311				if (!current || dirty & /*title*/ 1) set_data(t0, /*title*/ ctx[0]);
61312				if (!current || dirty & /*description*/ 2) set_data(t2, /*description*/ ctx[1]);
61313				const label_1_changes = {};
61314				if (dirty & /*label*/ 4) label_1_changes.label = /*label*/ ctx[2];
61315				if (dirty & /*isPaymentForm*/ 2048) label_1_changes.isPaymentForm = /*isPaymentForm*/ ctx[11];
61316				label_1.$set(label_1_changes);
61317				const input_changes = {};
61318				if (dirty & /*isBusy*/ 1024) input_changes.disabled = /*isBusy*/ ctx[10];
61319				if (dirty & /*invitationEmail*/ 128) input_changes.value = /*invitationEmail*/ ctx[7] ?? '';
61320				if (dirty & /*error*/ 512) input_changes.errorMessage = /*error*/ ctx[9];
61321				if (dirty & /*isPaymentForm*/ 2048) input_changes.isPaymentForm = /*isPaymentForm*/ ctx[11];
61322				if (dirty & /*onFocus*/ 4096) input_changes.onFocus = /*onFocus*/ ctx[12];
61323				if (dirty & /*onBlur*/ 8192) input_changes.onBlur = /*onBlur*/ ctx[13];
61324				input.$set(input_changes);
61325				const button_changes = {};
61326				if (dirty & /*invitationEmail, isBusy*/ 1152) button_changes.disabled = !isValidEmail(/*invitationEmail*/ ctx[7]) || /*isBusy*/ ctx[10];
61327				if (dirty & /*btnText*/ 8) button_changes.text = /*btnText*/ ctx[3];
61328				if (dirty & /*onSendInviteClick*/ 32) button_changes.onClick = /*onSendInviteClick*/ ctx[5];
61329				if (dirty & /*isPaymentForm*/ 2048) button_changes.isPaymentForm = /*isPaymentForm*/ ctx[11];
61330				button.$set(button_changes);
61331
61332				if (!current || dirty & /*isPaymentForm*/ 2048) {
61333					toggle_class(div3, "zephr-payment-form-relative-container", /*isPaymentForm*/ ctx[11]);
61334				}
61335
61336				if (/*invitationSent*/ ctx[8]) {
61337					if (if_block) {
61338						if_block.p(ctx, dirty);
61339
61340						if (dirty & /*invitationSent*/ 256) {
61341							transition_in(if_block, 1);
61342						}
61343					} else {
61344						if_block = create_if_block$t(ctx);
61345						if_block.c();
61346						transition_in(if_block, 1);
61347						if_block.m(div4, null);
61348					}
61349				} else if (if_block) {
61350					group_outros();
61351
61352					transition_out(if_block, 1, 1, () => {
61353						if_block = null;
61354					});
61355
61356					check_outros();
61357				}
61358			},
61359			i(local) {
61360				if (current) return;
61361				transition_in(label_1.$$.fragment, local);
61362				transition_in(input.$$.fragment, local);
61363				transition_in(button.$$.fragment, local);
61364				transition_in(if_block);
61365				current = true;
61366			},
61367			o(local) {
61368				transition_out(label_1.$$.fragment, local);
61369				transition_out(input.$$.fragment, local);
61370				transition_out(button.$$.fragment, local);
61371				transition_out(if_block);
61372				current = false;
61373			},
61374			d(detaching) {
61375				if (detaching) {
61376					detach(div4);
61377				}
61378
61379				destroy_component(label_1);
61380				destroy_component(input);
61381				destroy_component(button);
61382				if (if_block) if_block.d();
61383			}
61384		};
61385	}
61386
61387	function instance$C($$self, $$props, $$invalidate) {
61388		let { formKey } = $$props;
61389		let { title } = $$props;
61390		let { description } = $$props;
61391		let { label } = $$props;
61392		let { btnText } = $$props;
61393		let { linkSentText } = $$props;
61394		let { onSendInviteClick } = $$props;
61395		let { onChange } = $$props;
61396		let { invitationEmail } = $$props;
61397		let { invitationSent } = $$props;
61398		let { error = null } = $$props;
61399		let { isBusy } = $$props;
61400		let { isPaymentForm = false } = $$props;
61401		let { onFocus } = $$props;
61402		let { onBlur } = $$props;
61403		const id = `zephr-form-invitation-email-${formKey}`;
61404		const change_handler = ({ detail }) => onChange(detail);
61405
61406		$$self.$$set = $$props => {
61407			if ('formKey' in $$props) $$invalidate(15, formKey = $$props.formKey);
61408			if ('title' in $$props) $$invalidate(0, title = $$props.title);
61409			if ('description' in $$props) $$invalidate(1, description = $$props.description);
61410			if ('label' in $$props) $$invalidate(2, label = $$props.label);
61411			if ('btnText' in $$props) $$invalidate(3, btnText = $$props.btnText);
61412			if ('linkSentText' in $$props) $$invalidate(4, linkSentText = $$props.linkSentText);
61413			if ('onSendInviteClick' in $$props) $$invalidate(5, onSendInviteClick = $$props.onSendInviteClick);
61414			if ('onChange' in $$props) $$invalidate(6, onChange = $$props.onChange);
61415			if ('invitationEmail' in $$props) $$invalidate(7, invitationEmail = $$props.invitationEmail);
61416			if ('invitationSent' in $$props) $$invalidate(8, invitationSent = $$props.invitationSent);
61417			if ('error' in $$props) $$invalidate(9, error = $$props.error);
61418			if ('isBusy' in $$props) $$invalidate(10, isBusy = $$props.isBusy);
61419			if ('isPaymentForm' in $$props) $$invalidate(11, isPaymentForm = $$props.isPaymentForm);
61420			if ('onFocus' in $$props) $$invalidate(12, onFocus = $$props.onFocus);
61421			if ('onBlur' in $$props) $$invalidate(13, onBlur = $$props.onBlur);
61422		};
61423
61424		return [
61425			title,
61426			description,
61427			label,
61428			btnText,
61429			linkSentText,
61430			onSendInviteClick,
61431			onChange,
61432			invitationEmail,
61433			invitationSent,
61434			error,
61435			isBusy,
61436			isPaymentForm,
61437			onFocus,
61438			onBlur,
61439			id,
61440			formKey,
61441			change_handler
61442		];
61443	}
61444
61445	class Invitation extends SvelteComponent {
61446		constructor(options) {
61447			super();
61448
61449			init(this, options, instance$C, create_fragment$C, safe_not_equal, {
61450				formKey: 15,
61451				title: 0,
61452				description: 1,
61453				label: 2,
61454				btnText: 3,
61455				linkSentText: 4,
61456				onSendInviteClick: 5,
61457				onChange: 6,
61458				invitationEmail: 7,
61459				invitationSent: 8,
61460				error: 9,
61461				isBusy: 10,
61462				isPaymentForm: 11,
61463				onFocus: 12,
61464				onBlur: 13
61465			});
61466		}
61467	}
61468
61469	const mapToError = (e) => {
61470	    if (e?.status === 403 && e?.message?.includes('you do not have access to')) {
61471	        return ServerError.INVITATION_FAILED_NO_PRODUCT_ACCESS;
61472	    }
61473	    if (e?.status === 400 && e?.message?.includes('Invalid recipient email')) {
61474	        return ServerError.INVITATION_FAILED_INVALID_EMAIL;
61475	    }
61476	    if (e?.status === 400 && e?.message?.includes('reached the configured limit')) {
61477	        return ServerError.INVITATION_FAILED_LIMIT_REACHED;
61478	    }
61479	    if (e?.status === 409) {
61480	        return ServerError.INVITATION_FAILED_DUPLICATE_EMAIL;
61481	    }
61482	    return ServerError.INVITATION_FAILED_UNKNOWN;
61483	};
61484	const getUserProfile = (formActions) => request('blaize/profile', {
61485	    method: "GET"
61486	}, formActions)
61487	    .then(response => response.json());
61488	const convertMapping = (mapping, profile) => (mapping ?? []).reduce((acc, curr) => {
61489	    const value = profile[curr.attrSlug];
61490	    return { ...acc, [curr.fieldName]: value };
61491	}, {});
61492	const sendInvitationEmail = async (form, formState, formActions) => {
61493	    let profile;
61494	    if (formState.userExists) {
61495	        profile = await getUserProfile(formActions);
61496	    }
61497	    else {
61498	        profile = formState.userAttributes;
61499	    }
61500	    const profileConverted = convertMapping(formConfigAs(form).invitationMetadata.mapping, profile);
61501	    const response = await request('zephr/public/products/v1/shares/invitations/emails', {
61502	        method: "POST",
61503	        bodyObject: {
61504	            product_id: formState.paymentOption.productId,
61505	            email_address: formState.invitationEmail,
61506	            base_url: formConfigAs(form).invitationMetadata.url,
61507	            meta_data: profileConverted,
61508	        }
61509	    }, formActions);
61510	    const responseJson = (await response.json());
61511	    if (response.ok) {
61512	        formActions.updateFormState({
61513	            invitationSent: true,
61514	            invitationEmail: '',
61515	        });
61516	        setTimeout(() => {
61517	            formActions.updateFormState({
61518	                invitationSent: false,
61519	            });
61520	        }, 3000);
61521	    }
61522	    else {
61523	        const serverError = mapToError(responseJson);
61524	        logDataLayerEvent(form, 'zephr_form_error', {
61525	            error: ServerError[serverError],
61526	        });
61527	        formActions.updateFormState({
61528	            invitationSent: false,
61529	            serverErrors: [serverError],
61530	        });
61531	    }
61532	};
61533
61534	const factory$9 = {
61535	    matches: (sectionElement) => sectionElement.type === elementTypes.INVITATION,
61536	    create: (form, formState, formActions, elementConfig) => {
61537	        if (formState.paymentOption?.product_sharing_limit > 0) {
61538	            return {
61539	                component: Invitation,
61540	                props: {
61541	                    formKey: form.uniqueKey,
61542	                    title: elementConfig.title,
61543	                    description: elementConfig.description,
61544	                    label: elementConfig.label,
61545	                    btnText: elementConfig.btnText,
61546	                    linkSentText: elementConfig.linkSentText,
61547	                    onSendInviteClick: () => {
61548	                        logDataLayerEvent(form, 'zephr_form_button_press', {
61549	                            sectionId: formState.currentSection.type,
61550	                            buttonType: 'SUBMIT'
61551	                        });
61552	                        void sendInvitationEmail(form, formState, formActions);
61553	                    },
61554	                    onChange: (value) => {
61555	                        formActions.updateFormState({
61556	                            invitationEmail: value,
61557	                            serverErrors: [],
61558	                        });
61559	                        logDataLayerEvent(form, 'zephr_form_input_change', {
61560	                            inputName: `zephr-form-invitation-email-${form.uniqueKey}`,
61561	                            sectionId: formState.currentSection.type,
61562	                            field: 'invitation-email'
61563	                        });
61564	                    },
61565	                    onFocus: () => logDataLayerEvent(form, 'zephr_form_input_focus', {
61566	                        inputName: `zephr-form-invitation-email-${form.uniqueKey}`,
61567	                        sectionId: formState.currentSection.type,
61568	                        field: 'invitation-email'
61569	                    }),
61570	                    onBlur: () => logDataLayerEvent(form, 'zephr_form_input_blur', {
61571	                        inputName: `zephr-form-invitation-email-${form.uniqueKey}`,
61572	                        sectionId: formState.currentSection.type,
61573	                        field: 'invitation-email'
61574	                    }),
61575	                    invitationEmail: formState.invitationEmail,
61576	                    invitationSent: formState.invitationSent,
61577	                    isBusy: formState.isBusy,
61578	                    isPaymentForm: form.formType === FormType.PAYMENT,
61579	                }
61580	            };
61581	        }
61582	        return {
61583	            component: null,
61584	            props: {},
61585	        };
61586	    }
61587	};
61588
61589	/* src/components/elements/payment/EmptyPreLoader.svelte generated by Svelte v4.2.12 */
61590
61591	class EmptyPreLoader extends SvelteComponent {
61592		constructor(options) {
61593			super();
61594			init(this, options, null, null, safe_not_equal, {});
61595		}
61596	}
61597
61598	const factory$8 = {
61599	    matches: (sectionElement) => sectionElement.type === elementTypes.PAYMENT_PRE_LOADER,
61600	    create: (form, _, __) => {
61601	        const paymentProvider = paymentProviderFor(form.organisationConfiguration.paymentProvider);
61602	        if (paymentProvider.preLoaderComponent == null) {
61603	            return {
61604	                component: EmptyPreLoader,
61605	                props: {},
61606	            };
61607	        }
61608	        let component;
61609	        const formConfig = formConfigAs(form);
61610	        if (form.formType === FormType.CHANGE_SUBSCRIPTION && formConfig.allowNoPaymentMethodUpgrade) {
61611	            const environment = formConfig.paymentOptions?.[0]?.virtualEnvironment || 'live';
61612	            component = paymentProvider.preLoaderComponent(formConfig.paymentMethodSetupFormConfig[environment]);
61613	        }
61614	        else {
61615	            component = paymentProvider.preLoaderComponent(formConfig.paymentProviderFormConfig);
61616	        }
61617	        return {
61618	            component,
61619	            props: {
61620	                onMountCallback: () => paymentProvider.preLoader()
61621	            },
61622	        };
61623	    }
61624	};
61625
61626	/* src/components/elements/templateComponent/TemplateComponent.svelte generated by Svelte v4.2.12 */
61627
61628	function create_fragment$B(ctx) {
61629		let div;
61630
61631		return {
61632			c() {
61633				div = element("div");
61634			},
61635			m(target, anchor) {
61636				insert(target, div, anchor);
61637				div.innerHTML = /*html*/ ctx[0];
61638			},
61639			p(ctx, [dirty]) {
61640				if (dirty & /*html*/ 1) div.innerHTML = /*html*/ ctx[0];		},
61641			i: noop,
61642			o: noop,
61643			d(detaching) {
61644				if (detaching) {
61645					detach(div);
61646				}
61647			}
61648		};
61649	}
61650
61651	function instance$B($$self, $$props, $$invalidate) {
61652		let { html } = $$props;
61653
61654		$$self.$$set = $$props => {
61655			if ('html' in $$props) $$invalidate(0, html = $$props.html);
61656		};
61657
61658		return [html];
61659	}
61660
61661	class TemplateComponent extends SvelteComponent {
61662		constructor(options) {
61663			super();
61664			init(this, options, instance$B, create_fragment$B, safe_not_equal, { html: 0 });
61665		}
61666	}
61667
61668	const randomId = () => (Math.random() + 1).toString(36).substring(7);
61669
61670	// Unique ID for this instance of this form being rendered.
61671	const formInstanceId = randomId();
61672	// Flatten the extra scope variables from DO and remove null values, as for null values the default
61673	// should be used
61674	const extractDoScopeVariables = (formState) => {
61675	    if (!formState.dynamicOfferResult) {
61676	        return {};
61677	    }
61678	    return Object.entries({
61679	        tagline: formState.dynamicOfferResult.tagline,
61680	        ...(formState.dynamicOfferResult.custom ?? {})
61681	    }).reduce((acc, [key, value]) => {
61682	        if (key && value != null) {
61683	            acc[key] = value;
61684	        }
61685	        return acc;
61686	    }, {});
61687	};
61688	const renderTemplateComponent = (form, formState, formActions, templateElement) => {
61689	    // Load the resolved template values
61690	    const templateContent = (form.resolvedComponentTemplates ?? []).find(c => c.id === templateElement.templateId);
61691	    if (!templateContent) {
61692	        console.warn(`No component template found for id '${templateElement.templateId}'`);
61693	        return '';
61694	    }
61695	    // Pre-render
61696	    const templateForm = prepareForm(form, formState, formActions, templateElement, templateContent);
61697	    const preRenderScope = {
61698	        ...(templateDefaultVariableScope(templateContent, false)),
61699	        ...(templateElement.templateValues ?? {}),
61700	        ...(extractDoScopeVariables(formState)),
61701	        zephrForm: templateForm,
61702	        zephrOutcomeId: form.outcomeId,
61703	        zephrRuleId: form.ruleId,
61704	    };
61705	    const scriptResult = runTemplateScript(form, formState, templateElement, templateForm, templateContent.preRenderScript, preRenderScope);
61706	    // Assemble pre-render results for template rendering
61707	    const scope = {
61708	        ...preRenderScope,
61709	        ...(scriptResult.scope ?? {})
61710	    };
61711	    templateForm.actions = scriptResult.actions ?? {};
61712	    attachFormRefToWindow(templateForm);
61713	    // Render the template
61714	    try {
61715	        const html = mustache.render(`
61716        ${templateContent.css ? `<style>${templateContent.css}</style>` : ''}
61717        ${templateContent.html ?? ""}
61718        `, scope);
61719	        return html;
61720	    }
61721	    catch (e) {
61722	        console.error('Error rendering mustache template', e);
61723	        return '';
61724	    }
61725	};
61726	const templateDefaultVariableScope = (template, paymentOptionLevel) => (template.templateVariables ?? []).reduce((prev, variable) => (variable.defaultValue == null || variable.paymentOptionLevel != paymentOptionLevel ? prev : {
61727	    ...prev,
61728	    [variable.key]: variable.defaultValue
61729	}), {});
61730	const attachFormRefToWindow = (templateForm) => {
61731	    if (!window.Zephr) {
61732	        window.Zephr = {};
61733	    }
61734	    if (!window.Zephr.forms) {
61735	        window.Zephr.forms = {};
61736	    }
61737	    window.Zephr.forms[templateForm.formInstanceId] = templateForm;
61738	};
61739	const runTemplateScript = (form, formState, templateElement, templateForm, script, scope) => {
61740	    if (!script) {
61741	        return {
61742	            scope: {},
61743	            actions: {}
61744	        };
61745	    }
61746	    try {
61747	        // eslint-disable-next-line @typescript-eslint/no-implied-eval
61748	        const templateScript = new Function('state', 'form', 'scope', script);
61749	        const customState = (formState.customComponentState ?? {})[templateElement.id ?? '_'];
61750	        const customStateWithDo = formState.dynamicOfferResult ? {
61751	            ...(customState ?? {}),
61752	            dynamicOfferResult: filterChangeSubDynamicOfferResponse(formState.dynamicOfferResult, form, formState)
61753	        } : customState;
61754	        return templateScript(customStateWithDo, templateForm, scope);
61755	    }
61756	    catch (e) {
61757	        console.error('Error evaluating pre-render script', e);
61758	        return {
61759	            scope: {
61760	                'error': e
61761	            },
61762	            actions: {}
61763	        };
61764	    }
61765	};
61766	const setState = (formState, formActions, elementId) => (state) => {
61767	    formActions.updateFormState({
61768	        customComponentState: {
61769	            ...(formState.customComponentState ?? {}),
61770	            [elementId]: {
61771	                ...((formState.customComponentState ?? {})[elementId] ?? {}),
61772	                ...(state ?? {})
61773	            }
61774	        }
61775	    });
61776	};
61777	const selectPaymentOption = (form, formActions, formState, isDynamicOffer) => (productId, slug) => {
61778	    let paymentOption;
61779	    if (isDynamicOffer) {
61780	        const product = formState
61781	            .dynamicOfferResult.products.find((prod) => prod.id === productId);
61782	        const paymentPlan = product
61783	            ?.paymentPlans.find(plan => plan.planId === slug);
61784	        paymentOption = {
61785	            slug: paymentPlan.planId,
61786	            productId: product.id,
61787	            label: product.label,
61788	            currencyCode: paymentPlan.charges[0].prices[0].currency,
61789	            terms: paymentPlan.additionalPlanData?.terms,
61790	            termsAndConditions: paymentPlan.additionalPlanData?.termsAndConditions,
61791	            triggerOffsets: paymentPlan.additionalPlanData?.triggerOffsets,
61792	            changeSubscriptionTriggerOffsets: paymentPlan.additionalPlanData?.changeSubscriptionTriggerOffsets,
61793	            autoRenewConfig: paymentPlan.additionalPlanData?.autoRenewConfig || 'auto_renew',
61794	            autoRenewToggleLabel: paymentPlan.additionalPlanData?.autoRenewToggleLabel
61795	        };
61796	    }
61797	    else {
61798	        paymentOption = formConfigAs(form)
61799	            .paymentOptions
61800	            ?.find(o => o.productId === productId && o.slug === slug);
61801	    }
61802	    if (!paymentOption) {
61803	        console.warn(`No payment option exists for ${productId} ${slug}.`);
61804	        return;
61805	    }
61806	    const paymentOptionKey = `${paymentOption.productId}-${paymentOption.slug}`;
61807	    const updateState = {
61808	        paymentOption: paymentOption,
61809	        serverErrors: [],
61810	        billingAddress: {
61811	            country: null,
61812	            postalCode: null,
61813	        }
61814	    };
61815	    // Only initialize auto-renew state for payment options with custom_toggle config
61816	    if (paymentOption.autoRenewConfig === 'custom_toggle') {
61817	        updateState.paymentOptionAutoRenew = {
61818	            ...formState.paymentOptionAutoRenew,
61819	            [paymentOptionKey]: paymentOption.terms?.autoRenew ?? false
61820	        };
61821	    }
61822	    formActions.updateFormState(updateState);
61823	    if (form.organisationConfiguration.trackFormDataLayerEvents) {
61824	        logDataLayerEvent(form, 'zephr_form_button_press', {
61825	            sectionId: formState.currentSection.type,
61826	            buttonType: 'SUBMIT'
61827	        });
61828	    }
61829	    formActions.completeSection();
61830	};
61831	const prepareForm = (form, formState, formActions, templateElement, template) => {
61832	    const isDynamicOffer = !!formConfigAs(form).dynamicOffer?.id;
61833	    const paymentOptions = (formConfigAs(form).paymentOptions ?? []).map((p, i) => ({
61834	        slug: p.slug,
61835	        productId: p.productId,
61836	        label: p.label,
61837	        price: p.price,
61838	        currencyCode: p.currencyCode,
61839	        formattedPrice: formatCurrency(p.price, p.currencyCode),
61840	        index: i,
61841	        ...(templateDefaultVariableScope(template, true)),
61842	        ...(p.templateValues ?? {}),
61843	    }));
61844	    return {
61845	        formId: form.id,
61846	        formInstanceId,
61847	        paymentOptions: paymentOptions,
61848	        ref: `window.Zephr.forms['${formInstanceId}']`,
61849	        setState: setState(formState, formActions, templateElement.id ?? '_'),
61850	        getState: () => formActions.getFormState(),
61851	        selectPaymentOption: selectPaymentOption(form, formActions, formState, isDynamicOffer)
61852	    };
61853	};
61854
61855	const factory$7 = {
61856	    matches: (sectionElement) => sectionElement.type === elementTypes.TEMPLATE_COMPONENT,
61857	    create: (form, formState, formActions, elementConfig) => {
61858	        const renderedHtml = renderTemplateComponent(form, formState, formActions, elementConfig);
61859	        return {
61860	            component: TemplateComponent,
61861	            props: {
61862	                html: renderedHtml
61863	            }
61864	        };
61865	    }
61866	};
61867
61868	/* src/components/elements/subscriptionSelect/SubscriptionOption.svelte generated by Svelte v4.2.12 */
61869
61870	function create_if_block_3$8(ctx) {
61871		let div;
61872		let h3;
61873		let t_value = /*subscription*/ ctx[0].planLabel + "";
61874		let t;
61875
61876		return {
61877			c() {
61878				div = element("div");
61879				h3 = element("h3");
61880				t = text(t_value);
61881				attr(div, "class", "plan-label");
61882			},
61883			m(target, anchor) {
61884				insert(target, div, anchor);
61885				append(div, h3);
61886				append(h3, t);
61887			},
61888			p(ctx, dirty) {
61889				if (dirty & /*subscription*/ 1 && t_value !== (t_value = /*subscription*/ ctx[0].planLabel + "")) set_data(t, t_value);
61890			},
61891			d(detaching) {
61892				if (detaching) {
61893					detach(div);
61894				}
61895			}
61896		};
61897	}
61898
61899	// (26:6) {#if subscription.amount && amountLabel}
61900	function create_if_block_2$c(ctx) {
61901		let hr;
61902		let t0;
61903		let div2;
61904		let div0;
61905		let t1;
61906		let t2;
61907		let div1;
61908		let t3_value = /*subscription*/ ctx[0].amount + "";
61909		let t3;
61910
61911		return {
61912			c() {
61913				hr = element("hr");
61914				t0 = space();
61915				div2 = element("div");
61916				div0 = element("div");
61917				t1 = text(/*amountLabel*/ ctx[2]);
61918				t2 = space();
61919				div1 = element("div");
61920				t3 = text(t3_value);
61921				attr(hr, "class", "svelte-1gr56ov");
61922				attr(div0, "class", "info-label svelte-1gr56ov");
61923				attr(div1, "class", "info svelte-1gr56ov");
61924				attr(div2, "class", "info-row svelte-1gr56ov");
61925			},
61926			m(target, anchor) {
61927				insert(target, hr, anchor);
61928				insert(target, t0, anchor);
61929				insert(target, div2, anchor);
61930				append(div2, div0);
61931				append(div0, t1);
61932				append(div2, t2);
61933				append(div2, div1);
61934				append(div1, t3);
61935			},
61936			p(ctx, dirty) {
61937				if (dirty & /*amountLabel*/ 4) set_data(t1, /*amountLabel*/ ctx[2]);
61938				if (dirty & /*subscription*/ 1 && t3_value !== (t3_value = /*subscription*/ ctx[0].amount + "")) set_data(t3, t3_value);
61939			},
61940			d(detaching) {
61941				if (detaching) {
61942					detach(hr);
61943					detach(t0);
61944					detach(div2);
61945				}
61946			}
61947		};
61948	}
61949
61950	// (37:4) {#if subscription.nextBillingTime && nextBillingDateLabel}
61951	function create_if_block_1$j(ctx) {
61952		let hr;
61953		let t0;
61954		let div2;
61955		let div0;
61956		let t1;
61957		let t2;
61958		let div1;
61959		let t3_value = /*subscription*/ ctx[0].nextBillingTime + "";
61960		let t3;
61961
61962		return {
61963			c() {
61964				hr = element("hr");
61965				t0 = space();
61966				div2 = element("div");
61967				div0 = element("div");
61968				t1 = text(/*nextBillingDateLabel*/ ctx[3]);
61969				t2 = space();
61970				div1 = element("div");
61971				t3 = text(t3_value);
61972				attr(hr, "class", "svelte-1gr56ov");
61973				attr(div0, "class", "info-label svelte-1gr56ov");
61974				attr(div1, "class", "info svelte-1gr56ov");
61975				attr(div2, "class", "info-row svelte-1gr56ov");
61976			},
61977			m(target, anchor) {
61978				insert(target, hr, anchor);
61979				insert(target, t0, anchor);
61980				insert(target, div2, anchor);
61981				append(div2, div0);
61982				append(div0, t1);
61983				append(div2, t2);
61984				append(div2, div1);
61985				append(div1, t3);
61986			},
61987			p(ctx, dirty) {
61988				if (dirty & /*nextBillingDateLabel*/ 8) set_data(t1, /*nextBillingDateLabel*/ ctx[3]);
61989				if (dirty & /*subscription*/ 1 && t3_value !== (t3_value = /*subscription*/ ctx[0].nextBillingTime + "")) set_data(t3, t3_value);
61990			},
61991			d(detaching) {
61992				if (detaching) {
61993					detach(hr);
61994					detach(t0);
61995					detach(div2);
61996				}
61997			}
61998		};
61999	}
62000
62001	// (53:6) {#if subscription.cannotBeChanged}
62002	function create_if_block$s(ctx) {
62003		let div;
62004
62005		return {
62006			c() {
62007				div = element("div");
62008				attr(div, "class", "change-disabled-label svelte-1gr56ov");
62009			},
62010			m(target, anchor) {
62011				insert(target, div, anchor);
62012				div.innerHTML = /*noChangePlanMappingMessage*/ ctx[4];
62013			},
62014			p(ctx, dirty) {
62015				if (dirty & /*noChangePlanMappingMessage*/ 16) div.innerHTML = /*noChangePlanMappingMessage*/ ctx[4];		},
62016			d(detaching) {
62017				if (detaching) {
62018					detach(div);
62019				}
62020			}
62021		};
62022	}
62023
62024	function create_fragment$A(ctx) {
62025		let div3;
62026		let div2;
62027		let div1;
62028		let div0;
62029		let h2;
62030		let t0_value = /*subscription*/ ctx[0].productLabel + "";
62031		let t0;
62032		let t1;
62033		let t2;
62034		let t3;
62035		let t4;
62036		let button;
62037		let t5;
62038		let div2_style_value;
62039		let current;
62040		let mounted;
62041		let dispose;
62042		let if_block0 = /*subscription*/ ctx[0].planLabel && create_if_block_3$8(ctx);
62043		let if_block1 = /*subscription*/ ctx[0].amount && /*amountLabel*/ ctx[2] && create_if_block_2$c(ctx);
62044		let if_block2 = /*subscription*/ ctx[0].nextBillingTime && /*nextBillingDateLabel*/ ctx[3] && create_if_block_1$j(ctx);
62045
62046		button = new Button({
62047				props: {
62048					disabled: /*subscription*/ ctx[0].cannotBeChanged,
62049					text: /*selectButtonText*/ ctx[1] ?? "Select",
62050					onClick: /*onSelect*/ ctx[5]
62051				}
62052			});
62053
62054		let if_block3 = /*subscription*/ ctx[0].cannotBeChanged && create_if_block$s(ctx);
62055
62056		return {
62057			c() {
62058				div3 = element("div");
62059				div2 = element("div");
62060				div1 = element("div");
62061				div0 = element("div");
62062				h2 = element("h2");
62063				t0 = text(t0_value);
62064				t1 = space();
62065				if (if_block0) if_block0.c();
62066				t2 = space();
62067				if (if_block1) if_block1.c();
62068				t3 = space();
62069				if (if_block2) if_block2.c();
62070				t4 = space();
62071				create_component(button.$$.fragment);
62072				t5 = space();
62073				if (if_block3) if_block3.c();
62074				attr(div0, "class", "subscription-option-product-label");
62075				attr(div1, "class", "inner-box svelte-1gr56ov");
62076				attr(div2, "class", "subscription-option-box");
62077				attr(div2, "aria-hidden", "true");
62078
62079				attr(div2, "style", div2_style_value = /*subscription*/ ctx[0].cannotBeChanged
62080				? ""
62081				: "cursor: pointer;");
62082
62083				attr(div3, "class", "subscription-option-wrapper svelte-1gr56ov");
62084			},
62085			m(target, anchor) {
62086				insert(target, div3, anchor);
62087				append(div3, div2);
62088				append(div2, div1);
62089				append(div1, div0);
62090				append(div0, h2);
62091				append(h2, t0);
62092				append(div1, t1);
62093				if (if_block0) if_block0.m(div1, null);
62094				append(div1, t2);
62095				if (if_block1) if_block1.m(div1, null);
62096				append(div1, t3);
62097				if (if_block2) if_block2.m(div1, null);
62098				append(div1, t4);
62099				mount_component(button, div1, null);
62100				append(div1, t5);
62101				if (if_block3) if_block3.m(div1, null);
62102				current = true;
62103
62104				if (!mounted) {
62105					dispose = listen(div2, "click", self(prevent_default(function () {
62106						if (is_function(/*onSelect*/ ctx[5])) /*onSelect*/ ctx[5].apply(this, arguments);
62107					})));
62108
62109					mounted = true;
62110				}
62111			},
62112			p(new_ctx, [dirty]) {
62113				ctx = new_ctx;
62114				if ((!current || dirty & /*subscription*/ 1) && t0_value !== (t0_value = /*subscription*/ ctx[0].productLabel + "")) set_data(t0, t0_value);
62115
62116				if (/*subscription*/ ctx[0].planLabel) {
62117					if (if_block0) {
62118						if_block0.p(ctx, dirty);
62119					} else {
62120						if_block0 = create_if_block_3$8(ctx);
62121						if_block0.c();
62122						if_block0.m(div1, t2);
62123					}
62124				} else if (if_block0) {
62125					if_block0.d(1);
62126					if_block0 = null;
62127				}
62128
62129				if (/*subscription*/ ctx[0].amount && /*amountLabel*/ ctx[2]) {
62130					if (if_block1) {
62131						if_block1.p(ctx, dirty);
62132					} else {
62133						if_block1 = create_if_block_2$c(ctx);
62134						if_block1.c();
62135						if_block1.m(div1, t3);
62136					}
62137				} else if (if_block1) {
62138					if_block1.d(1);
62139					if_block1 = null;
62140				}
62141
62142				if (/*subscription*/ ctx[0].nextBillingTime && /*nextBillingDateLabel*/ ctx[3]) {
62143					if (if_block2) {
62144						if_block2.p(ctx, dirty);
62145					} else {
62146						if_block2 = create_if_block_1$j(ctx);
62147						if_block2.c();
62148						if_block2.m(div1, t4);
62149					}
62150				} else if (if_block2) {
62151					if_block2.d(1);
62152					if_block2 = null;
62153				}
62154
62155				const button_changes = {};
62156				if (dirty & /*subscription*/ 1) button_changes.disabled = /*subscription*/ ctx[0].cannotBeChanged;
62157				if (dirty & /*selectButtonText*/ 2) button_changes.text = /*selectButtonText*/ ctx[1] ?? "Select";
62158				if (dirty & /*onSelect*/ 32) button_changes.onClick = /*onSelect*/ ctx[5];
62159				button.$set(button_changes);
62160
62161				if (/*subscription*/ ctx[0].cannotBeChanged) {
62162					if (if_block3) {
62163						if_block3.p(ctx, dirty);
62164					} else {
62165						if_block3 = create_if_block$s(ctx);
62166						if_block3.c();
62167						if_block3.m(div1, null);
62168					}
62169				} else if (if_block3) {
62170					if_block3.d(1);
62171					if_block3 = null;
62172				}
62173
62174				if (!current || dirty & /*subscription*/ 1 && div2_style_value !== (div2_style_value = /*subscription*/ ctx[0].cannotBeChanged
62175				? ""
62176				: "cursor: pointer;")) {
62177					attr(div2, "style", div2_style_value);
62178				}
62179			},
62180			i(local) {
62181				if (current) return;
62182				transition_in(button.$$.fragment, local);
62183				current = true;
62184			},
62185			o(local) {
62186				transition_out(button.$$.fragment, local);
62187				current = false;
62188			},
62189			d(detaching) {
62190				if (detaching) {
62191					detach(div3);
62192				}
62193
62194				if (if_block0) if_block0.d();
62195				if (if_block1) if_block1.d();
62196				if (if_block2) if_block2.d();
62197				destroy_component(button);
62198				if (if_block3) if_block3.d();
62199				mounted = false;
62200				dispose();
62201			}
62202		};
62203	}
62204
62205	function instance$A($$self, $$props, $$invalidate) {
62206		let { subscription } = $$props;
62207		let { selectButtonText } = $$props;
62208		let { amountLabel } = $$props;
62209		let { nextBillingDateLabel } = $$props;
62210		let { noChangePlanMappingMessage } = $$props;
62211		let { onSelect } = $$props;
62212
62213		$$self.$$set = $$props => {
62214			if ('subscription' in $$props) $$invalidate(0, subscription = $$props.subscription);
62215			if ('selectButtonText' in $$props) $$invalidate(1, selectButtonText = $$props.selectButtonText);
62216			if ('amountLabel' in $$props) $$invalidate(2, amountLabel = $$props.amountLabel);
62217			if ('nextBillingDateLabel' in $$props) $$invalidate(3, nextBillingDateLabel = $$props.nextBillingDateLabel);
62218			if ('noChangePlanMappingMessage' in $$props) $$invalidate(4, noChangePlanMappingMessage = $$props.noChangePlanMappingMessage);
62219			if ('onSelect' in $$props) $$invalidate(5, onSelect = $$props.onSelect);
62220		};
62221
62222		return [
62223			subscription,
62224			selectButtonText,
62225			amountLabel,
62226			nextBillingDateLabel,
62227			noChangePlanMappingMessage,
62228			onSelect
62229		];
62230	}
62231
62232	class SubscriptionOption extends SvelteComponent {
62233		constructor(options) {
62234			super();
62235
62236			init(this, options, instance$A, create_fragment$A, safe_not_equal, {
62237				subscription: 0,
62238				selectButtonText: 1,
62239				amountLabel: 2,
62240				nextBillingDateLabel: 3,
62241				noChangePlanMappingMessage: 4,
62242				onSelect: 5
62243			});
62244		}
62245	}
62246
62247	/* src/components/elements/subscriptionSelect/SubscriptionSelect.svelte generated by Svelte v4.2.12 */
62248
62249	function get_each_context$b(ctx, list, i) {
62250		const child_ctx = ctx.slice();
62251		child_ctx[8] = list[i];
62252		return child_ctx;
62253	}
62254
62255	// (13:2) {#if subscriptions == null}
62256	function create_if_block_1$i(ctx) {
62257		let spinner;
62258		let current;
62259		spinner = new Spinner({});
62260
62261		return {
62262			c() {
62263				create_component(spinner.$$.fragment);
62264			},
62265			m(target, anchor) {
62266				mount_component(spinner, target, anchor);
62267				current = true;
62268			},
62269			i(local) {
62270				if (current) return;
62271				transition_in(spinner.$$.fragment, local);
62272				current = true;
62273			},
62274			o(local) {
62275				transition_out(spinner.$$.fragment, local);
62276				current = false;
62277			},
62278			d(detaching) {
62279				destroy_component(spinner, detaching);
62280			}
62281		};
62282	}
62283
62284	// (16:2) {#if subscriptions != null && !subscriptions.length}
62285	function create_if_block$r(ctx) {
62286		let div;
62287
62288		return {
62289			c() {
62290				div = element("div");
62291			},
62292			m(target, anchor) {
62293				insert(target, div, anchor);
62294				div.innerHTML = /*noSubscriptionsMessage*/ ctx[0];
62295			},
62296			p(ctx, dirty) {
62297				if (dirty & /*noSubscriptionsMessage*/ 1) div.innerHTML = /*noSubscriptionsMessage*/ ctx[0];		},
62298			d(detaching) {
62299				if (detaching) {
62300					detach(div);
62301				}
62302			}
62303		};
62304	}
62305
62306	// (21:2) {#each subscriptions ?? [] as subscription}
62307	function create_each_block$b(ctx) {
62308		let subscriptionoption;
62309		let current;
62310
62311		function func() {
62312			return /*func*/ ctx[7](/*subscription*/ ctx[8]);
62313		}
62314
62315		subscriptionoption = new SubscriptionOption({
62316				props: {
62317					subscription: /*subscription*/ ctx[8],
62318					selectButtonText: /*selectButtonText*/ ctx[5],
62319					noChangePlanMappingMessage: /*noChangePlanMappingMessage*/ ctx[1],
62320					amountLabel: /*amountLabel*/ ctx[3],
62321					nextBillingDateLabel: /*nextBillingDateLabel*/ ctx[4],
62322					onSelect: func
62323				}
62324			});
62325
62326		return {
62327			c() {
62328				create_component(subscriptionoption.$$.fragment);
62329			},
62330			m(target, anchor) {
62331				mount_component(subscriptionoption, target, anchor);
62332				current = true;
62333			},
62334			p(new_ctx, dirty) {
62335				ctx = new_ctx;
62336				const subscriptionoption_changes = {};
62337				if (dirty & /*subscriptions*/ 4) subscriptionoption_changes.subscription = /*subscription*/ ctx[8];
62338				if (dirty & /*selectButtonText*/ 32) subscriptionoption_changes.selectButtonText = /*selectButtonText*/ ctx[5];
62339				if (dirty & /*noChangePlanMappingMessage*/ 2) subscriptionoption_changes.noChangePlanMappingMessage = /*noChangePlanMappingMessage*/ ctx[1];
62340				if (dirty & /*amountLabel*/ 8) subscriptionoption_changes.amountLabel = /*amountLabel*/ ctx[3];
62341				if (dirty & /*nextBillingDateLabel*/ 16) subscriptionoption_changes.nextBillingDateLabel = /*nextBillingDateLabel*/ ctx[4];
62342				if (dirty & /*onSelect, subscriptions*/ 68) subscriptionoption_changes.onSelect = func;
62343				subscriptionoption.$set(subscriptionoption_changes);
62344			},
62345			i(local) {
62346				if (current) return;
62347				transition_in(subscriptionoption.$$.fragment, local);
62348				current = true;
62349			},
62350			o(local) {
62351				transition_out(subscriptionoption.$$.fragment, local);
62352				current = false;
62353			},
62354			d(detaching) {
62355				destroy_component(subscriptionoption, detaching);
62356			}
62357		};
62358	}
62359
62360	function create_fragment$z(ctx) {
62361		let div;
62362		let t0;
62363		let t1;
62364		let current;
62365		let if_block0 = /*subscriptions*/ ctx[2] == null && create_if_block_1$i();
62366		let if_block1 = /*subscriptions*/ ctx[2] != null && !/*subscriptions*/ ctx[2].length && create_if_block$r(ctx);
62367		let each_value = ensure_array_like(/*subscriptions*/ ctx[2] ?? []);
62368		let each_blocks = [];
62369
62370		for (let i = 0; i < each_value.length; i += 1) {
62371			each_blocks[i] = create_each_block$b(get_each_context$b(ctx, each_value, i));
62372		}
62373
62374		const out = i => transition_out(each_blocks[i], 1, 1, () => {
62375			each_blocks[i] = null;
62376		});
62377
62378		return {
62379			c() {
62380				div = element("div");
62381				if (if_block0) if_block0.c();
62382				t0 = space();
62383				if (if_block1) if_block1.c();
62384				t1 = space();
62385
62386				for (let i = 0; i < each_blocks.length; i += 1) {
62387					each_blocks[i].c();
62388				}
62389
62390				attr(div, "class", "subscription-options-container svelte-bnxnvq");
62391			},
62392			m(target, anchor) {
62393				insert(target, div, anchor);
62394				if (if_block0) if_block0.m(div, null);
62395				append(div, t0);
62396				if (if_block1) if_block1.m(div, null);
62397				append(div, t1);
62398
62399				for (let i = 0; i < each_blocks.length; i += 1) {
62400					if (each_blocks[i]) {
62401						each_blocks[i].m(div, null);
62402					}
62403				}
62404
62405				current = true;
62406			},
62407			p(ctx, [dirty]) {
62408				if (/*subscriptions*/ ctx[2] == null) {
62409					if (if_block0) {
62410						if (dirty & /*subscriptions*/ 4) {
62411							transition_in(if_block0, 1);
62412						}
62413					} else {
62414						if_block0 = create_if_block_1$i();
62415						if_block0.c();
62416						transition_in(if_block0, 1);
62417						if_block0.m(div, t0);
62418					}
62419				} else if (if_block0) {
62420					group_outros();
62421
62422					transition_out(if_block0, 1, 1, () => {
62423						if_block0 = null;
62424					});
62425
62426					check_outros();
62427				}
62428
62429				if (/*subscriptions*/ ctx[2] != null && !/*subscriptions*/ ctx[2].length) {
62430					if (if_block1) {
62431						if_block1.p(ctx, dirty);
62432					} else {
62433						if_block1 = create_if_block$r(ctx);
62434						if_block1.c();
62435						if_block1.m(div, t1);
62436					}
62437				} else if (if_block1) {
62438					if_block1.d(1);
62439					if_block1 = null;
62440				}
62441
62442				if (dirty & /*subscriptions, selectButtonText, noChangePlanMappingMessage, amountLabel, nextBillingDateLabel, onSelect*/ 126) {
62443					each_value = ensure_array_like(/*subscriptions*/ ctx[2] ?? []);
62444					let i;
62445
62446					for (i = 0; i < each_value.length; i += 1) {
62447						const child_ctx = get_each_context$b(ctx, each_value, i);
62448
62449						if (each_blocks[i]) {
62450							each_blocks[i].p(child_ctx, dirty);
62451							transition_in(each_blocks[i], 1);
62452						} else {
62453							each_blocks[i] = create_each_block$b(child_ctx);
62454							each_blocks[i].c();
62455							transition_in(each_blocks[i], 1);
62456							each_blocks[i].m(div, null);
62457						}
62458					}
62459
62460					group_outros();
62461
62462					for (i = each_value.length; i < each_blocks.length; i += 1) {
62463						out(i);
62464					}
62465
62466					check_outros();
62467				}
62468			},
62469			i(local) {
62470				if (current) return;
62471				transition_in(if_block0);
62472
62473				for (let i = 0; i < each_value.length; i += 1) {
62474					transition_in(each_blocks[i]);
62475				}
62476
62477				current = true;
62478			},
62479			o(local) {
62480				transition_out(if_block0);
62481				each_blocks = each_blocks.filter(Boolean);
62482
62483				for (let i = 0; i < each_blocks.length; i += 1) {
62484					transition_out(each_blocks[i]);
62485				}
62486
62487				current = false;
62488			},
62489			d(detaching) {
62490				if (detaching) {
62491					detach(div);
62492				}
62493
62494				if (if_block0) if_block0.d();
62495				if (if_block1) if_block1.d();
62496				destroy_each(each_blocks, detaching);
62497			}
62498		};
62499	}
62500
62501	function instance$z($$self, $$props, $$invalidate) {
62502		let { noSubscriptionsMessage } = $$props;
62503		let { noChangePlanMappingMessage } = $$props;
62504		let { subscriptions } = $$props;
62505		let { amountLabel } = $$props;
62506		let { nextBillingDateLabel } = $$props;
62507		let { selectButtonText } = $$props;
62508		let { onSelect } = $$props;
62509		const func = subscription => onSelect(subscription);
62510
62511		$$self.$$set = $$props => {
62512			if ('noSubscriptionsMessage' in $$props) $$invalidate(0, noSubscriptionsMessage = $$props.noSubscriptionsMessage);
62513			if ('noChangePlanMappingMessage' in $$props) $$invalidate(1, noChangePlanMappingMessage = $$props.noChangePlanMappingMessage);
62514			if ('subscriptions' in $$props) $$invali
62514date(2, subscriptions = $$props.subscriptions);
62515			if ('amountLabel' in $$props) $$invalidate(3, amountLabel = $$props.amountLabel);
62516			if ('nextBillingDateLabel' in $$props) $$invalidate(4, nextBillingDateLabel = $$props.nextBillingDateLabel);
62517			if ('selectButtonText' in $$props) $$invalidate(5, selectButtonText = $$props.selectButtonText);
62518			if ('onSelect' in $$props) $$invalidate(6, onSelect = $$props.onSelect);
62519		};
62520
62521		return [
62522			noSubscriptionsMessage,
62523			noChangePlanMappingMessage,
62524			subscriptions,
62525			amountLabel,
62526			nextBillingDateLabel,
62527			selectButtonText,
62528			onSelect,
62529			func
62530		];
62531	}
62532
62533	class SubscriptionSelect extends SvelteComponent {
62534		constructor(options) {
62535			super();
62536
62537			init(this, options, instance$z, create_fragment$z, safe_not_equal, {
62538				noSubscriptionsMessage: 0,
62539				noChangePlanMappingMessage: 1,
62540				subscriptions: 2,
62541				amountLabel: 3,
62542				nextBillingDateLabel: 4,
62543				selectButtonText: 5,
62544				onSelect: 6
62545			});
62546		}
62547	}
62548
62549	const subscriptionSelectFactory = {
62550	    matches: (sectionElement) => sectionElement.type === elementTypes.SUBSCRIPTION_SELECT,
62551	    create: (form, formState, formActions, elementConfig) => ({
62552	        component: SubscriptionSelect,
62553	        props: {
62554	            noSubscriptionsMessage: elementConfig.noSubscriptionsMessage,
62555	            selectButtonText: elementConfig.selectButtonText,
62556	            noChangePlanMappingMessage: elementConfig.noChangePlanMappingMessage,
62557	            amountLabel: elementConfig.amountLabel,
62558	            nextBillingDateLabel: elementConfig.nextBillingDateLabel,
62559	            subscriptions: formState.existingSubscriptions
62560	                ? formState.existingSubscriptions.filter(s => s.status !== 'inactive')
62561	                : null,
62562	            onSelect: (subscription) => {
62563	                formActions.updateFormState({
62564	                    selectedSubscription: subscription
62565	                });
62566	                logDataLayerEvent(form, 'zephr_form_button_press', {
62567	                    sectionId: formState.currentSection.type,
62568	                    buttonType: 'SUBMIT'
62569	                });
62570	                formActions.completeSection();
62571	            }
62572	        }
62573	    })
62574	};
62575
62576	/* src/components/elements/subscriptionsList/SubscriptionsListItem.svelte generated by Svelte v4.2.12 */
62577
62578	function create_if_block_4$6(ctx) {
62579		let span;
62580		let t;
62581
62582		return {
62583			c() {
62584				span = element("span");
62585				t = text(/*giftPillText*/ ctx[7]);
62586				attr(span, "class", "gift-pill svelte-1qhs7yc");
62587			},
62588			m(target, anchor) {
62589				insert(target, span, anchor);
62590				append(span, t);
62591			},
62592			p(ctx, dirty) {
62593				if (dirty & /*giftPillText*/ 128) set_data(t, /*giftPillText*/ ctx[7]);
62594			},
62595			d(detaching) {
62596				if (detaching) {
62597					detach(span);
62598				}
62599			}
62600		};
62601	}
62602
62603	// (23:4) {#if showBillingHistory}
62604	function create_if_block_2$b(ctx) {
62605		let div1;
62606		let div0;
62607		let t0;
62608		let t1;
62609		let t2;
62610		let hr;
62611		let current;
62612		let if_block = /*billingHistoryLink*/ ctx[4] && create_if_block_3$7(ctx);
62613
62614		return {
62615			c() {
62616				div1 = element("div");
62617				div0 = element("div");
62618				t0 = text(/*billingHistoryText*/ ctx[3]);
62619				t1 = space();
62620				if (if_block) if_block.c();
62621				t2 = space();
62622				hr = element("hr");
62623				attr(div0, "class", "information");
62624				attr(div1, "class", "section");
62625				attr(hr, "class", "svelte-1qhs7yc");
62626			},
62627			m(target, anchor) {
62628				insert(target, div1, anchor);
62629				append(div1, div0);
62630				append(div0, t0);
62631				append(div0, t1);
62632				if (if_block) if_block.m(div0, null);
62633				insert(target, t2, anchor);
62634				insert(target, hr, anchor);
62635				current = true;
62636			},
62637			p(ctx, dirty) {
62638				if (!current || dirty & /*billingHistoryText*/ 8) set_data(t0, /*billingHistoryText*/ ctx[3]);
62639
62640				if (/*billingHistoryLink*/ ctx[4]) {
62641					if (if_block) {
62642						if_block.p(ctx, dirty);
62643
62644						if (dirty & /*billingHistoryLink*/ 16) {
62645							transition_in(if_block, 1);
62646						}
62647					} else {
62648						if_block = create_if_block_3$7(ctx);
62649						if_block.c();
62650						transition_in(if_block, 1);
62651						if_block.m(div0, null);
62652					}
62653				} else if (if_block) {
62654					group_outros();
62655
62656					transition_out(if_block, 1, 1, () => {
62657						if_block = null;
62658					});
62659
62660					check_outros();
62661				}
62662			},
62663			i(local) {
62664				if (current) return;
62665				transition_in(if_block);
62666				current = true;
62667			},
62668			o(local) {
62669				transition_out(if_block);
62670				current = false;
62671			},
62672			d(detaching) {
62673				if (detaching) {
62674					detach(div1);
62675					detach(t2);
62676					detach(hr);
62677				}
62678
62679				if (if_block) if_block.d();
62680			}
62681		};
62682	}
62683
62684	// (27:10) {#if billingHistoryLink}
62685	function create_if_block_3$7(ctx) {
62686		let link;
62687		let current;
62688
62689		link = new Link({
62690				props: { text: /*billingHistoryLink*/ ctx[4] }
62691			});
62692
62693		link.$on("linkClick", /*linkClick_handler*/ ctx[8]);
62694
62695		return {
62696			c() {
62697				create_component(link.$$.fragment);
62698			},
62699			m(target, anchor) {
62700				mount_component(link, target, anchor);
62701				current = true;
62702			},
62703			p(ctx, dirty) {
62704				const link_changes = {};
62705				if (dirty & /*billingHistoryLink*/ 16) link_changes.text = /*billingHistoryLink*/ ctx[4];
62706				link.$set(link_changes);
62707			},
62708			i(local) {
62709				if (current) return;
62710				transition_in(link.$$.fragment, local);
62711				current = true;
62712			},
62713			o(local) {
62714				transition_out(link.$$.fragment, local);
62715				current = false;
62716			},
62717			d(detaching) {
62718				destroy_component(link, detaching);
62719			}
62720		};
62721	}
62722
62723	// (34:4) {#if subscription.status === 'active' && subscription.nextBillingTime}
62724	function create_if_block_1$h(ctx) {
62725		let div1;
62726		let h3;
62727		let t0;
62728		let t1;
62729		let div0;
62730		let t2_value = /*subscription*/ ctx[0].nextBillingTime + "";
62731		let t2;
62732		let t3;
62733		let hr;
62734
62735		return {
62736			c() {
62737				div1 = element("div");
62738				h3 = element("h3");
62739				t0 = text(/*nextPaymentDateText*/ ctx[1]);
62740				t1 = space();
62741				div0 = element("div");
62742				t2 = text(t2_value);
62743				t3 = space();
62744				hr = element("hr");
62745				attr(h3, "class", "svelte-1qhs7yc");
62746				attr(div0, "class", "information");
62747				attr(div1, "class", "section");
62748				attr(hr, "class", "svelte-1qhs7yc");
62749			},
62750			m(target, anchor) {
62751				insert(target, div1, anchor);
62752				append(div1, h3);
62753				append(h3, t0);
62754				append(div1, t1);
62755				append(div1, div0);
62756				append(div0, t2);
62757				insert(target, t3, anchor);
62758				insert(target, hr, anchor);
62759			},
62760			p(ctx, dirty) {
62761				if (dirty & /*nextPaymentDateText*/ 2) set_data(t0, /*nextPaymentDateText*/ ctx[1]);
62762				if (dirty & /*subscription*/ 1 && t2_value !== (t2_value = /*subscription*/ ctx[0].nextBillingTime + "")) set_data(t2, t2_value);
62763			},
62764			d(detaching) {
62765				if (detaching) {
62766					detach(div1);
62767					detach(t3);
62768					detach(hr);
62769				}
62770			}
62771		};
62772	}
62773
62774	// (41:4) {#if subscription.amount}
62775	function create_if_block$q(ctx) {
62776		let div1;
62777		let h3;
62778		let t0;
62779		let t1;
62780		let div0;
62781		let t2_value = /*subscription*/ ctx[0].amount + "";
62782		let t2;
62783		let t3;
62784		let hr;
62785
62786		return {
62787			c() {
62788				div1 = element("div");
62789				h3 = element("h3");
62790				t0 = text(/*subscriptionRateText*/ ctx[2]);
62791				t1 = space();
62792				div0 = element("div");
62793				t2 = text(t2_value);
62794				t3 = space();
62795				hr = element("hr");
62796				attr(h3, "class", "svelte-1qhs7yc");
62797				attr(div0, "class", "information");
62798				attr(div1, "class", "section");
62799				attr(hr, "class", "svelte-1qhs7yc");
62800			},
62801			m(target, anchor) {
62802				insert(target, div1, anchor);
62803				append(div1, h3);
62804				append(h3, t0);
62805				append(div1, t1);
62806				append(div1, div0);
62807				append(div0, t2);
62808				insert(target, t3, anchor);
62809				insert(target, hr, anchor);
62810			},
62811			p(ctx, dirty) {
62812				if (dirty & /*subscriptionRateText*/ 4) set_data(t0, /*subscriptionRateText*/ ctx[2]);
62813				if (dirty & /*subscription*/ 1 && t2_value !== (t2_value = /*subscription*/ ctx[0].amount + "")) set_data(t2, t2_value);
62814			},
62815			d(detaching) {
62816				if (detaching) {
62817					detach(div1);
62818					detach(t3);
62819					detach(hr);
62820				}
62821			}
62822		};
62823	}
62824
62825	function create_fragment$y(ctx) {
62826		let div2;
62827		let div1;
62828		let div0;
62829		let h2;
62830		let t0_value = /*subscription*/ ctx[0].productLabel + "";
62831		let t0;
62832		let t1;
62833		let h2_class_value;
62834		let t2;
62835		let hr;
62836		let t3;
62837		let t4;
62838		let t5;
62839		let current;
62840		let if_block0 = /*subscription*/ ctx[0].isGift && create_if_block_4$6(ctx);
62841		let if_block1 = /*showBillingHistory*/ ctx[6] && create_if_block_2$b(ctx);
62842		let if_block2 = /*subscription*/ ctx[0].status === 'active' && /*subscription*/ ctx[0].nextBillingTime && create_if_block_1$h(ctx);
62843		let if_block3 = /*subscription*/ ctx[0].amount && create_if_block$q(ctx);
62844
62845		return {
62846			c() {
62847				div2 = element("div");
62848				div1 = element("div");
62849				div0 = element("div");
62850				h2 = element("h2");
62851				t0 = text(t0_value);
62852				t1 = space();
62853				if (if_block0) if_block0.c();
62854				t2 = space();
62855				hr = element("hr");
62856				t3 = space();
62857				if (if_block1) if_block1.c();
62858				t4 = space();
62859				if (if_block2) if_block2.c();
62860				t5 = space();
62861				if (if_block3) if_block3.c();
62862
62863				attr(h2, "class", h2_class_value = "" + (null_to_empty(/*sub
62863scription*/ ctx[0].status === 'inactive'
62864				? 'inactive'
62865				: '') + " svelte-1qhs7yc"));
62866
62867				attr(div0, "class", "section");
62868				attr(hr, "class", "svelte-1qhs7yc");
62869				attr(div1, "class", "inner-box svelte-1qhs7yc");
62870				attr(div2, "class", "subscription-list-item svelte-1qhs7yc");
62871			},
62872			m(target, anchor) {
62873				insert(target, div2, anchor);
62874				append(div2, div1);
62875				append(div1, div0);
62876				append(div0, h2);
62877				append(h2, t0);
62878				append(h2, t1);
62879				if (if_block0) if_block0.m(h2, null);
62880				append(div1, t2);
62881				append(div1, hr);
62882				append(div1, t3);
62883				if (if_block1) if_block1.m(div1, null);
62884				append(div1, t4);
62885				if (if_block2) if_block2.m(div1, null);
62886				append(div1, t5);
62887				if (if_block3) if_block3.m(div1, null);
62888				current = true;
62889			},
62890			p(ctx, [dirty]) {
62891				if ((!current || dirty & /*subscription*/ 1) && t0_value !== (t0_value = /*subscription*/ ctx[0].productLabel + "")) set_data(t0, t0_value);
62892
62893				if (/*subscription*/ ctx[0].isGift) {
62894					if (if_block0) {
62895						if_block0.p(ctx, dirty);
62896					} else {
62897						if_block0 = create_if_block_4$6(ctx);
62898						if_block0.c();
62899						if_block0.m(h2, null);
62900					}
62901				} else if (if_block0) {
62902					if_block0.d(1);
62903					if_block0 = null;
62904				}
62905
62906				if (!current || dirty & /*subscription*/ 1 && h2_class_value !== (h2_class_value = "" + (null_to_empty(/*subscription*/ ctx[0].status === 'inactive'
62907				? 'inactive'
62908				: '') + " svelte-1qhs7yc"))) {
62909					attr(h2, "class", h2_class_value);
62910				}
62911
62912				if (/*showBillingHistory*/ ctx[6]) {
62913					if (if_block1) {
62914						if_block1.p(ctx, dirty);
62915
62916						if (dirty & /*showBillingHistory*/ 64) {
62917							transition_in(if_block1, 1);
62918						}
62919					} else {
62920						if_block1 = create_if_block_2$b(ctx);
62921						if_block1.c();
62922						transition_in(if_block1, 1);
62923						if_block1.m(div1, t4);
62924					}
62925				} else if (if_block1) {
62926					group_outros();
62927
62928					transition_out(if_block1, 1, 1, () => {
62929						if_block1 = null;
62930					});
62931
62932					check_outros();
62933				}
62934
62935				if (/*subscription*/ ctx[0].status === 'active' && /*subscription*/ ctx[0].nextBillingTime) {
62936					if (if_block2) {
62937						if_block2.p(ctx, dirty);
62938					} else {
62939						if_block2 = create_if_block_1$h(ctx);
62940						if_block2.c();
62941						if_block2.m(div1, t5);
62942					}
62943				} else if (if_block2) {
62944					if_block2.d(1);
62945					if_block2 = null;
62946				}
62947
62948				if (/*subscription*/ ctx[0].amount) {
62949					if (if_block3) {
62950						if_block3.p(ctx, dirty);
62951					} else {
62952						if_block3 = create_if_block$q(ctx);
62953						if_block3.c();
62954						if_block3.m(div1, null);
62955					}
62956				} else if (if_block3) {
62957					if_block3.d(1);
62958					if_block3 = null;
62959				}
62960			},
62961			i(local) {
62962				if (current) return;
62963				transition_in(if_block1);
62964				current = true;
62965			},
62966			o(local) {
62967				transition_out(if_block1);
62968				current = false;
62969			},
62970			d(detaching) {
62971				if (detaching) {
62972					detach(div2);
62973				}
62974
62975				if (if_block0) if_block0.d();
62976				if (if_block1) if_block1.d();
62977				if (if_block2) if_block2.d();
62978				if (if_block3) if_block3.d();
62979			}
62980		};
62981	}
62982
62983	function instance$y($$self, $$props, $$invalidate) {
62984		let { subscription } = $$props;
62985		let { nextPaymentDateText } = $$props;
62986		let { subscriptionRateText } = $$props;
62987		let { billingHistoryText } = $$props;
62988		let { billingHistoryLink } = $$props;
62989		let { onViewHistory } = $$props;
62990		let { showBillingHistory } = $$props;
62991		let { giftPillText = 'Gift' } = $$props;
62992		const linkClick_handler = () => onViewHistory(subscription);
62993
62994		$$self.$$set = $$props => {
62995			if ('subscription' in $$props) $$invalidate(0, subscription = $$props.subscription);
62996			if ('nextPaymentDateText' in $$props) $$invalidate(1, nextPaymentDateText = $$props.nextPaymentDateText);
62997			if ('subscriptionRateText' in $$props) $$invalidate(2, subscriptionRateText = $$props.subscriptionRateText);
62998			if ('billingHistoryText' in $$props) $$invalidate(3, billingHistoryText = $$props.billingHistoryText);
62999			if ('billingHistoryLink' in $$props) $$invalidate(4, billingHistoryLink = $$props.billingHistoryLink);
63000			if ('onViewHistory' in $$props) $$invalidate(5, onViewHistory = $$props.onViewHistory);
63001			if ('showBillingHistory' in $$props) $$invalidate(6, showBillingHistory = $$props.showBillingHistory);
63002			if ('giftPillText' in $$props) $$invalidate(7, giftPillText = $$props.giftPillText);
63003		};
63004
63005		return [
63006			subscription,
63007			nextPaymentDateText,
63008			subscriptionRateText,
63009			billingHistoryText,
63010			billingHistoryLink,
63011			onViewHistory,
63012			showBillingHistory,
63013			giftPillText,
63014			linkClick_handler
63015		];
63016	}
63017
63018	class SubscriptionsListItem extends SvelteComponent {
63019		constructor(options) {
63020			super();
63021
63022			init(this, options, instance$y, create_fragment$y, safe_not_equal, {
63023				subscription: 0,
63024				nextPaymentDateText: 1,
63025				subscriptionRateText: 2,
63026				billingHistoryText: 3,
63027				billingHistoryLink: 4,
63028				onViewHistory: 5,
63029				showBillingHistory: 6,
63030				giftPillText: 7
63031			});
63032		}
63033	}
63034
63035	/* src/components/elements/Tablink.svelte generated by Svelte v4.2.12 */
63036
63037	function create_fragment$x(ctx) {
63038		let a;
63039		let span;
63040		let t0;
63041		let t1;
63042		let svg;
63043		let path_1;
63044		let a_href_value;
63045		let mounted;
63046		let dispose;
63047
63048		return {
63049			c() {
63050				a = element("a");
63051				span = element("span");
63052				t0 = text(/*text*/ ctx[0]);
63053				t1 = space();
63054				svg = svg_element("svg");
63055				path_1 = svg_element("path");
63056				attr(path_1, "fill", "currentColor");
63057				attr(path_1, "d", "M305 239c9.4 9.4 9.4 24.6 0 33.9L113 465c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l175-175L79 81c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L305 239z");
63058				attr(svg, "aria-hidden", "true");
63059				attr(svg, "focusable", "false");
63060				attr(svg, "data-prefix", "far");
63061				attr(svg, "data-icon", "chevron-right");
63062				attr(svg, "class", "svg-inline--fa fa-chevron-right sc-egTsrv kzAurc");
63063				attr(svg, "role", "img");
63064				attr(svg, "xmlns", "http://www.w3.org/2000/svg");
63065				attr(svg, "viewBox", "0 0 320 512");
63066				attr(svg, "width", "16");
63067				attr(svg, "height", "16");
63068				attr(a, "class", "zephr-form-tablink svelte-py0ruk");
63069
63070				attr(a, "href", a_href_value = /*path*/ ctx[1] && (!window.Zephr || !window.Zephr.isCustomPage || !/*path*/ ctx[1].startsWith(window.Zephr.customPagePath))
63071				? /*path*/ ctx[1]
63072				: "javascript: void(0)");
63073			},
63074			m(target, anchor) {
63075				insert(target, a, anchor);
63076				append(a, span);
63077				append(span, t0);
63078				append(a, t1);
63079				append(a, svg);
63080				append(svg, path_1);
63081
63082				if (!mounted) {
63083					dispose = listen(a, "click", /*click_handler*/ ctx[4]);
63084					mounted = true;
63085				}
63086			},
63087			p(ctx, [dirty]) {
63088				if (dirty & /*text*/ 1) set_data(t0, /*text*/ ctx[0]);
63089
63090				if (dirty & /*path*/ 2 && a_href_value !== (a_href_value = /*path*/ ctx[1] && (!window.Zephr || !window.Zephr.isCustomPage || !/*path*/ ctx[1].startsWith(window.Zephr.customPagePath))
63091				? /*path*/ ctx[1]
63092				: "javascript: void(0)")) {
63093					attr(a, "href", a_href_value);
63094				}
63095			},
63096			i: noop,
63097			o: noop,
63098			d(detaching) {
63099				if (detaching) {
63100					detach(a);
63101				}
63102
63103				mounted = false;
63104				dispose();
63105			}
63106		};
63107	}
63108
63109	function instance$x($$self, $$props, $$invalidate) {
63110		let { text } = $$props;
63111		let { path = '' } = $$props;
63112
63113		let { onClick = () => {
63114			
63115		} } = $$props;
63116
63117		let { logDlEvent = () => {
63118			
63119		} } = $$props;
63120
63121		const click_handler = () => {
63122			logDlEvent?.();
63123
63124			if (window.Zephr && window.Zephr.isCustomPage && path.startsWith(window.Zephr.customPagePath)) {
63125				window.history.pushState({}, '', path);
63126			} else {
63127				onClick();
63128			}
63129		};
63130
63131		$$self.$$set = $$props => {
63132			if ('text' in $$props) $$invalidate(0, text = $$props.text);
63133			if ('path' in $$props) $$invalidate(1, path = $$props.path);
63134			if ('onClick' in $$props) $$invalidate(2, onClick = $$props.onClick);
63135			if ('logDlEvent' in $$props) $$invalidate(3, logDlEvent = $$props.logDlEvent);
63136		};
63137
63138		return [text, path, onClick, logDlEvent, click_handler];
63139	}
63140
63141	class Tablink extends SvelteComponent {
63142		constructor(options) {
63143			super();
63144
63145			init(this, options, instance$x, create_fragment$x, safe_not_equal, {
63146				text: 0,
63147				path: 1,
63148				onClick: 2,
63149				logDlEvent: 3
63150			});
63151		}
63152	}
63153
63154	/* src/components/elements/subscriptionsList/SubscriptionsListBoxItem.svelte generated by Svelte v4.2.12 */
63155
63156	function get_each_context$a(ctx, list, i) {
63157		const child_ctx = ctx.slice();
63158		child_ctx[48] = list[i];
63159		child_ctx[50] = i;
63160		return child_ctx;
63161	}
63162
63163	function get_each_context_1$2(ctx, list, i) {
63164		const child_ctx = ctx.slice();
63165		child_ctx[51] = list[i];
63166		return child_ctx;
63167	}
63168
63169	// (123:8) {#if subscription.isGift}
63170	function create_if_block_23(ctx) {
63171		let span;
63172		let t;
63173
63174		return {
63175			c() {
63176				span = element("span");
63177				t = text(/*giftPillText*/ ctx[24]);
63178				attr(span, "class", "gift-pill svelte-xxnasy");
63179			},
63180			m(target, anchor) {
63181				insert(target, span, anchor);
63182				append(span, t);
63183			},
63184			p(ctx, dirty) {
63185				if (dirty[0] & /*giftPillText*/ 16777216) set_data(t, /*giftPillText*/ ctx[24]);
63186			},
63187			d(detaching) {
63188				if (detaching) {
63189					detach(span);
63190				}
63191			}
63192		};
63193	}
63194
63195	// (135:4) {:else}
63196	function create_else_block$3(ctx) {
63197		let each_1_anchor;
63198		let current;
63199		let each_value = ensure_array_like(/*elementsOrder*/ ctx[21]);
63200		let each_blocks = [];
63201
63202		for (let i = 0; i < each_value.length; i += 1) {
63203			each_blocks[i] = create_each_block$a(get_each_context$a(ctx, each_value, i));
63204		}
63205
63206		const out = i => transition_out(each_blocks[i], 1, 1, () => {
63207			each_blocks[i] = null;
63208		});
63209
63210		return {
63211			c() {
63212				for (let i = 0; i < each_blocks.length; i += 1) {
63213					each_blocks[i].c();
63214				}
63215
63216				each_1_anchor = empty();
63217			},
63218			m(target, anchor) {
63219				for (let i = 0; i < each_blocks.length; i += 1) {
63220					if (each_blocks[i]) {
63221						each_blocks[i].m(target, anchor);
63222					}
63223				}
63224
63225				insert(target, each_1_anchor, anchor);
63226				current = true;
63227			},
63228			p(ctx, dirty) {
63229				if (dirty[0] & /*elementsOrder, updateBillToContactText, updateBillToContactPath, subscription, logUpdateBillToContact, elementsHide, paymentProvider, subscriptionCustomFieldsText, onUpdateSubscriptionCustomFields, suspendResumeSubscriptionText, suspendResumeSubscriptionPath, logSuspendResumeSubscription, cancelSubscriptionText, cancelSubscriptionPath, logCancelSubscription, changeSubscriptionText, changeSubscriptionPath, logChangeSubscription, changePaymentMethodText, onChangePayment, billingHistoryLink, onViewHistory, statusType, statusMessage, isUpdatingAutoRenew, autoRenewToggleText, autoRenewToggleEnabled, nextPaymentDateText, subscriptionRateText*/ 2122317823 | dirty[1] & /*displayedFields, withSubscriptionParam, autoRenewValue, handleAutoRenewChange*/ 15) {
63230					each_value = ensure_array_like(/*elementsOrder*/ ctx[21]);
63231					let i;
63232
63233					for (i = 0; i < each_value.length; i += 1) {
63234						const child_ctx = get_each_context$a(ctx, each_value, i);
63235
63236						if (each_blocks[i]) {
63237							each_blocks[i].p(child_ctx, dirty);
63238							transition_in(each_blocks[i], 1);
63239						} else {
63240							each_blocks[i] = create_each_block$a(child_ctx);
63241							each_blocks[i].c();
63242							transition_in(each_blocks[i], 1);
63243							each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor);
63244						}
63245					}
63246
63247					group_outros();
63248
63249					for (i = each_value.length; i < each_blocks.length; i += 1) {
63250						out(i);
63251					}
63252
63253					check_outros();
63254				}
63255			},
63256			i(local) {
63257				if (current) return;
63258
63259				for (let i = 0; i < each_value.length; i += 1) {
63260					transition_in(each_blocks[i]);
63261				}
63262
63263				current = true;
63264			},
63265			o(local) {
63266				each_blocks = each_blocks.filter(Boolean);
63267
63268				for (let i = 0; i < each_blocks.length; i += 1) {
63269					transition_out(each_blocks[i]);
63270				}
63271
63272				current = false;
63273			},
63274			d(detaching) {
63275				if (detaching) {
63276					detach(each_1_anchor);
63277				}
63278
63279				destroy_each(each_blocks, detaching);
63280			}
63281		};
63282	}
63283
63284	// (128:4) {#if isInactive}
63285	function create_if_block$p(ctx) {
63286		let if_block_anchor;
63287		let if_block = /*subscription*/ ctx[0].amount && create_if_block_1$g(ctx);
63288
63289		return {
63290			c() {
63291				if (if_block) if_block.c();
63292				if_block_anchor = empty();
63293			},
63294			m(target, anchor) {
63295				if (if_block) if_block.m(target, anchor);
63296				insert(target, if_block_anchor, anchor);
63297			},
63298			p(ctx, dirty) {
63299				if (/*subscription*/ ctx[0].amount) {
63300					if (if_block) {
63301						if_block.p(ctx, dirty);
63302					} else {
63303						if_block = create_if_block_1$g(ctx);
63304						if_block.c();
63305						if_block.m(if_block_anchor.parentNode, if_block_anchor);
63306					}
63307				} else if (if_block) {
63308					if_block.d(1);
63309					if_block = null;
63310				}
63311			},
63312			i: noop,
63313			o: noop,
63314			d(detaching) {
63315				if (detaching) {
63316					detach(if_block_anchor);
63317				}
63318
63319				if (if_block) if_block.d(detaching);
63320			}
63321		};
63322	}
63323
63324	// (137:8) {#if element === 'subscription_information' && !elementsHide.subscriptionInformation}
63325	function create_if_block_20(ctx) {
63326		let t;
63327		let if_block1_anchor;
63328		let if_block0 = /*subscription*/ ctx[0].amount && create_if_block_22(ctx);
63329		let if_block1 = /*subscription*/ ctx[0].status === 'active' && /*subscription*/ ctx[0].nextBillingTime && create_if_block_21(ctx);
63330
63331		return {
63332			c() {
63333				if (if_block0) if_block0.c();
63334				t = space();
63335				if (if_block1) if_block1.c();
63336				if_block1_anchor = empty();
63337			},
63338			m(target, anchor) {
63339				if (if_block0) if_block0.m(target, anchor);
63340				insert(target, t, anchor);
63341				if (if_block1) if_block1.m(target, anchor);
63342				insert(target, if_block1_anchor, anchor);
63343			},
63344			p(ctx, dirty) {
63345				if (/*subscription*/ ctx[0].amount) {
63346					if (if_block0) {
63347						if_block0.p(ctx, dirty);
63348					} else {
63349						if_block0 = create_if_block_22(ctx);
63350						if_block0.c();
63351						if_block0.m(t.parentNode, t);
63352					}
63353				} else if (if_block0) {
63354					if_block0.d(1);
63355					if_block0 = null;
63356				}
63357
63358				if (/*subscription*/ ctx[0].status === 'active' && /*subscription*/ ctx[0].nextBillingTime) {
63359					if (if_block1) {
63360						if_block1.p(ctx, dirty);
63361					} else {
63362						if_block1 = create_if_block_21(ctx);
63363						if_block1.c();
63364						if_block1.m(if_block1_anchor.parentNode, if_block1_anchor);
63365					}
63366				} else if (if_block1) {
63367					if_block1.d(1);
63368					if_block1 = null;
63369				}
63370			},
63371			d(detaching) {
63372				if (detaching) {
63373					detach(t);
63374					detach(if_block1_anchor);
63375				}
63376
63377				if (if_block0) if_block0.d(detaching);
63378				if (if_block1) if_block1.d(detaching);
63379			}
63380		};
63381	}
63382
63383	// (138:10) {#if subscription.amount}
63384	function create_if_block_22(ctx) {
63385		let div1;
63386		let span;
63387		let t0;
63388		let t1;
63389		let div0;
63390		let t2_value = /*subscription*/ ctx[0].amount + "";
63391		let t2;
63392
63393		return {
63394			c() {
63395				div1 = element("div");
63396				span = element("span");
63397				t0 = text(/*subscriptionRateText*/ ctx[2]);
63398				t1 = space();
63399				div0 = element("div");
63400				t2 = text(t2_value);
63401				attr(span, "class", "svelte-xxnasy");
63402				attr(div0, "class", "zephr-box-item-information svelte-xxnasy");
63403				attr(div1, "class", "zephr-section svelte-xxnasy");
63404			},
63405			m(target, anchor) {
63406				insert(target, div1, anchor);
63407				append(div1, span);
63408				append(span, t0);
63409				append(div1, t1);
63410				append(div1, div0);
63411				append(div0, t2);
63412			},
63413			p(ctx, dirty) {
63414				if (dirty[0] & /*subscriptionRateText*/ 4) set_data(t0, /*subscriptionRateText*/ ctx[2]);
63415				if (dirty[0] & /*subscription*/ 1 && t2_value !== (t2_value = /*subscription*/ ctx[0].amount + "")) set_data(t2, t2_value);
63416			},
63417			d(detaching) {
63418				if (detaching) {
63419					detach(div1);
63420				}
63421			}
63422		};
63423	}
63424
63425	// (146:10) {#if subscription.status === 'active' && subscription.nextBillingTime}
63426	function create_if_block_21(ctx) {
63427		let div1;
63428		let span;
63429		let t0;
63430		let t1;
63431		let div0;
63432		let t2_value = /*subscription*/ ctx[0].nextBillingTime + "";
63433		let t2;
63434
63435		return {
63436			c() {
63437				div1 = element("div");
63438				span = element("span");
63439				t0 = text(/*nextPaymentDateText*/ ctx[1]);
63440				t1 = space();
63441				div0 = element("div");
63442				t2 = text(t2_value);
63443				attr(span, "class", "svelte-xxnasy");
63444				attr(div0, "class", "zephr-box-item-information svelte-xxnasy");
63445				attr(div1, "class", "zephr-section svelte-xxnasy");
63446			},
63447			m(target, anchor) {
63448				insert(target, div1, anchor);
63449				append(div1, span);
63450				append(span, t0);
63451				append(div1, t1);
63452				append(div1, div0);
63453				append(div0, t2);
63454			},
63455			p(ctx, dirty) {
63456				if (dirty[0] & /*nextPaymentDateText*/ 2) set_data(t0, /*nextPaymentDateText*/ ctx[1]);
63457				if (dirty[0] & /*subscription*/ 1 && t2_value !== (t2_value = /*subscription*/ ctx[0].nextBillingTime + "")) set_data(t2, t2_value);
63458			},
63459			d(detaching) {
63460				if (detaching) {
63461					detach(div1);
63462				}
63463			}
63464		};
63465	}
63466
63467	// (155:8) {#if element === 'payment_auto_renew_toggle' && autoRenewToggleEnabled && paymentProvider === 'zuora-billing' && subscription.status === 'active' && !subscription.isGift && subscription.termType === 'TERMED'}
63468	function create_if_block_17(ctx) {
63469		let div1;
63470		let div0;
63471		let checkbox;
63472		let t0;
63473		let t1;
63474		let current;
63475
63476		checkbox = new Checkbox({
63477				props: {
63478					id: "auto-renew-" + /*subscription*/ ctx[0].externalId,
63479					label: /*autoRenewToggleText*/ ctx[27],
63480					value: "auto-renew",
63481					checked: /*autoRenewValue*/ ctx[31],
63482					disabled: /*isUpdatingAutoRenew*/ ctx[28]
63483				}
63484			});
63485
63486		checkbox.$on("change", /*handleAutoRenewChange*/ ctx[34]);
63487		let if_block0 = /*isUpdatingAutoRenew*/ ctx[28] && create_if_block_19();
63488		let if_block1 = /*statusMessage*/ ctx[29] && create_if_block_18(ctx);
63489
63490		return {
63491			c() {
63492				div1 = element("div");
63493				div0 = element("div");
63494				create_component(checkbox.$$.fragment);
63495				t0 = space();
63496				if (if_block0) if_block0.c();
63497				t1 = space();
63498				if (if_block1) if_block1.c();
63499				attr(div0, "class", "auto-renew-toggle-container svelte-xxnasy");
63500				attr(div1, "class", "zephr-section svelte-xxnasy");
63501			},
63502			m(target, anchor) {
63503				insert(target, div1, anchor);
63504				append(div1, div0);
63505				mount_component(checkbox, div0, null);
63506				append(div0, t0);
63507				if (if_block0) if_block0.m(div0, null);
63508				append(div1, t1);
63509				if (if_block1) if_block1.m(div1, null);
63510				current = true;
63511			},
63512			p(ctx, dirty) {
63513				const checkbox_changes = {};
63514				if (dirty[0] & /*subscription*/ 1) checkbox_changes.id = "auto-renew-" + /*subscription*/ ctx[0].externalId;
63515				if (dirty[0] & /*autoRenewToggleText*/ 134217728) checkbox_changes.label = /*autoRenewToggleText*/ ctx[27];
63516				if (dirty[1] & /*autoRenewValue*/ 1) checkbox_changes.checked = /*autoRenewValue*/ ctx[31];
63517				if (dirty[0] & /*isUpdatingAutoRenew*/ 268435456) checkbox_changes.disabled = /*isUpdatingAutoRenew*/ ctx[28];
63518				checkbox.$set(checkbox_changes);
63519
63520				if (/*isUpdatingAutoRenew*/ ctx[28]) {
63521					if (if_block0) ; else {
63522						if_block0 = create_if_block_19();
63523						if_block0.c();
63524						if_block0.m(div0, null);
63525					}
63526				} else if (if_block0) {
63527					if_block0.d(1);
63528					if_block0 = null;
63529				}
63530
63531				if (/*statusMessage*/ ctx[29]) {
63532					if (if_block1) {
63533						if_block1.p(ctx, dirty);
63534					} else {
63535						if_block1 = create_if_block_18(ctx);
63536						if_block1.c();
63537						if_block1.m(div1, null);
63538					}
63539				} else if (if_block1) {
63540					if_block1.d(1);
63541					if_block1 = null;
63542				}
63543			},
63544			i(local) {
63545				if (current) return;
63546				transition_in(checkbox.$$.fragment, local);
63547				current = true;
63548			},
63549			o(local) {
63550				transition_out(checkbox.$$.fragment, local);
63551				current = false;
63552			},
63553			d(detaching) {
63554				if (detaching) {
63555					detach(div1);
63556				}
63557
63558				destroy_component(checkbox);
63559				if (if_block0) if_block0.d();
63560				if (if_block1) if_block1.d();
63561			}
63562		};
63563	}
63564
63565	// (166:14) {#if isUpdatingAutoRenew}
63566	function create_if_block_19(ctx) {
63567		let span;
63568
63569		return {
63570			c() {
63571				span = element("span");
63572				span.textContent = "Updating...";
63573				attr(span, "class", "updating-indicator svelte-xxnasy");
63574			},
63575			m(target, anchor) {
63576				insert(target, span, anchor);
63577			},
63578			d(detaching) {
63579				if (detaching) {
63580					detach(span);
63581				}
63582			}
63583		};
63584	}
63585
63586	// (170:12) {#if statusMessage}
63587	function create_if_block_18(ctx) {
63588		let div;
63589		let t;
63590		let div_class_value;
63591
63592		return {
63593			c() {
63594				div = element("div");
63595				t = text(/*statusMessage*/ ctx[29]);
63596				attr(div, "class", div_class_value = "status-message " + /*statusType*/ ctx[30] + " svelte-xxnasy");
63597			},
63598			m(target, anchor) {
63599				insert(target, div, anchor);
63600				append(div, t);
63601			},
63602			p(ctx, dirty) {
63603				if (dirty[0] & /*statusMessage*/ 536870912) set_data(t, /*statusMessage*/ ctx[29]);
63604
63605				if (dirty[0] & /*statusType*/ 1073741824 && div_class_value !== (div_class_value = "status-message " + /*statusType*/ ctx[30] + " svelte-xxnasy")) {
63606					attr(div, "class", div_class_value);
63607				}
63608			},
63609			d(detaching) {
63610				if (detaching) {
63611					detach(div);
63612				}
63613			}
63614		};
63615	}
63616
63617	// (177:8) {#if element === 'billing_history' && !elementsHide.billingHistory}
63618	function create_if_block_15(ctx) {
63619		let if_block_anchor;
63620		let current;
63621		let if_block = /*billingHistoryLink*/ ctx[3] && create_if_block_16(ctx);
63622
63623		return {
63624			c() {
63625				if (if_block) if_block.c();
63626				if_block_anchor = empty();
63627			},
63628			m(target, anchor) {
63629				if (if_block) if_block.m(target, anchor);
63630				insert(target, if_block_anchor, anchor);
63631				current = true;
63632			},
63633			p(ctx, dirty) {
63634				if (/*billingHistoryLink*/ ctx[3]) {
63635					if (if_block) {
63636						if_block.p(ctx, dirty);
63637
63638						if (dirty[0] & /*billingHistoryLink*/ 8) {
63639							transition_in(if_block, 1);
63640						}
63641					} else {
63642						if_block = create_if_block_16(ctx);
63643						if_block.c();
63644						transition_in(if_block, 1);
63645						if_block.m(if_block_anchor.parentNode, if_block_anchor);
63646					}
63647				} else if (if_block) {
63648					group_outros();
63649
63650					transition_out(if_block, 1, 1, () => {
63651						if_block = null;
63652					});
63653
63654					check_outros();
63655				}
63656			},
63657			i(local) {
63658				if (current) return;
63659				transition_in(if_block);
63660				current = true;
63661			},
63662			o(local) {
63663				transition_out(if_block);
63664				current = false;
63665			},
63666			d(detaching) {
63667				if (detaching) {
63668					detach(if_block_anchor);
63669				}
63670
63671				if (if_block) if_block.d(detaching);
63672			}
63673		};
63674	}
63675
63676	// (178:10) {#if billingHistoryLink}
63677	function create_if_block_16(ctx) {
63678		let tablink;
63679		let current;
63680
63681		tablink = new Tablink({
63682				props: {
63683					text: /*billingHistoryLink*/ ctx[3],
63684					onClick: /*func*/ ctx[39]
63685				}
63686			});
63687
63688		return {
63689			c() {
63690				create_component(tablink.$$.fragment);
63691			},
63692			m(target, anchor) {
63693				mount_component(tablink, target, anchor);
63694				current = true;
63695			},
63696			p(ctx, dirty) {
63697				const tablink_changes = {};
63698				if (dirty[0] & /*billingHistoryLink*/ 8) tablink_changes.text = /*billingHistoryLink*/ ctx[3];
63699				if (dirty[0] & /*onViewHistory, subscription*/ 17) tablink_changes.onClick = /*func*/ ctx[39];
63700				tablink.$set(tablink_changes);
63701			},
63702			i(local) {
63703				if (current) return;
63704				transition_in(tablink.$$.fragment, local);
63705				current = true;
63706			},
63707			o(local) {
63708				transition_out(tablink.$$.fragment, local);
63709				current = false;
63710			},
63711			d(detaching) {
63712				destroy_component(tablink, detaching);
63713			}
63714		};
63715	}
63716
63717	// (185:8) {#if element === 'change_payment' && !elementsHide.changePayment && !subscription.isGift}
63718	function create_if_block_13$1(ctx) {
63719		let if_block_anchor;
63720		let current;
63721		let if_block = /*changePaymentMethodText*/ ctx[10] && create_if_block_14$1(ctx);
63722
63723		return {
63724			c() {
63725				if (if_block) if_block.c();
63726				if_block_anchor = empty();
63727			},
63728			m(target, anchor) {
63729				if (if_block) if_block.m(target, anchor);
63730				insert(target, if_block_anchor, anchor);
63731				current = true;
63732			},
63733			p(ctx, dirty) {
63734				if (/*changePaymentMethodText*/ ctx[10]) {
63735					if (if_block) {
63736						if_block.p(ctx, dirty);
63737
63738						if (dirty[0] & /*changePaymentMethodText*/ 1024) {
63739							transition_in(if_block, 1);
63740						}
63741					} else {
63742						if_block = create_if_block_14$1(ctx);
63743						if_block.c();
63744						transition_in(if_block, 1);
63745						if_block.m(if_block_anchor.parentNode, if_block_anchor);
63746					}
63747				} else if (if_block) {
63748					group_outros();
63749
63750					transition_out(if_block, 1, 1, () => {
63751						if_block = null;
63752					});
63753
63754					check_outros();
63755				}
63756			},
63757			i(local) {
63758				if (current) return;
63759				transition_in(if_block);
63760				current = true;
63761			},
63762			o(local) {
63763				transition_out(if_block);
63764				current = false;
63765			},
63766			d(detaching) {
63767				if (detaching) {
63768					detach(if_block_anchor);
63769				}
63770
63771				if (if_block) if_block.d(detaching);
63772			}
63773		};
63774	}
63775
63776	// (186:10) {#if changePaymentMethodText}
63777	function create_if_block_14$1(ctx) {
63778		let tablink;
63779		let current;
63780
63781		tablink = new Tablink({
63782				props: {
63783					text: /*changePaymentMethodText*/ ctx[10],
63784					onClick: /*func_1*/ ctx[40]
63785				}
63786			});
63787
63788		return {
63789			c() {
63790				create_component(tablink.$$.fragment);
63791			},
63792			m(target, anchor) {
63793				mount_component(tablink, target, anchor);
63794				current = true;
63795			},
63796			p(ctx, dirty) {
63797				const tablink_changes = {};
63798				if (dirty[0] & /*changePaymentMethodText*/ 1024) tablink_changes.text = /*changePaymentMethodText*/ ctx[10];
63799				if (dirty[0] & /*onChangePayment, subscription*/ 33) tablink_changes.onClick = /*func_1*/ ctx[40];
63800				tablink.$set(tablink_changes);
63801			},
63802			i(local) {
63803				if (current) return;
63804				transition_in(tablink.$$.fragment, local);
63805				current = true;
63806			},
63807			o(local) {
63808				transition_out(tablink.$$.fragment, local);
63809				current = false;
63810			},
63811			d(detaching) {
63812				destroy_component(tablink, detaching);
63813			}
63814		};
63815	}
63816
63817	// (193:8) {#if element === 'change_subscription' && !elementsHide.changeSubscription}
63818	function create_if_block_11$1(ctx) {
63819		let if_block_anchor;
63820		let current;
63821		let if_block = /*changeSubscriptionText*/ ctx[11] && create_if_block_12$1(ctx);
63822
63823		return {
63824			c() {
63825				if (if_block) if_block.c();
63826				if_block_anchor = empty();
63827			},
63828			m(target, anchor) {
63829				if (if_block) if_block.m(target, anchor);
63830				insert(target, if_block_anchor, anchor);
63831				current = true;
63832			},
63833			p(ctx, dirty) {
63834				if (/*changeSubscriptionText*/ ctx[11]) {
63835					if (if_block) {
63836						if_block.p(ctx, dirty);
63837
63838						if (dirty[0] & /*changeSubscriptionText*/ 2048) {
63839							transition_in(if_block, 1);
63840						}
63841					} else {
63842						if_block = create_if_block_12$1(ctx);
63843						if_block.c();
63844						transition_in(if_block, 1);
63845						if_block.m(if_block_anchor.parentNode, if_block_anchor);
63846					}
63847				} else if (if_block) {
63848					group_outros();
63849
63850					transition_out(if_block, 1, 1, () => {
63851						if_block = null;
63852					});
63853
63854					check_outros();
63855				}
63856			},
63857			i(local) {
63858				if (current) return;
63859				transition_in(if_block);
63860				current = true;
63861			},
63862			o(local) {
63863				transition_out(if_block);
63864				current = false;
63865			},
63866			d(detaching) {
63867				if (detaching) {
63868					detach(if_block_anchor);
63869				}
63870
63871				if (if_block) if_block.d(detaching);
63872			}
63873		};
63874	}
63875
63876	// (194:10) {#if changeSubscriptionText}
63877	function create_if_block_12$1(ctx) {
63878		let tablink;
63879		let current;
63880
63881		tablink = new Tablink({
63882				props: {
63883					text: /*changeSubscriptionText*/ ctx[11],
63884					path: /*withSubscriptionParam*/ ctx[33](/*changeSubscriptionPath*/ ctx[13], /*subscription*/ ctx[0].externalId),
63885					logDlEvent: /*func_2*/ ctx[41]
63886				}
63887			});
63888
63889		return {
63890			c() {
63891				create_component(tablink.$$.fragment);
63892			},
63893			m(target, anchor) {
63894				mount_component(tablink, target, anchor);
63895				current = true;
63896			},
63897			p(ctx, dirty) {
63898				const tablink_changes = {};
63899				if (dirty[0] & /*changeSubscriptionText*/ 2048) tablink_changes.text = /*changeSubscriptionText*/ ctx[11];
63900				if (dirty[0] & /*changeSubscriptionPath, subscription*/ 8193) tablink_changes.path = /*withSubscriptionParam*/ ctx[33](/*changeSubscriptionPath*/ ctx[13], /*subscription*/ ctx[0].externalId);
63901				if (dirty[0] & /*logChangeSubscription, subscription*/ 65) tablink_changes.logDlEvent = /*func_2*/ ctx[41];
63902				tablink.$set(tablink_changes);
63903			},
63904			i(local) {
63905				if (current) return;
63906				transition_in(tablink.$$.fragment, local);
63907				current = true;
63908			},
63909			o(local) {
63910				transition_out(tablink.$$.fragment, local);
63911				current = false;
63912			},
63913			d(detaching) {
63914				destroy_component(tablink, detaching);
63915			}
63916		};
63917	}
63918
63919	// (202:8) {#if element === 'cancel_subscription' && !elementsHide.cancelSubscription && !subscription.isGift}
63920	function create_if_block_9$1(ctx) {
63921		let if_block_anchor;
63922		let current;
63923		let if_block = /*cancelSubscriptionText*/ ctx[12] && create_if_block_10$1(ctx);
63924
63925		return {
63926			c() {
63927				if (if_block) if_block.c();
63928				if_block_anchor = empty();
63929			},
63930			m(target, anchor) {
63931				if (if_block) if_block.m(target, anchor);
63932				insert(target, if_block_anchor, anchor);
63933				current = true;
63934			},
63935			p(ctx, dirty) {
63936				if (/*cancelSubscriptionText*/ ctx[12]) {
63937					if (if_block) {
63938						if_block.p(ctx, dirty);
63939
63940						if (dirty[0] & /*cancelSubscriptionText*/ 4096) {
63941							transition_in(if_block, 1);
63942						}
63943					} else {
63944						if_block = create_if_block_10$1(ctx);
63945						if_block.c();
63946						transition_in(if_block, 1);
63947						if_block.m(if_block_anchor.parentNode, if_block_anchor);
63948					}
63949				} else if (if_block) {
63950					group_outros();
63951
63952					transition_out(if_block, 1, 1, () => {
63953						if_block = null;
63954					});
63955
63956					check_outros();
63957				}
63958			},
63959			i(local) {
63960				if (current) return;
63961				transition_in(if_block);
63962				current = true;
63963			},
63964			o(local) {
63965				transition_out(if_block);
63966				current = false;
63967			},
63968			d(detaching) {
63969				if (detaching) {
63970					detach(if_block_anchor);
63971				}
63972
63973				if (if_block) if_block.d(detaching);
63974			}
63975		};
63976	}
63977
63978	// (203:10) {#if cancelSubscriptionText}
63979	function create_if_block_10$1(ctx) {
63980		let tablink;
63981		let current;
63982
63983		tablink = new Tablink({
63984				props: {
63985					text: /*cancelSubscriptionText*/ ctx[12],
63986					path: /*withSubscriptionParam*/ ctx[33](/*cancelSubscriptionPath*/ ctx[14], /*subscription*/ ctx[0].externalId),
63987					logDlEvent: /*func_3*/ ctx[42]
63988				}
63989			});
63990
63991		return {
63992			c() {
63993				create_component(tablink.$$.fragment);
63994			},
63995			m(target, anchor) {
63996				mount_component(tablink, target, anchor);
63997				current = true;
63998			},
63999			p(ctx, dirty) {
64000				const tablink_changes = {};
64001				if (dirty[0] & /*cancelSubscriptionText*/ 4096) tablink_changes.text = /*cancelSubscriptionText*/ ctx[12];
64002				if (dirty[0] & /*cancelSubscriptionPath, subscription*/ 16385) tablink_changes.path = /*withSubscriptionParam*/ ctx[33](/*cancelSubscriptionPath*/ ctx[14], /*subscription*/ ctx[0].externalId);
64003				if (dirty[0] & /*logCancelSubscription, subscription*/ 129) tablink_changes.logDlEvent = /*func_3*/ ctx[42];
64004				tablink.$set(tablink_changes);
64005			},
64006			i(local) {
64007				if (current) return;
64008				transition_in(tablink.$$.fragment, local);
64009				current = true;
64010			},
64011			o(local) {
64012				transition_out(tablink.$$.fragment, local);
64013				current = false;
64014			},
64015			d(detaching) {
64016				destroy_component(tablink, detaching);
64017			}
64018		};
64019	}
64020
64021	// (211:8) {#if element === 'suspend_resume_subscription' && !elementsHide.suspendResumeSubscription && paymentProvider === 'zuora-billing'}
64022	function create_if_block_7$1(ctx) {
64023		let if_block_anchor;
64024		let current;
64025		let if_block = /*suspendResumeSubscriptionText*/ ctx[15] && create_if_block_8$1(ctx);
64026
64027		return {
64028			c() {
64029				if (if_block) if_block.c();
64030				if_block_anchor = empty();
64031			},
64032			m(target, anchor) {
64033				if (if_block) if_block.m(target, anchor);
64034				insert(target, if_block_anchor, anchor);
64035				current = true;
64036			},
64037			p(ctx, dirty) {
64038				if (/*suspendResumeSubscriptionText*/ ctx[15]) {
64039					if (if_block) {
64040						if_block.p(ctx, dirty);
64041
64042						if (dirty[0] & /*suspendResumeSubscriptionText*/ 32768) {
64043							transition_in(if_block, 1);
64044						}
64045					} else {
64046						if_block = create_if_block_8$1(ctx);
64047						if_block.c();
64048						transition_in(if_block, 1);
64049						if_block.m(if_block_anchor.parentNode, if_block_anchor);
64050					}
64051				} else if (if_block) {
64052					group_outros();
64053
64054					transition_out(if_block, 1, 1, () => {
64055						if_block = null;
64056					});
64057
64058					check_outros();
64059				}
64060			},
64061			i(local) {
64062				if (current) return;
64063				transition_in(if_block);
64064				current = true;
64065			},
64066			o(local) {
64067				transition_out(if_block);
64068				current = false;
64069			},
64070			d(detaching) {
64071				if (detaching) {
64072					detach(if_block_anchor);
64073				}
64074
64075				if (if_block) if_block.d(detaching);
64076			}
64077		};
64078	}
64079
64080	// (212:10) {#if suspendResumeSubscriptionText}
64081	function create_if_block_8$1(ctx) {
64082		let tablink;
64083		let current;
64084
64085		tablink = new Tablink({
64086				props: {
64087					text: /*suspendResumeSubscriptionText*/ ctx[15],
64088					path: /*withSubscriptionParam*/ ctx[33](/*suspendResumeSubscriptionPath*/ ctx[16], /*subscription*/ ctx[0].externalId),
64089					logDlEvent: /*func_4*/ ctx[43]
64090				}
64091			});
64092
64093		return {
64094			c() {
64095				create_component(tablink.$$.fragment);
64096			},
64097			m(target, anchor) {
64098				mount_component(tablink, target, anchor);
64099				current = true;
64100			},
64101			p(ctx, dirty) {
64102				const tablink_changes = {};
64103				if (dirty[0] & /*suspendResumeSubscriptionText*/ 32768) tablink_changes.text = /*suspendResumeSubscriptionText*/ ctx[15];
64104				if (dirty[0] & /*suspendResumeSubscriptionPath, subscription*/ 65537) tablink_changes.path = /*withSubscriptionParam*/ ctx[33](/*suspendResumeSubscriptionPath*/ ctx[16], /*subscription*/ ctx[0].externalId);
64105				if (dirty[0] & /*logSuspendResumeSubscription, subscription*/ 257) tablink_changes.logDlEvent = /*func_4*/ ctx[43];
64106				tablink.$set(tablink_changes);
64107			},
64108			i(local) {
64109				if (current) return;
64110				transition_in(tablink.$$.fragment, local);
64111				current = true;
64112			},
64113			o(local) {
64114				transition_out(tablink.$$.fragment, local);
64115				current = false;
64116			},
64117			d(detaching) {
64118				destroy_component(tablink, detaching);
64119			}
64120		};
64121	}
64122
64123	// (220:8) {#if element === 'subscription_custom_fields_list' && !elementsHide.subscriptionCustomFields}
64124	function create_if_block_5$5(ctx) {
64125		let if_block_anchor;
64126		let current;
64127		let if_block = /*subscriptionCustomFieldsText*/ ctx[17] && create_if_block_6$5(ctx);
64128
64129		return {
64130			c() {
64131				if (if_block) if_block.c();
64132				if_block_anchor = empty();
64133			},
64134			m(target, anchor) {
64135				if (if_block) if_block.m(target, anchor);
64136				insert(target, if_block_anchor, anchor);
64137				current = true;
64138			},
64139			p(ctx, dirty) {
64140				if (/*subscriptionCustomFieldsText*/ ctx[17]) {
64141					if (if_block) {
64142						if_block.p(ctx, dirty);
64143
64144						if (dirty[0] & /*subscriptionCustomFieldsText*/ 131072) {
64145							transition_in(if_block, 1);
64146						}
64147					} else {
64148						if_block = create_if_block_6$5(ctx);
64149						if_block.c();
64150						transition_in(if_block, 1);
64151						if_block.m(if_block_anchor.parentNode, if_block_anchor);
64152					}
64153				} else if (if_block) {
64154					group_outros();
64155
64156					transition_out(if_block, 1, 1, () => {
64157						if_block = null;
64158					});
64159
64160					check_outros();
64161				}
64162			},
64163			i(local) {
64164				if (current) return;
64165				transition_in(if_block);
64166				current = true;
64167			},
64168			o(local) {
64169				transition_out(if_block);
64170				current = false;
64171			},
64172			d(detaching) {
64173				if (detaching) {
64174					detach(if_block_anchor);
64175				}
64176
64177				if (if_block) if_block.d(detaching);
64178			}
64179		};
64180	}
64181
64182	// (221:10) {#if subscriptionCustomFieldsText}
64183	function create_if_block_6$5(ctx) {
64184		let tablink;
64185		let current;
64186
64187		tablink = new Tablink({
64188				props: {
64189					text: /*subscriptionCustomFieldsText*/ ctx[17],
64190					onClick: /*func_5*/ ctx[44]
64191				}
64192			});
64193
64194		return {
64195			c() {
64196				create_component(tablink.$$.fragment);
64197			},
64198			m(target, anchor) {
64199				mount_component(tablink, target, anchor);
64200				current = true;
64201			},
64202			p(ctx, dirty) {
64203				const tablink_changes = {};
64204				if (dirty[0] & /*subscriptionCustomFieldsText*/ 131072) tablink_changes.text = /*subscriptionCustomFieldsText*/ ctx[17];
64205				if (dirty[0] & /*onUpdateSubscriptionCustomFields, subscription*/ 262145) tablink_changes.onClick = /*func_5*/ ctx[44];
64206				tablink.$set(tablink_changes);
64207			},
64208			i(local) {
64209				if (current) return;
64210				transition_in(tablink.$$.fragment, local);
64211				current = true;
64212			},
64213			o(local) {
64214				transition_out(tablink.$$.fragment, local);
64215				current = false;
64216			},
64217			d(detaching) {
64218				destroy_component(tablink, detaching);
64219			}
64220		};
64221	}
64222
64223	// (228:8) {#if element === 'bill_to_contact' && !elementsHide.updateBillToContact && paymentProvider === 'zuora-billing'}
64224	function create_if_block_3$6(ctx) {
64225		let if_block_anchor;
64226		let current;
64227		let if_block = /*updateBillToContactText*/ ctx[19] && create_if_block_4$5(ctx);
64228
64229		return {
64230			c() {
64231				if (if_block) if_block.c();
64232				if_block_anchor = empty();
64233			},
64234			m(target, anchor) {
64235				if (if_block) if_block.m(target, anchor);
64236				insert(target, if_block_anchor, anchor);
64237				current = true;
64238			},
64239			p(ctx, dirty) {
64240				if (/*updateBillToContactText*/ ctx[19]) {
64241					if (if_block) {
64242						if_block.p(ctx, dirty);
64243
64244						if (dirty[0] & /*updateBillToContactText*/ 524288) {
64245							transition_in(if_block, 1);
64246						}
64247					} else {
64248						if_block = create_if_block_4$5(ctx);
64249						if_block.c();
64250						transition_in(if_block, 1);
64251						if_block.m(if_block_anchor.parentNode, if_block_anchor);
64252					}
64253				} else if (if_block) {
64254					group_outros();
64255
64256					transition_out(if_block, 1, 1, () => {
64257						if_block = null;
64258					});
64259
64260					check_outros();
64261				}
64262			},
64263			i(local) {
64264				if (current) return;
64265				transition_in(if_block);
64266				current = true;
64267			},
64268			o(local) {
64269				transition_out(if_block);
64270				current = false;
64271			},
64272			d(detaching) {
64273				if (detaching) {
64274					detach(if_block_anchor);
64275				}
64276
64277				if (if_block) if_block.d(detaching);
64278			}
64279		};
64280	}
64281
64282	// (229:10) {#if updateBillToContactText}
64283	function create_if_block_4$5(ctx) {
64284		let tablink;
64285		let current;
64286
64287		tablink = new Tablink({
64288				props: {
64289					text: /*updateBillToContactText*/ ctx[19],
64290					path: /*withSubscriptionParam*/ ctx[33](/*updateBillToContactPath*/ ctx[20], /*subscription*/ ctx[0].externalId),
64291					logDlEvent: /*func_6*/ ctx[45]
64292				}
64293			});
64294
64295		return {
64296			c() {
64297				create_component(tablink.$$.fragment);
64298			},
64299			m(target, anchor) {
64300				mount_component(tablink, target, anchor);
64301				current = true;
64302			},
64303			p(ctx, dirty) {
64304				const tablink_changes = {};
64305				if (dirty[0] & /*updateBillToContactText*/ 524288) tablink_changes.text = /*updateBillToContactText*/ ctx[19];
64306				if (dirty[0] & /*updateBillToContactPath, subscription*/ 1048577) tablink_changes.path = /*withSubscriptionParam*/ ctx[33](/*updateBillToContactPath*/ ctx[20], /*subscription*/ ctx[0].externalId);
64307				if (dirty[0] & /*logUpdateBillToContact, subscription*/ 513) tablink_changes.logDlEvent = /*func_6*/ ctx[45];
64308				tablink.$set(tablink_changes);
64309			},
64310			i(local) {
64311				if (current) return;
64312				transition_in(tablink.$$.fragment, local);
64313				current = true;
64314			},
64315			o(local) {
64316				transition_out(tablink.$$.fragment, local);
64317				current = false;
64318			},
64319			d(detaching) {
64320				destroy_component(tablink, detaching);
64321			}
64322		};
64323	}
64324
64325	// (237:8) {#if element === 'subscription_custom_fields_list' && displayedFields.length > 0}
64326	function create_if_block_2$a(ctx) {
64327		let each_1_anchor;
64328		let each_value_1 = ensure_array_like(/*displayedFields*/ ctx[32]);
64329		let each_blocks = [];
64330
64331		for (let i = 0; i < each_value_1.length; i += 1) {
64332			each_blocks[i] = create_each_block_1$2(get_each_context_1$2(ctx, each_value_1, i));
64333		}
64334
64335		return {
64336			c() {
64337				for (let i = 0; i < each_blocks.length; i += 1) {
64338					each_blocks[i].c();
64339				}
64340
64341				each_1_anchor = empty();
64342			},
64343			m(target, anchor) {
64344				for (let i = 0; i < each_blocks.length; i += 1) {
64345					if (each_blocks[i]) {
64346						each_blocks[i].m(target, anchor);
64347					}
64348				}
64349
64350				insert(target, each_1_anchor, anchor);
64351			},
64352			p(ctx, dirty) {
64353				if (dirty[1] & /*displayedFields*/ 2) {
64354					each_value_1 = ensure_array_like(/*displayedFields*/ ctx[32]);
64355					let i;
64356
64357					for (i = 0; i < each_value_1.length; i += 1) {
64358						const child_ctx = get_each_context_1$2(ctx, each_value_1, i);
64359
64360						if (each_blocks[i]) {
64361							each_blocks[i].p(child_ctx, dirty);
64362						} else {
64363							each_blocks[i] = create_each_block_1$2(child_ctx);
64364							each_blocks[i].c();
64365							each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor);
64366						}
64367					}
64368
64369					for (; i < each_blocks.length; i += 1) {
64370						each_blocks[i].d(1);
64371					}
64372
64373					each_blocks.length = each_value_1.length;
64374				}
64375			},
64376			d(detaching) {
64377				if (detaching) {
64378					detach(each_1_anchor);
64379				}
64380
64381				destroy_each(each_blocks, detaching);
64382			}
64383		};
64384	}
64385
64386	// (238:10) {#each displayedFields as field}
64387	function create_each_block_1$2(ctx) {
64388		let div1;
64389		let span;
64390		let t0_value = /*field*/ ctx[51].label + "";
64391		let t0;
64392		let t1;
64393		let div0;
64394		let t2_value = /*field*/ ctx[51].value + "";
64395		let t2;
64396		let t3;
64397
64398		return {
64399			c() {
64400				div1 = element("div");
64401				span = element("span");
64402				t0 = text(t0_value);
64403				t1 = space();
64404				div0 = element("div");
64405				t2 = text(t2_value);
64406				t3 = space();
64407				attr(span, "class", "svelte-xxnasy");
64408				attr(div0, "class", "zephr-box-item-information svelte-xxnasy");
64409				attr(div1, "class", "zephr-section svelte-xxnasy");
64410			},
64411			m(target, anchor) {
64412				insert(target, div1, anchor);
64413				append(div1, span);
64414				append(span, t0);
64415				append(div1, t1);
64416				append(div1, div0);
64417				append(div0, t2);
64418				append(div1, t3);
64419			},
64420			p(ctx, dirty) {
64421				if (dirty[1] & /*displayedFields*/ 2 && t0_value !== (t0_value = /*field*/ ctx[51].label + "")) set_data(t0, t0_value);
64422				if (dirty[1] & /*displayedFields*/ 2 && t2_value !== (t2_value = /*field*/ ctx[51].value + "")) set_data(t2, t2_value);
64423			},
64424			d(detaching) {
64425				if (detaching) {
64426					detach(div1);
64427				}
64428			}
64429		};
64430	}
64431
64432	// (136:6) {#each elementsOrder as element, _index}
64433	function create_each_block$a(ctx) {
64434		let t0;
64435		let t1;
64436		let t2;
64437		let t3;
64438		let t4;
64439		let t5;
64440		let t6;
64441		let t7;
64442		let t8;
64443		let if_block9_anchor;
64444		let current;
64445		let if_block0 = /*element*/ ctx[48] === 'subscription_information' && !/*elementsHide*/ ctx[22].subscriptionInformation && create_if_block_20(ctx);
64446		let if_block1 = /*element*/ ctx[48] === 'payment_auto_renew_toggle' && /*autoRenewToggleEnabled*/ ctx[26] && /*paymentProvider*/ ctx[25] === 'zuora-billing' && /*subscription*/ ctx[0].status === 'active' && !/*subscription*/ ctx[0].isGift && /*subscription*/ ctx[0].termType === 'TERMED' && create_if_block_17(ctx);
64447		let if_block2 = /*element*/ ctx[48] === 'billing_history' && !/*elementsHide*/ ctx[22].billingHistory && create_if_block_15(ctx);
64448		let if_block3 = /*element*/ ctx[48] === 'change_payment' && !/*elementsHide*/ ctx[22].changePayment && !/*subscription*/ ctx[0].isGift && create_if_block_13$1(ctx);
64449		let if_block4 = /*element*/ ctx[48] === 'change_subscription' && !/*elementsHide*/ ctx[22].changeSubscription && create_if_block_11$1(ctx);
64450		let if_block5 = /*element*/ ctx[48] === 'cancel_subscription' && !/*elementsHide*/ ctx[22].cancelSubscription && !/*subscription*/ ctx[0].isGift && create_if_block_9$1(ctx);
64451		let if_block6 = /*element*/ ctx[48] === 'suspend_resume_subscription' && !/*elementsHide*/ ctx[22].suspendResumeSubscription && /*paymentProvider*/ ctx[25] === 'zuora-billing' && create_if_block_7$1(ctx);
64452		let if_block7 = /*element*/ ctx[48] === 'subscription_custom_fields_list' && !/*elementsHide*/ ctx[22].subscriptionCustomFields && create_if_block_5$5(ctx);
64453		let if_block8 = /*element*/ ctx[48] === 'bill_to_contact' && !/*elementsHide*/ ctx[22].updateBillToContact && /*paymentProvider*/ ctx[25] === 'zuora-billing' && create_if_block_3$6(ctx);
64454		let if_block9 = /*element*/ ctx[48] === 'subscription_custom_fields_list' && /*displayedFields*/ ctx[32].length > 0 && create_if_block_2$a(ctx);
64455
64456		return {
64457			c() {
64458				if (if_block0) if_block0.c();
64459				t0 = space();
64460				if (if_block1) if_block1.c();
64461				t1 = space();
64462				if (if_block2) if_block2.c();
64463				t2 = space();
64464				if (if_block3) if_block3.c();
64465				t3 = space();
64466				if (if_block4) if_block4.c();
64467				t4 = space();
64468				if (if_block5) if_block5.c();
64469				t5 = space();
64470				if (if_block6) if_block6.c();
64471				t6 = space();
64472				if (if_block7) if_block7.c();
64473				t7 = space();
64474				if (if_block8) if_block8.c();
64475				t8 = space();
64476				if (if_block9) if_block9.c();
64477				if_block9_anchor = empty();
64478			},
64479			m(target, anchor) {
64480				if (if_block0) if_block0.m(target, anchor);
64481				insert(target, t0, anchor);
64482				if (if_block1) if_block1.m(target, anchor);
64483				insert(target, t1, anchor);
64484				if (if_block2) if_block2.m(target, anchor);
64485				insert(target, t2, anchor);
64486				if (if_block3) if_block3.m(target, anchor);
64487				insert(target, t3, anchor);
64488				if (if_block4) if_block4.m(target, anchor);
64489				insert(target, t4, anchor);
64490				if (if_block5) if_block5.m(target, anchor);
64491				insert(target, t5, anchor);
64492				if (if_block6) if_block6.m(target, anchor);
64493				insert(target, t6, anchor);
64494				if (if_block7) if_block7.m(target, anchor);
64495				insert(target, t7, anchor);
64496				if (if_block8) if_block8.m(target, anchor);
64497				insert(target, t8, anchor);
64498				if (if_block9) if_block9.m(target, anchor);
64499				insert(target, if_block9_anchor, anchor);
64500				current = true;
64501			},
64502			p(ctx, dirty) {
64503				if (/*element*/ ctx[48] === 'subscription_information' && !/*elementsHide*/ ctx[22].subscriptionInformation) {
64504					if (if_block0) {
64505						if_block0.p(ctx, dirty);
64506					} else {
64507						if_block0 = create_if_block_20(ctx);
64508						if_block0.c();
64509						if_block0.m(t0.parentNode, t0);
64510					}
64511				} else if (if_block0) {
64512					if_block0.d(1);
64513					if_block0 = null;
64514				}
64515
64516				if (/*element*/ ctx[48] === 'payment_auto_renew_toggle' && /*autoRenewToggleEnabled*/ ctx[26] && /*paymentProvider*/ ctx[25] === 'zuora-billing' && /*subscription*/ ctx[0].status === 'active' && !/*subscription*/ ctx[0].isGift && /*subscription*/ ctx[0].termType === 'TERMED') {
64517					if (if_block1) {
64518						if_block1.p(ctx, dirty);
64519
64520						if (dirty[0] & /*elementsOrder, autoRenewToggleEnabled, paymentProvider, subscription*/ 102760449) {
64521							transition_in(if_block1, 1);
64522						}
64523					} else {
64524						if_block1 = create_if_block_17(ctx);
64525						if_block1.c();
64526						transition_in(if_block1, 1);
64527						if_block1.m(t1.parentNode, t1);
64528					}
64529				} else if (if_block1) {
64530					group_outros();
64531
64532					transition_out(if_block1, 1, 1, () => {
64533						if_block1 = null;
64534					});
64535
64536					check_outros();
64537				}
64538
64539				if (/*element*/ ctx[48] === 'billing_history' && !/*elementsHide*/ ctx[22].billingHistory) {
64540					if (if_block2) {
64541						if_block2.p(ctx, dirty);
64542
64543						if (dirty[0] & /*elementsOrder, elementsHide*/ 6291456) {
64544							transition_in(if_block2, 1);
64545						}
64546					} else {
64547						if_block2 = create_if_block_15(ctx);
64548						if_block2.c();
64549						transition_in(if_block2, 1);
64550						if_block2.m(t2.parentNode, t2);
64551					}
64552				} else if (if_block2) {
64553					group_outros();
64554
64555					transition_out(if_block2, 1, 1, () => {
64556						if_block2 = null;
64557					});
64558
64559					check_outros();
64560				}
64561
64562				if (/*element*/ ctx[48] === 'change_payment' && !/*elementsHide*/ ctx[22].changePayment && !/*subscription*/ ctx[0].isGift) {
64563					if (if_block3) {
64564						if_block3.p(ctx, dirty);
64565
64566						if (dirty[0] & /*elementsOrder, elementsHide, subscription*/ 6291457) {
64567							transition_in(if_block3, 1);
64568						}
64569					} else {
64570						if_block3 = create_if_block_13$1(ctx);
64571						if_block3.c();
64572						transition_in(if_block3, 1);
64573						if_block3.m(t3.parentNode, t3);
64574					}
64575				} else if (if_block3) {
64576					group_outros();
64577
64578					transition_out(if_block3, 1, 1, () => {
64579						if_block3 = null;
64580					});
64581
64582					check_outros();
64583				}
64584
64585				if (/*element*/ ctx[48] === 'change_subscription' && !/*elementsHide*/ ctx[22].changeSubscription) {
64586					if (if_block4) {
64587						if_block4.p(ctx, dirty);
64588
64589						if (dirty[0] & /*elementsOrder, elementsHide*/ 6291456) {
64590							transition_in(if_block4, 1);
64591						}
64592					} else {
64593						if_block4 = create_if_block_11$1(ctx);
64594						if_block4.c();
64595						transition_in(if_block4, 1);
64596						if_block4.m(t4.parentNode, t4);
64597					}
64598				} else if (if_block4) {
64599					group_outros();
64600
64601					transition_out(if_block4, 1, 1, () => {
64602						if_block4 = null;
64603					});
64604
64605					check_outros();
64606				}
64607
64608				if (/*element*/ ctx[48] === 'cancel_subscription' && !/*elementsHide*/ ctx[22].cancelSubscription && !/*subscription*/ ctx[0].isGift) {
64609					if (if_block5) {
64610						if_block5.p(ctx, dirty);
64611
64612						if (dirty[0] & /*elementsOrder, elementsHide, subscription*/ 6291457) {
64613							transition_in(if_block5, 1);
64614						}
64615					} else {
64616						if_block5 = create_if_block_9$1(ctx);
64617						if_block5.c();
64618						transition_in(if_block5, 1);
64619						if_block5.m(t5.parentNode, t5);
64620					}
64621				} else if (if_block5) {
64622					group_outros();
64623
64624					transition_out(if_block5, 1, 1, () => {
64625						if_block5 = null;
64626					});
64627
64628					check_outros();
64629				}
64630
64631				if (/*element*/ ctx[48] === 'suspend_resume_subscription' && !/*elementsHide*/ ctx[22].suspendResumeSubscription && /*paymentProvider*/ ctx[25] === 'zuora-billing') {
64632					if (if_block6) {
64633						if_block6.p(ctx, dirty);
64634
64635						if (dirty[0] & /*elementsOrder, elementsHide, paymentProvider*/ 39845888) {
64636							transition_in(if_block6, 1);
64637						}
64638					} else {
64639						if_block6 = create_if_block_7$1(ctx);
64640						if_block6.c();
64641						transition_in(if_block6, 1);
64642						if_block6.m(t6.parentNode, t6);
64643					}
64644				} else if (if_block6) {
64645					group_outros();
64646
64647					transition_out(if_block6, 1, 1, () => {
64648						if_block6 = null;
64649					});
64650
64651					check_outros();
64652				}
64653
64654				if (/*element*/ ctx[48] === 'subscription_custom_fields_list' && !/*elementsHide*/ ctx[22].subscriptionCustomFields) {
64655					if (if_block7) {
64656						if_block7.p(ctx, dirty);
64657
64658						if (dirty[0] & /*elementsOrder, elementsHide*/ 6291456) {
64659							transition_in(if_block7, 1);
64660						}
64661					} else {
64662						if_block7 = create_if_block_5$5(ctx);
64663						if_block7.c();
64664						transition_in(if_block7, 1);
64665						if_block7.m(t7.parentNode, t7);
64666					}
64667				} else if (if_block7) {
64668					group_outros();
64669
64670					transition_out(if_block7, 1, 1, () => {
64671						if_block7 = null;
64672					});
64673
64674					check_outros();
64675				}
64676
64677				if (/*element*/ ctx[48] === 'bill_to_contact' && !/*elementsHide*/ ctx[22].updateBillToContact && /*paymentProvider*/ ctx[25] === 'zuora-billing') {
64678					if (if_block8) {
64679						if_block8.p(ctx, dirty);
64680
64681						if (dirty[0] & /*elementsOrder, elementsHide, paymentProvider*/ 39845888) {
64682							transition_in(if_block8, 1);
64683						}
64684					} else {
64685						if_block8 = create_if_block_3$6(ctx);
64686						if_block8.c();
64687						transition_in(if_block8, 1);
64688						if_block8.m(t8.parentNode, t8);
64689					}
64690				} else if (if_block8) {
64691					group_outros();
64692
64693					transition_out(if_block8, 1, 1, () => {
64694						if_block8 = null;
64695					});
64696
64697					check_outros();
64698				}
64699
64700				if (/*element*/ ctx[48] === 'subscription_custom_fields_list' && /*displayedFields*/ ctx[32].length > 0) {
64701					if (if_block9) {
64702						if_block9.p(ctx, dirty);
64703					} else {
64704						if_block9 = create_if_block_2$a(ctx);
64705						if_block9.c();
64706						if_block9.m(if_block9_anchor.parentNode, if_block9_anchor);
64707					}
64708				} else if (if_block9) {
64709					if_block9.d(1);
64710					if_block9 = null;
64711				}
64712			},
64713			i(local) {
64714				if (current) return;
64715				transition_in(if_block1);
64716				transition_in(if_block2);
64717				transition_in(if_block3);
64718				transition_in(if_block4);
64719				transition_in(if_block5);
64720				transition_in(if_block6);
64721				transition_in(if_block7);
64722				transition_in(if_block8);
64723				current = true;
64724			},
64725			o(local) {
64726				transition_out(if_block1);
64727				transition_out(if_block2);
64728				transition_out(if_block3);
64729				transition_out(if_block4);
64730				transition_out(if_block5);
64731				transition_out(if_block6);
64732				transition_out(if_block7);
64733				transition_out(if_block8);
64734				current = false;
64735			},
64736			d(detaching) {
64737				if (detaching) {
64738					detach(t0);
64739					detach(t1);
64740					detach(t2);
64741					detach(t3);
64742					detach(t4);
64743					detach(t5);
64744					detach(t6);
64745					detach(t7);
64746					detach(t8);
64747					detach(if_block9_anchor);
64748				}
64749
64750				if (if_block0) if_block0.d(detaching);
64751				if (if_block1) if_block1.d(detaching);
64752				if (if_block2) if_block2.d(detaching);
64753				if (if_block3) if_block3.d(detaching);
64754				if (if_block4) if_block4.d(detaching);
64755				if (if_block5) if_block5.d(detaching);
64756				if (if_block6) if_block6.d(detaching);
64757				if (if_block7) if_block7.d(detaching);
64758				if (if_block8) if_block8.d(detaching);
64759				if (if_block9) if_block9.d(detaching);
64760			}
64761		};
64762	}
64763
64764	// (129:6) {#if subscription.amount}
64765	function create_if_block_1$g(ctx) {
64766		let div1;
64767		let span;
64768		let t0;
64769		let t1;
64770		let div0;
64771		let t2_value = /*subscription*/ ctx[0].amount + "";
64772		let t2;
64773
64774		return {
64775			c() {
64776				div1 = element("div");
64777				span = element("span");
64778				t0 = text(/*subscriptionRateText*/ ctx[2]);
64779				t1 = space();
64780				div0 = element("div");
64781				t2 = text(t2_value);
64782				attr(span, "class", "svelte-xxnasy");
64783				attr(div0, "class", "zephr-box-item-information svelte-xxnasy");
64784				attr(div1, "class", "zephr-section svelte-xxnasy");
64785			},
64786			m(target, anchor) {
64787				insert(target, div1, anchor);
64788				append(div1, span);
64789				append(span, t0);
64790				append(div1, t1);
64791				append(div1, div0);
64792				append(div0, t2);
64793			},
64794			p(ctx, dirty) {
64795				if (dirty[0] & /*subscriptionRateText*/ 4) set_data(t0, /*subscriptionRateText*/ ctx[2]);
64796				if (dirty[0] & /*subscription*/ 1 && t2_value !== (t2_value = /*subscription*/ ctx[0].amount + "")) set_data(t2, t2_value);
64797			},
64798			d(detaching) {
64799				if (detaching) {
64800					detach(div1);
64801				}
64802			}
64803		};
64804	}
64805
64806	function create_fragment$w(ctx) {
64807		let div2;
64808		let div1;
64809		let div0;
64810		let h2;
64811		let t0_value = /*subscription*/ ctx[0].productLabel + "";
64812		let t0;
64813		let t1;
64814		let t2;
64815		let current_block_type_index;
64816		let if_block1;
64817		let current;
64818		let if_block0 = /*subscription*/ ctx[0].isGift && create_if_block_23(ctx);
64819		const if_block_creators = [create_if_block$p, create_else_block$3];
64820		const if_blocks = [];
64821
64822		function select_block_type(ctx, dirty) {
64823			if (/*isInactive*/ ctx[23]) return 0;
64824			return 1;
64825		}
64826
64827		current_block_type_index = select_block_type(ctx);
64828		if_block1 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
64829
64830		return {
64831			c() {
64832				div2 = element("div");
64833				div1 = element("div");
64834				div0 = element("div");
64835				h2 = element("h2");
64836				t0 = text(t0_value);
64837				t1 = space();
64838				if (if_block0) if_block0.c();
64839				t2 = space();
64840				if_block1.c();
64841				attr(h2, "class", "svelte-xxnasy");
64842				attr(div0, "class", "zephr-section svelte-xxnasy");
64843				attr(div1, "class", "zephr-inner-box svelte-xxnasy");
64844				attr(div2, "class", "zephr-subscription-list-box-item svelte-xxnasy");
64845			},
64846			m(target, anchor) {
64847				insert(target, div2, anchor);
64848				append(div2, div1);
64849				append(div1, div0);
64850				append(div0, h2);
64851				append(h2, t0);
64852				append(h2, t1);
64853				if (if_block0) if_block0.m(h2, null);
64854				append(div1, t2);
64855				if_blocks[current_block_type_index].m(div1, null);
64856				current = true;
64857			},
64858			p(ctx, dirty) {
64859				if ((!current || dirty[0] & /*subscription*/ 1) && t0_value !== (t0_value = /*subscription*/ ctx[0].productLabel + "")) set_data(t0, t0_value);
64860
64861				if (/*subscription*/ ctx[0].isGift) {
64862					if (if_block0) {
64863						if_block0.p(ctx, dirty);
64864					} else {
64865						if_block0 = create_if_block_23(ctx);
64866						if_block0.c();
64867						if_block0.m(h2, null);
64868					}
64869				} else if (if_block0) {
64870					if_block0.d(1);
64871					if_block0 = null;
64872				}
64873
64874				let previous_block_index = current_block_type_index;
64875				current_block_type_index = select_block_type(ctx);
64876
64877				if (current_block_type_index === previous_block_index) {
64878					if_blocks[current_block_type_index].p(ctx, dirty);
64879				} else {
64880					group_outros();
64881
64882					transition_out(if_blocks[previous_block_index], 1, 1, () => {
64883						if_blocks[previous_block_index] = null;
64884					});
64885
64886					check_outros();
64887					if_block1 = if_blocks[current_block_type_index];
64888
64889					if (!if_block1) {
64890						if_block1 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
64891						if_block1.c();
64892					} else {
64893						if_block1.p(ctx, dirty);
64894					}
64895
64896					transition_in(if_block1, 1);
64897					if_block1.m(div1, null);
64898				}
64899			},
64900			i(local) {
64901				if (current) return;
64902				transition_in(if_block1);
64903				current = true;
64904			},
64905			o(local) {
64906				transition_out(if_block1);
64907				current = false;
64908			},
64909			d(detaching) {
64910				if (detaching) {
64911					detach(div2);
64912				}
64913
64914				if (if_block0) if_block0.d();
64915				if_blocks[current_block_type_index].d();
64916			}
64917		};
64918	}
64919
64920	function instance$w($$self, $$props, $$invalidate) {
64921		let displayedFields;
64922		let { subscription } = $$props;
64923		let { nextPaymentDateText = '' } = $$props;
64924		let { subscriptionRateText } = $$props;
64925		let { billingHistoryLink = '' } = $$props;
64926
64927		let { onViewHistory = () => {
64928			
64929		} } = $$props;
64930
64931		let { onChangePayment = () => {
64932			
64933		} } = $$props;
64934
64935		let { logChangeSubscription = () => {
64936			
64937		} } = $$props;
64938
64939		let { logCancelSubscription = () => {
64940			
64941		} } = $$props;
64942
64943		let { logSuspendResumeSubscription = () => {
64944			
64945		} } = $$props;
64946
64947		let { logUpdateBillToContact = () => {
64948			
64949		} } = $$props;
64950
64951		let { changePaymentMethodText = '' } = $$props;
64952		let { changeSubscriptionText = '' } = $$props;
64953		let { cancelSubscriptionText = '' } = $$props;
64954		let { changeSubscriptionPath = '' } = $$props;
64955		let { cancelSubscriptionPath = '' } = $$props;
64956		let { suspendResumeSubscriptionText = '' } = $$props;
64957		let { suspendResumeSubscriptionPath = '' } = $$props;
64958		let { subscriptionCustomFieldsText } = $$props;
64959		let { onUpdateSubscriptionCustomFields } = $$props;
64960		let { updateBillToContactText } = $$props;
64961		let { updateBillToContactPath } = $$props;
64962		let { elementsOrder = [] } = $$props;
64963
64964		let { elementsHide = {
64965			subscriptionInformation: false,
64966			changePayment: true,
64967			changeSubscription: true,
64968			cancelSubscription: true,
64969			billingHistory: true,
64970			suspendResumeSubscription: true,
64971			subscriptionCustomFields: true,
64972			updateBillToContact: true
64973		} } = $$props;
64974
64975		let { isInactive = false } = $$props;
64976		let { displayedCustomFields = {} } = $$props;
64977		let { giftPillText = 'Gift' } = $$props;
64978		let { paymentProvider = '' } = $$props;
64979		let { autoRenewToggleEnabled = false } = $$props;
64980		let { autoRenewToggleText = 'Auto-renew subscription' } = $$props;
64981		let { autoRenewSuccessMessage = 'Preferences updated' } = $$props;
64982		let { autoRenewErrorMessage = 'Something went wrong. Please try again later' } = $$props;
64983		let { onAutoRenewToggle = async () => ({ success: false }) } = $$props;
64984		let isUpdatingAutoRenew = false;
64985		let statusMessage = '';
64986		let statusType = '';
64987		let statusTimeout = null;
64988		let autoRenewValue = subscription.autoRenew ?? false; // Local checkbox state
64989
64990		// Ensures we append the subscription id correctly whether or not the base path already has query params
64991		const withSubscriptionParam = (basePath, subscriptionId) => {
64992			if (!basePath) return '';
64993			const hasQuery = basePath.includes('?');
64994			const separator = hasQuery ? '&' : '?';
64995			return `${basePath}${separator}subscription=${encodeURIComponent(subscriptionId)}`;
64996		};
64997
64998		const handleAutoRenewChange = async event => {
64999			const newAutoRenewValue = event.detail;
65000
65001			// Clear any existing status message
65002			clearStatusMessage();
65003
65004			// Revert checkbox to previous state immediately (will update on success)
65005			$$invalidate(31, autoRenewValue = subscription.autoRenew ?? false);
65006
65007			$$invalidate(28, isUpdatingAutoRenew = true);
65008
65009			try {
65010				const result = await onAutoRenewToggle(subscription, newAutoRenewValue);
65011
65012				if (result.success) {
65013					// Update local subscription state (this will trigger checkbox update via reactive statement)
65014					$$invalidate(0, subscription.autoRenew = newAutoRenewValue, subscription);
65015
65016					// Show success message for 5 seconds
65017					$$invalidate(29, statusMessage = autoRenewSuccessMessage);
65018
65019					$$invalidate(30, statusType = 'success');
65020
65021					statusTimeout = setTimeout(
65022						() => {
65023							clearStatusMessage();
65024						},
65025						5000
65026					);
65027				} else {
65028					// Show error message persistently (checkbox already reverted)
65029					$$invalidate(29, statusMessage = autoRenewErrorMessage);
65030
65031					$$invalidate(30, statusType = 'error');
65032				}
65033			} catch(error) {
65034				console.error('Failed to update auto-renewal:', error);
65035
65036				// Show error message persistently (checkbox already reverted)
65037				$$invalidate(29, statusMessage = autoRenewErrorMessage);
65038
65039				$$invalidate(30, statusType = 'error');
65040			} finally {
65041				$$invalidate(28, isUpdatingAutoRenew = false);
65042			}
65043		};
65044
65045		const clearStatusMessage = () => {
65046			if (statusTimeout) {
65047				clearTimeout(statusTimeout);
65048				statusTimeout = null;
65049			}
65050
65051			$$invalidate(29, statusMessage = '');
65052			$$invalidate(30, statusType = '');
65053		};
65054
65055		// Clean up timeout on component destroy
65056		onDestroy(() => {
65057			if (statusTimeout) {
65058				clearTimeout(statusTimeout);
65059			}
65060		});
65061
65062		const func = () => onViewHistory(subscription);
65063		const func_1 = () => onChangePayment(subscription);
65064		const func_2 = () => logChangeSubscription(subscription);
65065		const func_3 = () => logCancelSubscription(subscription);
65066		const func_4 = () => logSuspendResumeSubscription(subscription);
65067		const func_5 = () => onUpdateSubscriptionCustomFields(subscription);
65068		const func_6 = () => logUpdateBillToContact(subscription);
65069
65070		$$self.$$set = $$props => {
65071			if ('subscription' in $$props) $$invalidate(0, subscription = $$props.subscription);
65072			if ('nextPaymentDateText' in $$props) $$invalidate(1, nextPaymentDateText = $$props.nextPaymentDateText);
65073			if ('subscriptionRateText' in $$props) $$invalidate(2, subscriptionRateText = $$props.subscriptionRateText);
65074			if ('billingHistoryLink' in $$props) $$invalidate(3, billingHistoryLink = $$props.billingHistoryLink);
65075			if ('onViewHistory' in $$props) $$invalidate(4, onViewHistory = $$props.onViewHistory);
65076			if ('onChangePayment' in $$props) $$invalidate(5, onChangePayment = $$props.onChangePayment);
65077			if ('logChangeSubscription' in $$props) $$invalidate(6, logChangeSubscription = $$props.logChangeSubscription);
65078			if ('logCancelSubscription' in $$props) $$invalidate(7, logCancelSubscription = $$props.logCancelSubscription);
65079			if ('logSuspendResumeSubscription' in $$props) $$invalidate(8, logSuspendResumeSubscription = $$props.logSuspendResumeSubscription);
65080			if ('logUpdateBillToContact' in $$props) $$invalidate(9, logUpdateBillToContact = $$props.logUpdateBillToContact);
65081			if ('changePaymentMethodText' in $$props) $$invalidate(10, changePaymentMethodText = $$props.changePaymentMethodText);
65082			if ('changeSubscriptionText' in $$props) $$invalidate(11, changeSubscriptionText = $$props.changeSubscriptionText);
65083			if ('cancelSubscriptionText' in $$props) $$invalidate(12, cancelSubscriptionText = $$props.cancelSubscriptionText);
65084			if ('changeSubscriptionPath' in $$props) $$invalidate(13, changeSubscriptionPath = $$props.changeSubscriptionPath);
65085			if ('cancelSubscriptionPath' in $$props) $$invalidate(14, cancelSubscriptionPath = $$props.cancelSubscriptionPath);
65086			if ('suspendResumeSubscriptionText' in $$props) $$invalidate(15, suspendResumeSubscriptionText = $$props.suspendResumeSubscriptionText);
65087			if ('suspendResumeSubscriptionPath' in $$props) $$invalidate(16, suspendResumeSubscriptionPath = $$props.suspendResumeSubscriptionPath);
65088			if ('subscriptionCustomFieldsText' in $$props) $$invalidate(17, subscriptionCustomFieldsText = $$props.subscriptionCustomFieldsText);
65089			if ('onUpdateSubscriptionCustomFields' in $$props) $$invali
65089date(18, onUpdateSubscriptionCustomFields = $$props.onUpdateSubscriptionCustomFields);
65090			if ('updateBillToContactText' in $$props) $$invalidate(19, updateBillToContactText = $$props.updateBillToContactText);
65091			if ('updateBillToContactPath' in $$props) $$invalidate(20, updateBillToContactPath = $$props.updateBillToContactPath);
65092			if ('elementsOrder' in $$props) $$invalidate(21, elementsOrder = $$props.elementsOrder);
65093			if ('elementsHide' in $$props) $$invalidate(22, elementsHide = $$props.elementsHide);
65094			if ('isInactive' in $$props) $$invalidate(23, isInactive = $$props.isInactive);
65095			if ('displayedCustomFields' in $$props) $$invalidate(35, displayedCustomFields = $$props.displayedCustomFields);
65096			if ('giftPillText' in $$props) $$invalidate(24, giftPillText = $$props.giftPillText);
65097			if ('paymentProvider' in $$props) $$invalidate(25, paymentProvider = $$props.paymentProvider);
65098			if ('autoRenewToggleEnabled' in $$props) $$invalidate(26, autoRenewToggleEnabled = $$props.autoRenewToggleEnabled);
65099			if ('autoRenewToggleText' in $$props) $$invali
65099date(27, autoRenewToggleText = $$props.autoRenewToggleText);
65100			if ('autoRenewSuccessMessage' in $$props) $$invalidate(36, autoRenewSuccessMessage = $$props.autoRenewSuccessMessage);
65101			if ('autoRenewErrorMessage' in $$props) $$invalidate(37, autoRenewErrorMessage = $$props.autoRenewErrorMessage);
65102			if ('onAutoRenewToggle' in $$props) $$invalidate(38, onAutoRenewToggle = $$props.onAutoRenewToggle);
65103		};
65104
65105		$$self.$$.update = () => {
65106			if ($$self.$$.dirty[0] & /*subscription*/ 1 | $$self.$$.dirty[1] & /*displayedCustomFields*/ 16) {
65107				// Compute displayed custom fields
65108				$$invalidate(32, displayedFields = Object.entries(displayedCustomFields).filter(([fieldId, fieldConfig]) => fieldConfig.enabled && subscription[fieldId]).map(([fieldId, fieldConfig]) => ({
65109					label: fieldConfig.label,
65110					value: subscription[fieldId]
65111				})));
65112			}
65113
65114			if ($$self.$$.dirty[0] & /*subscription*/ 1) {
65115				// Update local checkbox state when subscription changes
65116				$$invalidate(31, autoRenewValue = subscription.autoRenew ?? false);
65117			}
65118		};
65119
65120		return [
65121			subscription,
65122			nextPaymentDateText,
65123			subscriptionRateText,
65124			billingHistoryLink,
65125			onViewHistory,
65126			onChangePayment,
65127			logChangeSubscription,
65128			logCancelSubscription,
65129			logSuspendResumeSubscription,
65130			logUpdateBillToContact,
65131			changePaymentMethodText,
65132			changeSubscriptionText,
65133			cancelSubscriptionText,
65134			changeSubscriptionPath,
65135			cancelSubscriptionPath,
65136			suspendResumeSubscriptionText,
65137			suspendResumeSubscriptionPath,
65138			subscriptionCustomFieldsText,
65139			onUpdateSubscriptionCustomFields,
65140			updateBillToContactText,
65141			updateBillToContactPath,
65142			elementsOrder,
65143			elementsHide,
65144			isInactive,
65145			giftPillText,
65146			paymentProvider,
65147			autoRenewToggleEnabled,
65148			autoRenewToggleText,
65149			isUpdatingAutoRenew,
65150			statusMessage,
65151			statusType,
65152			autoRenewValue,
65153			displayedFields,
65154			withSubscriptionParam,
65155			handleAutoRenewChange,
65156			displayedCustomFields,
65157			autoRenewSuccessMessage,
65158			autoRenewErrorMessage,
65159			onAutoRenewToggle,
65160			func,
65161			func_1,
65162			func_2,
65163			func_3,
65164			func_4,
65165			func_5,
65166			func_6
65167		];
65168	}
65169
65170	class SubscriptionsListBoxItem extends SvelteComponent {
65171		constructor(options) {
65172			super();
65173
65174			init(
65175				this,
65176				options,
65177				instance$w,
65178				create_fragment$w,
65179				safe_not_equal,
65180				{
65181					subscription: 0,
65182					nextPaymentDateText: 1,
65183					subscriptionRateText: 2,
65184					billingHistoryLink: 3,
65185					onViewHistory: 4,
65186					onChangePayment: 5,
65187					logChangeSubscription: 6,
65188					logCancelSubscription: 7,
65189					logSuspendResumeSubscription: 8,
65190					logUpdateBillToContact: 9,
65191					changePaymentMethodText: 10,
65192					changeSubscriptionText: 11,
65193					cancelSubscriptionText: 12,
65194					changeSubscriptionPath: 13,
65195					cancelSubscriptionPath: 14,
65196					suspendResumeSubscriptionText: 15,
65197					suspendResumeSubscriptionPath: 16,
65198					subscriptionCustomFieldsText: 17,
65199					onUpdateSubscriptionCustomFields: 18,
65200					updateBillToContactText: 19,
65201					updateBillToContactPath: 20,
65202					elementsOrder: 21,
65203					elementsHide: 22,
65204					isInactive: 23,
65205					displayedCustomFields: 35,
65206					giftPillText: 24,
65207					paymentProvider: 25,
65208					autoRenewToggleEnabled: 26,
65209					autoRenewToggleText: 27,
65210					autoRenewSuccessMessage: 36,
65211					autoRenewErrorMessage: 37,
65212					onAutoRenewToggle: 38
65213				},
65214				null,
65215				[-1, -1]
65216			);
65217		}
65218	}
65219
65220	/* src/components/elements/subscriptionsList/SubscriptionsList.svelte generated by Svelte v4.2.12 */
65221
65222	function get_each_context$9(ctx, list, i) {
65223		const child_ctx = ctx.slice();
65224		child_ctx[34] = list[i];
65225		return child_ctx;
65226	}
65227
65228	function get_each_context_1$1(ctx, list, i) {
65229		const child_ctx = ctx.slice();
65230		child_ctx[34] = list[i];
65231		return child_ctx;
65232	}
65233
65234	// (44:2) {#if loading}
65235	function create_if_block_6$4(ctx) {
65236		let spinner;
65237		let current;
65238		spinner = new Spinner({});
65239
65240		return {
65241			c() {
65242				create_component(spinner.$$.fragment);
65243			},
65244			m(target, anchor) {
65245				mount_component(spinner, target, anchor);
65246				current = true;
65247			},
65248			i(local) {
65249				if (current) return;
65250				transition_in(spinner.$$.fragment, local);
65251				current = true;
65252			},
65253			o(local) {
65254				transition_out(spinner.$$.fragment, local);
65255				current = false;
65256			},
65257			d(detaching) {
65258				destroy_component(spinner, detaching);
65259			}
65260		};
65261	}
65262
65263	// (47:2) {#if !isPastSubscriptions}
65264	function create_if_block_2$9(ctx) {
65265		let t;
65266		let each_1_anchor;
65267		let current;
65268		let if_block = !/*loading*/ ctx[10] && !/*subscriptions*/ ctx[6].length && create_if_block_5$4(ctx);
65269		let each_value_1 = ensure_array_like(/*subscriptions*/ ctx[6]);
65270		let each_blocks = [];
65271
65272		for (let i = 0; i < each_value_1.length; i += 1) {
65273			each_blocks[i] = create_each_block_1$1(get_each_context_1$1(ctx, each_value_1, i));
65274		}
65275
65276		const out = i => transition_out(each_blocks[i], 1, 1, () => {
65277			each_blocks[i] = null;
65278		});
65279
65280		return {
65281			c() {
65282				if (if_block) if_block.c();
65283				t = space();
65284
65285				for (let i = 0; i < each_blocks.length; i += 1) {
65286					each_blocks[i].c();
65287				}
65288
65289				each_1_anchor = empty();
65290			},
65291			m(target, anchor) {
65292				if (if_block) if_block.m(target, anchor);
65293				insert(target, t, anchor);
65294
65295				for (let i = 0; i < each_blocks.length; i += 1) {
65296					if (each_blocks[i]) {
65297						each_blocks[i].m(target, anchor);
65298					}
65299				}
65300
65301				insert(target, each_1_anchor, anchor);
65302				current = true;
65303			},
65304			p(ctx, dirty) {
65305				if (!/*loading*/ ctx[10] && !/*subscriptions*/ ctx[6].length) {
65306					if (if_block) {
65307						if_block.p(ctx, dirty);
65308					} else {
65309						if_block = create_if_block_5$4(ctx);
65310						if_block.c();
65311						if_block.m(t.parentNode, t);
65312					}
65313				} else if (if_block) {
65314					if_block.d(1);
65315					if_block = null;
65316				}
65317
65318				if (dirty[0] & /*subscriptions, nextPaymentDateText, subscriptionRateText, billingHistoryLink, onViewHistory, onChangePayment, logChangeSubscription, logCancelSubscription, logSuspendResumeSubscription, changePaymentMethodText, changeSubscriptionText, cancelSubscriptionText, changeSubscriptionPath, cancelSubscriptionPath, suspendResumeSubscriptionText, suspendResumeSubscriptionPath, subscriptionCustomFieldsText, onUpdateSubscriptionCustomFields, updateBillToContactText, updateBillToContactPath, elementsOrder, elementsHide, giftPillText, paymentProvider, autoRenewToggleEnabled, autoRenewToggleText, billingHistoryText*/ 2147482492 | dirty[1] & /*onAutoRenewToggle, displayedCustomFields*/ 3) {
65319					each_value_1 = ensure_array_like(/*subscriptions*/ ctx[6]);
65320					let i;
65321
65322					for (i = 0; i < each_value_1.length; i += 1) {
65323						const child_ctx = get_each_context_1$1(ctx, each_value_1, i);
65324
65325						if (each_blocks[i]) {
65326							each_blocks[i].p(child_ctx, dirty);
65327							transition_in(each_blocks[i], 1);
65328						} else {
65329							each_blocks[i] = create_each_block_1$1(child_ctx);
65330							each_blocks[i].c();
65331							transition_in(each_blocks[i], 1);
65332							each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor);
65333						}
65334					}
65335
65336					group_outros();
65337
65338					for (i = each_value_1.length; i < each_blocks.length; i += 1) {
65339						out(i);
65340					}
65341
65342					check_outros();
65343				}
65344			},
65345			i(local) {
65346				if (current) return;
65347
65348				for (let i = 0; i < each_value_1.length; i += 1) {
65349					transition_in(each_blocks[i]);
65350				}
65351
65352				current = true;
65353			},
65354			o(local) {
65355				each_blocks = each_blocks.filter(Boolean);
65356
65357				for (let i = 0; i < each_blocks.length; i += 1) {
65358					transition_out(each_blocks[i]);
65359				}
65360
65361				current = false;
65362			},
65363			d(detaching) {
65364				if (detaching) {
65365					detach(t);
65366					detach(each_1_anchor);
65367				}
65368
65369				if (if_block) if_block.d(detaching);
65370				destroy_each(each_blocks, detaching);
65371			}
65372		};
65373	}
65374
65375	// (48:4) {#if !loading && !subscriptions.length}
65376	function create_if_block_5$4(ctx) {
65377		let div;
65378
65379		return {
65380			c() {
65381				div = element("div");
65382			},
65383			m(target, anchor) {
65384				insert(target, div, anchor);
65385				div.innerHTML = /*noSubscriptionsMessage*/ ctx[1];
65386			},
65387			p(ctx, dirty) {
65388				if (dirty[0] & /*noSubscriptionsMessage*/ 2) div.innerHTML = /*noSubscriptionsMessage*/ ctx[1];		},
65389			d(detaching) {
65390				if (detaching) {
65391					detach(div);
65392				}
65393			}
65394		};
65395	}
65396
65397	// (85:6) {:else}
65398	function create_else_block$2(ctx) {
65399		let subscriptionslistitem;
65400		let t;
65401		let if_block_anchor;
65402		let current;
65403
65404		subscriptionslistitem = new SubscriptionsListItem({
65405				props: {
65406					subscription: /*subscription*/ ctx[34],
65407					nextPaymentDateText: /*nextPaymentDateText*/ ctx[4],
65408					subscriptionRateText: /*subscriptionRateText*/ ctx[5],
65409					billingHistoryText: /*billingHistoryText*/ ctx[2],
65410					billingHistoryLink: /*billingHistoryLink*/ ctx[3],
65411					onViewHistory: /*onViewHistory*/ ctx[15],
65412					showBillingHistory: /*paymentProvider*/ ctx[8] !== "zuora-billing",
65413					giftPillText: /*giftPillText*/ ctx[28]
65414				}
65415			});
65416
65417		let if_block = /*paymentProvider*/ ctx[8] !== "zuora-billing" && /*subscription*/ ctx[34].status === "active" && !/*subscription*/ ctx[34].isGift && create_if_block_4$4(ctx);
65418
65419		return {
65420			c() {
65421				create_component(subscriptionslistitem.$$.fragment);
65422				t = space();
65423				if (if_block) if_block.c();
65424				if_block_anchor = empty();
65425			},
65426			m(target, anchor) {
65427				mount_component(subscriptionslistitem, target, anchor);
65428				insert(target, t, anchor);
65429				if (if_block) if_block.m(target, anchor);
65430				insert(target, if_block_anchor, anchor);
65431				current = true;
65432			},
65433			p(ctx, dirty) {
65434				const subscriptionslistitem_changes = {};
65435				if (dirty[0] & /*subscriptions*/ 64) subscriptionslistitem_changes.subscription = /*subscription*/ ctx[34];
65436				if (dirty[0] & /*nextPaymentDateText*/ 16) subscriptionslistitem_changes.nextPaymentDateText = /*nextPaymentDateText*/ ctx[4];
65437				if (dirty[0] & /*subscriptionRateText*/ 32) subscriptionslistitem_changes.subscriptionRateText = /*subscriptionRateText*/ ctx[5];
65438				if (dirty[0] & /*billingHistoryText*/ 4) subscriptionslistitem_changes.billingHistoryText = /*billingHistoryText*/ ctx[2];
65439				if (dirty[0] & /*billingHistoryLink*/ 8) subscriptionslistitem_changes.billingHistoryLink = /*billingHistoryLink*/ ctx[3];
65440				if (dirty[0] & /*onViewHistory*/ 32768) subscriptionslistitem_changes.onViewHistory = /*onViewHistory*/ ctx[15];
65441				if (dirty[0] & /*paymentProvider*/ 256) subscriptionslistitem_changes.showBillingHistory = /*paymentProvider*/ ctx[8] !== "zuora-billing";
65442				if (dirty[0] & /*giftPillText*/ 268435456) subscriptionslistitem_changes.giftPillText = /*giftPillText*/ ctx[28];
65443				subscriptionslistitem.$set(subscriptionslistitem_changes);
65444
65445				if (/*paymentProvider*/ ctx[8] !== "zuora-billing" && /*subscription*/ ctx[34].status === "active" && !/*subscription*/ ctx[34].isGift) {
65446					if (if_block) {
65447						if_block.p(ctx, dirty);
65448
65449						if (dirty[0] & /*paymentProvider, subscriptions*/ 320) {
65450							transition_in(if_block, 1);
65451						}
65452					} else {
65453						if_block = create_if_block_4$4(ctx);
65454						if_block.c();
65455						transition_in(if_block, 1);
65456						if_block.m(if_block_anchor.parentNode, if_block_anchor);
65457					}
65458				} else if (if_block) {
65459					group_outros();
65460
65461					transition_out(if_block, 1, 1, () => {
65462						if_block = null;
65463					});
65464
65465					check_outros();
65466				}
65467			},
65468			i(local) {
65469				if (current) return;
65470				transition_in(subscriptionslistitem.$$.fragment, local);
65471				transition_in(if_block);
65472				current = true;
65473			},
65474			o(local) {
65475				transition_out(subscriptionslistitem.$$.fragment, local);
65476				transition_out(if_block);
65477				current = false;
65478			},
65479			d(detaching) {
65480				if (detaching) {
65481					detach(t);
65482					detach(if_block_anchor);
65483				}
65484
65485				destroy_component(subscriptionslistitem, detaching);
65486				if (if_block) if_block.d(detaching);
65487			}
65488		};
65489	}
65490
65491	// (54:6) {#if elementsOrder}
65492	function create_if_block_3$5(ctx) {
65493		let subscriptionslistboxitem;
65494		let current;
65495
65496		subscriptionslistboxitem = new SubscriptionsListBoxItem({
65497				props: {
65498					subscription: /*subscription*/ ctx[34],
65499					nextPaymentDateText: /*nextPaymentDateText*/ ctx[4],
65500					subscriptionRateText: /*subscriptionRateText*/ ctx[5],
65501					billingHistoryLink: /*billingHistoryLink*/ ctx[3],
65502					onViewHistory: /*onViewHistory*/ ctx[15],
65503					onChangePayment: /*onChangePayment*/ ctx[11],
65504					logChangeSubscription: /*logChangeSubscription*/ ctx[12],
65505					logCancelSubscription: /*logCancelSubscription*/ ctx[13],
65506					logSuspendResumeSubscription: /*logSuspendResumeSubscription*/ ctx[14],
65507					changePaymentMethodText: /*changePaymentMethodText*/ ctx[9],
65508					changeSubscriptionText: /*changeSubscriptionText*/ ctx[16],
65509					cancelSubscriptionText: /*cancelSubscriptionText*/ ctx[17],
65510					changeSubscriptionPath: /*changeSubscriptionPath*/ ctx[18],
65511					cancelSubscriptionPath: /*cancelSubscriptionPath*/ ctx[19],
65512					suspendResumeSubscriptionText: /*suspendResumeSubscriptionText*/ ctx[20],
65513					suspendResumeSubscriptionPath: /*suspendResumeSubscriptionPath*/ ctx[21],
65514					subscriptionCustomFieldsText: /*subscriptionCustomFieldsText*/ ctx[22],
65515					onUpdateSubscriptionCustomFields: /*onUpdateSubscriptionCustomFields*/ ctx[23],
65516					updateBillToContactText: /*updateBillToContactText*/ ctx[24],
65517					updateBillToContactPath: /*updateBillToContactPath*/ ctx[25],
65518					elementsOrder: /*elementsOrder*/ ctx[26],
65519					elementsHide: /*elementsHide*/ ctx[27],
65520					giftPillText: /*giftPillText*/ ctx[28],
65521					paymentProvider: /*paymentProvider*/ ctx[8],
65522					autoRenewToggleEnabled: /*autoRenewToggleEnabled*/ ctx[29],
65523					autoRenewToggleText: /*autoRenewToggleText*/ ctx[30],
65524					onAutoRenewToggle: /*onAutoRenewToggle*/ ctx[31],
65525					displayedCustomFields: /*displayedCustomFields*/ ctx[32]
65526				}
65527			});
65528
65529		return {
65530			c() {
65531				create_component(subscriptionslistboxitem.$$.fragment);
65532			},
65533			m(target, anchor) {
65534				mount_component(subscriptionslistboxitem, target, anchor);
65535				current = true;
65536			},
65537			p(ctx, dirty) {
65538				const subscriptionslistboxitem_changes = {};
65539				if (dirty[0] & /*subscriptions*/ 64) subscriptionslistboxitem_changes.subscription = /*subscription*/ ctx[34];
65540				if (dirty[0] & /*nextPaymentDateText*/ 16) subscriptionslistboxitem_changes.nextPaymentDateText = /*nextPaymentDateText*/ ctx[4];
65541				if (dirty[0] & /*subscriptionRateText*/ 32) subscriptionslistboxitem_changes.subscriptionRateText = /*subscriptionRateText*/ ctx[5];
65542				if (dirty[0] & /*billingHistoryLink*/ 8) subscriptionslistboxitem_changes.billingHistoryLink = /*billingHistoryLink*/ ctx[3];
65543				if (dirty[0] & /*onViewHistory*/ 32768) subscriptionslistboxitem_changes.onViewHistory = /*onViewHistory*/ ctx[15];
65544				if (dirty[0] & /*onChangePayment*/ 2048) subscriptionslistboxitem_changes.onChangePayment = /*onChangePayment*/ ctx[11];
65545				if (dirty[0] & /*logChangeSubscription*/ 4096) subscriptionslistboxitem_changes.logChangeSubscription = /*logChangeSubscription*/ ctx[12];
65546				if (dirty[0] & /*logCancelSubscription*/ 8192) subscriptionslistboxitem_changes.logCancelSubscription = /*logCancelSubscription*/ ctx[13];
65547				if (dirty[0] & /*logSuspendResumeSubscription*/ 16384) subscriptionslistboxitem_changes.logSuspendResumeSubscription = /*logSuspendResumeSubscription*/ ctx[14];
65548				if (dirty[0] & /*changePaymentMethodText*/ 512) subscriptionslistboxitem_changes.changePaymentMethodText = /*changePaymentMethodText*/ ctx[9];
65549				if (dirty[0] & /*changeSubscriptionText*/ 65536) subscriptionslistboxitem_changes.changeSubscriptionText = /*changeSubscriptionText*/ ctx[16];
65550				if (dirty[0] & /*cancelSubscriptionText*/ 131072) subscriptionslistboxitem_changes.cancelSubscriptionText = /*cancelSubscriptionText*/ ctx[17];
65551				if (dirty[0] & /*changeSubscriptionPath*/ 262144) subscriptionslistboxitem_changes.changeSubscriptionPath = /*changeSubscriptionPath*/ ctx[18];
65552				if (dirty[0] & /*cancelSubscriptionPath*/ 524288) subscriptionslistboxitem_changes.cancelSubscriptionPath = /*cancelSubscriptionPath*/ ctx[19];
65553				if (dirty[0] & /*suspendResumeSubscriptionText*/ 1048576) subscriptionslistboxitem_changes.suspendResumeSubscriptionText = /*suspendResumeSubscriptionText*/ ctx[20];
65554				if (dirty[0] & /*suspendResumeSubscriptionPath*/ 2097152) subscriptionslistboxitem_changes.suspendResumeSubscriptionPath = /*suspendResumeSubscriptionPath*/ ctx[21];
65555				if (dirty[0] & /*subscriptionCustomFieldsText*/ 4194304) subscriptionslistboxitem_changes.subscriptionCustomFieldsText = /*subscriptionCustomFieldsText*/ ctx[22];
65556				if (dirty[0] & /*onUpdateSubscriptionCustomFields*/ 8388608) subscriptionslistboxitem_changes.onUpdateSubscriptionCustomFields = /*onUpdateSubscriptionCustomFields*/ ctx[23];
65557				if (dirty[0] & /*updateBillToContactText*/ 16777216) subscriptionslistboxitem_changes.updateBillToContactText = /*updateBillToContactText*/ ctx[24];
65558				if (dirty[0] & /*updateBillToContactPath*/ 33554432) subscriptionslistboxitem_changes.updateBillToContactPath = /*updateBillToContactPath*/ ctx[25];
65559				if (dirty[0] & /*elementsOrder*/ 67108864) subscriptionslistboxitem_changes.elementsOrder = /*elementsOrder*/ ctx[26];
65560				if (dirty[0] & /*elementsHide*/ 134217728) subscriptionslistboxitem_changes.elementsHide = /*elementsHide*/ ctx[27];
65561				if (dirty[0] & /*giftPillText*/ 268435456) subscriptionslistboxitem_changes.giftPillText = /*giftPillText*/ ctx[28];
65562				if (dirty[0] & /*paymentProvider*/ 256) subscriptionslistboxitem_changes.paymentProvider = /*paymentProvider*/ ctx[8];
65563				if (dirty[0] & /*autoRenewToggleEnabled*/ 536870912) subscriptionslistboxitem_changes.autoRenewToggleEnabled = /*autoRenewToggleEnabled*/ ctx[29];
65564				if (dirty[0] & /*autoRenewToggleText*/ 1073741824) subscriptionslistboxitem_changes.autoRenewToggleText = /*autoRenewToggleText*/ ctx[30];
65565				if (dirty[1] & /*onAutoRenewToggle*/ 1) subscriptionslistboxitem_changes.onAutoRenewToggle = /*onAutoRenewToggle*/ ctx[31];
65566				if (dirty[1] & /*displayedCustomFields*/ 2) subscriptionslistboxitem_changes.displayedCustomFields = /*displayedCustomFields*/ ctx[32];
65567				subscriptionslistboxitem.$set(subscriptionslistboxitem_changes);
65568			},
65569			i(local) {
65570				if (current) return;
65571				transition_in(subscriptionslistboxitem.$$.fragment, local);
65572				current = true;
65573			},
65574			o(local) {
65575				transition_out(subscriptionslistboxitem.$$.fragment, local);
65576				current = false;
65577			},
65578			d(detaching) {
65579				destroy_component(subscriptionslistboxitem, detaching);
65580			}
65581		};
65582	}
65583
65584	// (96:8) {#if paymentProvider !== "zuora-billing" && subscription.status === "active" && !subscription.isGift}
65585	function create_if_block_4$4(ctx) {
65586		let button;
65587		let current;
65588
65589		function func() {
65590			return /*func*/ ctx[33](/*subscription*/ ctx[34]);
65591		}
65592
65593		button = new Button({
65594				props: {
65595					disabled: false,
65596					text: /*changePaymentMethodText*/ ctx[9],
65597					onClick: func,
65598					noMargin: true
65599				}
65600			});
65601
65602		return {
65603			c() {
65604				create_component(button.$$.fragment);
65605			},
65606			m(target, anchor) {
65607				mount_component(button, target, anchor);
65608				current = true;
65609			},
65610			p(new_ctx, dirty) {
65611				ctx = new_ctx;
65612				const button_changes = {};
65613				if (dirty[0] & /*changePaymentMethodText*/ 512) button_changes.text = /*changePaymentMethodText*/ ctx[9];
65614				if (dirty[0] & /*onChangePayment, subscriptions*/ 2112) button_changes.onClick = func;
65615				button.$set(button_changes);
65616			},
65617			i(local) {
65618				if (current) return;
65619				transition_in(button.$$.fragment, local);
65620				current = true;
65621			},
65622			o(local) {
65623				transition_out(button.$$.fragment, local);
65624				current = false;
65625			},
65626			d(detaching) {
65627				destroy_component(button, detaching);
65628			}
65629		};
65630	}
65631
65632	// (53:4) {#each subscriptions as subscription}
65633	function create_each_block_1$1(ctx) {
65634		let current_block_type_index;
65635		let if_block;
65636		let if_block_anchor;
65637		let current;
65638		const if_block_creators = [create_if_block_3$5, create_else_block$2];
65639		const if_blocks = [];
65640
65641		function select_block_type(ctx, dirty) {
65642			if (/*elementsOrder*/ ctx[26]) return 0;
65643			return 1;
65644		}
65645
65646		current_block_type_index = select_block_type(ctx);
65647		if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
65648
65649		return {
65650			c() {
65651				if_block.c();
65652				if_block_anchor = empty();
65653			},
65654			m(target, anchor) {
65655				if_blocks[current_block_type_index].m(target, anchor);
65656				insert(target, if_block_anchor, anchor);
65657				current = true;
65658			},
65659			p(ctx, dirty) {
65660				let previous_block_index = current_block_type_index;
65661				current_block_type_index = select_block_type(ctx);
65662
65663				if (current_block_type_index === previous_block_index) {
65664					if_blocks[current_block_type_index].p(ctx, dirty);
65665				} else {
65666					group_outros();
65667
65668					transition_out(if_blocks[previous_block_index], 1, 1, () => {
65669						if_blocks[previous_block_index] = null;
65670					});
65671
65672					check_outros();
65673					if_block = if_blocks[current_block_type_index];
65674
65675					if (!if_block) {
65676						if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
65677						if_block.c();
65678					} else {
65679						if_block.p(ctx, dirty);
65680					}
65681
65682					transition_in(if_block, 1);
65683					if_block.m(if_block_anchor.parentNode, if_block_anchor);
65684				}
65685			},
65686			i(local) {
65687				if (current) return;
65688				transition_in(if_block);
65689				current = true;
65690			},
65691			o(local) {
65692				transition_out(if_block);
65693				current = false;
65694			},
65695			d(detaching) {
65696				if (detaching) {
65697					detach(if_block_anchor);
65698				}
65699
65700				if_blocks[current_block_type_index].d(detaching);
65701			}
65702		};
65703	}
65704
65705	// (107:2) {#if isPastSubscriptions}
65706	function create_if_block$o(ctx) {
65707		let t;
65708		let each_1_anchor;
65709		let current;
65710		let if_block = !/*loading*/ ctx[10] && !/*inactiveSubscriptions*/ ctx[7].length && create_if_block_1$f(ctx);
65711		let each_value = ensure_array_like(/*inactiveSubscriptions*/ ctx[7]);
65712		let each_blocks = [];
65713
65714		for (let i = 0; i < each_value.length; i += 1) {
65715			each_blocks[i] = create_each_block$9(get_each_context$9(ctx, each_value, i));
65716		}
65717
65718		const out = i => transition_out(each_blocks[i], 1, 1, () => {
65719			each_blocks[i] = null;
65720		});
65721
65722		return {
65723			c() {
65724				if (if_block) if_block.c();
65725				t = space();
65726
65727				for (let i = 0; i < each_blocks.length; i += 1) {
65728					each_blocks[i].c();
65729				}
65730
65731				each_1_anchor = empty();
65732			},
65733			m(target, anchor) {
65734				if (if_block) if_block.m(target, anchor);
65735				insert(target, t, anchor);
65736
65737				for (let i = 0; i < each_blocks.length; i += 1) {
65738					if (each_blocks[i]) {
65739						each_blocks[i].m(target, anchor);
65740					}
65741				}
65742
65743				insert(target, each_1_anchor, anchor);
65744				current = true;
65745			},
65746			p(ctx, dirty) {
65747				if (!/*loading*/ ctx[10] && !/*inactiveSubscriptions*/ ctx[7].length) {
65748					if (if_block) {
65749						if_block.p(ctx, dirty);
65750					} else {
65751						if_block = create_if_block_1$f(ctx);
65752						if_block.c();
65753						if_block.m(t.parentNode, t);
65754					}
65755				} else if (if_block) {
65756					if_block.d(1);
65757					if_block = null;
65758				}
65759
65760				if (dirty[0] & /*inactiveSubscriptions, subscriptionRateText, giftPillText*/ 268435616 | dirty[1] & /*displayedCustomFields*/ 2) {
65761					each_value = ensure_array_like(/*inactiveSubscriptions*/ ctx[7]);
65762					let i;
65763
65764					for (i = 0; i < each_value.length; i += 1) {
65765						const child_ctx = get_each_context$9(ctx, each_value, i);
65766
65767						if (each_blocks[i]) {
65768							each_blocks[i].p(child_ctx, dirty);
65769							transition_in(each_blocks[i], 1);
65770						} else {
65771							each_blocks[i] = create_each_block$9(child_ctx);
65772							each_blocks[i].c();
65773							transition_in(each_blocks[i], 1);
65774							each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor);
65775						}
65776					}
65777
65778					group_outros();
65779
65780					for (i = each_value.length; i < each_blocks.length; i += 1) {
65781						out(i);
65782					}
65783
65784					check_outros();
65785				}
65786			},
65787			i(local) {
65788				if (current) return;
65789
65790				for (let i = 0; i < each_value.length; i += 1) {
65791					transition_in(each_blocks[i]);
65792				}
65793
65794				current = true;
65795			},
65796			o(local) {
65797				each_blocks = each_blocks.filter(Boolean);
65798
65799				for (let i = 0; i < each_blocks.length; i += 1) {
65800					transition_out(each_blocks[i]);
65801				}
65802
65803				current = false;
65804			},
65805			d(detaching) {
65806				if (detaching) {
65807					detach(t);
65808					detach(each_1_anchor);
65809				}
65810
65811				if (if_block) if_block.d(detaching);
65812				destroy_each(each_blocks, detaching);
65813			}
65814		};
65815	}
65816
65817	// (108:4) {#if !loading && !inactiveSubscriptions.length}
65818	function create_if_block_1$f(ctx) {
65819		let div;
65820
65821		return {
65822			c() {
65823				div = element("div");
65824			},
65825			m(target, anchor) {
65826				insert(target, div, anchor);
65827				div.innerHTML = /*noSubscriptionsMessage*/ ctx[1];
65828			},
65829			p(ctx, dirty) {
65830				if (dirty[0] & /*noSubscriptionsMessage*/ 2) div.innerHTML = /*noSubscriptionsMessage*/ ctx[1];		},
65831			d(detaching) {
65832				if (detaching) {
65833					detach(div);
65834				}
65835			}
65836		};
65837	}
65838
65839	// (113:4) {#each inactiveSubscriptions as subscription}
65840	function create_each_block$9(ctx) {
65841		let subscriptionslistboxitem;
65842		let current;
65843
65844		subscriptionslistboxitem = new SubscriptionsListBoxItem({
65845				props: {
65846					subscription: /*subscription*/ ctx[34],
65847					isInactive: true,
65848					subscriptionRateText: /*subscriptionRateText*/ ctx[5],
65849					giftPillText: /*giftPillText*/ ctx[28],
65850					displayedCustomFields: /*displayedCustomFields*/ ctx[32],
65851					subscriptionCustomFieldsText: "",
65852					onUpdateSubscriptionCustomFields: func_1$1,
65853					updateBillToContactText: "",
65854					updateBillToContactPath: ""
65855				}
65856			});
65857
65858		return {
65859			c() {
65860				create_component(subscriptionslistboxitem.$$.fragment);
65861			},
65862			m(target, anchor) {
65863				mount_component(subscriptionslistboxitem, target, anchor);
65864				current = true;
65865			},
65866			p(ctx, dirty) {
65867				const subscriptionslistboxitem_changes = {};
65868				if (dirty[0] & /*inactiveSubscriptions*/ 128) subscriptionslistboxitem_changes.subscription = /*subscription*/ ctx[34];
65869				if (dirty[0] & /*subscriptionRateText*/ 32) subscriptionslistboxitem_changes.subscriptionRateText = /*subscriptionRateText*/ ctx[5];
65870				if (dirty[0] & /*giftPillText*/ 268435456) subscriptionslistboxitem_changes.giftPillText = /*giftPillText*/ ctx[28];
65871				if (dirty[1] & /*displayedCustomFields*/ 2) subscriptionslistboxitem_changes.displayedCustomFields = /*displayedCustomFields*/ ctx[32];
65872				subscriptionslistboxitem.$set(subscriptionslistboxitem_changes);
65873			},
65874			i(local) {
65875				if (current) return;
65876				transition_in(subscriptionslistboxitem.$$.fragment, local);
65877				current = true;
65878			},
65879			o(local) {
65880				transition_out(subscriptionslistboxitem.$$.fragment, local);
65881				current = false;
65882			},
65883			d(detaching) {
65884				destroy_component(subscriptionslistboxitem, detaching);
65885			}
65886		};
65887	}
65888
65889	function create_fragment$v(ctx) {
65890		let div;
65891		let t0;
65892		let t1;
65893		let current;
65894		let if_block0 = /*loading*/ ctx[10] && create_if_block_6$4();
65895		let if_block1 = !/*isPastSubscriptions*/ ctx[0] && create_if_block_2$9(ctx);
65896		let if_block2 = /*isPastSubscriptions*/ ctx[0] && create_if_block$o(ctx);
65897
65898		return {
65899			c() {
65900				div = element("div");
65901				if (if_block0) if_block0.c();
65902				t0 = space();
65903				if (if_block1) if_block1.c();
65904				t1 = space();
65905				if (if_block2) if_block2.c();
65906				attr(div, "class", "subscriptions-list-container svelte-ldb1rq");
65907			},
65908			m(target, anchor) {
65909				insert(target, div, anchor);
65910				if (if_block0) if_block0.m(div, null);
65911				append(div, t0);
65912				if (if_block1) if_block1.m(div, null);
65913				append(div, t1);
65914				if (if_block2) if_block2.m(div, null);
65915				current = true;
65916			},
65917			p(ctx, dirty) {
65918				if (/*loading*/ ctx[10]) {
65919					if (if_block0) {
65920						if (dirty[0] & /*loading*/ 1024) {
65921							transition_in(if_block0, 1);
65922						}
65923					} else {
65924						if_block0 = create_if_block_6$4();
65925						if_block0.c();
65926						transition_in(if_block0, 1);
65927						if_block0.m(div, t0);
65928					}
65929				} else if (if_block0) {
65930					group_outros();
65931
65932					transition_out(if_block0, 1, 1, () => {
65933						if_block0 = null;
65934					});
65935
65936					check_outros();
65937				}
65938
65939				if (!/*isPastSubscriptions*/ ctx[0]) {
65940					if (if_block1) {
65941						if_block1.p(ctx, dirty);
65942
65943						if (dirty[0] & /*isPastSubscriptions*/ 1) {
65944							transition_in(if_block1, 1);
65945						}
65946					} else {
65947						if_block1 = create_if_block_2$9(ctx);
65948						if_block1.c();
65949						transition_in(if_block1, 1);
65950						if_block1.m(div, t1);
65951					}
65952				} else if (if_block1) {
65953					group_outros();
65954
65955					transition_out(if_block1, 1, 1, () => {
65956						if_block1 = null;
65957					});
65958
65959					check_outros();
65960				}
65961
65962				if (/*isPastSubscriptions*/ ctx[0]) {
65963					if (if_block2) {
65964						if_block2.p(ctx, dirty);
65965
65966						if (dirty[0] & /*isPastSubscriptions*/ 1) {
65967							transition_in(if_block2, 1);
65968						}
65969					} else {
65970						if_block2 = create_if_block$o(ctx);
65971						if_block2.c();
65972						transition_in(if_block2, 1);
65973						if_block2.m(div, null);
65974					}
65975				} else if (if_block2) {
65976					group_outros();
65977
65978					transition_out(if_block2, 1, 1, () => {
65979						if_block2 = null;
65980					});
65981
65982					check_outros();
65983				}
65984			},
65985			i(local) {
65986				if (current) return;
65987				transition_in(if_block0);
65988				transition_in(if_block1);
65989				transition_in(if_block2);
65990				current = true;
65991			},
65992			o(local) {
65993				transition_out(if_block0);
65994				transition_out(if_block1);
65995				transition_out(if_block2);
65996				current = false;
65997			},
65998			d(detaching) {
65999				if (detaching) {
66000					detach(div);
66001				}
66002
66003				if (if_block0) if_block0.d();
66004				if (if_block1) if_block1.d();
66005				if (if_block2) if_block2.d();
66006			}
66007		};
66008	}
66009
66010	const func_1$1 = () => {
66011		
66012	};
66013
66014	function instance$v($$self, $$props, $$invalidate) {
66015		let { isPastSubscriptions } = $$props;
66016		let { noSubscriptionsMessage } = $$props;
66017		let { billingHistoryText } = $$props;
66018		let { billingHistoryLink } = $$props;
66019		let { nextPaymentDateText } = $$props;
66020		let { subscriptionRateText } = $$props;
66021		let { subscriptions } = $$props;
66022		let { inactiveSubscriptions } = $$props;
66023		let { paymentProvider } = $$props;
66024		let { changePaymentMethodText } = $$props;
66025		let { loading } = $$props;
66026		let { onChangePayment } = $$props;
66027		let { logChangeSubscription } = $$props;
66028		let { logCancelSubscription } = $$props;
66029		let { logSuspendResumeSubscription } = $$props;
66030		let { onViewHistory } = $$props;
66031		let { changeSubscriptionText } = $$props;
66032		let { cancelSubscriptionText } = $$props;
66033		let { changeSubscriptionPath } = $$props;
66034		let { cancelSubscriptionPath } = $$props;
66035		let { suspendResumeSubscriptionText } = $$props;
66036		let { suspendResumeSubscriptionPath } = $$props;
66037		let { subscriptionCustomFieldsText } = $$props;
66038		let { onUpdateSubscriptionCustomFields } = $$props;
66039		let { updateBillToContactText } = $$props;
66040		let { updateBillToContactPath } = $$props;
66041		let { elementsOrder } = $$props;
66042		let { elementsHide } = $$props;
66043		let { giftPillText = 'Gift' } = $$props;
66044		let { autoRenewToggleEnabled = false } = $$props;
66045		let { autoRenewToggleText = 'Auto-renew subscription' } = $$props;
66046		let { onAutoRenewToggle = async () => ({ success: false }) } = $$props;
66047		let { displayedCustomFields = {} } = $$props;
66048
66049		onMount(() => {
66050			
66051		});
66052
66053		const func = subscription => onChangePayment(subscription);
66054
66055		$$self.$$set = $$props => {
66056			if ('isPastSubscriptions' in $$props) $$invalidate(0, isPastSubscriptions = $$props.isPastSubscriptions);
66057			if ('noSubscriptionsMessage' in $$props) $$invalidate(1, noSubscriptionsMessage = $$props.noSubscriptionsMessage);
66058			if ('billingHistoryText' in $$props) $$invalidate(2, billingHistoryText = $$props.billingHistoryText);
66059			if ('billingHistoryLink' in $$props) $$invalidate(3, billingHistoryLink = $$props.billingHistoryLink);
66060			if ('nextPaymentDateText' in $$props) $$invalidate(4, nextPaymentDateText = $$props.nextPaymentDateText);
66061			if ('subscriptionRateText' in $$props) $$invalidate(5, subscriptionRateText = $$props.subscriptionRateText);
66062			if ('subscriptions' in $$props) $$invalidate(6, subscriptions = $$props.subscriptions);
66063			if ('inactiveSubscriptions' in $$props) $$invalidate(7, inactiveSubscriptions = $$props.inactiveSubscriptions);
66064			if ('paymentProvider' in $$props) $$invalidate(8, paymentProvider = $$props.paymentProvider);
66065			if ('changePaymentMethodText' in $$props) $$invalidate(9, changePaymentMethodText = $$props.changePaymentMethodText);
66066			if ('loading' in $$props) $$invalidate(10, loading = $$props.loading);
66067			if ('onChangePayment' in $$props) $$invalidate(11, onChangePayment = $$props.onChangePayment);
66068			if ('logChangeSubscription' in $$props) $$invalidate(12, logChangeSubscription = $$props.logChangeSubscription);
66069			if ('logCancelSubscription' in $$props) $$invalidate(13, logCancelSubscription = $$props.logCancelSubscription);
66070			if ('logSuspendResumeSubscription' in $$props) $$invalidate(14, logSuspendResumeSubscription = $$props.logSuspendResumeSubscription);
66071			if ('onViewHistory' in $$props) $$invalidate(15, onViewHistory = $$props.onViewHistory);
66072			if ('changeSubscriptionText' in $$props) $$invalidate(16, changeSubscriptionText = $$props.changeSubscriptionText);
66073			if ('cancelSubscriptionText' in $$props) $$invalidate(17, cancelSubscriptionText = $$props.cancelSubscriptionText);
66074			if ('changeSubscriptionPath' in $$props) $$invalidate(18, changeSubscriptionPath = $$props.changeSubscriptionPath);
66075			if ('cancelSubscriptionPath' in $$props) $$invali
66075date(19, cancelSubscriptionPath = $$props.cancelSubscriptionPath);
66076			if ('suspendResumeSubscriptionText' in $$props) $$invalidate(20, suspendResumeSubscriptionText = $$props.suspendResumeSubscriptionText);
66077			if ('suspendResumeSubscriptionPath' in $$props) $$invalidate(21, suspendResumeSubscriptionPath = $$props.suspendResumeSubscriptionPath);
66078			if ('subscriptionCustomFieldsText' in $$props) $$invalidate(22, subscriptionCustomFieldsText = $$props.subscriptionCustomFieldsText);
66079			if ('onUpdateSubscriptionCustomFields' in $$props) $$invalidate(23, onUpdateSubscriptionCustomFields = $$props.onUpdateSubscriptionCustomFields);
66080			if ('updateBillToContactText' in $$props) $$invalidate(24, updateBillToContactText = $$props.updateBillToContactText);
66081			if ('updateBillToContactPath' in $$props) $$invalidate(25, updateBillToContactPath = $$props.updateBillToContactPath);
66082			if ('elementsOrder' in $$props) $$invalidate(26, elementsOrder = $$props.elementsOrder);
66083			if ('elementsHide' in $$props) $$invalidate(27, elementsHide = $$props.elementsHide);
66084			if ('giftPillText' in $$props) $$invalidate(28, giftPillText = $$props.giftPillText);
66085			if ('autoRenewToggleEnabled' in $$props) $$invalidate(29, autoRenewToggleEnabled = $$props.autoRenewToggleEnabled);
66086			if ('autoRenewToggleText' in $$props) $$invalidate(30, autoRenewToggleText = $$props.autoRenewToggleText);
66087			if ('onAutoRenewToggle' in $$props) $$invalidate(31, onAutoRenewToggle = $$props.onAutoRenewToggle);
66088			if ('displayedCustomFields' in $$props) $$invalidate(32, displayedCustomFields = $$props.displayedCustomFields);
66089		};
66090
66091		return [
66092			isPastSubscriptions,
66093			noSubscriptionsMessage,
66094			billingHistoryText,
66095			billingHistoryLink,
66096			nextPaymentDateText,
66097			subscriptionRateText,
66098			subscriptions,
66099			inactiveSubscriptions,
66100			paymentProvider,
66101			changePaymentMethodText,
66102			loading,
66103			onChangePayment,
66104			logChangeSubscription,
66105			logCancelSubscription,
66106			logSuspendResumeSubscription,
66107			onViewHistory,
66108			changeSubscriptionText,
66109			cancelSubscriptionText,
66110			changeSubscriptionPath,
66111			cancelSubscriptionPath,
66112			suspendResumeSubscriptionText,
66113			suspendResumeSubscriptionPath,
66114			subscriptionCustomFieldsText,
66115			onUpdateSubscriptionCustomFields,
66116			updateBillToContactText,
66117			updateBillToContactPath,
66118			elementsOrder,
66119			elementsHide,
66120			giftPillText,
66121			autoRenewToggleEnabled,
66122			autoRenewToggleText,
66123			onAutoRenewToggle,
66124			displayedCustomFields,
66125			func
66126		];
66127	}
66128
66129	class SubscriptionsList extends SvelteComponent {
66130		constructor(options) {
66131			super();
66132
66133			init(
66134				this,
66135				options,
66136				instance$v,
66137				create_fragment$v,
66138				safe_not_equal,
66139				{
66140					isPastSubscriptions: 0,
66141					noSubscriptionsMessage: 1,
66142					billingHistoryText: 2,
66143					billingHistoryLink: 3,
66144					nextPaymentDateText: 4,
66145					subscriptionRateText: 5,
66146					subscriptions: 6,
66147					inactiveSubscriptions: 7,
66148					paymentProvider: 8,
66149					changePaymentMethodText: 9,
66150					loading: 10,
66151					onChangePayment: 11,
66152					logChangeSubscription: 12,
66153					logCancelSubscription: 13,
66154					logSuspendResumeSubscription: 14,
66155					onViewHistory: 15,
66156					changeSubscriptionText: 16,
66157					cancelSubscriptionText: 17,
66158					changeSubscriptionPath: 18,
66159					cancelSubscriptionPath: 19,
66160					suspendResumeSubscriptionText: 20,
66161					suspendResumeSubscriptionPath: 21,
66162					subscriptionCustomFieldsText: 22,
66163					onUpdateSubscriptionCustomFields: 23,
66164					updateBillToContactText: 24,
66165					updateBillToContactPath: 25,
66166					elementsOrder: 26,
66167					elementsHide: 27,
66168					giftPillText: 28,
66169					autoRenewToggleEnabled: 29,
66170					autoRenewToggleText: 30,
66171					onAutoRenewToggle: 31,
66172					displayedCustomFields: 32
66173				},
66174				null,
66175				[-1, -1]
66176			);
66177		}
66178	}
66179
66180	const updateZuoraSubscriptionAutoRenew = async (subscription, autoRenew, formActions) => {
66181	    try {
66182	        const order = {
66183	            subscription: {
66184	                orderActions: [{
66185	                        type: "TermsAndConditions",
66186	                        termsAndConditions: {
66187	                            autoRenew
66188	                        }
66189	                    }]
66190	            }
66191	        };
66192	        const requestBody = {
66193	            vendor_fields: {
66194	                order: JSON.stringify(order)
66195	            }
66196	        };
66197	        const response = await request(`zephr/subscriptions/${subscription.externalId}/manage`, {
66198	            method: 'POST',
66199	            bodyObject: requestBody
66200	        }, formActions);
66201	        if (!response?.ok) {
66202	            const errorText = await response?.text() || 'Unknown error occurred';
66203	            console.error('Error updating subscription auto-renewal:', response);
66204	            return {
66205	                success: false,
66206	                error: `HTTP ${response?.status}: ${errorText}`
66207	            };
66208	        }
66209	        const result = await response.json();
66210	        if (result.error) {
66211	            console.error('API error updating subscription auto-renewal:', result.error);
66212	            return {
66213	                success: false,
66214	                error: result.error
66215	            };
66216	        }
66217	        return {
66218	            success: true,
66219	            message: 'Settings updated'
66220	        };
66221	    }
66222	    catch (error) {
66223	        console.error('Exception updating subscription auto-renewal:', error);
66224	        return {
66225	            success: false,
66226	            error: error instanceof Error ? error.message : 'An unexpected error occurred'
66227	        };
66228	    }
66229	};
66230
66231	// Temporarily disable this feature
66232	const shouldShowSubscriptionCustomFields = false;
66233	const subscriptionCustomFieldsUpdateFactory = {
66234	    matches: (sectionElement) => sectionElement.type === elementTypes.SUBSCRIPTION_CUSTOM_FIELDS_UPDATE,
66235	    create: (form, formState, formActions, elementConfig) => {
66236	        // Return null component to prevent rendering
66237	        {
66238	            return {
66239	                component: null,
66240	                props: {}
66241	            };
66242	        }
66243	    }
66244	};
66245
66246	const subscriptionsListFactory = {
66247	    matches: (sectionElement) => sectionElement.type === elementTypes.SUBSCRIPTIONS_LIST,
66248	    create: (form, formState, formActions, elementConfig) => {
66249	        // Get existing regular subscriptions and gift subscriptions
66250	        const existingSubscriptions = formState.existingSubscriptions || [];
66251	        const giftSubscriptions = formState.giftSubscriptions || [];
66252	        // Default gift pill settings if not provided in config
66253	        const giftPillText = elementConfig.giftPillText || 'Gift';
66254	        // Convert received gift subscriptions to ExistingSubscription format for display
66255	        // Only include gift subscriptions where the current user is the recipient (is_re
66255cipient === true)
66256	        const receivedGiftSubscriptions = giftSubscriptions
66257	            .filter(gift => gift.is_recipient === true)
66258	            .map(gift => {
66259	            return {
66260	                externalId: gift.subscription_number || gift.gift_code || '',
66261	                productId: gift.subscription_type || 'gift',
66262	                productLabel: gift.subscription_type || 'Subscription',
66263	                planId: gift.subscription_number || gift.gift_code || '',
66264	                planLabel: `Valid until ${gift.subscription_end_date || 'N/A'}`,
66265	                status: gift.status === 'REDEEMED' ? 'active' : 'pending',
66266	                ...gift,
66267	                // Add a flag to identify this as a gift subscription
66268	                isGift: true
66269	            };
66270	        });
66271	        // Combine regular subscriptions with received gift subscriptions
66272	        const allActiveSubscriptions = [
66273	            ...existingSubscriptions.filter(s => s.status === 'active'),
66274	            ...receivedGiftSubscriptions.filter(s => s.status === 'active')
66275	        ];
66276	        const allInactiveSubscriptions = [
66277	            ...existingSubscriptions.filter(s => s.status !== 'active'),
66278	            ...receivedGiftSubscriptions.filter(s => s.status !== 'active')
66279	        ];
66280	        // Auto-renew toggle handler for Zuora billing subscriptions
66281	        const onAutoRenewToggle = async (subscription, autoRenew) => {
66282	            try {
66283	                let result;
66284	                // Mock API call in preview mode
66285	                if (form.environment?.previewMode) {
66286	                    // Simulate API delay
66287	                    await new Promise(resolve => setTimeout(resolve, 1000));
66288	                    // Mock successful response (you could add logic to simulate failures occasionally)
66289	                    result = {
66290	                        success: true,
66291	                        message: 'Preferences updated'
66292	                    };
66293	                }
66294	                else {
66295	                    result = await updateZuoraSubscriptionAutoRenew(subscription, autoRenew, formActions);
66296	                }
66297	                if (result.success) {
66298	                    // Update the subscription in the local state
66299	                    const updatedSubscriptions = existingSubscriptions.map(sub => sub.externalId === subscription.externalId
66300	                        ? { ...sub, autoRenew }
66301	                        : sub);
66302	                    formActions.updateFormState({
66303	                        existingSubscriptions: updatedSubscriptions
66304	                    });
66305	                    // Log the change
66306	                    logDataLayerEvent(form, 'zephr_form_button_press', {
66307	                        sectionId: formState.currentSection.type,
66308	                        buttonType: 'AUTO_RENEW_TOGGLE'
66309	                    });
66310	                    return { success: true, message: result.message };
66311	                }
66312	                else {
66313	                    return { success: false, error: result.error };
66314	                }
66315	            }
66316	            catch (error) {
66317	                console.error('Error updating auto-renewal:', error);
66318	                return {
66319	                    success: false,
66320	                    error: error instanceof Error ? error.message : 'An unexpected error occurred'
66321	                };
66322	            }
66323	        };
66324	        return {
66325	            component: SubscriptionsList,
66326	            props: {
66327	                isPastSubscriptions: elementConfig.isPastSubscriptions,
66328	                subscriptionTitle: elementConfig.subscriptionTitle,
66329	                billingHistoryText: elementConfig.billingHistoryText,
66330	                billingHistoryLink: elementConfig.billingHistoryLink,
66331	                noSubscriptionsMessage: elementConfig.noSubscriptionsMessage,
66332	                nextPaymentDateText: elementConfig.nextPaymentDateText,
66333	                subscriptionRateText: elementConfig.subscriptionRateText,
66334	                loading: (!formState.existingSubscriptions || formState.loadingSubscriptions) ||
66335	                    (!formState.giftSubscriptions && formState.loadingGiftSubscriptions),
66336	                subscriptions: allActiveSubscriptions,
66337	                inactiveSubscriptions: allInactiveSubscriptions,
66338	                paymentProvider: form.organisationConfiguration.paymentProvider,
66339	                changePaymentMethodText: elementConfig.changePaymentMethodText,
66340	                onChangePayment: (subscription) => {
66341	                    formActions.updateFormState({
66342	                        selectedSubscription: subscription
66343	                    });
66344	                    logDataLayerEvent(form, 'zephr_form_button_press', {
66345	                        sectionId: formState.currentSection.type,
66346	                        buttonType: 'SUBMIT'
66347	                    });
66348	                    formActions.completeSection();
66349	                },
66350	                onViewHistory: (subscription) => {
66351	                    formActions.updateFormState({
66352	                        selectedSubscription: subscription
66353	                    });
66354	                    formActions.jumpToPartStart('billing-history');
66355	                    logDataLayerEvent(form, 'zephr_form_billing_history_view', null);
66356	                },
66357	                logChangeSubscription: (subscription) => {
66358	                    logDataLayerEvent(form, 'zephr_form_subscription_change_clicked', {
66359	                        productId: subscription.productId,
66360	                        planId: subscription.externalId
66361	                    });
66362	                },
66363	                logCancelSubscription: (subscription) => {
66364	                    logDataLayerEvent(form, 'zephr_form_cancel_subscription_clicked', {
66365	                        productId: subscription.productId,
66366	                        planId: subscription.externalId
66367	                    });
66368	                },
66369	                logSuspendResumeSubscription: (subscription) => {
66370	                    logDataLayerEvent(form, 'zephr_form_suspend_resume_subscription_clicked', {
66371	                        productId: subscription.productId,
66372	                        planId: subscription.externalId,
66373	                        status: subscription.status
66374	                    });
66375	                },
66376	                changeSubscriptionText: elementConfig.changeSubscriptionText,
66377	                cancelSubscriptionText: elementConfig.cancelSubscriptionText,
66378	                changeSubscriptionPath: elementConfig.changeSubscriptionPath,
66379	                cancelSubscriptionPath: elementConfig.cancelSubscriptionPath,
66380	                suspendResumeSubscriptionText: elementConfig.suspendResumeSubscriptionText,
66381	                suspendResumeSubscriptionPath: elementConfig.suspendResumeSubscriptionPath,
66382	                updateBillToContactText: elementConfig.updateBillToContactText,
66383	                updateBillToContactPath: elementConfig.updateBillToContactPath,
66384	                elementsOrder: elementConfig.elementsOrder,
66385	                subscriptionCustomFieldsText: elementConfig.subscriptionCustomFieldsText || 'Update subscription details',
66386	                onUpdateSubscriptionCustomFields: (subscription) => {
66387	                    formActions.updateFormState({
66388	                        selectedSubscription: subscription
66389	                    });
66390	                    formActions.jumpToPartStart('subscription-custom-fields');
66391	                    logDataLayerEvent(form, 'zephr_form_subscription_custom_fields_clicked', {
66392	                        productId: subscription.productId,
66393	                        planId: subscription.externalId
66394	                    });
66395	                },
66396	                elementsHide: {
66397	                    subscriptionInformation: elementConfig?.hideSubscriptionInformation,
66398	                    changePayment: elementConfig?.hideChangePayment,
66399	                    changeSubscription: elementConfig?.hideChangeSubscription,
66400	                    cancelSubscription: elementConfig?.hideCancelSubscription,
66401	                    billingHistory: elementConfig?.hideBillingHistory,
66402	                    suspendResumeSubscription: elementConfig?.hideSuspendResumeSubscription,
66403	                    // elementConfig?.hideSubscriptionCustomFields,
66404	                    subscriptionCustomFields: !shouldShowSubscriptionCustomFields,
66405	                    updateBillToContact: elementConfig?.hideUpdateBillToContact
66406	                },
66407	                giftPillText,
66408	                autoRenewToggleEnabled: elementConfig.autoRenewToggleEnabled || false,
66409	                autoRenewToggleText: elementConfig.autoRenewToggleText || 'Auto-renew subscription',
66410	                onAutoRenewToggle: onAutoRenewToggle,
66411	                displayedCustomFields: elementConfig.displayedCustomFields || {}
66412	            }
66413	        };
66414	    }
66415	};
66416
66417	/* src/components/elements/pastSubscriptionsLink/PastSubscriptionsLink.svelte generated by Svelte v4.2.12 */
66418
66419	function create_if_block$n(ctx) {
66420		let div;
66421		let link;
66422		let current;
66423		link = new Link({ props: { text: /*linkText*/ ctx[2] } });
66424
66425		link.$on("linkClick", function () {
66426			if (is_function(/*onClick*/ ctx[3])) /*onClick*/ ctx[3].apply(this, arguments);
66427		});
66428
66429		return {
66430			c() {
66431				div = element("div");
66432				create_component(link.$$.fragment);
66433				attr(div, "class", "past-subscriptions-link-wrapper svelte-zpa2t");
66434			},
66435			m(target, anchor) {
66436				insert(target, div, anchor);
66437				mount_component(link, div, null);
66438				current = true;
66439			},
66440			p(new_ctx, dirty) {
66441				ctx = new_ctx;
66442				const link_changes = {};
66443				if (dirty & /*linkText*/ 4) link_changes.text = /*linkText*/ ctx[2];
66444				link.$set(link_changes);
66445			},
66446			i(local) {
66447				if (current) return;
66448				transition_in(link.$$.fragment, local);
66449				current = true;
66450			},
66451			o(local) {
66452				transition_out(link.$$.fragment, local);
66453				current = false;
66454			},
66455			d(detaching) {
66456				if (detaching) {
66457					detach(div);
66458				}
66459
66460				destroy_component(link);
66461			}
66462		};
66463	}
66464
66465	function create_fragment$u(ctx) {
66466		let if_block_anchor;
66467		let current;
66468		let if_block = /*show*/ ctx[1] && !/*loading*/ ctx[0] && create_if_block$n(ctx);
66469
66470		return {
66471			c() {
66472				if (if_block) if_block.c();
66473				if_block_anchor = empty();
66474			},
66475			m(target, anchor) {
66476				if (if_block) if_block.m(target, anchor);
66477				insert(target, if_block_anchor, anchor);
66478				current = true;
66479			},
66480			p(ctx, [dirty]) {
66481				if (/*show*/ ctx[1] && !/*loading*/ ctx[0]) {
66482					if (if_block) {
66483						if_block.p(ctx, dirty);
66484
66485						if (dirty & /*show, loading*/ 3) {
66486							transition_in(if_block, 1);
66487						}
66488					} else {
66489						if_block = create_if_block$n(ctx);
66490						if_block.c();
66491						transition_in(if_block, 1);
66492						if_block.m(if_block_anchor.parentNode, if_block_anchor);
66493					}
66494				} else if (if_block) {
66495					group_outros();
66496
66497					transition_out(if_block, 1, 1, () => {
66498						if_block = null;
66499					});
66500
66501					check_outros();
66502				}
66503			},
66504			i(local) {
66505				if (current) return;
66506				transition_in(if_block);
66507				current = true;
66508			},
66509			o(local) {
66510				transition_out(if_block);
66511				current = false;
66512			},
66513			d(detaching) {
66514				if (detaching) {
66515					detach(if_block_anchor);
66516				}
66517
66518				if (if_block) if_block.d(detaching);
66519			}
66520		};
66521	}
66522
66523	function instance$u($$self, $$props, $$invalidate) {
66524		let { loading } = $$props;
66525		let { show } = $$props;
66526		let { linkText } = $$props;
66527		let { onClick } = $$props;
66528
66529		$$self.$$set = $$props => {
66530			if ('loading' in $$props) $$invalidate(0, loading = $$props.loading);
66531			if ('show' in $$props) $$invalidate(1, show = $$props.show);
66532			if ('linkText' in $$props) $$invalidate(2, linkText = $$props.linkText);
66533			if ('onClick' in $$props) $$invalidate(3, onClick = $$props.onClick);
66534		};
66535
66536		return [loading, show, linkText, onClick];
66537	}
66538
66539	class PastSubscriptionsLink extends SvelteComponent {
66540		constructor(options) {
66541			super();
66542
66543			init(this, options, instance$u, create_fragment$u, safe_not_equal, {
66544				loading: 0,
66545				show: 1,
66546				linkText: 2,
66547				onClick: 3
66548			});
66549		}
66550	}
66551
66552	const pastSubscriptionsLinkFactory = {
66553	    matches: (sectionElement) => sectionElement.type === elementTypes.PAST_SUBSCRIPTIONS_LINK,
66554	    create: (form, formState, formActions, elementConfig) => ({
66555	        component: PastSubscriptionsLink,
66556	        props: {
66557	            loading: !formState.existingSubscriptions || formState.loadingSubscriptions,
66558	            show: elementConfig.show,
66559	            linkText: elementConfig.linkText,
66560	            onClick: () => {
66561	                logDataLayerEvent(form, 'zephr_form_button_press', {
66562	                    sectionId: formState.currentSection.type,
66563	                    buttonType: 'PAST_SUBSCRIPTIONS_LINK'
66564	                });
66565	                formActions.jumpToPartStart('past-subscriptions');
66566	            }
66567	        }
66568	    })
66569	};
66570
66571	/* src/components/elements/changePaymentMethodButton/ChangePaymentMethodButton.svelte generated by Svelte v4.2.12 */
66572
66573	function create_fragment$t(ctx) {
66574		let div;
66575		let button;
66576		let current;
66577
66578		button = new Button({
66579				props: {
66580					disabled: false,
66581					text: /*text*/ ctx[0],
66582					onClick: /*func*/ ctx[2]
66583				}
66584			});
66585
66586		return {
66587			c() {
66588				div = element("div");
66589				create_component(button.$$.fragment);
66590				attr(div, "class", "change-payment-method-button-container");
66591			},
66592			m(target, anchor) {
66593				insert(target, div, anchor);
66594				mount_component(button, div, null);
66595				current = true;
66596			},
66597			p(ctx, [dirty]) {
66598				const button_changes = {};
66599				if (dirty & /*text*/ 1) button_changes.text = /*text*/ ctx[0];
66600				if (dirty & /*onChangePayment*/ 2) button_changes.onClick = /*func*/ ctx[2];
66601				button.$set(button_changes);
66602			},
66603			i(local) {
66604				if (current) return;
66605				transition_in(button.$$.fragment, local);
66606				current = true;
66607			},
66608			o(local) {
66609				transition_out(button.$$.fragment, local);
66610				current = false;
66611			},
66612			d(detaching) {
66613				if (detaching) {
66614					detach(div);
66615				}
66616
66617				destroy_component(button);
66618			}
66619		};
66620	}
66621
66622	function instance$t($$self, $$props, $$invalidate) {
66623		let { text } = $$props;
66624		let { onChangePayment } = $$props;
66625		const func = () => onChangePayment();
66626
66627		$$self.$$set = $$props => {
66628			if ('text' in $$props) $$invalidate(0, text = $$props.text);
66629			if ('onChangePayment' in $$props) $$invalidate(1, onChangePayment = $$props.onChangePayment);
66630		};
66631
66632		return [text, onChangePayment, func];
66633	}
66634
66635	class ChangePaymentMethodButton extends SvelteComponent {
66636		constructor(options) {
66637			super();
66638			init(this, options, instance$t, create_fragment$t, safe_not_equal, { text: 0, onChangePayment: 1 });
66639		}
66640	}
66641
66642	const changePaymentMethodButtonFactory = {
66643	    matches: (sectionElement) => sectionElement.type === elementTypes.CHNAGE_PAYMENT_METHOD_BUTTON,
66644	    create: (form, formState, formActions, elementConfig) => ({
66645	        component: ChangePaymentMethodButton,
66646	        props: {
66647	            text: elementConfig.text,
66648	            onChangePayment: () => {
66649	                logDataLayerEvent(form, 'zephr_form_button_press', {
66650	                    sectionId: formState.currentSection.type,
66651	                    buttonType: 'SUBMIT'
66652	                });
66653	                formActions.completeSection();
66654	            }
66655	        }
66656	    })
66657	};
66658
66659	/* src/components/elements/eventLink/EventLink.svelte generated by Svelte v4.2.12 */
66660
66661	function create_fragment$s(ctx) {
66662		let div;
66663		let link;
66664		let div_class_value;
66665		let current;
66666
66667		link = new Link({
66668				props: {
66669					text: /*text*/ ctx[0],
66670					onClick: /*onClick*/ ctx[2]
66671				}
66672			});
66673
66674		link.$on("linkClick", function () {
66675			if (is_function(/*onClick*/ ctx[2])) /*onClick*/ ctx[2].apply(this, arguments);
66676		});
66677
66678		return {
66679			c() {
66680				div = element("div");
66681				create_component(link.$$.fragment);
66682				attr(div, "class", div_class_value = "" + (null_to_empty(`event-link-wrapper ${/*floatRight*/ ctx[1] ? "float-right" : ""}`) + " svelte-3cxpfz"));
66683			},
66684			m(target, anchor) {
66685				insert(target, div, anchor);
66686				mount_component(link, div, null);
66687				current = true;
66688			},
66689			p(new_ctx, [dirty]) {
66690				ctx = new_ctx;
66691				const link_changes = {};
66692				if (dirty & /*text*/ 1) link_changes.text = /*text*/ ctx[0];
66693				if (dirty & /*onClick*/ 4) link_changes.onClick = /*onClick*/ ctx[2];
66694				link.$set(link_changes);
66695
66696				if (!current || dirty & /*floatRight*/ 2 && div_class_value !== (div_class_value = "" + (null_to_empty(`event-link-wrapper ${/*floatRight*/ ctx[1] ? "float-right" : ""}`) + " svelte-3cxpfz"))) {
66697					attr(div, "class", div_class_value);
66698				}
66699			},
66700			i(local) {
66701				if (current) return;
66702				transition_in(link.$$.fragment, local);
66703				current = true;
66704			},
66705			o(local) {
66706				transition_out(link.$$.fragment, local);
66707				current = false;
66708			},
66709			d(detaching) {
66710				if (detaching) {
66711					detach(div);
66712				}
66713
66714				destroy_component(link);
66715			}
66716		};
66717	}
66718
66719	function instance$s($$self, $$props, $$invalidate) {
66720		let { text } = $$props;
66721		let { floatRight } = $$props;
66722		let { onClick } = $$props;
66723
66724		$$self.$$set = $$props => {
66725			if ('text' in $$props) $$invalidate(0, text = $$props.text);
66726			if ('floatRight' in $$props) $$invalidate(1, floatRight = $$props.floatRight);
66727			if ('onClick' in $$props) $$invalidate(2, onClick = $$props.onClick);
66728		};
66729
66730		return [text, floatRight, onClick];
66731	}
66732
66733	class EventLink extends SvelteComponent {
66734		constructor(options) {
66735			super();
66736			init(this, options, instance$s, create_fragment$s, safe_not_equal, { text: 0, floatRight: 1, onClick: 2 });
66737		}
66738	}
66739
66740	const eventLinkFactory = {
66741	    matches: (sectionElement) => sectionElement.type === elementTypes.EVENT_LINK,
66742	    create: (form, formState, formActions, elementConfig) => ({
66743	        component: EventLink,
66744	        props: {
66745	            text: elementConfig.text,
66746	            floatRight: elementConfig.floatRight,
66747	            onClick: () => {
66748	                console.log({
66749	                    sectionId: formState.currentSection.type,
66750	                    buttonType: 'EVENT_LINK'
66751	                });
66752	                logDataLayerEvent(form, 'zephr_form_button_press', {
66753	                    sectionId: formState.currentSection.type,
66754	                    buttonType: 'EVENT_LINK'
66755	                });
66756	                formActions.onEvent(elementConfig.event);
66757	            }
66758	        }
66759	    })
66760	};
66761
66762	/* src/components/elements/email/ReadOnlyEmailAddress.svelte generated by Svelte v4.2.12 */
66763
66764	function create_if_block$m(ctx) {
66765		let link;
66766		let current;
66767		link = new Link({ props: { text: /*updateLabel*/ ctx[2] } });
66768
66769		link.$on("linkClick", function () {
66770			if (is_function(/*onUpdate*/ ctx[4])) /*onUpdate*/ ctx[4].apply(this, arguments);
66771		});
66772
66773		return {
66774			c() {
66775				create_component(link.$$.fragment);
66776			},
66777			m(target, anchor) {
66778				mount_component(link, target, anchor);
66779				current = true;
66780			},
66781			p(new_ctx, dirty) {
66782				ctx = new_ctx;
66783				const link_changes = {};
66784				if (dirty & /*updateLabel*/ 4) link_changes.text = /*updateLabel*/ ctx[2];
66785				link.$set(link_changes);
66786			},
66787			i(local) {
66788				if (current) return;
66789				transition_in(link.$$.fragment, local);
66790				current = true;
66791			},
66792			o(local) {
66793				transition_out(link.$$.fragment, local);
66794				current = false;
66795			},
66796			d(detaching) {
66797				destroy_component(link, detaching);
66798			}
66799		};
66800	}
66801
66802	function create_fragment$r(ctx) {
66803		let div0;
66804		let label_1;
66805		let t0;
66806		let div1;
66807		let input;
66808		let t1;
66809		let current;
66810
66811		label_1 = new Label({
66812				props: {
66813					forInput: /*id*/ ctx[5],
66814					label: /*label*/ ctx[0]
66815				}
66816			});
66817
66818		let if_block = /*updateEnabled*/ ctx[3] && create_if_block$m(ctx);
66819
66820		return {
66821			c() {
66822				div0 = element("div");
66823				create_component(label_1.$$.fragment);
66824				t0 = space();
66825				div1 = element("div");
66826				input = element("input");
66827				t1 = space();
66828				if (if_block) if_block.c();
66829				attr(div0, "class", "bold-label svelte-nx4w5y");
66830				attr(input, "id", /*id*/ ctx[5]);
66831				attr(input, "type", "email");
66832				attr(input, "name", "email");
66833				input.value = /*emailAddress*/ ctx[1];
66834				input.readOnly = true;
66835				attr(input, "class", "read-only-input svelte-nx4w5y");
66836				attr(div1, "class", "zephr-form-relative-container svelte-nx4w5y");
66837			},
66838			m(target, anchor) {
66839				insert(target, div0, anchor);
66840				mount_component(label_1, div0, null);
66841				insert(target, t0, anchor);
66842				insert(target, div1, anchor);
66843				append(div1, input);
66844				append(div1, t1);
66845				if (if_block) if_block.m(div1, null);
66846				current = true;
66847			},
66848			p(ctx, [dirty]) {
66849				const label_1_changes = {};
66850				if (dirty & /*label*/ 1) label_1_changes.label = /*label*/ ctx[0];
66851				label_1.$set(label_1_changes);
66852
66853				if (!current || dirty & /*emailAddress*/ 2 && input.value !== /*emailAddress*/ ctx[1]) {
66854					input.value = /*emailAddress*/ ctx[1];
66855				}
66856
66857				if (/*updateEnabled*/ ctx[3]) {
66858					if (if_block) {
66859						if_block.p(ctx, dirty);
66860
66861						if (dirty & /*updateEnabled*/ 8) {
66862							transition_in(if_block, 1);
66863						}
66864					} else {
66865						if_block = create_if_block$m(ctx);
66866						if_block.c();
66867						transition_in(if_block, 1);
66868						if_block.m(div1, null);
66869					}
66870				} else if (if_block) {
66871					group_outros();
66872
66873					transition_out(if_block, 1, 1, () => {
66874						if_block = null;
66875					});
66876
66877					check_outros();
66878				}
66879			},
66880			i(local) {
66881				if (current) return;
66882				transition_in(label_1.$$.fragment, local);
66883				transition_in(if_block);
66884				current = true;
66885			},
66886			o(local) {
66887				transition_out(label_1.$$.fragment, local);
66888				transition_out(if_block);
66889				current = false;
66890			},
66891			d(detaching) {
66892				if (detaching) {
66893					detach(div0);
66894					detach(t0);
66895					detach(div1);
66896				}
66897
66898				destroy_component(label_1);
66899				if (if_block) if_block.d();
66900			}
66901		};
66902	}
66903
66904	function instance$r($$self, $$props, $$invalidate) {
66905		let { formKey } = $$props;
66906		let { label } = $$props;
66907		let { emailAddress } = $$props;
66908		let { updateLabel } = $$props;
66909		let { updateEnabled } = $$props;
66910		let { onUpdate } = $$props;
66911		const id = `zephr-form-read-only-email-address-${formKey}`;
66912
66913		$$self.$$set = $$props => {
66914			if ('formKey' in $$props) $$invalidate(6, formKey = $$props.formKey);
66915			if ('label' in $$props) $$invalidate(0, label = $$props.label);
66916			if ('emailAddress' in $$props) $$invalidate(1, emailAddress = $$props.emailAddress);
66917			if ('updateLabel' in $$props) $$invalidate(2, updateLabel = $$props.updateLabel);
66918			if ('updateEnabled' in $$props) $$invalidate(3, updateEnabled = $$props.updateEnabled);
66919			if ('onUpdate' in $$props) $$invalidate(4, onUpdate = $$props.onUpdate);
66920		};
66921
66922		return [label, emailAddress, updateLabel, updateEnabled, onUpdate, id, formKey];
66923	}
66924
66925	class ReadOnlyEmailAddress extends SvelteComponent {
66926		constructor(options) {
66927			super();
66928
66929			init(this, options, instance$r, create_fragment$r, safe_not_equal, {
66930				formKey: 6,
66931				label: 0,
66932				emailAddress: 1,
66933				updateLabel: 2,
66934				updateEnabled: 3,
66935				onUpdate: 4
66936			});
66937		}
66938	}
66939
66940	const factory$6 = {
66941	    matches: (sectionElement) => sectionElement.type === elementTypes.READ_ONLY_EMAIL_ADDRESS,
66942	    create: (form, formState, formActions, elementConfig) => {
66943	        return {
66944	            component: ReadOnlyEmailAddress,
66945	            props: {
66946	                formKey: form.uniqueKey,
66947	                emailAddress: formState.readOnlyEmail ?? '',
66948	                label: elementConfig.label,
66949	                updateLabel: elementConfig.updateLinkLabel,
66950	                updateEnabled: elementConfig.updateLinkEnabled,
66951	                onUpdate: () => formActions.jumpToPartStart('email-update')
66952	            }
66953	        };
66954	    }
66955	};
66956
66957	/* src/components/elements/password/ReadOnlyPassword.svelte generated by Svelte v4.2.12 */
66958
66959	function create_if_block$l(ctx) {
66960		let link;
66961		let current;
66962		link = new Link({ props: { text: /*updateLabel*/ ctx[1] } });
66963
66964		link.$on("linkClick", function () {
66965			if (is_function(/*onUpdate*/ ctx[3])) /*onUpdate*/ ctx[3].apply(this, arguments);
66966		});
66967
66968		return {
66969			c() {
66970				create_component(link.$$.fragment);
66971			},
66972			m(target, anchor) {
66973				mount_component(link, target, anchor);
66974				current = true;
66975			},
66976			p(new_ctx, dirty) {
66977				ctx = new_ctx;
66978				const link_changes = {};
66979				if (dirty & /*updateLabel*/ 2) link_changes.text = /*updateLabel*/ ctx[1];
66980				link.$set(link_changes);
66981			},
66982			i(local) {
66983				if (current) return;
66984				transition_in(link.$$.fragment, local);
66985				current = true;
66986			},
66987			o(local) {
66988				transition_out(link.$$.fragment, local);
66989				current = false;
66990			},
66991			d(detaching) {
66992				destroy_component(link, detaching);
66993			}
66994		};
66995	}
66996
66997	function create_fragment$q(ctx) {
66998		let div0;
66999		let label_1;
67000		let t0;
67001		let div1;
67002		let input;
67003		let t1;
67004		let current;
67005
67006		label_1 = new Label({
67007				props: {
67008					forInput: /*id*/ ctx[4],
67009					label: /*label*/ ctx[0]
67010				}
67011			});
67012
67013		let if_block = /*updateEnabled*/ ctx[2] && create_if_block$l(ctx);
67014
67015		return {
67016			c() {
67017				div0 = element("div");
67018				create_component(label_1.$$.fragment);
67019				t0 = space();
67020				div1 = element("div");
67021				input = element("input");
67022				t1 = space();
67023				if (if_block) if_block.c();
67024				attr(div0, "class", "bold-label svelte-nx4w5y");
67025				attr(input, "id", /*id*/ ctx[4]);
67026				attr(input, "type", "password");
67027				input.value = "••••••••••••••••";
67028				input.readOnly = true;
67029				attr(input, "class", "read-only-input svelte-nx4w5y");
67030				attr(div1, "class", "zephr-form-relative-container svelte-nx4w5y");
67031			},
67032			m(target, anchor) {
67033				insert(target, div0, anchor);
67034				mount_component(label_1, div0, null);
67035				insert(target, t0, anchor);
67036				insert(target, div1, anchor);
67037				append(div1, input);
67038				append(div1, t1);
67039				if (if_block) if_block.m(div1, null);
67040				current = true;
67041			},
67042			p(ctx, [dirty]) {
67043				const label_1_changes = {};
67044				if (dirty & /*label*/ 1) label_1_changes.label = /*label*/ ctx[0];
67045				label_1.$set(label_1_changes);
67046
67047				if (/*updateEnabled*/ ctx[2]) {
67048					if (if_block) {
67049						if_block.p(ctx, dirty);
67050
67051						if (dirty & /*updateEnabled*/ 4) {
67052							transition_in(if_block, 1);
67053						}
67054					} else {
67055						if_block = create_if_block$l(ctx);
67056						if_block.c();
67057						transition_in(if_block, 1);
67058						if_block.m(div1, null);
67059					}
67060				} else if (if_block) {
67061					group_outros();
67062
67063					transition_out(if_block, 1, 1, () => {
67064						if_block = null;
67065					});
67066
67067					check_outros();
67068				}
67069			},
67070			i(local) {
67071				if (current) return;
67072				transition_in(label_1.$$.fragment, local);
67073				transition_in(if_block);
67074				current = true;
67075			},
67076			o(local) {
67077				transition_out(label_1.$$.fragment, local);
67078				transition_out(if_block);
67079				current = false;
67080			},
67081			d(detaching) {
67082				if (detaching) {
67083					detach(div0);
67084					detach(t0);
67085					detach(div1);
67086				}
67087
67088				destroy_component(label_1);
67089				if (if_block) if_block.d();
67090			}
67091		};
67092	}
67093
67094	function instance$q($$self, $$props, $$invalidate) {
67095		let { formKey } = $$props;
67096		let { label } = $$props;
67097		let { updateLabel } = $$props;
67098		let { updateEnabled } = $$props;
67099		let { onUpdate } = $$props;
67100		const id = `zephr-form-read-only-password-${formKey}`;
67101
67102		$$self.$$set = $$props => {
67103			if ('formKey' in $$props) $$invalidate(5, formKey = $$props.formKey);
67104			if ('label' in $$props) $$invalidate(0, label = $$props.label);
67105			if ('updateLabel' in $$props) $$invalidate(1, updateLabel = $$props.updateLabel);
67106			if ('updateEnabled' in $$props) $$invalidate(2, updateEnabled = $$props.updateEnabled);
67107			if ('onUpdate' in $$props) $$invalidate(3, onUpdate = $$props.onUpdate);
67108		};
67109
67110		return [label, updateLabel, updateEnabled, onUpdate, id, formKey];
67111	}
67112
67113	class ReadOnlyPassword extends SvelteComponent {
67114		constructor(options) {
67115			super();
67116
67117			init(this, options, instance$q, create_fragment$q, safe_not_equal, {
67118				formKey: 5,
67119				label: 0,
67120				updateLabel: 1,
67121				updateEnabled: 2,
67122				onUpdate: 3
67123			});
67124		}
67125	}
67126
67127	const factory$5 = {
67128	    matches: (sectionElement) => sectionElement.type === elementTypes.READ_ONLY_PASSWORD,
67129	    create: (form, formState, formActions, elementConfig) => {
67130	        return {
67131	            component: ReadOnlyPassword,
67132	            props: {
67133	                formKey: form.uniqueKey,
67134	                label: elementConfig.label,
67135	                updateLabel: elementConfig.updateLinkLabel,
67136	                updateEnabled: elementConfig.updateLinkEnabled,
67137	                onUpdate: () => formActions.jumpToPartStart('password-update')
67138	            }
67139	        };
67140	    }
67141	};
67142
67143	/* src/components/elements/userAttribute/ReadOnlyUserAttribute.svelte generated by Svelte v4.2.12 */
67144
67145	function create_else_block$1(ctx) {
67146		let div2;
67147		let div0;
67148		let t0;
67149		let t1;
67150		let div1;
67151		let t2;
67152
67153		return {
67154			c() {
67155				div2 = element("div");
67156				div0 = element("div");
67157				t0 = text(/*label*/ ctx[3]);
67158				t1 = space();
67159				div1 = element("div");
67160				t2 = text(/*value*/ ctx[2]);
67161				attr(div0, "class", "zephr-form-ro-attribute-label");
67162				attr(div1, "class", "zephr-form-ro-attribute-value");
67163				attr(div2, "class", "zephr-form-ro-attribute");
67164			},
67165			m(target, anchor) {
67166				insert(target, div2, anchor);
67167				append(div2, div0);
67168				append(div0, t0);
67169				append(div2, t1);
67170				append(div2, div1);
67171				append(div1, t2);
67172			},
67173			p(ctx, dirty) {
67174				if (dirty & /*label*/ 8) set_data(t0, /*label*/ ctx[3]);
67175				if (dirty & /*value*/ 4) set_data(t2, /*value*/ ctx[2]);
67176			},
67177			i: noop,
67178			o: noop,
67179			d(detaching) {
67180				if (detaching) {
67181					detach(div2);
67182				}
67183			}
67184		};
67185	}
67186
67187	// (8:0) {#if isCheckbox}
67188	function create_if_block$k(ctx) {
67189		let div;
67190		let checkbox;
67191		let current;
67192
67193		checkbox = new Checkbox({
67194				props: {
67195					id: `zephr-form-ro-checkbox-${/*slug*/ ctx[1]}`,
67196					name: /*slug*/ ctx[1],
67197					label: /*label*/ ctx[3],
67198					required: false,
67199					value: /*value*/ ctx[2],
67200					checked: /*value*/ ctx[2],
67201					disabled: true
67202				}
67203			});
67204
67205		return {
67206			c() {
67207				div = element("div");
67208				create_component(checkbox.$$.fragment);
67209				attr(div, "class", "zephr-form-ro-attribute");
67210			},
67211			m(target, anchor) {
67212				insert(target, div, anchor);
67213				mount_component(checkbox, div, null);
67214				current = true;
67215			},
67216			p(ctx, dirty) {
67217				const checkbox_changes = {};
67218				if (dirty & /*slug*/ 2) checkbox_changes.id = `zephr-form-ro-checkbox-${/*slug*/ ctx[1]}`;
67219				if (dirty & /*slug*/ 2) checkbox_changes.name = /*slug*/ ctx[1];
67220				if (dirty & /*label*/ 8) checkbox_changes.label = /*label*/ ctx[3];
67221				if (dirty & /*value*/ 4) checkbox_changes.value = /*value*/ ctx[2];
67222				if (dirty & /*value*/ 4) checkbox_changes.checked = /*value*/ ctx[2];
67223				checkbox.$set(checkbox_changes);
67224			},
67225			i(local) {
67226				if (current) return;
67227				transition_in(checkbox.$$.fragment, local);
67228				current = true;
67229			},
67230			o(local) {
67231				transition_out(checkbox.$$.fragment, local);
67232				current = false;
67233			},
67234			d(detaching) {
67235				if (detaching) {
67236					detach(div);
67237				}
67238
67239				destroy_component(checkbox);
67240			}
67241		};
67242	}
67243
67244	function create_fragment$p(ctx) {
67245		let current_block_type_index;
67246		let if_block;
67247		let if_block_anchor;
67248		let current;
67249		const if_block_creators = [create_if_block$k, create_else_block$1];
67250		const if_blocks = [];
67251
67252		function select_block_type(ctx, dirty) {
67253			if (/*isCheckbox*/ ctx[0]) return 0;
67254			return 1;
67255		}
67256
67257		current_block_type_index = select_block_type(ctx);
67258		if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
67259
67260		return {
67261			c() {
67262				if_block.c();
67263				if_block_anchor = empty();
67264			},
67265			m(target, anchor) {
67266				if_blocks[current_block_type_index].m(target, anchor);
67267				insert(target, if_block_anchor, anchor);
67268				current = true;
67269			},
67270			p(ctx, [dirty]) {
67271				let previous_block_index = current_block_type_index;
67272				current_block_type_index = select_block_type(ctx);
67273
67274				if (current_block_type_index === previous_block_index) {
67275					if_blocks[current_block_type_index].p(ctx, dirty);
67276				} else {
67277					group_outros();
67278
67279					transition_out(if_blocks[previous_block_index], 1, 1, () => {
67280						if_blocks[previous_block_index] = null;
67281					});
67282
67283					check_outros();
67284					if_block = if_blocks[current_block_type_index];
67285
67286					if (!if_block) {
67287						if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
67288						if_block.c();
67289					} else {
67290						if_block.p(ctx, dirty);
67291					}
67292
67293					transition_in(if_block, 1);
67294					if_block.m(if_block_anchor.parentNode, if_block_anchor);
67295				}
67296			},
67297			i(local) {
67298				if (current) return;
67299				transition_in(if_block);
67300				current = true;
67301			},
67302			o(local) {
67303				transition_out(if_block);
67304				current = false;
67305			},
67306			d(detaching) {
67307				if (detaching) {
67308					detach(if_block_anchor);
67309				}
67310
67311				if_blocks[current_block_type_index].d(detaching);
67312			}
67313		};
67314	}
67315
67316	function instance$p($$self, $$props, $$invalidate) {
67317		let { isCheckbox } = $$props;
67318		let { slug } = $$props;
67319		let { value } = $$props;
67320		let { label } = $$props;
67321
67322		$$self.$$set = $$props => {
67323			if ('isCheckbox' in $$props) $$invalidate(0, isCheckbox = $$props.isCheckbox);
67324			if ('slug' in $$props) $$invalidate(1, slug = $$props.slug);
67325			if ('value' in $$props) $$invalidate(2, value = $$props.value);
67326			if ('label' in $$props) $$invalidate(3, label = $$props.label);
67327		};
67328
67329		return [isCheckbox, slug, value, label];
67330	}
67331
67332	class ReadOnlyUserAttribute extends SvelteComponent {
67333		constructor(options) {
67334			super();
67335
67336			init(this, options, instance$p, create_fragment$p, safe_not_equal, {
67337				isCheckbox: 0,
67338				slug: 1,
67339				value: 2,
67340				label: 3
67341			});
67342		}
67343	}
67344
67345	const selectAttributeTypes = ['radio', 'select'];
67346	const readOnlyUserAttributeFactory = {
67347	    matches: (sectionElement) => sectionElement.type === elementTypes.READ_ONLY_USER_ATTRIBUTE,
67348	    create: (form, formState, _, elementConfig) => {
67349	        const attributeSchema = form.organisationConfiguration.schemaFields.find(s => s.slug === elementConfig.slug);
67350	        let value = (formState.readOnlyAttributeValues ?? {})[elementConfig.slug] ?? '';
67351	        if (value && selectAttributeTypes.includes(attributeSchema?.["input-type"])) {
67352	            value = (attributeSchema?.["select-options"] ?? []).find(o => o.value === value)?.label ?? value;
67353	        }
67354	        const isCheckbox = attributeSchema?.["input-type"] === 'checkbox';
67355	        return {
67356	            component: ReadOnlyUserAttribute,
67357	            props: {
67358	                value,
67359	                slug: elementConfig.slug,
67360	                label: elementConfig.label,
67361	                isCheckbox,
67362	            }
67363	        };
67364	    }
67365	};
67366
67367	/* src/components/elements/devices/DeviceSessionWrapper.svelte generated by Svelte v4.2.12 */
67368
67369	function create_if_block_1$e(ctx) {
67370		let span;
67371		let t;
67372
67373		return {
67374			c() {
67375				span = element("span");
67376				t = text(/*currentDeviceLabel*/ ctx[2]);
67377				attr(span, "class", "current-device svelte-jmotet");
67378			},
67379			m(target, anchor) {
67380				insert(target, span, anchor);
67381				append(span, t);
67382			},
67383			p(ctx, dirty) {
67384				if (dirty & /*currentDeviceLabel*/ 4) set_data(t, /*currentDeviceLabel*/ ctx[2]);
67385			},
67386			d(detaching) {
67387				if (detaching) {
67388					detach(span);
67389				}
67390			}
67391		};
67392	}
67393
67394	// (22:4) {#if !deviceSession.requestingSession}
67395	function create_if_block$j(ctx) {
67396		let button;
67397		let current;
67398
67399		button = new Button({
67400				props: {
67401					disabled: false,
67402					text: /*signOutLabel*/ ctx[4],
67403					onClick: /*func*/ ctx[5]
67404				}
67405			});
67406
67407		return {
67408			c() {
67409				create_component(button.$$.fragment);
67410			},
67411			m(target, anchor) {
67412				mount_component(button, target, anchor);
67413				current = true;
67414			},
67415			p(ctx, dirty) {
67416				const button_changes = {};
67417				if (dirty & /*signOutLabel*/ 16) button_changes.text = /*signOutLabel*/ ctx[4];
67418				if (dirty & /*onDeviceSignOut, deviceSession*/ 3) button_changes.onClick = /*func*/ ctx[5];
67419				button.$set(button_changes);
67420			},
67421			i(local) {
67422				if (current) return;
67423				transition_in(button.$$.fragment, local);
67424				current = true;
67425			},
67426			o(local) {
67427				transition_out(button.$$.fragment, local);
67428				current = false;
67429			},
67430			d(detaching) {
67431				destroy_component(button, detaching);
67432			}
67433		};
67434	}
67435
67436	function create_fragment$o(ctx) {
67437		let div4;
67438		let div0;
67439		let t0_value = /*deviceSession*/ ctx[0].deviceName + "";
67440		let t0;
67441		let t1;
67442		let t2;
67443		let div1;
67444		let t3;
67445		let t4;
67446		let t5_value = /*deviceSession*/ ctx[0].startDate + "";
67447		let t5;
67448		let t6;
67449		let div2;
67450		let t7_value = /*deviceSession*/ ctx[0].browser + "";
67451		let t7;
67452		let t8;
67453		let div3;
67454		let t9_value = /*deviceSession*/ ctx[0].country + "";
67455		let t9;
67456		let t10;
67457		let t11;
67458		let hr;
67459		let current;
67460		let if_block0 = /*deviceSession*/ ctx[0].requestingSession && create_if_block_1$e(ctx);
67461		let if_block1 = !/*deviceSession*/ ctx[0].requestingSession && create_if_block$j(ctx);
67462
67463		return {
67464			c() {
67465				div4 = element("div");
67466				div0 = element("div");
67467				t0 = text(t0_value);
67468				t1 = space();
67469				if (if_block0) if_block0.c();
67470				t2 = space();
67471				div1 = element("div");
67472				t3 = text(/*loginTimeLabel*/ ctx[3]);
67473				t4 = text(": ");
67474				t5 = text(t5_value);
67475				t6 = space();
67476				div2 = element("div");
67477				t7 = text(t7_value);
67478				t8 = space();
67479				div3 = element("div");
67480				t9 = text(t9_value);
67481				t10 = space();
67482				if (if_block1) if_block1.c();
67483				t11 = space();
67484				hr = element("hr");
67485				attr(div0, "class", "device-title svelte-jmotet");
67486				attr(div1, "class", "login-time svelte-jmotet");
67487				attr(div2, "class", "browser svelte-jmotet");
67488				attr(div3, "class", "country svelte-jmotet");
67489				attr(hr, "class", "svelte-jmotet");
67490				attr(div4, "class", "session-container svelte-jmotet");
67491			},
67492			m(target, anchor) {
67493				insert(target, div4, anchor);
67494				append(div4, div0);
67495				append(div0, t0);
67496				append(div0, t1);
67497				if (if_block0) if_block0.m(div0, null);
67498				append(div4, t2);
67499				append(div4, div1);
67500				append(div1, t3);
67501				append(div1, t4);
67502				append(div1, t5);
67503				append(div4, t6);
67504				append(div4, div2);
67505				append(div2, t7);
67506				append(div4, t8);
67507				append(div4, div3);
67508				append(div3, t9);
67509				append(div4, t10);
67510				if (if_block1) if_block1.m(div4, null);
67511				append(div4, t11);
67512				append(div4, hr);
67513				current = true;
67514			},
67515			p(ctx, [dirty]) {
67516				if ((!current || dirty & /*deviceSession*/ 1) && t0_value !== (t0_value = /*deviceSession*/ ctx[0].deviceName + "")) set_data(t0, t0_value);
67517
67518				if (/*deviceSession*/ ctx[0].requestingSession) {
67519					if (if_block0) {
67520						if_block0.p(ctx, dirty);
67521					} else {
67522						if_block0 = create_if_block_1$e(ctx);
67523						if_block0.c();
67524						if_block0.m(div0, null);
67525					}
67526				} else if (if_block0) {
67527					if_block0.d(1);
67528					if_block0 = null;
67529				}
67530
67531				if (!current || dirty & /*loginTimeLabel*/ 8) set_data(t3, /*loginTimeLabel*/ ctx[3]);
67532				if ((!current || dirty & /*deviceSession*/ 1) && t5_value !== (t5_value = /*deviceSession*/ ctx[0].startDate + "")) set_data(t5, t5_value);
67533				if ((!current || dirty & /*deviceSession*/ 1) && t7_value !== (t7_value = /*deviceSession*/ ctx[0].browser + "")) set_data(t7, t7_value);
67534				if ((!current || dirty & /*deviceSession*/ 1) && t9_value !== (t9_value = /*deviceSession*/ ctx[0].country + "")) set_data(t9, t9_value);
67535
67536				if (!/*deviceSession*/ ctx[0].requestingSession) {
67537					if (if_block1) {
67538						if_block1.p(ctx, dirty);
67539
67540						if (dirty & /*deviceSession*/ 1) {
67541							transition_in(if_block1, 1);
67542						}
67543					} else {
67544						if_block1 = create_if_block$j(ctx);
67545						if_block1.c();
67546						transition_in(if_block1, 1);
67547						if_block1.m(div4, t11);
67548					}
67549				} else if (if_block1) {
67550					group_outros();
67551
67552					transition_out(if_block1, 1, 1, () => {
67553						if_block1 = null;
67554					});
67555
67556					check_outros();
67557				}
67558			},
67559			i(local) {
67560				if (current) return;
67561				transition_in(if_block1);
67562				current = true;
67563			},
67564			o(local) {
67565				transition_out(if_block1);
67566				current = false;
67567			},
67568			d(detaching) {
67569				if (detaching) {
67570					detach(div4);
67571				}
67572
67573				if (if_block0) if_block0.d();
67574				if (if_block1) if_block1.d();
67575			}
67576		};
67577	}
67578
67579	function instance$o($$self, $$props, $$invalidate) {
67580		let { deviceSession } = $$props;
67581		let { onDeviceSignOut } = $$props;
67582		let { currentDeviceLabel } = $$props;
67583		let { loginTimeLabel } = $$props;
67584		let { signOutLabel } = $$props;
67585		const func = () => onDeviceSignOut(deviceSession.id);
67586
67587		$$self.$$set = $$props => {
67588			if ('deviceSession' in $$props) $$invalidate(0, deviceSession = $$props.deviceSession);
67589			if ('onDeviceSignOut' in $$props) $$invalidate(1, onDeviceSignOut = $$props.onDeviceSignOut);
67590			if ('currentDeviceLabel' in $$props) $$invalidate(2, currentDeviceLabel = $$props.currentDeviceLabel);
67591			if ('loginTimeLabel' in $$props) $$invalidate(3, loginTimeLabel = $$props.loginTimeLabel);
67592			if ('signOutLabel' in $$props) $$invalidate(4, signOutLabel = $$props.signOutLabel);
67593		};
67594
67595		return [
67596			deviceSession,
67597			onDeviceSignOut,
67598			currentDeviceLabel,
67599			loginTimeLabel,
67600			signOutLabel,
67601			func
67602		];
67603	}
67604
67605	class DeviceSessionWrapper extends SvelteComponent {
67606		constructor(options) {
67607			super();
67608
67609			init(this, options, instance$o, create_fragment$o, safe_not_equal, {
67610				deviceSession: 0,
67611				onDeviceSignOut: 1,
67612				currentDeviceLabel: 2,
67613				loginTimeLabel: 3,
67614				signOutLabel: 4
67615			});
67616		}
67617	}
67618
67619	/* src/components/elements/devices/DevicesSessionList.svelte generated by Svelte v4.2.12 */
67620
67621	function get_each_context$8(ctx, list, i) {
67622		const child_ctx = ctx.slice();
67623		child_ctx[7] = list[i];
67624		return child_ctx;
67625	}
67626
67627	// (33:4) {#if devicesSessions == null}
67628	function create_if_block_1$d(ctx) {
67629		let fa;
67630		let current;
67631
67632		fa = new Fa({
67633				props: { icon: faSpinner, spin: true, size: "lg" }
67634			});
67635
67636		return {
67637			c() {
67638				create_component(fa.$$.fragment);
67639			},
67640			m(target, anchor) {
67641				mount_component(fa, target, anchor);
67642				current = true;
67643			},
67644			i(local) {
67645				if (current) return;
67646				transition_in(fa.$$.fragment, local);
67647				current = true;
67648			},
67649			o(local) {
67650				transition_out(fa.$$.fragment, local);
67651				current = false;
67652			},
67653			d(detaching) {
67654				destroy_component(fa, detaching);
67655			}
67656		};
67657	}
67658
67659	// (36:4) {#if devicesSessions != null && !devicesSessions.length}
67660	function create_if_block$i(ctx) {
67661		let div;
67662
67663		return {
67664			c() {
67665				div = element("div");
67666			},
67667			m(target, anchor) {
67668				insert(target, div, anchor);
67669				div.innerHTML = /*noDeviceSessionsMessage*/ ctx[1];
67670			},
67671			p(ctx, dirty) {
67672				if (dirty & /*noDeviceSessionsMessage*/ 2) div.innerHTML = /*noDeviceSessionsMessage*/ ctx[1];		},
67673			d(detaching) {
67674				if (detaching) {
67675					detach(div);
67676				}
67677			}
67678		};
67679	}
67680
67681	// (41:4) {#each devicesSessions ?? [] as deviceSession}
67682	function create_each_block$8(ctx) {
67683		let devicesessionwrapper;
67684		let current;
67685
67686		devicesessionwrapper = new DeviceSessionWrapper({
67687				props: {
67688					deviceSession: /*deviceSession*/ ctx[7],
67689					currentDeviceLabel: /*currentDeviceLabel*/ ctx[3],
67690					loginTimeLabel: /*loginTimeLabel*/ ctx[4],
67691					signOutLabel: /*signOutLabel*/ ctx[5],
67692					onDeviceSignOut: /*onDeviceSignOut*/ ctx[6]
67693				}
67694			});
67695
67696		return {
67697			c() {
67698				create_component(devicesessionwrapper.$$.fragment);
67699			},
67700			m(target, anchor) {
67701				mount_component(devicesessionwrapper, target, anchor);
67702				current = true;
67703			},
67704			p(ctx, dirty) {
67705				const devicesessionwrapper_changes = {};
67706				if (dirty & /*devicesSessions*/ 1) devicesessionwrapper_changes.deviceSession = /*deviceSession*/ ctx[7];
67707				if (dirty & /*currentDeviceLabel*/ 8) devicesessionwrapper_changes.currentDeviceLabel = /*currentDeviceLabel*/ ctx[3];
67708				if (dirty & /*loginTimeLabel*/ 16) devicesessionwrapper_changes.loginTimeLabel = /*loginTimeLabel*/ ctx[4];
67709				if (dirty & /*signOutLabel*/ 32) devicesessionwrapper_changes.signOutLabel = /*signOutLabel*/ ctx[5];
67710				if (dirty & /*onDeviceSignOut*/ 64) devicesessionwrapper_changes.onDeviceSignOut = /*onDeviceSignOut*/ ctx[6];
67711				devicesessionwrapper.$set(devicesessionwrapper_changes);
67712			},
67713			i(local) {
67714				if (current) return;
67715				transition_in(devicesessionwrapper.$$.fragment, local);
67716				current = true;
67717			},
67718			o(local) {
67719				transition_out(devicesessionwrapper.$$.fragment, local);
67720				current = false;
67721			},
67722			d(detaching) {
67723				destroy_component(devicesessionwrapper, detaching);
67724			}
67725		};
67726	}
67727
67728	function create_fragment$n(ctx) {
67729		let div1;
67730		let div0;
67731		let h1;
67732		let t0;
67733		let t1;
67734		let t2;
67735		let t3;
67736		let current;
67737		let if_block0 = /*devicesSessions*/ ctx[0] == null && create_if_block_1$d();
67738		let if_block1 = /*devicesSessions*/ ctx[0] != null && !/*devicesSessions*/ ctx[0].length && create_if_block$i(ctx);
67739		let each_value = ensure_array_like(/*devicesSessions*/ ctx[0] ?? []);
67740		let each_blocks = [];
67741
67742		for (let i = 0; i < each_value.length; i += 1) {
67743			each_blocks[i] = create_each_block$8(get_each_context$8(ctx, each_value, i));
67744		}
67745
67746		const out = i => transition_out(each_blocks[i], 1, 1, () => {
67747			each_blocks[i] = null;
67748		});
67749
67750		return {
67751			c() {
67752				div1 = element("div");
67753				div0 = element("div");
67754				h1 = element("h1");
67755				t0 = text(/*yourDevicesLabel*/ ctx[2]);
67756				t1 = space();
67757				if (if_block0) if_block0.c();
67758				t2 = space();
67759				if (if_block1) if_block1.c();
67760				t3 = space();
67761
67762				for (let i = 0; i < each_blocks.length; i += 1) {
67763					each_blocks[i].c();
67764				}
67765
67766				attr(h1, "class", "current-device");
67767				attr(div0, "class", "your-devices");
67768				attr(div1, "class", "devices-sessions-container");
67769			},
67770			m(target, anchor) {
67771				insert(target, div1, anchor);
67772				append(div1, div0);
67773				append(div0, h1);
67774				append(h1, t0);
67775				append(div1, t1);
67776				if (if_block0) if_block0.m(div1, null);
67777				append(div1, t2);
67778				if (if_block1) if_block1.m(div1, null);
67779				append(div1, t3);
67780
67781				for (let i = 0; i < each_blocks.length; i += 1) {
67782					if (each_blocks[i]) {
67783						each_blocks[i].m(div1, null);
67784					}
67785				}
67786
67787				current = true;
67788			},
67789			p(ctx, [dirty]) {
67790				if (!current || dirty & /*yourDevicesLabel*/ 4) set_data(t0, /*yourDevicesLabel*/ ctx[2]);
67791
67792				if (/*devicesSessions*/ ctx[0] == null) {
67793					if (if_block0) {
67794						if (dirty & /*devicesSessions*/ 1) {
67795							transition_in(if_block0, 1);
67796						}
67797					} else {
67798						if_block0 = create_if_block_1$d();
67799						if_block0.c();
67800						transition_in(if_block0, 1);
67801						if_block0.m(div1, t2);
67802					}
67803				} else if (if_block0) {
67804					group_outros();
67805
67806					transition_out(if_block0, 1, 1, () => {
67807						if_block0 = null;
67808					});
67809
67810					check_outros();
67811				}
67812
67813				if (/*devicesSessions*/ ctx[0] != null && !/*devicesSessions*/ ctx[0].length) {
67814					if (if_block1) {
67815						if_block1.p(ctx, dirty);
67816					} else {
67817						if_block1 = create_if_block$i(ctx);
67818						if_block1.c();
67819						if_block1.m(div1, t3);
67820					}
67821				} else if (if_block1) {
67822					if_block1.d(1);
67823					if_block1 = null;
67824				}
67825
67826				if (dirty & /*devicesSessions, currentDeviceLabel, loginTimeLabel, signOutLabel, onDeviceSignOut*/ 121) {
67827					each_value = ensure_array_like(/*devicesSessions*/ ctx[0] ?? []);
67828					let i;
67829
67830					for (i = 0; i < each_value.length; i += 1) {
67831						const child_ctx = get_each_context$8(ctx, each_value, i);
67832
67833						if (each_blocks[i]) {
67834							each_blocks[i].p(child_ctx, dirty);
67835							transition_in(each_blocks[i], 1);
67836						} else {
67837							each_blocks[i] = create_each_block$8(child_ctx);
67838							each_blocks[i].c();
67839							transition_in(each_blocks[i], 1);
67840							each_blocks[i].m(div1, null);
67841						}
67842					}
67843
67844					group_outros();
67845
67846					for (i = each_value.length; i < each_blocks.length; i += 1) {
67847						out(i);
67848					}
67849
67850					check_outros();
67851				}
67852			},
67853			i(local) {
67854				if (current) return;
67855				transition_in(if_block0);
67856
67857				for (let i = 0; i < each_value.length; i += 1) {
67858					transition_in(each_blocks[i]);
67859				}
67860
67861				current = true;
67862			},
67863			o(local) {
67864				transition_out(if_block0);
67865				each_blocks = each_blocks.filter(Boolean);
67866
67867				for (let i = 0; i < each_blocks.length; i += 1) {
67868					transition_out(each_blocks[i]);
67869				}
67870
67871				current = false;
67872			},
67873			d(detaching) {
67874				if (detaching) {
67875					detach(div1);
67876				}
67877
67878				if (if_block0) if_block0.d();
67879				if (if_block1) if_block1.d();
67880				destroy_each(each_blocks, detaching);
67881			}
67882		};
67883	}
67884
67885	function instance$n($$self, $$props, $$invalidate) {
67886		let { devicesSessions } = $$props;
67887		let { noDeviceSessionsMessage } = $$props;
67888		let { yourDevicesLabel } = $$props;
67889		let { currentDeviceLabel } = $$props;
67890		let { loginTimeLabel } = $$props;
67891		let { signOutLabel } = $$props;
67892		let { onDeviceSignOut } = $$props;
67893
67894		$$self.$$set = $$props => {
67895			if ('devicesSessions' in $$props) $$invalidate(0, devicesSessions = $$props.devicesSessions);
67896			if ('noDeviceSessionsMessage' in $$props) $$invalidate(1, noDeviceSessionsMessage = $$props.noDeviceSessionsMessage);
67897			if ('yourDevicesLabel' in $$props) $$invalidate(2, yourDevicesLabel = $$props.yourDevicesLabel);
67898			if ('currentDeviceLabel' in $$props) $$invalidate(3, currentDeviceLabel = $$props.currentDeviceLabel);
67899			if ('loginTimeLabel' in $$props) $$invalidate(4, loginTimeLabel = $$props.loginTimeLabel);
67900			if ('signOutLabel' in $$props) $$invalidate(5, signOutLabel = $$props.signOutLabel);
67901			if ('onDeviceSignOut' in $$props) $$invalidate(6, onDeviceSignOut = $$props.onDeviceSignOut);
67902		};
67903
67904		return [
67905			devicesSessions,
67906			noDeviceSessionsMessage,
67907			yourDevicesLabel,
67908			currentDeviceLabel,
67909			loginTimeLabel,
67910			signOutLabel,
67911			onDeviceSignOut
67912		];
67913	}
67914
67915	class DevicesSessionList extends SvelteComponent {
67916		constructor(options) {
67917			super();
67918
67919			init(this, options, instance$n, create_fragment$n, safe_not_equal, {
67920				devicesSessions: 0,
67921				noDeviceSessionsMessage: 1,
67922				yourDevicesLabel: 2,
67923				currentDeviceLabel: 3,
67924				loginTimeLabel: 4,
67925				signOutLabel: 5,
67926				onDeviceSignOut: 6
67927			});
67928		}
67929	}
67930
67931	const loadDeviceSessions = async (form, formState, formActions) => {
67932	    const availableDeviceSessions = await getAvailableDeviceSessions(form, formState, formActions);
67933	    formActions.updateFormState({
67934	        availableDeviceSessions
67935	    });
67936	    return availableDeviceSessions;
67937	};
67938	const getAvailableDeviceSessions = (form, _, formActions) => {
67939	    return request(`zephr/public/sessions/v1/sessions`, {
67940	        method: "GET"
67941	    }, formActions, null, true)
67942	        .then(response => response.ok ? response.json() : [])
67943	        .then(sessions => sessions
67944	        .map(session => ({
67945	        tenantId: session['tenantId'],
67946	        userId: session['userId'],
67947	        id: session['id'],
67948	        startDate: new Date(session['startDate']).toLocaleString(resolveLanguagePackLocale(form), {
67949	            year: 'numeric',
67950	            month: 'long',
67951	            day: 'numeric',
67952	            hour: '2-digit',
67953	            minute: '2-digit',
67954	            second: '2-digit',
67955	            hour12: true
67956	        }),
67957	        deviceName: session['deviceName'],
67958	        browser: session['browser'],
67959	        requestingSession: session['requestingSession'],
67960	        city: session['city'] ?? null,
67961	        country: session['country'] ?? null,
67962	        geoState: session['geoState'] ?? null,
67963	        ipAddress: session['ipAddress'] ?? null,
67964	    })));
67965	};
67966
67967	const signOutSingleDevice = async (form, formState, formActions, deviceId) => {
67968	    const success = await signOutDevice(form, formState, formActions, deviceId);
67969	    if (success) {
67970	        console.log("Successfully signed out device.");
67971	        return loadDeviceSessions(form, formState, formActions);
67972	    }
67973	    else {
67974	        console.error("Failed to sign out device.");
67975	    }
67976	};
67977	const signOutDevice = async (form, formState, formActions, deviceId) => {
67978	    try {
67979	        const response = await request(`zephr/public/sessions/v1/sessions/${deviceId}`, {
67980	            method: "DELETE"
67981	        }, formActions, null, true);
67982	        return response.status === 200;
67983	    }
67984	    catch (error) {
67985	        console.error("Error occurred while signing out device:", error);
67986	        return false;
67987	    }
67988	};
67989
67990	const deviceSessionsFactory = {
67991	    matches: (sectionElement) => sectionElement.type === elementTypes.DEVICES_SESSIONS_LIST,
67992	    create: (form, formState, formActions, elementConfig) => ({
67993	        component: DevicesSessionList,
67994	        props: {
67995	            yourDevicesLabel: elementConfig.yourDevicesLabel,
67996	            noDeviceSessionsMessage: elementConfig.noDeviceSessionsMessage,
67997	            devicesSessions: formState.availableDeviceSessions,
67998	            currentDeviceLabel: elementConfig.currentDeviceLabel,
67999	            loginTimeLabel: elementConfig.loginTimeLabel,
68000	            signOutLabel: elementConfig.signOutLabel,
68001	            onDeviceSignOut: (value) => {
68002	                logDataLayerEvent(form, 'zephr_form_button_press', {
68003	                    sectionId: formState.currentSection.type,
68004	                    buttonType: 'SUBMIT'
68005	                });
68006	                logDataLayerEvent(form, 'zephr_form_device_logout', { deviceId: value });
68007	                void signOutSingleDevice(form, formState, formActions, value);
68008	            }
68009	        }
68010	    })
68011	};
68012
68013	/* src/components/elements/devices/DeviceSessionsSignOutAllWrapper.svelte generated by Svelte v4.2.12 */
68014
68015	function create_if_block$h(ctx) {
68016		let div;
68017		let t;
68018		let mounted;
68019		let dispose;
68020
68021		return {
68022			c() {
68023				div = element("div");
68024				t = text(/*text*/ ctx[2]);
68025				attr(div, "class", "sign-out-all svelte-1ogdv39");
68026			},
68027			m(target, anchor) {
68028				insert(target, div, anchor);
68029				append(div, t);
68030
68031				if (!mounted) {
68032					dispose = listen(div, "click", function () {
68033						if (is_function(/*onSignOutAllDevices*/ ctx[0])) /*onSignOutAllDevices*/ ctx[0].apply(this, arguments);
68034					});
68035
68036					mounted = true;
68037				}
68038			},
68039			p(new_ctx, dirty) {
68040				ctx = new_ctx;
68041				if (dirty & /*text*/ 4) set_data(t, /*text*/ ctx[2]);
68042			},
68043			d(detaching) {
68044				if (detaching) {
68045					detach(div);
68046				}
68047
68048				mounted = false;
68049				dispose();
68050			}
68051		};
68052	}
68053
68054	function create_fragment$m(ctx) {
68055		let if_block_anchor;
68056		let if_block = !/*hidden*/ ctx[1] && create_if_block$h(ctx);
68057
68058		return {
68059			c() {
68060				if (if_block) if_block.c();
68061				if_block_anchor = empty();
68062			},
68063			m(target, anchor) {
68064				if (if_block) if_block.m(target, anchor);
68065				insert(target, if_block_anchor, anchor);
68066			},
68067			p(ctx, [dirty]) {
68068				if (!/*hidden*/ ctx[1]) {
68069					if (if_block) {
68070						if_block.p(ctx, dirty);
68071					} else {
68072						if_block = create_if_block$h(ctx);
68073						if_block.c();
68074						if_block.m(if_block_anchor.parentNode, if_block_anchor);
68075					}
68076				} else if (if_block) {
68077					if_block.d(1);
68078					if_block = null;
68079				}
68080			},
68081			i: noop,
68082			o: noop,
68083			d(detaching) {
68084				if (detaching) {
68085					detach(if_block_anchor);
68086				}
68087
68088				if (if_block) if_block.d(detaching);
68089			}
68090		};
68091	}
68092
68093	function instance$m($$self, $$props, $$invalidate) {
68094		let { onSignOutAllDevices } = $$props;
68095		let { hidden } = $$props;
68096		let { text } = $$props;
68097
68098		$$self.$$set = $$props => {
68099			if ('onSignOutAllDevices' in $$props) $$invalidate(0, onSignOutAllDevices = $$props.onSignOutAllDevices);
68100			if ('hidden' in $$props) $$invalidate(1, hidden = $$props.hidden);
68101			if ('text' in $$props) $$invalidate(2, text = $$props.text);
68102		};
68103
68104		return [onSignOutAllDevices, hidden, text];
68105	}
68106
68107	class DeviceSessionsSignOutAllWrapper extends SvelteComponent {
68108		constructor(options) {
68109			super();
68110
68111			init(this, options, instance$m, create_fragment$m, safe_not_equal, {
68112				onSignOutAllDevices: 0,
68113				hidden: 1,
68114				text: 2
68115			});
68116		}
68117	}
68118
68119	const signOutOfAllDevices = async (form, formState, formActions) => {
68120	    const success = await signOutDevices(form, formState, formActions);
68121	    if (success) {
68122	        console.log("Successfully signed out of all devices.");
68123	        return loadDeviceSessions(form, formState, formActions);
68124	    }
68125	    else {
68126	        console.error("Failed to sign out of all devices.");
68127	    }
68128	};
68129	const signOutDevices = async (form, _, formActions) => {
68130	    try {
68131	        const response = await request(`zephr/public/sessions/v1/sessions?except-current`, {
68132	            method: "DELETE"
68133	        }, formActions, null, true);
68134	        return response.status === 200;
68135	    }
68136	    catch (error) {
68137	        console.error("Error occurred while signing out devices:", error);
68138	        return false;
68139	    }
68140	};
68141
68142	const deviceSessionsSignOutAll = {
68143	    matches: (sectionElement) => sectionElement.type === elementTypes.SIGN_OUT_ALL_OTHER_DEVICES,
68144	    create: (form, formState, formActions, elementConfig) => ({
68145	        component: DeviceSessionsSignOutAllWrapper,
68146	        props: {
68147	            hidden: formState.availableDeviceSessions?.length <= 1,
68148	            text: elementConfig.text,
68149	            onSignOutAllDevices: () => {
68150	                logDataLayerEvent(form, 'zephr_form_sign_out_all_devices', null);
68151	                void signOutOfAllDevices(form, formState, formActions);
68152	            }
68153	        }
68154	    })
68155	};
68156
68157	/* src/components/elements/billingHistory/BillingHistory.svelte generated by Svelte v4.2.12 */
68158
68159	function get_each_context$7(ctx, list, i) {
68160		const child_ctx = ctx.slice();
68161		child_ctx[5] = list[i];
68162		return child_ctx;
68163	}
68164
68165	// (30:10) {#if e.subtotal}
68166	function create_if_block_1$c(ctx) {
68167		let t0_value = /*e*/ ctx[5].currency + "";
68168		let t0;
68169		let t1;
68170		let t2_value = /*e*/ ctx[5].subtotal + "";
68171		let t2;
68172		let t3;
68173		let if_block_anchor;
68174		let if_block = /*e*/ ctx[5].taxes && create_if_block_2$8(ctx);
68175
68176		return {
68177			c() {
68178				t0 = text(t0_value);
68179				t1 = space();
68180				t2 = text(t2_value);
68181				t3 = space();
68182				if (if_block) if_block.c();
68183				if_block_anchor = empty();
68184			},
68185			m(target, anchor) {
68186				insert(target, t0, anchor);
68187				insert(target, t1, anchor);
68188				insert(target, t2, anchor);
68189				insert(target, t3, anchor);
68190				if (if_block) if_block.m(target, anchor);
68191				insert(target, if_block_anchor, anchor);
68192			},
68193			p(ctx, dirty) {
68194				if (dirty & /*historyItems*/ 1 && t0_value !== (t0_value = /*e*/ ctx[5].currency + "")) set_data(t0, t0_value);
68195				if (dirty & /*historyItems*/ 1 && t2_value !== (t2_value = /*e*/ ctx[5].subtotal + "")) set_data(t2, t2_value);
68196
68197				if (/*e*/ ctx[5].taxes) {
68198					if (if_block) {
68199						if_block.p(ctx, dirty);
68200					} else {
68201						if_block = create_if_block_2$8(ctx);
68202						if_block.c();
68203						if_block.m(if_block_anchor.parentNode, if_block_anchor);
68204					}
68205				} else if (if_block) {
68206					if_block.d(1);
68207					if_block = null;
68208				}
68209			},
68210			d(detaching) {
68211				if (detaching) {
68212					detach(t0);
68213					detach(t1);
68214					detach(t2);
68215					detach(t3);
68216					detach(if_block_anchor);
68217				}
68218
68219				if (if_block) if_block.d(detaching);
68220			}
68221		};
68222	}
68223
68224	// (32:12) {#if e.taxes}
68225	function create_if_block_2$8(ctx) {
68226		let span;
68227		let t_value = ` ${/*e*/ ctx[5].taxes}` + "";
68228		let t;
68229
68230		return {
68231			c() {
68232				span = element("span");
68233				t = text(t_value);
68234				attr(span, "class", "taxes svelte-7sscau");
68235			},
68236			m(target, anchor) {
68237				insert(target, span, anchor);
68238				append(span, t);
68239			},
68240			p(ctx, dirty) {
68241				if (dirty & /*historyItems*/ 1 && t_value !== (t_value = ` ${/*e*/ ctx[5].taxes}` + "")) set_data(t, t_value);
68242			},
68243			d(detaching) {
68244				if (detaching) {
68245					detach(span);
68246				}
68247			}
68248		};
68249	}
68250
68251	// (38:10) {#if e.total}
68252	function create_if_block$g(ctx) {
68253		let t0_value = /*e*/ ctx[5].currency + "";
68254		let t0;
68255		let t1;
68256		let t2_value = /*e*/ ctx[5].total + "";
68257		let t2;
68258
68259		return {
68260			c() {
68261				t0 = text(t0_value);
68262				t1 = space();
68263				t2 = text(t2_value);
68264			},
68265			m(target, anchor) {
68266				insert(target, t0, anchor);
68267				insert(target, t1, anchor);
68268				insert(target, t2, anchor);
68269			},
68270			p(ctx, dirty) {
68271				if (dirty & /*historyItems*/ 1 && t0_value !== (t0_value = /*e*/ ctx[5].currency + "")) set_data(t0, t0_value);
68272				if (dirty & /*historyItems*/ 1 && t2_value !== (t2_value = /*e*/ ctx[5].total + "")) set_data(t2, t2_value);
68273			},
68274			d(detaching) {
68275				if (detaching) {
68276					detach(t0);
68277					detach(t1);
68278					detach(t2);
68279				}
68280			}
68281		};
68282	}
68283
68284	// (25:4) {#each historyItems ?? [] as e}
68285	function create_each_block$7(ctx) {
68286		let div4;
68287		let div0;
68288		let t0_value = /*e*/ ctx[5].date + "";
68289		let t0;
68290		let t1;
68291		let div1;
68292		let t2_value = /*e*/ ctx[5].period + "";
68293		let t2;
68294		let t3;
68295		let div2;
68296		let t4;
68297		let div3;
68298		let t5;
68299		let if_block0 = /*e*/ ctx[5].subtotal && create_if_block_1$c(ctx);
68300		let if_block1 = /*e*/ ctx[5].total && create_if_block$g(ctx);
68301
68302		return {
68303			c() {
68304				div4 = element("div");
68305				div0 = element("div");
68306				t0 = text(t0_value);
68307				t1 = space();
68308				div1 = element("div");
68309				t2 = text(t2_value);
68310				t3 = space();
68311				div2 = element("div");
68312				if (if_block0) if_block0.c();
68313				t4 = space();
68314				div3 = element("div");
68315				if (if_block1) if_block1.c();
68316				t5 = space();
68317				attr(div0, "class", "svelte-7sscau");
68318				attr(div1, "class", "svelte-7sscau");
68319				attr(div2, "class", "svelte-7sscau");
68320				attr(div3, "class", "svelte-7sscau");
68321				attr(div4, "class", "table-row svelte-7sscau");
68322			},
68323			m(target, anchor) {
68324				insert(target, div4, anchor);
68325				append(div4, div0);
68326				append(div0, t0);
68327				append(div4, t1);
68328				append(div4, div1);
68329				append(div1, t2);
68330				append(div4, t3);
68331				append(div4, div2);
68332				if (if_block0) if_block0.m(div2, null);
68333				append(div4, t4);
68334				append(div4, div3);
68335				if (if_block1) if_block1.m(div3, null);
68336				append(div4, t5);
68337			},
68338			p(ctx, dirty) {
68339				if (dirty & /*historyItems*/ 1 && t0_value !== (t0_value = /*e*/ ctx[5].date + "")) set_data(t0, t0_value);
68340				if (dirty & /*historyItems*/ 1 && t2_value !== (t2_value = /*e*/ ctx[5].period + "")) set_data(t2, t2_value);
68341
68342				if (/*e*/ ctx[5].subtotal) {
68343					if (if_block0) {
68344						if_block0.p(ctx, dirty);
68345					} else {
68346						if_block0 = create_if_block_1$c(ctx);
68347						if_block0.c();
68348						if_block0.m(div2, null);
68349					}
68350				} else if (if_block0) {
68351					if_block0.d(1);
68352					if_block0 = null;
68353				}
68354
68355				if (/*e*/ ctx[5].total) {
68356					if (if_block1) {
68357						if_block1.p(ctx, dirty);
68358					} else {
68359						if_block1 = create_if_block$g(ctx);
68360						if_block1.c();
68361						if_block1.m(div3, null);
68362					}
68363				} else if (if_block1) {
68364					if_block1.d(1);
68365					if_block1 = null;
68366				}
68367			},
68368			d(detaching) {
68369				if (detaching) {
68370					detach(div4);
68371				}
68372
68373				if (if_block0) if_block0.d();
68374				if (if_block1) if_block1.d();
68375			}
68376		};
68377	}
68378
68379	function create_fragment$l(ctx) {
68380		let div6;
68381		let div5;
68382		let div4;
68383		let div0;
68384		let t0;
68385		let t1;
68386		let div1;
68387		let t2;
68388		let t3;
68389		let div2;
68390		let t4;
68391		let t5;
68392		let div3;
68393		let t6;
68394		let t7;
68395		let each_value = ensure_array_like(/*historyItems*/ ctx[0] ?? []);
68396		let each_blocks = [];
68397
68398		for (let i = 0; i < each_value.length; i += 1) {
68399			each_blocks[i] = create_each_block$7(get_each_context$7(ctx, each_value, i));
68400		}
68401
68402		return {
68403			c() {
68404				div6 = element("div");
68405				div5 = element("div");
68406				div4 = element("div");
68407				div0 = element("div");
68408				t0 = text(/*dateLabel*/ ctx[1]);
68409				t1 = space();
68410				div1 = element("div");
68411				t2 = text(/*periodLabel*/ ctx[2]);
68412				t3 = space();
68413				div2 = element("div");
68414				t4 = text(/*subtotalLabel*/ ctx[3]);
68415				t5 = space();
68416				div3 = element("div");
68417				t6 = text(/*totalLabel*/ ctx[4]);
68418				t7 = space();
68419
68420				for (let i = 0; i < each_blocks.length; i += 1) {
68421					each_blocks[i].c();
68422				}
68423
68424				attr(div0, "class", "svelte-7sscau");
68425				attr(div1, "class", "svelte-7sscau");
68426				attr(div2, "class", "svelte-7sscau");
68427				attr(div3, "class", "svelte-7sscau");
68428				attr(div4, "class", "table-head svelte-7sscau");
68429				attr(div5, "class", "table svelte-7sscau");
68430				attr(div6, "class", "billing-history-container");
68431			},
68432			m(target, anchor) {
68433				insert(target, div6, anchor);
68434				append(div6, div5);
68435				append(div5, div4);
68436				append(div4, div0);
68437				append(div0, t0);
68438				append(div4, t1);
68439				append(div4, div1);
68440				append(div1, t2);
68441				append(div4, t3);
68442				append(div4, div2);
68443				append(div2, t4);
68444				append(div4, t5);
68445				append(div4, div3);
68446				append(div3, t6);
68447				append(div5, t7);
68448
68449				for (let i = 0; i < each_blocks.length; i += 1) {
68450					if (each_blocks[i]) {
68451						each_blocks[i].m(div5, null);
68452					}
68453				}
68454			},
68455			p(ctx, [dirty]) {
68456				if (dirty & /*dateLabel*/ 2) set_data(t0, /*dateLabel*/ ctx[1]);
68457				if (dirty & /*periodLabel*/ 4) set_data(t2, /*periodLabel*/ ctx[2]);
68458				if (dirty & /*subtotalLabel*/ 8) set_data(t4, /*subtotalLabel*/ ctx[3]);
68459				if (dirty & /*totalLabel*/ 16) set_data(t6, /*totalLabel*/ ctx[4]);
68460
68461				if (dirty & /*historyItems*/ 1) {
68462					each_value = ensure_array_like(/*historyItems*/ ctx[0] ?? []);
68463					let i;
68464
68465					for (i = 0; i < each_value.length; i += 1) {
68466						const child_ctx = get_each_context$7(ctx, each_value, i);
68467
68468						if (each_blocks[i]) {
68469							each_blocks[i].p(child_ctx, dirty);
68470						} else {
68471							each_blocks[i] = create_each_block$7(child_ctx);
68472							each_blocks[i].c();
68473							each_blocks[i].m(div5, null);
68474						}
68475					}
68476
68477					for (; i < each_blocks.length; i += 1) {
68478						each_blocks[i].d(1);
68479					}
68480
68481					each_blocks.length = each_value.length;
68482				}
68483			},
68484			i: noop,
68485			o: noop,
68486			d(detaching) {
68487				if (detaching) {
68488					detach(div6);
68489				}
68490
68491				destroy_each(each_blocks, detaching);
68492			}
68493		};
68494	}
68495
68496	function instance$l($$self, $$props, $$invalidate) {
68497		let { historyItems } = $$props;
68498		let { dateLabel } = $$props;
68499		let { periodLabel } = $$props;
68500		let { subtotalLabel } = $$props;
68501		let { totalLabel } = $$props;
68502
68503		$$self.$$set = $$props => {
68504			if ('historyItems' in $$props) $$invalidate(0, historyItems = $$props.historyItems);
68505			if ('dateLabel' in $$props) $$invalidate(1, dateLabel = $$props.dateLabel);
68506			if ('periodLabel' in $$props) $$invalidate(2, periodLabel = $$props.periodLabel);
68507			if ('subtotalLabel' in $$props) $$invalidate(3, subtotalLabel = $$props.subtotalLabel);
68508			if ('totalLabel' in $$props) $$invalidate(4, totalLabel = $$props.totalLabel);
68509		};
68510
68511		return [historyItems, dateLabel, periodLabel, subtotalLabel, totalLabel];
68512	}
68513
68514	class BillingHistory extends SvelteComponent {
68515		constructor(options) {
68516			super();
68517
68518			init(this, options, instance$l, create_fragment$l, safe_not_equal, {
68519				historyItems: 0,
68520				dateLabel: 1,
68521				periodLabel: 2,
68522				subtotalLabel: 3,
68523				totalLabel: 4
68524			});
68525		}
68526	}
68527
68528	const billingHistoryFactory = {
68529	    matches: (sectionElement) => sectionElement.type === elementTypes.BILLING_HISTORY,
68530	    create: (form, formState, __) => ({
68531	        component: BillingHistory,
68532	        props: {
68533	            historyItems: formState.selectedSubscription?.transactionHistory,
68534	            dateLabel: resolveLanguagePackKeyTyped(form, 'forms.billing.history.date', 'Date'),
68535	            periodLabel: resolveLanguagePackKeyTyped(form, 'forms.billing.history.period', 'Period'),
68536	            subtotalLabel: resolveLanguagePackKeyTyped(form, 'forms.billing.history.subtotal', 'Subtotal'),
68537	            totalLabel: resolveLanguagePackKeyTyped(form, 'forms.billing.history.total', 'Total'),
68538	        }
68539	    })
68540	};
68541
68542	/* src/components/elements/buttonGroup/ButtonGroup.svelte generated by Svelte v4.2.12 */
68543
68544	function create_if_block$f(ctx) {
68545		let button;
68546		let t;
68547		let mounted;
68548		let dispose;
68549
68550		return {
68551			c() {
68552				button = element("button");
68553				t = text(/*backText*/ ctx[1]);
68554				attr(button, "class", "zephr-form-back-button svelte-5uv9ua");
68555				attr(button, "type", "submit");
68556			},
68557			m(target, anchor) {
68558				insert(target, button, anchor);
68559				append(button, t);
68560
68561				if (!mounted) {
68562					dispose = listen(button, "click", prevent_default(function () {
68563						if (is_function(/*onBack*/ ctx[3])) /*onBack*/ ctx[3].apply(this, arguments);
68564					}));
68565
68566					mounted = true;
68567				}
68568			},
68569			p(new_ctx, dirty) {
68570				ctx = new_ctx;
68571				if (dirty & /*backText*/ 2) set_data(t, /*backText*/ ctx[1]);
68572			},
68573			d(detaching) {
68574				if (detaching) {
68575					detach(button);
68576				}
68577
68578				mounted = false;
68579				dispose();
68580			}
68581		};
68582	}
68583
68584	function create_fragment$k(ctx) {
68585		let div;
68586		let t0;
68587		let button;
68588		let t1;
68589		let mounted;
68590		let dispose;
68591		let if_block = /*backEnabled*/ ctx[2] && create_if_block$f(ctx);
68592
68593		return {
68594			c() {
68595				div = element("div");
68596				if (if_block) if_block.c();
68597				t0 = space();
68598				button = element("button");
68599				t1 = text(/*continueText*/ ctx[0]);
68600				attr(button, "class", "zephr-form-continue-button svelte-5uv9ua");
68601				attr(button, "type", "submit");
68602				attr(div, "class", "zephr-form-button-group zephr-form-max-width svelte-5uv9ua");
68603			},
68604			m(target, anchor) {
68605				insert(target, div, anchor);
68606				if (if_block) if_block.m(div, null);
68607				append(div, t0);
68608				append(div, button);
68609				append(button, t1);
68610
68611				if (!mounted) {
68612					dispose = listen(button, "click", prevent_default(function () {
68613						if (is_function(/*onClick*/ ctx[4])) /*onClick*/ ctx[4].apply(this, arguments);
68614					}));
68615
68616					mounted = true;
68617				}
68618			},
68619			p(new_ctx, [dirty]) {
68620				ctx = new_ctx;
68621
68622				if (/*backEnabled*/ ctx[2]) {
68623					if (if_block) {
68624						if_block.p(ctx, dirty);
68625					} else {
68626						if_block = create_if_block$f(ctx);
68627						if_block.c();
68628						if_block.m(div, t0);
68629					}
68630				} else if (if_block) {
68631					if_block.d(1);
68632					if_block = null;
68633				}
68634
68635				if (dirty & /*continueText*/ 1) set_data(t1, /*continueText*/ ctx[0]);
68636			},
68637			i: noop,
68638			o: noop,
68639			d(detaching) {
68640				if (detaching) {
68641					detach(div);
68642				}
68643
68644				if (if_block) if_block.d();
68645				mounted = false;
68646				dispose();
68647			}
68648		};
68649	}
68650
68651	function instance$k($$self, $$props, $$invalidate) {
68652		let { continueText } = $$props;
68653		let { backText } = $$props;
68654		let { backEnabled } = $$props;
68655		let { onBack } = $$props;
68656		let { onClick } = $$props;
68657
68658		$$self.$$set = $$props => {
68659			if ('continueText' in $$props) $$invalidate(0, continueText = $$props.continueText);
68660			if ('backText' in $$props) $$invalidate(1, backText = $$props.backText);
68661			if ('backEnabled' in $$props) $$invalidate(2, backEnabled = $$props.backEnabled);
68662			if ('onBack' in $$props) $$invalidate(3, onBack = $$props.onBack);
68663			if ('onClick' in $$props) $$invalidate(4, onClick = $$props.onClick);
68664		};
68665
68666		return [continueText, backText, backEnabled, onBack, onClick];
68667	}
68668
68669	class ButtonGroup extends SvelteComponent {
68670		constructor(options) {
68671			super();
68672
68673			init(this, options, instance$k, create_fragment$k, safe_not_equal, {
68674				continueText: 0,
68675				backText: 1,
68676				backEnabled: 2,
68677				onBack: 3,
68678				onClick: 4
68679			});
68680		}
68681	}
68682
68683	const factory$4 = {
68684	    matches: (sectionElement) => sectionElement.type === elementTypes.BUTTON_GROUP,
68685	    create: (form, formState, formActions, elementConfig) => ({
68686	        component: ButtonGroup,
68687	        props: {
68688	            continueText: elementConfig.continueText,
68689	            backText: elementConfig.backText,
68690	            backEnabled: elementConfig.backEnabled,
68691	            onClick: () => {
68692	                logDataLayerEvent(form, 'zephr_form_button_press', {
68693	                    sectionId: formState.currentSection.type,
68694	                    buttonType: 'CONTINUE'
68695	                });
68696	                if (elementConfig.isCancel) {
68697	                    formActions.updateFormState({
68698	                        confirmCancel: true,
68699	                    });
68700	                }
68701	                formActions.updateFormState({
68702	                    isExternalReferrer: false,
68703	                });
68704	                formActions.attemptCompleteSection();
68705	            },
68706	            onBack: () => {
68707	                logDataLayerEvent(form, 'zephr_form_button_press', {
68708	                    sectionId: formState.currentSection.type,
68709	                    buttonType: 'BACK'
68710	                });
68711	                if (elementConfig.backToURL) {
68712	                    window.location.pathname = elementConfig.backURL;
68713	                }
68714	                else if (formState.isExternalReferrer) {
68715	                    window.history.back();
68716	                }
68717	                else {
68718	                    formActions.onEvent(elementConfig.event);
68719	                }
68720	            }
68721	        }
68722	    })
68723	};
68724
68725	/* src/components/elements/linkButton/LinkButton.svelte generated by Svelte v4.2.12 */
68726
68727	function create_fragment$j(ctx) {
68728		let a;
68729		let t;
68730		let mounted;
68731		let dispose;
68732
68733		return {
68734			c() {
68735				a = element("a");
68736				t = text(/*text*/ ctx[0]);
68737				attr(a, "class", "zephr-form-button zephr-form-button-top-margin svelte-1uaz0r");
68738				attr(a, "href", /*href*/ ctx[1]);
68739			},
68740			m(target, anchor) {
68741				insert(target, a, anchor);
68742				append(a, t);
68743
68744				if (!mounted) {
68745					dispose = listen(a, "click", function () {
68746						if (is_function(/*onClick*/ ctx[2])) /*onClick*/ ctx[2].apply(this, arguments);
68747					});
68748
68749					mounted = true;
68750				}
68751			},
68752			p(new_ctx, [dirty]) {
68753				ctx = new_ctx;
68754				if (dirty & /*text*/ 1) set_data(t, /*text*/ ctx[0]);
68755
68756				if (dirty & /*href*/ 2) {
68757					attr(a, "href", /*href*/ ctx[1]);
68758				}
68759			},
68760			i: noop,
68761			o: noop,
68762			d(detaching) {
68763				if (detaching) {
68764					detach(a);
68765				}
68766
68767				mounted = false;
68768				dispose();
68769			}
68770		};
68771	}
68772
68773	function instance$j($$self, $$props, $$invalidate) {
68774		let { text } = $$props;
68775		let { href } = $$props;
68776
68777		let { onClick = () => {
68778			
68779		} } = $$props;
68780
68781		$$self.$$set = $$props => {
68782			if ('text' in $$props) $$invalidate(0, text = $$props.text);
68783			if ('href' in $$props) $$invalidate(1, href = $$props.href);
68784			if ('onClick' in $$props) $$invalidate(2, onClick = $$props.onClick);
68785		};
68786
68787		return [text, href, onClick];
68788	}
68789
68790	class LinkButton extends SvelteComponent {
68791		constructor(options) {
68792			super();
68793			init(this, options, instance$j, create_fragment$j, safe_not_equal, { text: 0, href: 1, onClick: 2 });
68794		}
68795	}
68796
68797	const factory$3 = {
68798	    matches: (sectionElement) => sectionElement.type === elementTypes.LINK_BUTTON,
68799	    create: (form, formState, formActions, elementConfig) => ({
68800	        component: LinkButton,
68801	        props: {
68802	            text: elementConfig.text,
68803	            href: elementConfig.href,
68804	            onClick: () => {
68805	                logDataLayerEvent(form, 'zephr_form_button_press', {
68806	                    sectionId: formState.currentSection.type,
68807	                    buttonType: 'LINK_BUTTON'
68808	                });
68809	            },
68810	        },
68811	    })
68812	};
68813
68814	/* src/components/elements/recipientName/RecipientName.svelte generated by Svelte v4.2.12 */
68815
68816	function create_if_block_1$b(ctx) {
68817		let div;
68818		let t;
68819
68820		return {
68821			c() {
68822				div = element("div");
68823				t = text(/*firstNameError*/ ctx[3]);
68824				attr(div, "class", "error-text svelte-hvl7z2");
68825			},
68826			m(target, anchor) {
68827				insert(target, div, anchor);
68828				append(div, t);
68829			},
68830			p(ctx, dirty) {
68831				if (dirty & /*firstNameError*/ 8) set_data(t, /*firstNameError*/ ctx[3]);
68832			},
68833			d(detaching) {
68834				if (detaching) {
68835					detach(div);
68836				}
68837			}
68838		};
68839	}
68840
68841	// (71:4) {#if lastNameError}
68842	function create_if_block$e(ctx) {
68843		let div;
68844		let t;
68845
68846		return {
68847			c() {
68848				div = element("div");
68849				t = text(/*lastNameError*/ ctx[4]);
68850				attr(div, "class", "error-text svelte-hvl7z2");
68851			},
68852			m(target, anchor) {
68853				insert(target, div, anchor);
68854				append(div, t);
68855			},
68856			p(ctx, dirty) {
68857				if (dirty & /*lastNameError*/ 16) set_data(t, /*lastNameError*/ ctx[4]);
68858			},
68859			d(detaching) {
68860				if (detaching) {
68861					detach(div);
68862				}
68863			}
68864		};
68865	}
68866
68867	function create_fragment$i(ctx) {
68868		let div2;
68869		let div0;
68870		let label0;
68871		let t0_value = /*config*/ ctx[0].firstNameLabel + "";
68872		let t0;
68873		let t1;
68874		let input0;
68875		let input0_placeholder_value;
68876		let t2;
68877		let t3;
68878		let div1;
68879		let label1;
68880		let t4_value = /*config*/ ctx[0].lastNameLabel + "";
68881		let t4;
68882		let t5;
68883		let input1;
68884		let input1_placeholder_value;
68885		let t6;
68886		let mounted;
68887		let dispose;
68888		let if_block0 = /*firstNameError*/ ctx[3] && create_if_block_1$b(ctx);
68889		let if_block1 = /*lastNameError*/ ctx[4] && create_if_block$e(ctx);
68890
68891		return {
68892			c() {
68893				div2 = element("div");
68894				div0 = element("div");
68895				label0 = element("label");
68896				t0 = text(t0_value);
68897				t1 = space();
68898				input0 = element("input");
68899				t2 = space();
68900				if (if_block0) if_block0.c();
68901				t3 = space();
68902				div1 = element("div");
68903				label1 = element("label");
68904				t4 = text(t4_value);
68905				t5 = space();
68906				input1 = element("input");
68907				t6 = space();
68908				if (if_block1) if_block1.c();
68909				attr(label0, "for", "firstName");
68910				attr(label0, "class", "svelte-hvl7z2");
68911				attr(input0, "id", "firstName");
68912				attr(input0, "type", "text");
68913				input0.required = true;
68914				attr(input0, "placeholder", input0_placeholder_value = /*config*/ ctx[0].firstNamePlaceholder);
68915				attr(input0, "class", "svelte-hvl7z2");
68916				toggle_class(input0, "error", !!/*firstNameError*/ ctx[3]);
68917				attr(div0, "class", "field svelte-hvl7z2");
68918				attr(label1, "for", "lastName");
68919				attr(label1, "class", "svelte-hvl7z2");
68920				attr(input1, "id", "lastName");
68921				attr(input1, "type", "text");
68922				input1.required = true;
68923				attr(input1, "placeholder", input1_placeholder_value = /*config*/ ctx[0].lastNamePlaceholder);
68924				attr(input1, "class", "svelte-hvl7z2");
68925				toggle_class(input1, "error", !!/*lastNameError*/ ctx[4]);
68926				attr(div1, "class", "field svelte-hvl7z2");
68927				attr(div2, "class", "recipient-name-section svelte-hvl7z2");
68928			},
68929			m(target, anchor) {
68930				insert(target, div2, anchor);
68931				append(div2, div0);
68932				append(div0, label0);
68933				append(label0, t0);
68934				append(div0, t1);
68935				append(div0, input0);
68936				set_input_value(input0, /*firstName*/ ctx[1]);
68937				append(div0, t2);
68938				if (if_block0) if_block0.m(div0, null);
68939				append(div2, t3);
68940				append(div2, div1);
68941				append(div1, label1);
68942				append(label1, t4);
68943				append(div1, t5);
68944				append(div1, input1);
68945				set_input_value(input1, /*lastName*/ ctx[2]);
68946				append(div1, t6);
68947				if (if_block1) if_block1.m(div1, null);
68948
68949				if (!mounted) {
68950					dispose = [
68951						listen(input0, "input", /*input0_input_handler*/ ctx[8]),
68952						listen(input0, "input", /*updateGiftRecipient*/ ctx[5]),
68953						listen(input1, "input", /*input1_input_handler*/ ctx[9]),
68954						listen(input1, "input", /*updateGiftRecipient*/ ctx[5])
68955					];
68956
68957					mounted = true;
68958				}
68959			},
68960			p(ctx, [dirty]) {
68961				if (dirty & /*config*/ 1 && t0_value !== (t0_value = /*config*/ ctx[0].firstNameLabel + "")) set_data(t0, t0_value);
68962
68963				if (dirty & /*config*/ 1 && input0_placeholder_value !== (input0_placeholder_value = /*config*/ ctx[0].firstNamePlaceholder)) {
68964					attr(input0, "placeholder", input0_placeholder_value);
68965				}
68966
68967				if (dirty & /*firstName*/ 2 && input0.value !== /*firstName*/ ctx[1]) {
68968					set_input_value(input0, /*firstName*/ ctx[1]);
68969				}
68970
68971				if (dirty & /*firstNameError*/ 8) {
68972					toggle_class(input0, "error", !!/*firstNameError*/ ctx[3]);
68973				}
68974
68975				if (/*firstNameError*/ ctx[3]) {
68976					if (if_block0) {
68977						if_block0.p(ctx, dirty);
68978					} else {
68979						if_block0 = create_if_block_1$b(ctx);
68980						if_block0.c();
68981						if_block0.m(div0, null);
68982					}
68983				} else if (if_block0) {
68984					if_block0.d(1);
68985					if_block0 = null;
68986				}
68987
68988				if (dirty & /*config*/ 1 && t4_value !== (t4_value = /*config*/ ctx[0].lastNameLabel + "")) set_data(t4, t4_value);
68989
68990				if (dirty & /*config*/ 1 && input1_placeholder_value !== (input1_placeholder_value = /*config*/ ctx[0].lastNamePlaceholder)) {
68991					attr(input1, "placeholder", input1_placeholder_value);
68992				}
68993
68994				if (dirty & /*lastName*/ 4 && input1.value !== /*lastName*/ ctx[2]) {
68995					set_input_value(input1, /*lastName*/ ctx[2]);
68996				}
68997
68998				if (dirty & /*lastNameError*/ 16) {
68999					toggle_class(input1, "error", !!/*lastNameError*/ ctx[4]);
69000				}
69001
69002				if (/*lastNameError*/ ctx[4]) {
69003					if (if_block1) {
69004						if_block1.p(ctx, dirty);
69005					} else {
69006						if_block1 = create_if_block$e(ctx);
69007						if_block1.c();
69008						if_block1.m(div1, null);
69009					}
69010				} else if (if_block1) {
69011					if_block1.d(1);
69012					if_block1 = null;
69013				}
69014			},
69015			i: noop,
69016			o: noop,
69017			d(detaching) {
69018				if (detaching) {
69019					detach(div2);
69020				}
69021
69022				if (if_block0) if_block0.d();
69023				if (if_block1) if_block1.d();
69024				mounted = false;
69025				run_all(dispose);
69026			}
69027		};
69028	}
69029
69030	function instance$i($$self, $$props, $$invalidate) {
69031		let { formState } = $$props;
69032		let { formActions } = $$props;
69033		let { config } = $$props;
69034		const dispatch = createEventDispatcher();
69035		let firstName = formState.giftRecipient?.firstName || '';
69036		let lastName = formState.giftRecipient?.lastName || '';
69037		let firstNameError = '';
69038		let lastNameError = '';
69039
69040		// Update form state when input changes
69041		const updateGiftRecipient = () => {
69042			const updatedGiftRecipient = {
69043				...formState.giftRecipient || {},
69044				firstName,
69045				lastName
69046			};
69047
69048			formActions.updateFormState({ giftRecipient: updatedGiftRecipient });
69049			validateForm();
69050		};
69051
69052		const validateForm = () => {
69053			const hasValidFirstName = !!firstName.trim();
69054			const hasValidLastName = !!lastName.trim();
69055
69056			if (!hasValidFirstName) {
69057				$$invalidate(3, firstNameError = 'First name is required');
69058			} else {
69059				$$invalidate(3, firstNameError = '');
69060			}
69061
69062			if (!hasValidLastName) {
69063				$$invalidate(4, lastNameError = 'Last name is required');
69064			} else {
69065				$$invalidate(4, lastNameError = '');
69066			}
69067
69068			// Dispatch event for form validity
69069			dispatch('validity', {
69070				isValid: hasValidFirstName && hasValidLastName
69071			});
69072		};
69073
69074		function input0_input_handler() {
69075			firstName = this.value;
69076			$$invalidate(1, firstName);
69077		}
69078
69079		function input1_input_handler() {
69080			lastName = this.value;
69081			$$invalidate(2, lastName);
69082		}
69083
69084		$$self.$$set = $$props => {
69085			if ('formState' in $$props) $$invalidate(6, formState = $$props.formState);
69086			if ('formActions' in $$props) $$invalidate(7, formActions = $$props.formActions);
69087			if ('config' in $$props) $$invalidate(0, config = $$props.config);
69088		};
69089
69090		return [
69091			config,
69092			firstName,
69093			lastName,
69094			firstNameError,
69095			lastNameError,
69096			updateGiftRecipient,
69097			formState,
69098			formActions,
69099			input0_input_handler,
69100			input1_input_handler
69101		];
69102	}
69103
69104	class RecipientName extends SvelteComponent {
69105		constructor(options) {
69106			super();
69107			init(this, options, instance$i, create_fragment$i, safe_not_equal, { formState: 6, formActions: 7, config: 0 });
69108		}
69109	}
69110
69111	const recipientNameFactory = {
69112	    matches: (sectionElement) => sectionElement.type === elementTypes.RECIPIENT_NAME,
69113	    create: (form, formState, formActions, elementConfig) => {
69114	        // Resolve all labels through language pack service
69115	        const resolvedConfig = {
69116	            firstNameLabel: resolveLanguagePackKeyTyped(form, 'forms.gift.recipient-first-name', elementConfig.firstNameLabel),
69117	            lastNameLabel: resolveLanguagePackKeyTyped(form, 'forms.gift.recipient-last-name', elementConfig.lastNameLabel),
69118	            firstNamePlaceholder: resolveLanguagePackKeyTyped(form, 'forms.gift.first-name-placeholder', elementConfig.firstNamePlaceholder),
69119	            lastNamePlaceholder: resolveLanguagePackKeyTyped(form, 'forms.gift.last-name-placeholder', elementConfig.lastNamePlaceholder),
69120	        };
69121	        // Determine if the input is valid
69122	        const giftRecipient = (formState.giftRecipient || {});
69123	        const hasValidFirstName = !!giftRecipient.firstName?.trim();
69124	        const hasValidLastName = !!giftRecipient.lastName?.trim();
69125	        const isValid = hasValidFirstName && hasValidLastName;
69126	        return {
69127	            component: RecipientName,
69128	            props: {
69129	                config: resolvedConfig,
69130	                form,
69131	                formState,
69132	                formActions,
69133	            },
69134	            isValid
69135	        };
69136	    }
69137	};
69138
69139	/* src/components/elements/recipientEmail/RecipientEmail.svelte generated by Svelte v4.2.12 */
69140
69141	function create_if_block$d(ctx) {
69142		let div;
69143		let t;
69144
69145		return {
69146			c() {
69147				div = element("div");
69148				t = text(/*emailError*/ ctx[2]);
69149				attr(div, "class", "error-text svelte-1odylgp");
69150			},
69151			m(target, anchor) {
69152				insert(target, div, anchor);
69153				append(div, t);
69154			},
69155			p(ctx, dirty) {
69156				if (dirty & /*emailError*/ 4) set_data(t, /*emailError*/ ctx[2]);
69157			},
69158			d(detaching) {
69159				if (detaching) {
69160					detach(div);
69161				}
69162			}
69163		};
69164	}
69165
69166	function create_fragment$h(ctx) {
69167		let div1;
69168		let div0;
69169		let label;
69170		let t0_value = /*config*/ ctx[0].emailLabel + "";
69171		let t0;
69172		let t1;
69173		let input;
69174		let input_placeholder_value;
69175		let t2;
69176		let mounted;
69177		let dispose;
69178		let if_block = /*emailError*/ ctx[2] && create_if_block$d(ctx);
69179
69180		return {
69181			c() {
69182				div1 = element("div");
69183				div0 = element("div");
69184				label = element("label");
69185				t0 = text(t0_value);
69186				t1 = space();
69187				input = element("input");
69188				t2 = space();
69189				if (if_block) if_block.c();
69190				attr(label, "for", "recipientEmail");
69191				attr(label, "class", "svelte-1odylgp");
69192				attr(input, "id", "recipientEmail");
69193				attr(input, "type", "email");
69194				input.required = true;
69195				attr(input, "placeholder", input_placeholder_value = /*config*/ ctx[0].emailPlaceholder);
69196				attr(input, "class", "svelte-1odylgp");
69197				toggle_class(input, "error", !!/*emailError*/ ctx[2]);
69198				attr(div0, "class", "field svelte-1odylgp");
69199				attr(div1, "class", "recipient-email-section svelte-1odylgp");
69200			},
69201			m(target, anchor) {
69202				insert(target, div1, anchor);
69203				append(div1, div0);
69204				append(div0, label);
69205				append(label, t0);
69206				append(div0, t1);
69207				append(div0, input);
69208				set_input_value(input, /*recipientEmail*/ ctx[1]);
69209				append(div0, t2);
69210				if (if_block) if_block.m(div0, null);
69211
69212				if (!mounted) {
69213					dispose = [
69214						listen(input, "input", /*input_input_handler*/ ctx[7]),
69215						listen(input, "input", /*updateGiftRecipient*/ ctx[3])
69216					];
69217
69218					mounted = true;
69219				}
69220			},
69221			p(ctx, [dirty]) {
69222				if (dirty & /*config*/ 1 && t0_value !== (t0_value = /*config*/ ctx[0].emailLabel + "")) set_data(t0, t0_value);
69223
69224				if (dirty & /*config*/ 1 && input_placeholder_value !== (input_placeholder_value = /*config*/ ctx[0].emailPlaceholder)) {
69225					attr(input, "placeholder", input_placeholder_value);
69226				}
69227
69228				if (dirty & /*recipientEmail*/ 2 && input.value !== /*recipientEmail*/ ctx[1]) {
69229					set_input_value(input, /*recipientEmail*/ ctx[1]);
69230				}
69231
69232				if (dirty & /*emailError*/ 4) {
69233					toggle_class(input, "error", !!/*emailError*/ ctx[2]);
69234				}
69235
69236				if (/*emailError*/ ctx[2]) {
69237					if (if_block) {
69238						if_block.p(ctx, dirty);
69239					} else {
69240						if_block = create_if_block$d(ctx);
69241						if_block.c();
69242						if_block.m(div0, null);
69243					}
69244				} else if (if_block) {
69245					if_block.d(1);
69246					if_block = null;
69247				}
69248			},
69249			i: noop,
69250			o: noop,
69251			d(detaching) {
69252				if (detaching) {
69253					detach(div1);
69254				}
69255
69256				if (if_block) if_block.d();
69257				mounted = false;
69258				run_all(dispose);
69259			}
69260		};
69261	}
69262
69263	function instance$h($$self, $$props, $$invalidate) {
69264		let { formState } = $$props;
69265		let { formActions } = $$props;
69266		let { config } = $$props;
69267		let { form } = $$props;
69268		const dispatch = createEventDispatcher();
69269		let recipientEmail = formState.giftRecipient?.email || '';
69270		let emailError = '';
69271
69272		// Update form state when input changes
69273		const updateGiftRecipient = () => {
69274			const updatedGiftRecipient = {
69275				...formState.giftRecipient || {},
69276				email: recipientEmail
69277			};
69278
69279			formActions.updateFormState({ giftRecipient: updatedGiftRecipient });
69280			validateForm();
69281		};
69282
69283		const validateForm = () => {
69284			const hasValidEmail = isValidEmail(recipientEmail);
69285
69286			if (recipientEmail && !hasValidEmail) {
69287				$$invalidate(2, emailError = resolveLanguagePackKeyTyped(form, 'forms.errors.email-invalid', 'Please enter a valid email address'));
69288			} else if (!recipientEmail) {
69289				$$invalidate(2, emailError = 'Recipient email is required');
69290			} else {
69291				$$invalidate(2, emailError = '');
69292			}
69293
69294			// Dispatch event for form validity
69295			dispatch('validity', { isValid: hasValidEmail });
69296		};
69297
69298		function input_input_handler() {
69299			recipientEmail = this.value;
69300			$$invalidate(1, recipientEmail);
69301		}
69302
69303		$$self.$$set = $$props => {
69304			if ('formState' in $$props) $$invalidate(4, formState = $$props.formState);
69305			if ('formActions' in $$props) $$invalidate(5, formActions = $$props.formActions);
69306			if ('config' in $$props) $$invalidate(0, config = $$props.config);
69307			if ('form' in $$props) $$invalidate(6, form = $$props.form);
69308		};
69309
69310		return [
69311			config,
69312			recipientEmail,
69313			emailError,
69314			updateGiftRecipient,
69315			formState,
69316			formActions,
69317			form,
69318			input_input_handler
69319		];
69320	}
69321
69322	class RecipientEmail extends SvelteComponent {
69323		constructor(options) {
69324			super();
69325
69326			init(this, options, instance$h, create_fragment$h, safe_not_equal, {
69327				formState: 4,
69328				formActions: 5,
69329				config: 0,
69330				form: 6
69331			});
69332		}
69333	}
69334
69335	const recipientEmailFactory = {
69336	    matches: (sectionElement) => sectionElement.type === elementTypes.RECIPIENT_EMAIL,
69337	    create: (form, formState, formActions, elementConfig) => {
69338	        // Resolve all labels through language pack service
69339	        const resolvedConfig = {
69340	            emailLabel: resolveLanguagePackKeyTyped(form, 'forms.gift.recipient-email', elementConfig.emailLabel),
69341	            emailPlaceholder: resolveLanguagePackKeyTyped(form, 'forms.gift.email-placeholder', elementConfig.emailPlaceholder),
69342	        };
69343	        // Determine if the input is valid
69344	        const giftRecipient = (formState.giftRecipient || {});
69345	        const hasValidEmail = isValidEmail(giftRecipient.email);
69346	        const isValid = hasValidEmail;
69347	        return {
69348	            component: RecipientEmail,
69349	            props: {
69350	                config: resolvedConfig,
69351	                form,
69352	                formState,
69353	                formActions,
69354	            },
69355	            isValid
69356	        };
69357	    }
69358	};
69359
69360	const countries = {
69361	    AF: "Afghanistan",
69362	    AL: "Albania",
69363	    DZ: "Algeria",
69364	    AX: "Åland Islands",
69365	    AS: "American Samoa",
69366	    AD: "Andorra",
69367	    AO: "Angola",
69368	    AI: "Anguilla",
69369	    AQ: "Antarctica",
69370	    AG: "Antigua and Barbuda",
69371	    AR: "Argentina",
69372	    AM: "Armenia",
69373	    AW: "Aruba",
69374	    AU: "Australia",
69375	    AT: "Austria",
69376	    AZ: "Azerbaijan",
69377	    BS: "Bahamas (the)",
69378	    BH: "Bahrain",
69379	    BD: "Bangladesh",
69380	    BB: "Barbados",
69381	    BY: "Belarus",
69382	    BE: "Belgium",
69383	    BZ: "Belize",
69384	    BJ: "Benin",
69385	    BM: "Bermuda",
69386	    BT: "Bhutan",
69387	    BO: "Bolivia (Plurinational State of)",
69388	    BQ: "Bonaire, Sint Eustatius and Saba",
69389	    BA: "Bosnia and Herzegovina",
69390	    BW: "Botswana",
69391	    BV: "Bouvet Island",
69392	    BR: "Brazil",
69393	    IO: "British Indian Ocean Territory (the)",
69394	    BN: "Brunei Darussalam",
69395	    BG: "Bulgaria",
69396	    BF: "Burkina Faso",
69397	    BI: "Burundi",
69398	    CV: "Cabo Verde",
69399	    KH: "Cambodia",
69400	    CM: "Cameroon",
69401	    CA: "Canada",
69402	    KY: "Cayman Islands (the)",
69403	    CF: "Central African Republic (the)",
69404	    TD: "Chad",
69405	    CL: "Chile",
69406	    CN: "China",
69407	    CX: "Christmas Island",
69408	    CC: "Cocos (Keeling) Islands (the)",
69409	    CO: "Colombia",
69410	    KM: "Comoros (the)",
69411	    CD: "Congo (the Democratic Republic of the)",
69412	    CG: "Congo (the)",
69413	    CK: "Cook Islands (the)",
69414	    CR: "Costa Rica",
69415	    CI: "Côte d'Ivoire",
69416	    HR: "Croatia",
69417	    CU: "Cuba",
69418	    CW: "Curaçao",
69419	    CY: "Cyprus",
69420	    CZ: "Czechia",
69421	    DK: "Denmark",
69422	    DJ: "Djibouti",
69423	    DM: "Dominica",
69424	    DO: "Dominican Republic (the)",
69425	    EC: "Ecuador",
69426	    EG: "Egypt",
69427	    SV: "El Salvador",
69428	    GQ: "Equatorial Guinea",
69429	    ER: "Eritrea",
69430	    EE: "Estonia",
69431	    SZ: "Eswatini",
69432	    ET: "Ethiopia",
69433	    FK: "Falkland Islands (the) [Malvinas]",
69434	    FO: "Faroe Islands (the)",
69435	    FJ: "Fiji",
69436	    FI: "Finland",
69437	    FR: "France",
69438	    GF: "French Guiana",
69439	    PF: "French Polynesia",
69440	    TF: "French Southern Territories (the)",
69441	    GA: "Gabon",
69442	    GM: "Gambia (the)",
69443	    GE: "Georgia",
69444	    DE: "Germany",
69445	    GH: "Ghana",
69446	    GI: "Gibraltar",
69447	    GR: "Greece",
69448	    GL: "Greenland",
69449	    GD: "Grenada",
69450	    GP: "Guadeloupe",
69451	    GU: "Guam",
69452	    GT: "Guatemala",
69453	    GG: "Guernsey",
69454	    GN: "Guinea",
69455	    GW: "Guinea-Bissau",
69456	    GY: "Guyana",
69457	    HT: "Haiti",
69458	    HM: "Heard Island and McDonald Islands",
69459	    VA: "Holy See (the)",
69460	    HN: "Honduras",
69461	    HK: "Hong Kong",
69462	    HU: "Hungary",
69463	    IS: "Iceland",
69464	    IN: "India",
69465	    ID: "Indonesia",
69466	    IR: "Iran (Islamic Republic of)",
69467	    IQ: "Iraq",
69468	    IE: "Ireland",
69469	    IM: "Isle of Man",
69470	    IL: "Israel",
69471	    IT: "Italy",
69472	    JM: "Jamaica",
69473	    JP: "Japan",
69474	    JE: "Jersey",
69475	    JO: "Jordan",
69476	    KZ: "Kazakhstan",
69477	    KE: "Kenya",
69478	    KI: "Kiribati",
69479	    KP: "Korea (the Democratic People's Republic of)",
69480	    KR: "Korea (the Republic of)",
69481	    KW: "Kuwait",
69482	    KG: "Kyrgyzstan",
69483	    LA: "Lao People's Democratic Republic (the)",
69484	    LV: "Latvia",
69485	    LB: "Lebanon",
69486	    LS: "Lesotho",
69487	    LR: "Liberia",
69488	    LY: "Libya",
69489	    LI: "Liechtenstein",
69490	    LT: "Lithuania",
69491	    LU: "Luxembourg",
69492	    MO: "Macao",
69493	    MG: "Madagascar",
69494	    MW: "Malawi",
69495	    MY: "Malaysia",
69496	    MV: "Maldives",
69497	    ML: "Mali",
69498	    MT: "Malta",
69499	    MH: "Marshall Islands (the)",
69500	    MQ: "Martinique",
69501	    MR: "Mauritania",
69502	    MU: "Mauritius",
69503	    YT: "Mayotte",
69504	    MX: "Mexico",
69505	    FM: "Micronesia (Federated States of)",
69506	    MD: "Moldova (the Republic of)",
69507	    MC: "Monaco",
69508	    MN: "Mongolia",
69509	    ME: "Montenegro",
69510	    MS: "Montserrat",
69511	    MA: "Morocco",
69512	    MZ: "Mozambique",
69513	    MM: "Myanmar",
69514	    NA: "Namibia",
69515	    NR: "Nauru",
69516	    NP: "Nepal",
69517	    NL: "Netherlands (the)",
69518	    NC: "New Caledonia",
69519	    NZ: "New Zealand",
69520	    NI: "Nicaragua",
69521	    NE: "Niger (the)",
69522	    NG: "Nigeria",
69523	    NU: "Niue",
69524	    NF: "Norfolk Island",
69525	    MK: "North Macedonia",
69526	    MP: "Northern Mariana Islands (the)",
69527	    NO: "Norway",
69528	    OM: "Oman",
69529	    PK: "Pakistan",
69530	    PW: "Palau",
69531	    PS: "Palestine, State of",
69532	    PA: "Panama",
69533	    PG: "Papua New Guinea",
69534	    PY: "Paraguay",
69535	    PE: "Peru",
69536	    PH: "Philippines (the)",
69537	    PN: "Pitcairn",
69538	    PL: "Poland",
69539	    PT: "Portugal",
69540	    PR: "Puerto Rico",
69541	    QA: "Qatar",
69542	    RE: "Réunion",
69543	    RO: "Romania",
69544	    RU: "Russian Federation (the)",
69545	    RW: "Rwanda",
69546	    BL: "Saint Barthélemy",
69547	    SH: "Saint Helena, Ascension and Tristan da Cunha",
69548	    KN: "Saint Kitts and Nevis",
69549	    LC: "Saint Lucia",
69550	    MF: "Saint Martin (French part)",
69551	    PM: "Saint Pierre and Miquelon",
69552	    VC: "Saint Vincent and the Grenadines",
69553	    WS: "Samoa",
69554	    SM: "San Marino",
69555	    ST: "Sao Tome and Principe",
69556	    SA: "Saudi Arabia",
69557	    SN: "Senegal",
69558	    RS: "Serbia",
69559	    SC: "Seychelles",
69560	    SL: "Sierra Leone",
69561	    SG: "Singapore",
69562	    SX: "Sint Maarten (Dutch part)",
69563	    SK: "Slovakia",
69564	    SI: "Slovenia",
69565	    SB: "Solomon Islands",
69566	    SO: "Somalia",
69567	    ZA: "South Africa",
69568	    GS: "South Georgia and the South Sandwich Islands",
69569	    SS: "South Sudan",
69570	    ES: "Spain",
69571	    LK: "Sri Lanka",
69572	    SD: "Sudan (the)",
69573	    SR: "Suriname",
69574	    SJ: "Svalbard and Jan Mayen",
69575	    SE: "Sweden",
69576	    CH: "Switzerland",
69577	    SY: "Syrian Arab Republic",
69578	    TW: "Taiwan (Province of China)",
69579	    TJ: "Tajikistan",
69580	    TZ: "Tanzania, United Republic of",
69581	    TH: "Thailand",
69582	    TL: "Timor-Leste",
69583	    TG: "Togo",
69584	    TK: "Tokelau",
69585	    TO: "Tonga",
69586	    TT: "Trinidad and Tobago",
69587	    TN: "Tunisia",
69588	    TR: "Turkey",
69589	    TM: "Turkmenistan",
69590	    TC: "Turks and Caicos Islands (the)",
69591	    TV: "Tuvalu",
69592	    UG: "Uganda",
69593	    UA: "Ukraine",
69594	    AE: "United Arab Emirates (the)",
69595	    GB: "United Kingdom of Great Britain and Northern Ireland (the)",
69596	    US: "United States of America (the)",
69597	    UM: "United States Minor Outlying Islands (the)",
69598	    UY: "Uruguay",
69599	    UZ: "Uzbekistan",
69600	    VU: "Vanuatu",
69601	    VE: "Venezuela (Bolivarian Republic of)",
69602	    VN: "Viet Nam",
69603	    VG: "Virgin Islands (British)",
69604	    VI: "Virgin Islands (U.S.)",
69605	    WF: "Wallis and Futuna",
69606	    EH: "Western Sahara",
69607	    YE: "Yemen",
69608	    ZM: "Zambia",
69609	    ZW: "Zimbabwe",
69610	};
69611	const statesForUS = {
69612	    AK: "Alaska",
69613	    AL: "Alabama",
69614	    AR: "Arkansas",
69615	    AZ: "Arizona",
69616	    CA: "California",
69617	    CO: "Colorado",
69618	    CT: "Connecticut",
69619	    DC: "District of Columbia",
69620	    DE: "Delaware",
69621	    FL: "Florida",
69622	    GA: "Georgia",
69623	    GU: "Guam",
69624	    HI: "Hawaii",
69625	    IA: "Iowa",
69626	    ID: "Idaho",
69627	    IL: "Illinois",
69628	    IN: "Indiana",
69629	    KS: "Kansas",
69630	    KY: "Kentucky",
69631	    LA: "Louisiana",
69632	    MA: "Massachusetts",
69633	    MD: "Maryland",
69634	    ME: "Maine",
69635	    MI: "Michigan",
69636	    MN: "Minnesota",
69637	    MO: "Missouri",
69638	    MS: "Mississippi",
69639	    MT: "Montana",
69640	    NC: "North Carolina",
69641	    ND: "North Dakota",
69642	    NE: "Nebraska",
69643	    NH: "New Hampshire",
69644	    NJ: "New Jersey",
69645	    NM: "New Mexico",
69646	    NV: "Nevada",
69647	    NY: "New York",
69648	    OH: "Ohio",
69649	    OK: "Oklahoma",
69650	    OR: "Oregon",
69651	    PA: "Pennsylvania",
69652	    PR: "Puerto Rico",
69653	    RI: "Rhode Island",
69654	    SC: "South Carolina",
69655	    SD: "South Dakota",
69656	    TN: "Tennessee",
69657	    TX: "Texas",
69658	    UT: "Utah",
69659	    VA: "Virginia",
69660	    VI: "Virgin Islands",
69661	    VT: "Vermont",
69662	    WA: "Washington",
69663	    WI: "Wisconsin",
69664	    WV: "West Virginia",
69665	    WY: "Wyoming"
69666	};
69667	const provincesForCanada = {
69668	    AB: "Alberta",
69669	    BC: "British Columbia",
69670	    MB: "Manitoba",
69671	    NB: "New Brunswick",
69672	    NL: "Newfoundland and Labrador",
69673	    NT: "Northwest Territories",
69674	    NS: "Nova Scotia",
69675	    NU: "Nunavut",
69676	    ON: "Ontario",
69677	    PE: "Prince Edward Island",
69678	    QC: "Quebec",
69679	    SK: "Saskatchewan",
69680	    YT: "Yukon"
69681	};
69682
69683	/* src/components/elements/billingCountry/BillingCountry.svelte generated by Svelte v4.2.12 */
69684
69685	function get_each_context$6(ctx, list, i) {
69686		const child_ctx = ctx.slice();
69687		child_ctx[14] = list[i];
69688		return child_ctx;
69689	}
69690
69691	// (47:4) {#each countryOptions as option}
69692	function create_each_block$6(ctx) {
69693		let option_1;
69694		let t0_value = /*option*/ ctx[14].label + "";
69695		let t0;
69696		let t1;
69697		let option_1_value_value;
69698		let option_1_selected_value;
69699
69700		return {
69701			c() {
69702				option_1 = element("option");
69703				t0 = text(t0_value);
69704				t1 = space();
69705				option_1.__value = option_1_value_value = /*option*/ ctx[14].value;
69706				set_input_value(option_1, option_1.__value);
69707				option_1.selected = option_1_selected_value = /*value*/ ctx[1] === /*option*/ ctx[14].value;
69708			},
69709			m(target, anchor) {
69710				insert(target, option_1, anchor);
69711				append(option_1, t0);
69712				append(option_1, t1);
69713			},
69714			p(ctx, dirty) {
69715				if (dirty & /*countryOptions*/ 64 && t0_value !== (t0_value = /*option*/ ctx[14].label + "")) set_data(t0, t0_value);
69716
69717				if (dirty & /*countryOptions*/ 64 && option_1_value_value !== (option_1_value_value = /*option*/ ctx[14].value)) {
69718					option_1.__value = option_1_value_value;
69719					set_input_value(option_1, option_1.__value);
69720				}
69721
69722				if (dirty & /*value, countryOptions*/ 66 && option_1_selected_value !== (option_1_selected_value = /*value*/ ctx[1] === /*option*/ ctx[14].value)) {
69723					option_1.selected = option_1_selected_value;
69724				}
69725			},
69726			d(detaching) {
69727				if (detaching) {
69728					detach(option_1);
69729				}
69730			}
69731		};
69732	}
69733
69734	// (26:0) <Label   forInput={id}   label={label + (config.required ? "*" : "")}   {isPaymentForm} >
69735	function create_default_slot$3(ctx) {
69736		let select;
69737		let option_1;
69738		let t;
69739		let select_required_value;
69740		let select_value_value;
69741		let select_disabled_value;
69742		let mounted;
69743		let dispose;
69744		let each_value = ensure_array_like(/*countryOptions*/ ctx[6]);
69745		let each_blocks = [];
69746
69747		for (let i = 0; i < each_value.length; i += 1) {
69748			each_blocks[i] = create_each_block$6(get_each_context$6(ctx, each_value, i));
69749		}
69750
69751		return {
69752			c() {
69753				select = element("select");
69754				option_1 = element("option");
69755				t = text(/*placeholder*/ ctx[7]);
69756
69757				for (let i = 0; i < each_blocks.length; i += 1) {
69758					each_blocks[i].c();
69759				}
69760
69761				option_1.disabled = true;
69762				option_1.__value = "";
69763				set_input_value(option_1, option_1.__value);
69764				attr(select, "id", /*id*/ ctx[10]);
69765				attr(select, "name", "billing-country");
69766				attr(select, "class", "zephr-form-input zephr-form-input-select svelte-dxm1g8");
69767				select.required = select_required_value = /*config*/ ctx[0].required;
69768				select.disabled = select_disabled_value = /*config*/ ctx[0].disabled;
69769				toggle_class(select, "zephr-payment-form-input", /*isPaymentForm*/ ctx[3]);
69770				toggle_class(select, "zephr-payment-form-input-select", /*isPaymentForm*/ ctx[3]);
69771				toggle_class(select, "unselected", !/*value*/ ctx[1]);
69772				toggle_class(select, "error", /*hasError*/ ctx[9]);
69773			},
69774			m(target, anchor) {
69775				insert(target, select, anchor);
69776				append(select, option_1);
69777				append(option_1, t);
69778
69779				for (let i = 0; i < each_blocks.length; i += 1) {
69780					if (each_blocks[i]) {
69781						each_blocks[i].m(select, null);
69782					}
69783				}
69784
69785				select_option(select, /*value*/ ctx[1] || "");
69786
69787				if (!mounted) {
69788					dispose = [
69789						listen(select, "change", /*handleChange*/ ctx[11]),
69790						listen(select, "focus", function () {
69791							if (is_function(/*onFocus*/ ctx[4])) /*onFocus*/ ctx[4].apply(this, arguments);
69792						}),
69793						listen(select, "blur", function () {
69794							if (is_function(/*onBlur*/ ctx[5])) /*onBlur*/ ctx[5].apply(this, arguments);
69795						})
69796					];
69797
69798					mounted = true;
69799				}
69800			},
69801			p(new_ctx, dirty) {
69802				ctx = new_ctx;
69803				if (dirty & /*placeholder*/ 128) set_data(t, /*placeholder*/ ctx[7]);
69804
69805				if (dirty & /*countryOptions, value*/ 66) {
69806					each_value = ensure_array_like(/*countryOptions*/ ctx[6]);
69807					let i;
69808
69809					for (i = 0; i < each_value.length; i += 1) {
69810						const child_ctx = get_each_context$6(ctx, each_value, i);
69811
69812						if (each_blocks[i]) {
69813							each_blocks[i].p(child_ctx, dirty);
69814						} else {
69815							each_blocks[i] = create_each_block$6(child_ctx);
69816							each_blocks[i].c();
69817							each_blocks[i].m(select, null);
69818						}
69819					}
69820
69821					for (; i < each_blocks.length; i += 1) {
69822						each_blocks[i].d(1);
69823					}
69824
69825					each_blocks.length = each_value.length;
69826				}
69827
69828				if (dirty & /*config*/ 1 && select_required_value !== (select_required_value = /*config*/ ctx[0].required)) {
69829					select.required = select_required_value;
69830				}
69831
69832				if (dirty & /*value, countryOptions*/ 66 && select_value_value !== (select_value_value = /*value*/ ctx[1] || "")) {
69833					select_option(select, /*value*/ ctx[1] || "");
69834				}
69835
69836				if (dirty & /*config*/ 1 && select_disabled_value !== (select_disabled_value = /*config*/ ctx[0].disabled)) {
69837					select.disabled = select_disabled_value;
69838				}
69839
69840				if (dirty & /*isPaymentForm*/ 8) {
69841					toggle_class(select, "zephr-payment-form-input", /*isPaymentForm*/ ctx[3]);
69842				}
69843
69844				if (dirty & /*isPaymentForm*/ 8) {
69845					toggle_class(select, "zephr-payment-form-input-select", /*isPaymentForm*/ ctx[3]);
69846				}
69847
69848				if (dirty & /*value*/ 2) {
69849					toggle_class(select, "unselected", !/*value*/ ctx[1]);
69850				}
69851
69852				if (dirty & /*hasError*/ 512) {
69853					toggle_class(select, "error", /*hasError*/ ctx[9]);
69854				}
69855			},
69856			d(detaching) {
69857				if (detaching) {
69858					detach(select);
69859				}
69860
69861				destroy_each(each_blocks, detaching);
69862				mounted = false;
69863				run_all(dispose);
69864			}
69865		};
69866	}
69867
69868	// (55:0) {#if hasError}
69869	function create_if_block$c(ctx) {
69870		let div;
69871		let t;
69872
69873		return {
69874			c() {
69875				div = element("div");
69876				t = text(/*error*/ ctx[2]);
69877				attr(div, "class", "zephr-form-input-error-text svelte-dxm1g8");
69878				toggle_class(div, "zephr-payment-form-input-error-text", /*isPaymentForm*/ ctx[3]);
69879			},
69880			m(target, anchor) {
69881				insert(target, div, anchor);
69882				append(div, t);
69883			},
69884			p(ctx, dirty) {
69885				if (dirty & /*error*/ 4) set_data(t, /*error*/ ctx[2]);
69886
69887				if (dirty & /*isPaymentForm*/ 8) {
69888					toggle_class(div, "zephr-payment-form-input-error-text", /*isPaymentForm*/ ctx[3]);
69889				}
69890			},
69891			d(detaching) {
69892				if (detaching) {
69893					detach(div);
69894				}
69895			}
69896		};
69897	}
69898
69899	function create_fragment$g(ctx) {
69900		let label_1;
69901		let t;
69902		let if_block_anchor;
69903		let current;
69904
69905		label_1 = new Label({
69906				props: {
69907					forInput: /*id*/ ctx[10],
69908					label: /*label*/ ctx[8] + (/*config*/ ctx[0].required ? "*" : ""),
69909					isPaymentForm: /*isPaymentForm*/ ctx[3],
69910					$$slots: { default: [create_default_slot$3] },
69911					$$scope: { ctx }
69912				}
69913			});
69914
69915		let if_block = /*hasError*/ ctx[9] && create_if_block$c(ctx);
69916
69917		return {
69918			c() {
69919				create_component(label_1.$$.fragment);
69920				t = space();
69921				if (if_block) if_block.c();
69922				if_block_anchor = empty();
69923			},
69924			m(target, anchor) {
69925				mount_component(label_1, target, anchor);
69926				insert(target, t, anchor);
69927				if (if_block) if_block.m(target, anchor);
69928				insert(target, if_block_anchor, anchor);
69929				current = true;
69930			},
69931			p(ctx, [dirty]) {
69932				const label_1_changes = {};
69933				if (dirty & /*label, config*/ 257) label_1_changes.label = /*label*/ ctx[8] + (/*config*/ ctx[0].required ? "*" : "");
69934				if (dirty & /*isPaymentForm*/ 8) label_1_changes.isPaymentForm = /*isPaymentForm*/ ctx[3];
69935
69936				if (dirty & /*$$scope, config, value, isPaymentForm, hasError, onFocus, onBlur, countryOptions, placeholder*/ 131835) {
69937					label_1_changes.$$scope = { dirty, ctx };
69938				}
69939
69940				label_1.$set(label_1_changes);
69941
69942				if (/*hasError*/ ctx[9]) {
69943					if (if_block) {
69944						if_block.p(ctx, dirty);
69945					} else {
69946						if_block = create_if_block$c(ctx);
69947						if_block.c();
69948						if_block.m(if_block_anchor.parentNode, if_block_anchor);
69949					}
69950				} else if (if_block) {
69951					if_block.d(1);
69952					if_block = null;
69953				}
69954			},
69955			i(local) {
69956				if (current) return;
69957				transition_in(label_1.$$.fragment, local);
69958				current = true;
69959			},
69960			o(local) {
69961				transition_out(label_1.$$.fragment, local);
69962				current = false;
69963			},
69964			d(detaching) {
69965				if (detaching) {
69966					detach(t);
69967					detach(if_block_anchor);
69968				}
69969
69970				destroy_component(label_1, detaching);
69971				if (if_block) if_block.d(detaching);
69972			}
69973		};
69974	}
69975
69976	function instance$g($$self, $$props, $$invalidate) {
69977		let hasError;
69978		let label;
69979		let placeholder;
69980		let countryOptions;
69981		let { formKey } = $$props;
69982		let { config } = $$props;
69983		let { value } = $$props;
69984		let { error = "" } = $$props;
69985		let { isPaymentForm = false } = $$props;
69986		let { onChange } = $$props;
69987		let { onFocus } = $$props;
69988		let { onBlur } = $$props;
69989		const id = `zephr-form-billing-country-${formKey}`;
69990
69991		const handleChange = e => {
69992			const target = e.target;
69993			onChange(target.value);
69994		};
69995
69996		$$self.$$set = $$props => {
69997			if ('formKey' in $$props) $$invalidate(12, formKey = $$props.formKey);
69998			if ('config' in $$props) $$invalidate(0, config = $$props.config);
69999			if ('value' in $$props) $$invalidate(1, value = $$props.value);
70000			if ('error' in $$props) $$invalidate(2, error = $$props.error);
70001			if ('isPaymentForm' in $$props) $$invalidate(3, isPaymentForm = $$props.isPaymentForm);
70002			if ('onChange' in $$props) $$invalidate(13, onChange = $$props.onChange);
70003			if ('onFocus' in $$props) $$invalidate(4, onFocus = $$props.onFocus);
70004			if ('onBlur' in $$props) $$invalidate(5, onBlur = $$props.onBlur);
70005		};
70006
70007		$$self.$$.update = () => {
70008			if ($$self.$$.dirty & /*error*/ 4) {
70009				$$invalidate(9, hasError = !!error);
70010			}
70011
70012			if ($$self.$$.dirty & /*config*/ 1) {
70013				$$invalidate(8, label = config.label || "Country");
70014			}
70015
70016			if ($$self.$$.dirty & /*config*/ 1) {
70017				$$invalidate(7, placeholder = config.placeholder || "Select your country");
70018			}
70019		};
70020
70021		$$invalidate(6, countryOptions = Object.entries(countries).map(([code, name]) => ({ value: code, label: name })));
70022
70023		return [
70024			config,
70025			value,
70026			error,
70027			isPaymentForm,
70028			onFocus,
70029			onBlur,
70030			countryOptions,
70031			placeholder,
70032			label,
70033			hasError,
70034			id,
70035			handleChange,
70036			formKey,
70037			onChange
70038		];
70039	}
70040
70041	class BillingCountry extends SvelteComponent {
70042		constructor(options) {
70043			super();
70044
70045			init(this, options, instance$g, create_fragment$g, safe_not_equal, {
70046				formKey: 12,
70047				config: 0,
70048				value: 1,
70049				error: 2,
70050				isPaymentForm: 3,
70051				onChange: 13,
70052				onFocus: 4,
70053				onBlur: 5
70054			});
70055		}
70056	}
70057
70058	/* src/components/elements/billingState/BillingState.svelte generated by Svelte v4.2.12 */
70059
70060	function get_each_context$5(ctx, list, i) {
70061		const child_ctx = ctx.slice();
70062		child_ctx[16] = list[i];
70063		return child_ctx;
70064	}
70065
70066	// (44:0) {#if shouldShow}
70067	function create_if_block$b(ctx) {
70068		let label_1;
70069		let t;
70070		let if_block_anchor;
70071		let current;
70072
70073		label_1 = new Label({
70074				props: {
70075					forInput: /*id*/ ctx[11],
70076					label: /*label*/ ctx[9] + (/*config*/ ctx[0].required ? "*" : ""),
70077					isPaymentForm: /*isPaymentForm*/ ctx[3],
70078					$$slots: { default: [create_default_slot$2] },
70079					$$scope: { ctx }
70080				}
70081			});
70082
70083		let if_block = /*hasError*/ ctx[10] && create_if_block_1$a(ctx);
70084
70085		return {
70086			c() {
70087				create_component(label_1.$$.fragment);
70088				t = space();
70089				if (if_block) if_block.c();
70090				if_block_anchor = empty();
70091			},
70092			m(target, anchor) {
70093				mount_component(label_1, target, anchor);
70094				insert(target, t, anchor);
70095				if (if_block) if_block.m(target, anchor);
70096				insert(target, if_block_anchor, anchor);
70097				current = true;
70098			},
70099			p(ctx, dirty) {
70100				const label_1_changes = {};
70101				if (dirty & /*label, config*/ 513) label_1_changes.label = /*label*/ ctx[9] + (/*config*/ ctx[0].required ? "*" : "");
70102				if (dirty & /*isPaymentForm*/ 8) label_1_changes.isPaymentForm = /*isPaymentForm*/ ctx[3];
70103
70104				if (dirty & /*$$scope, config, value, isPaymentForm, hasError, onFocus, onBlur, stateOptions, placeholder*/ 525755) {
70105					label_1_changes.$$scope = { dirty, ctx };
70106				}
70107
70108				label_1.$set(label_1_changes);
70109
70110				if (/*hasError*/ ctx[10]) {
70111					if (if_block) {
70112						if_block.p(ctx, dirty);
70113					} else {
70114						if_block = create_if_block_1$a(ctx);
70115						if_block.c();
70116						if_block.m(if_block_anchor.parentNode, if_block_anchor);
70117					}
70118				} else if (if_block) {
70119					if_block.d(1);
70120					if_block = null;
70121				}
70122			},
70123			i(local) {
70124				if (current) return;
70125				transition_in(label_1.$$.fragment, local);
70126				current = true;
70127			},
70128			o(local) {
70129				transition_out(label_1.$$.fragment, local);
70130				current = false;
70131			},
70132			d(detaching) {
70133				if (detaching) {
70134					detach(t);
70135					detach(if_block_anchor);
70136				}
70137
70138				destroy_component(label_1, detaching);
70139				if (if_block) if_block.d(detaching);
70140			}
70141		};
70142	}
70143
70144	// (66:6) {#each stateOptions as option}
70145	function create_each_block$5(ctx) {
70146		let option_1;
70147		let t0_value = /*option*/ ctx[16].label + "";
70148		let t0;
70149		let t1;
70150		let option_1_value_value;
70151		let option_1_selected_value;
70152
70153		return {
70154			c() {
70155				option_1 = element("option");
70156				t0 = text(t0_value);
70157				t1 = space();
70158				option_1.__value = option_1_value_value = /*option*/ ctx[16].value;
70159				set_input_value(option_1, option_1.__value);
70160				option_1.selected = option_1_selected_value = /*value*/ ctx[1] === /*option*/ ctx[16].value;
70161			},
70162			m(target, anchor) {
70163				insert(target, option_1, anchor);
70164				append(option_1, t0);
70165				append(option_1, t1);
70166			},
70167			p(ctx, dirty) {
70168				if (dirty & /*stateOptions*/ 128 && t0_value !== (t0_value = /*option*/ ctx[16].label + "")) set_data(t0, t0_value);
70169
70170				if (dirty & /*stateOptions*/ 128 && option_1_value_value !== (option_1_value_value = /*option*/ ctx[16].value)) {
70171					option_1.__value = option_1_value_value;
70172					set_input_value(option_1, option_1.__value);
70173				}
70174
70175				if (dirty & /*value, stateOptions*/ 130 && option_1_selected_value !== (option_1_selected_value = /*value*/ ctx[1] === /*option*/ ctx[16].value)) {
70176					option_1.selected = option_1_selected_value;
70177				}
70178			},
70179			d(detaching) {
70180				if (detaching) {
70181					detach(option_1);
70182				}
70183			}
70184		};
70185	}
70186
70187	// (45:2) <Label     forInput={id}     label={label + (config.required ? "*" : "")}     {isPaymentForm}   >
70188	function create_default_slot$2(ctx) {
70189		let select;
70190		let option_1;
70191		let t;
70192		let select_required_value;
70193		let select_value_value;
70194		let select_disabled_value;
70195		let mounted;
70196		let dispose;
70197		let each_value = ensure_array_like(/*stateOptions*/ ctx[7]);
70198		let each_blocks = [];
70199
70200		for (let i = 0; i < each_value.length; i += 1) {
70201			each_blocks[i] = create_each_block$5(get_each_context$5(ctx, each_value, i));
70202		}
70203
70204		return {
70205			c() {
70206				select = element("select");
70207				option_1 = element("option");
70208				t = text(/*placeholder*/ ctx[8]);
70209
70210				for (let i = 0; i < each_blocks.length; i += 1) {
70211					each_blocks[i].c();
70212				}
70213
70214				option_1.disabled = true;
70215				option_1.__value = "";
70216				set_input_value(option_1, option_1.__value);
70217				attr(select, "id", /*id*/ ctx[11]);
70218				attr(select, "name", "billing-state");
70219				attr(select, "class", "zephr-form-input zephr-form-input-select svelte-dxm1g8");
70220				select.required = select_required_value = /*config*/ ctx[0].required;
70221				select.disabled = select_disabled_value = /*config*/ ctx[0].disabled;
70222				toggle_class(select, "zephr-payment-form-input", /*isPaymentForm*/ ctx[3]);
70223				toggle_class(select, "zephr-payment-form-input-select", /*isPaymentForm*/ ctx[3]);
70224				toggle_class(select, "unselected", !/*value*/ ctx[1]);
70225				toggle_class(select, "error", /*hasError*/ ctx[10]);
70226			},
70227			m(target, anchor) {
70228				insert(target, select, anchor);
70229				append(select, option_1);
70230				append(option_1, t);
70231
70232				for (let i = 0; i < each_blocks.length; i += 1) {
70233					if (each_blocks[i]) {
70234						each_blocks[i].m(select, null);
70235					}
70236				}
70237
70238				select_option(select, /*value*/ ctx[1] || "");
70239
70240				if (!mounted) {
70241					dispose = [
70242						listen(select, "change", /*handleChange*/ ctx[12]),
70243						listen(select, "focus", function () {
70244							if (is_function(/*onFocus*/ ctx[4])) /*onFocus*/ ctx[4].apply(this, arguments);
70245						}),
70246						listen(select, "blur", function () {
70247							if (is_function(/*onBlur*/ ctx[5])) /*onBlur*/ ctx[5].apply(this, arguments);
70248						})
70249					];
70250
70251					mounted = true;
70252				}
70253			},
70254			p(new_ctx, dirty) {
70255				ctx = new_ctx;
70256				if (dirty & /*placeholder*/ 256) set_data(t, /*placeholder*/ ctx[8]);
70257
70258				if (dirty & /*stateOptions, value*/ 130) {
70259					each_value = ensure_array_like(/*stateOptions*/ ctx[7]);
70260					let i;
70261
70262					for (i = 0; i < each_value.length; i += 1) {
70263						const child_ctx = get_each_context$5(ctx, each_value, i);
70264
70265						if (each_blocks[i]) {
70266							each_blocks[i].p(child_ctx, dirty);
70267						} else {
70268							each_blocks[i] = create_each_block$5(child_ctx);
70269							each_blocks[i].c();
70270							each_blocks[i].m(select, null);
70271						}
70272					}
70273
70274					for (; i < each_blocks.length; i += 1) {
70275						each_blocks[i].d(1);
70276					}
70277
70278					each_blocks.length = each_value.length;
70279				}
70280
70281				if (dirty & /*config*/ 1 && select_required_value !== (select_required_value = /*config*/ ctx[0].required)) {
70282					select.required = select_required_value;
70283				}
70284
70285				if (dirty & /*value, stateOptions*/ 130 && select_value_value !== (select_value_value = /*value*/ ctx[1] || "")) {
70286					select_option(select, /*value*/ ctx[1] || "");
70287				}
70288
70289				if (dirty & /*config*/ 1 && select_disabled_value !== (select_disabled_value = /*config*/ ctx[0].disabled)) {
70290					select.disabled = select_disabled_value;
70291				}
70292
70293				if (dirty & /*isPaymentForm*/ 8) {
70294					toggle_class(select, "zephr-payment-form-input", /*isPaymentForm*/ ctx[3]);
70295				}
70296
70297				if (dirty & /*isPaymentForm*/ 8) {
70298					toggle_class(select, "zephr-payment-form-input-select", /*isPaymentForm*/ ctx[3]);
70299				}
70300
70301				if (dirty & /*value*/ 2) {
70302					toggle_class(select, "unselected", !/*value*/ ctx[1]);
70303				}
70304
70305				if (dirty & /*hasError*/ 1024) {
70306					toggle_class(select, "error", /*hasError*/ ctx[10]);
70307				}
70308			},
70309			d(detaching) {
70310				if (detaching) {
70311					detach(select);
70312				}
70313
70314				destroy_each(each_blocks, detaching);
70315				mounted = false;
70316				run_all(dispose);
70317			}
70318		};
70319	}
70320
70321	// (74:2) {#if hasError}
70322	function create_if_block_1$a(ctx) {
70323		let div;
70324		let t;
70325
70326		return {
70327			c() {
70328				div = element("div");
70329				t = text(/*error*/ ctx[2]);
70330				attr(div, "class", "zephr-form-input-error-text svelte-dxm1g8");
70331				toggle_class(div, "zephr-payment-form-input-error-text", /*isPaymentForm*/ ctx[3]);
70332			},
70333			m(target, anchor) {
70334				insert(target, div, anchor);
70335				append(div, t);
70336			},
70337			p(ctx, dirty) {
70338				if (dirty & /*error*/ 4) set_data(t, /*error*/ ctx[2]);
70339
70340				if (dirty & /*isPaymentForm*/ 8) {
70341					toggle_class(div, "zephr-payment-form-input-error-text", /*isPaymentForm*/ ctx[3]);
70342				}
70343			},
70344			d(detaching) {
70345				if (detaching) {
70346					detach(div);
70347				}
70348			}
70349		};
70350	}
70351
70352	function create_fragment$f(ctx) {
70353		let if_block_anchor;
70354		let current;
70355		let if_block = /*shouldShow*/ ctx[6] && create_if_block$b(ctx);
70356
70357		return {
70358			c() {
70359				if (if_block) if_block.c();
70360				if_block_anchor = empty();
70361			},
70362			m(target, anchor) {
70363				if (if_block) if_block.m(target, anchor);
70364				insert(target, if_block_anchor, anchor);
70365				current = true;
70366			},
70367			p(ctx, [dirty]) {
70368				if (/*shouldShow*/ ctx[6]) {
70369					if (if_block) {
70370						if_block.p(ctx, dirty);
70371
70372						if (dirty & /*shouldShow*/ 64) {
70373							transition_in(if_block, 1);
70374						}
70375					} else {
70376						if_block = create_if_block$b(ctx);
70377						if_block.c();
70378						transition_in(if_block, 1);
70379						if_block.m(if_block_anchor.parentNode, if_block_anchor);
70380					}
70381				} else if (if_block) {
70382					group_outros();
70383
70384					transition_out(if_block, 1, 1, () => {
70385						if_block = null;
70386					});
70387
70388					check_outros();
70389				}
70390			},
70391			i(local) {
70392				if (current) return;
70393				transition_in(if_block);
70394				current = true;
70395			},
70396			o(local) {
70397				transition_out(if_block);
70398				current = false;
70399			},
70400			d(detaching) {
70401				if (detaching) {
70402					detach(if_block_anchor);
70403				}
70404
70405				if (if_block) if_block.d(detaching);
70406			}
70407		};
70408	}
70409
70410	function instance$f($$self, $$props, $$invalidate) {
70411		let hasError;
70412		let label;
70413		let placeholder;
70414		let shouldShow;
70415		let stateOptions;
70416		let { formKey } = $$props;
70417		let { config } = $$props;
70418		let { value } = $$props;
70419		let { error = "" } = $$props;
70420		let { isPaymentForm = false } = $$props;
70421		let { billingCountry } = $$props;
70422		let { onChange } = $$props;
70423		let { onFocus } = $$props;
70424		let { onBlur } = $$props;
70425		const id = `zephr-form-billing-state-${formKey}`;
70426
70427		const handleChange = e => {
70428			const target = e.target;
70429			onChange(target.value);
70430		};
70431
70432		$$self.$$set = $$props => {
70433			if ('formKey' in $$props) $$invalidate(13, formKey = $$props.formKey);
70434			if ('config' in $$props) $$invalidate(0, config = $$props.config);
70435			if ('value' in $$props) $$invalidate(1, value = $$props.value);
70436			if ('error' in $$props) $$invalidate(2, error = $$props.error);
70437			if ('isPaymentForm' in $$props) $$invalidate(3, isPaymentForm = $$props.isPaymentForm);
70438			if ('billingCountry' in $$props) $$invalidate(14, billingCountry = $$props.billingCountry);
70439			if ('onChange' in $$props) $$invalidate(15, onChange = $$props.onChange);
70440			if ('onFocus' in $$props) $$invalidate(4, onFocus = $$props.onFocus);
70441			if ('onBlur' in $$props) $$invalidate(5, onBlur = $$props.onBlur);
70442		};
70443
70444		$$self.$$.update = () => {
70445			if ($$self.$$.dirty & /*error*/ 4) {
70446				$$invalidate(10, hasError = !!error);
70447			}
70448
70449			if ($$self.$$.dirty & /*config*/ 1) {
70450				$$invalidate(9, label = config.label || "State/Province");
70451			}
70452
70453			if ($$self.$$.dirty & /*config*/ 1) {
70454				$$invalidate(8, placeholder = config.placeholder || "Select your state/province");
70455			}
70456
70457			if ($$self.$$.dirty & /*billingCountry*/ 16384) {
70458				// Only show when country is US or Canada
70459				$$invalidate(6, shouldShow = billingCountry === "US" || billingCountry === "CA");
70460			}
70461
70462			if ($$self.$$.dirty & /*billingCountry*/ 16384) {
70463				// Get appropriate state/province options based on country
70464				$$invalidate(7, stateOptions = (() => {
70465					if (billingCountry === "US") {
70466						return Object.entries(statesForUS).map(([code, name]) => ({ value: code, label: name }));
70467					} else if (billingCountry === "CA") {
70468						return Object.entries(provincesForCanada).map(([code, name]) => ({ value: code, label: name }));
70469					}
70470
70471					return [];
70472				})());
70473			}
70474
70475			if ($$self.$$.dirty & /*shouldShow, value, onChange*/ 32834) {
70476				// Clear value when country changes to non-US/CA
70477				if (!shouldShow && value) {
70478					onChange("");
70479				}
70480			}
70481		};
70482
70483		return [
70484			config,
70485			value,
70486			error,
70487			isPaymentForm,
70488			onFocus,
70489			onBlur,
70490			shouldShow,
70491			stateOptions,
70492			placeholder,
70493			label,
70494			hasError,
70495			id,
70496			handleChange,
70497			formKey,
70498			billingCountry,
70499			onChange
70500		];
70501	}
70502
70503	class BillingState extends SvelteComponent {
70504		constructor(options) {
70505			super();
70506
70507			init(this, options, instance$f, create_fragment$f, safe_not_equal, {
70508				formKey: 13,
70509				config: 0,
70510				value: 1,
70511				error: 2,
70512				isPaymentForm: 3,
70513				billingCountry: 14,
70514				onChange: 15,
70515				onFocus: 4,
70516				onBlur: 5
70517			});
70518		}
70519	}
70520
70521	/* src/components/elements/recipientAddress/RecipientAddress.svelte generated by Svelte v4.2.12 */
70522
70523	function create_if_block$a(ctx) {
70524		let div1;
70525		let label;
70526		let t0_value = /*config*/ ctx[0].label + "";
70527		let t0;
70528		let t1;
70529		let div0;
70530		let t2;
70531		let t3;
70532		let t4;
70533		let t5;
70534		let t6;
70535		let current;
70536		let if_block0 = /*showAddress*/ ctx[3] && create_if_block_6$3(ctx);
70537		let if_block1 = /*showCity*/ ctx[5] && create_if_block_5$3(ctx);
70538		let if_block2 = /*showCountry*/ ctx[7] && create_if_block_4$3(ctx);
70539		let if_block3 = /*showState*/ ctx[6] && create_if_block_3$4(ctx);
70540		let if_block4 = /*showPostalCode*/ ctx[4] && create_if_block_2$7(ctx);
70541		let if_block5 = /*addressError*/ ctx[1] && create_if_block_1$9(ctx);
70542
70543		return {
70544			c() {
70545				div1 = element("div");
70546				label = element("label");
70547				t0 = text(t0_value);
70548				t1 = space();
70549				div0 = element("div");
70550				if (if_block0) if_block0.c();
70551				t2 = space();
70552				if (if_block1) if_block1.c();
70553				t3 = space();
70554				if (if_block2) if_block2.c();
70555				t4 = space();
70556				if (if_block3) if_block3.c();
70557				t5 = space();
70558				if (if_block4) if_block4.c();
70559				t6 = space();
70560				if (if_block5) if_block5.c();
70561				attr(label, "class", "address-main-label svelte-1lcs5wj");
70562				attr(div0, "class", "address-fields svelte-1lcs5wj");
70563				attr(div1, "class", "recipient-address-section svelte-1lcs5wj");
70564			},
70565			m(target, anchor) {
70566				insert(target, div1, anchor);
70567				append(div1, label);
70568				append(label, t0);
70569				append(div1, t1);
70570				append(div1, div0);
70571				if (if_block0) if_block0.m(div0, null);
70572				append(div0, t2);
70573				if (if_block1) if_block1.m(div0, null);
70574				append(div0, t3);
70575				if (if_block2) if_block2.m(div0, null);
70576				append(div0, t4);
70577				if (if_block3) if_block3.m(div0, null);
70578				append(div0, t5);
70579				if (if_block4) if_block4.m(div0, null);
70580				append(div1, t6);
70581				if (if_block5) if_block5.m(div1, null);
70582				current = true;
70583			},
70584			p(ctx, dirty) {
70585				if ((!current || dirty & /*config*/ 1) && t0_value !== (t0_value = /*config*/ ctx[0].label + "")) set_data(t0, t0_value);
70586
70587				if (/*showAddress*/ ctx[3]) {
70588					if (if_block0) {
70589						if_block0.p(ctx, dirty);
70590					} else {
70591						if_block0 = create_if_block_6$3(ctx);
70592						if_block0.c();
70593						if_block0.m(div0, t2);
70594					}
70595				} else if (if_block0) {
70596					if_block0.d(1);
70597					if_block0 = null;
70598				}
70599
70600				if (/*showCity*/ ctx[5]) {
70601					if (if_block1) {
70602						if_block1.p(ctx, dirty);
70603					} else {
70604						if_block1 = create_if_block_5$3(ctx);
70605						if_block1.c();
70606						if_block1.m(div0, t3);
70607					}
70608				} else if (if_block1) {
70609					if_block1.d(1);
70610					if_block1 = null;
70611				}
70612
70613				if (/*showCountry*/ ctx[7]) {
70614					if (if_block2) {
70615						if_block2.p(ctx, dirty);
70616
70617						if (dirty & /*showCountry*/ 128) {
70618							transition_in(if_block2, 1);
70619						}
70620					} else {
70621						if_block2 = create_if_block_4$3(ctx);
70622						if_block2.c();
70623						transition_in(if_block2, 1);
70624						if_block2.m(div0, t4);
70625					}
70626				} else if (if_block2) {
70627					group_outros();
70628
70629					transition_out(if_block2, 1, 1, () => {
70630						if_block2 = null;
70631					});
70632
70633					check_outros();
70634				}
70635
70636				if (/*showState*/ ctx[6]) {
70637					if (if_block3) {
70638						if_block3.p(ctx, dirty);
70639
70640						if (dirty & /*showState*/ 64) {
70641							transition_in(if_block3, 1);
70642						}
70643					} else {
70644						if_block3 = create_if_block_3$4(ctx);
70645						if_block3.c();
70646						transition_in(if_block3, 1);
70647						if_block3.m(div0, t5);
70648					}
70649				} else if (if_block3) {
70650					group_outros();
70651
70652					transition_out(if_block3, 1, 1, () => {
70653						if_block3 = null;
70654					});
70655
70656					check_outros();
70657				}
70658
70659				if (/*showPostalCode*/ ctx[4]) {
70660					if (if_block4) {
70661						if_block4.p(ctx, dirty);
70662					} else {
70663						if_block4 = create_if_block_2$7(ctx);
70664						if_block4.c();
70665						if_block4.m(div0, null);
70666					}
70667				} else if (if_block4) {
70668					if_block4.d(1);
70669					if_block4 = null;
70670				}
70671
70672				if (/*addressError*/ ctx[1]) {
70673					if (if_block5) {
70674						if_block5.p(ctx, dirty);
70675					} else {
70676						if_block5 = create_if_block_1$9(ctx);
70677						if_block5.c();
70678						if_block5.m(div1, null);
70679					}
70680				} else if (if_block5) {
70681					if_block5.d(1);
70682					if_block5 = null;
70683				}
70684			},
70685			i(local) {
70686				if (current) return;
70687				transition_in(if_block2);
70688				transition_in(if_block3);
70689				current = true;
70690			},
70691			o(local) {
70692				transition_out(if_block2);
70693				transition_out(if_block3);
70694				current = false;
70695			},
70696			d(detaching) {
70697				if (detaching) {
70698					detach(div1);
70699				}
70700
70701				if (if_block0) if_block0.d();
70702				if (if_block1) if_block1.d();
70703				if (if_block2) if_block2.d();
70704				if (if_block3) if_block3.d();
70705				if (if_block4) if_block4.d();
70706				if (if_block5) if_block5.d();
70707			}
70708		};
70709	}
70710
70711	// (80:6) {#if showAddress}
70712	function create_if_block_6$3(ctx) {
70713		let div0;
70714		let label0;
70715		let t0_value = /*config*/ ctx[0].addressLine1Label + "";
70716		let t0;
70717		let t1;
70718		let input0;
70719		let input0_placeholder_value;
70720		let t2;
70721		let div1;
70722		let label1;
70723		let t3_value = /*config*/ ctx[0].addressLine2Label + "";
70724		let t3;
70725		let t4;
70726		let input1;
70727		let input1_placeholder_value;
70728		let mounted;
70729		let dispose;
70730
70731		return {
70732			c() {
70733				div0 = element("div");
70734				label0 = element("label");
70735				t0 = text(t0_value);
70736				t1 = space();
70737				input0 = element("input");
70738				t2 = space();
70739				div1 = element("div");
70740				label1 = element("label");
70741				t3 = text(t3_value);
70742				t4 = space();
70743				input1 = element("input");
70744				attr(label0, "for", "addressLine1");
70745				attr(label0, "class", "svelte-1lcs5wj");
70746				attr(input0, "id", "addressLine1");
70747				attr(input0, "type", "text");
70748				input0.required = /*showAddress*/ ctx[3];
70749				attr(input0, "placeholder", input0_placeholder_value = /*config*/ ctx[0].addressLine1Placeholder);
70750				attr(input0, "class", "svelte-1lcs5wj");
70751				attr(div0, "class", "field svelte-1lcs5wj");
70752				attr(label1, "for", "addressLine2");
70753				attr(label1, "class", "svelte-1lcs5wj");
70754				attr(input1, "id", "addressLine2");
70755				attr(input1, "type", "text");
70756				attr(input1, "placeholder", input1_placeholder_value = /*config*/ ctx[0].addressLine2Placeholder);
70757				attr(input1, "class", "svelte-1lcs5wj");
70758				attr(div1, "class", "field svelte-1lcs5wj");
70759			},
70760			m(target, anchor) {
70761				insert(target, div0, anchor);
70762				append(div0, label0);
70763				append(label0, t0);
70764				append(div0, t1);
70765				append(div0, input0);
70766				set_input_value(input0, /*recipientAddress*/ ctx[2].addressLine1);
70767				insert(target, t2, anchor);
70768				insert(target, div1, anchor);
70769				append(div1, label1);
70770				append(label1, t3);
70771				append(div1, t4);
70772				append(div1, input1);
70773				set_input_value(input1, /*recipientAddress*/ ctx[2].addressLine2);
70774
70775				if (!mounted) {
70776					dispose = [
70777						listen(input0, "input", /*input0_input_handler*/ ctx[13]),
70778						listen(input0, "input", /*updateGiftRecipient*/ ctx[9]),
70779						listen(input1, "input", /*input1_input_handler*/ ctx[14]),
70780						listen(input1, "input", /*updateGiftRecipient*/ ctx[9])
70781					];
70782
70783					mounted = true;
70784				}
70785			},
70786			p(ctx, dirty) {
70787				if (dirty & /*config*/ 1 && t0_value !== (t0_value = /*config*/ ctx[0].addressLine1Label + "")) set_data(t0, t0_value);
70788
70789				if (dirty & /*showAddress*/ 8) {
70790					input0.required = /*showAddress*/ ctx[3];
70791				}
70792
70793				if (dirty & /*config*/ 1 && input0_placeholder_value !== (input0_placeholder_value = /*config*/ ctx[0].addressLine1Placeholder)) {
70794					attr(input0, "placeholder", input0_placeholder_value);
70795				}
70796
70797				if (dirty & /*recipientAddress*/ 4 && input0.value !== /*recipientAddress*/ ctx[2].addressLine1) {
70798					set_input_value(input0, /*recipientAddress*/ ctx[2].addressLine1);
70799				}
70800
70801				if (dirty & /*config*/ 1 && t3_value !== (t3_value = /*config*/ ctx[0].addressLine2Label + "")) set_data(t3, t3_value);
70802
70803				if (dirty & /*config*/ 1 && input1_placeholder_value !== (input1_placeholder_value = /*config*/ ctx[0].addressLine2Placeholder)) {
70804					attr(input1, "placeholder", input1_placeholder_value);
70805				}
70806
70807				if (dirty & /*recipientAddress*/ 4 && input1.value !== /*recipientAddress*/ ctx[2].addressLine2) {
70808					set_input_value(input1, /*recipientAddress*/ ctx[2].addressLine2);
70809				}
70810			},
70811			d(detaching) {
70812				if (detaching) {
70813					detach(div0);
70814					detach(t2);
70815					detach(div1);
70816				}
70817
70818				mounted = false;
70819				run_all(dispose);
70820			}
70821		};
70822	}
70823
70824	// (105:6) {#if showCity}
70825	function create_if_block_5$3(ctx) {
70826		let div;
70827		let label;
70828		let t0_value = /*config*/ ctx[0].cityLabel + "";
70829		let t0;
70830		let t1;
70831		let input;
70832		let input_placeholder_value;
70833		let mounted;
70834		let dispose;
70835
70836		return {
70837			c() {
70838				div = element("div");
70839				label = element("label");
70840				t0 = text(t0_value);
70841				t1 = space();
70842				input = element("input");
70843				attr(label, "for", "city");
70844				attr(label, "class", "svelte-1lcs5wj");
70845				attr(input, "id", "city");
70846				attr(input, "type", "text");
70847				input.required = /*showCity*/ ctx[5];
70848				attr(input, "placeholder", input_placeholder_value = /*config*/ ctx[0].cityPlaceholder);
70849				attr(input, "class", "svelte-1lcs5wj");
70850				attr(div, "class", "field svelte-1lcs5wj");
70851			},
70852			m(target, anchor) {
70853				insert(target, div, anchor);
70854				append(div, label);
70855				append(label, t0);
70856				append(div, t1);
70857				append(div, input);
70858				set_input_value(input, /*recipientAddress*/ ctx[2].city);
70859
70860				if (!mounted) {
70861					dispose = [
70862						listen(input, "input", /*input_input_handler*/ ctx[15]),
70863						listen(input, "input", /*updateGiftRecipient*/ ctx[9])
70864					];
70865
70866					mounted = true;
70867				}
70868			},
70869			p(ctx, dirty) {
70870				if (dirty & /*config*/ 1 && t0_value !== (t0_value = /*config*/ ctx[0].cityLabel + "")) set_data(t0, t0_value);
70871
70872				if (dirty & /*showCity*/ 32) {
70873					input.required = /*showCity*/ ctx[5];
70874				}
70875
70876				if (dirty & /*config*/ 1 && input_placeholder_value !== (input_placeholder_value = /*config*/ ctx[0].cityPlaceholder)) {
70877					attr(input, "placeholder", input_placeholder_value);
70878				}
70879
70880				if (dirty & /*recipientAddress*/ 4 && input.value !== /*recipientAddress*/ ctx[2].city) {
70881					set_input_value(input, /*recipientAddress*/ ctx[2].city);
70882				}
70883			},
70884			d(detaching) {
70885				if (detaching) {
70886					detach(div);
70887				}
70888
70889				mounted = false;
70890				run_all(dispose);
70891			}
70892		};
70893	}
70894
70895	// (119:6) {#if showCountry}
70896	function create_if_block_4$3(ctx) {
70897		let div;
70898		let billingcountry;
70899		let current;
70900
70901		billingcountry = new BillingCountry({
70902				props: {
70903					formKey: "gift-recipient",
70904					config: {
70905						label: /*config*/ ctx[0].countryLabel,
70906						placeholder: /*config*/ ctx[0].countryPlaceholder,
70907						required: /*showCountry*/ ctx[7]
70908					},
70909					value: /*recipientAddress*/ ctx[2].country,
70910					error: "",
70911					isPaymentForm: false,
70912					onChange: /*func*/ ctx[16],
70913					onFocus: func_1,
70914					onBlur: func_2
70915				}
70916			});
70917
70918		return {
70919			c() {
70920				div = element("div");
70921				create_component(billingcountry.$$.fragment);
70922				attr(div, "class", "field svelte-1lcs5wj");
70923			},
70924			m(target, anchor) {
70925				insert(target, div, anchor);
70926				mount_component(billingcountry, div, null);
70927				current = true;
70928			},
70929			p(ctx, dirty) {
70930				const billingcountry_changes = {};
70931
70932				if (dirty & /*config, showCountry*/ 129) billingcountry_changes.config = {
70933					label: /*config*/ ctx[0].countryLabel,
70934					placeholder: /*config*/ ctx[0].countryPlaceholder,
70935					required: /*showCountry*/ ctx[7]
70936				};
70937
70938				if (dirty & /*recipientAddress*/ 4) billingcountry_changes.value = /*recipientAddress*/ ctx[2].country;
70939				if (dirty & /*recipientAddress*/ 4) billingcountry_changes.onChange = /*func*/ ctx[16];
70940				billingcountry.$set(billingcountry_changes);
70941			},
70942			i(local) {
70943				if (current) return;
70944				transition_in(billingcountry.$$.fragment, local);
70945				current = true;
70946			},
70947			o(local) {
70948				transition_out(billingcountry.$$.fragment, local);
70949				current = false;
70950			},
70951			d(detaching) {
70952				if (detaching) {
70953					detach(div);
70954				}
70955
70956				destroy_component(billingcountry);
70957			}
70958		};
70959	}
70960
70961	// (141:6) {#if showState}
70962	function create_if_block_3$4(ctx) {
70963		let div;
70964		let billingstate;
70965		let current;
70966
70967		billingstate = new BillingState({
70968				props: {
70969					formKey: "gift-recipient",
70970					config: {
70971						label: /*config*/ ctx[0].stateLabel,
70972						placeholder: /*config*/ ctx[0].statePlaceholder,
70973						required: /*showState*/ ctx[6] && (/*recipientAddress*/ ctx[2].country === 'US' || /*recipientAddress*/ ctx[2].country === 'CA')
70974					},
70975					value: /*recipientAddress*/ ctx[2].state,
70976					error: "",
70977					isPaymentForm: false,
70978					billingCountry: /*recipientAddress*/ ctx[2].country,
70979					onChange: /*func_3*/ ctx[17],
70980					onFocus: func_4,
70981					onBlur: func_5
70982				}
70983			});
70984
70985		return {
70986			c() {
70987				div = element("div");
70988				create_component(billingstate.$$.fragment);
70989				attr(div, "class", "field svelte-1lcs5wj");
70990			},
70991			m(target, anchor) {
70992				insert(target, div, anchor);
70993				mount_component(billingstate, div, null);
70994				current = true;
70995			},
70996			p(ctx, dirty) {
70997				const billingstate_changes = {};
70998
70999				if (dirty & /*config, showState, recipientAddress*/ 69) billingstate_changes.config = {
71000					label: /*config*/ ctx[0].stateLabel,
71001					placeholder: /*config*/ ctx[0].statePlaceholder,
71002					required: /*showState*/ ctx[6] && (/*recipientAddress*/ ctx[2].country === 'US' || /*recipientAddress*/ ctx[2].country === 'CA')
71003				};
71004
71005				if (dirty & /*recipientAddress*/ 4) billingstate_changes.value = /*recipientAddress*/ ctx[2].state;
71006				if (dirty & /*recipientAddress*/ 4) billingstate_changes.billingCountry = /*recipientAddress*/ ctx[2].country;
71007				if (dirty & /*recipientAddress*/ 4) billingstate_changes.onChange = /*func_3*/ ctx[17];
71008				billingstate.$set(billingstate_changes);
71009			},
71010			i(local) {
71011				if (current) return;
71012				transition_in(billingstate.$$.fragment, local);
71013				current = true;
71014			},
71015			o(local) {
71016				transition_out(billingstate.$$.fragment, local);
71017				current = false;
71018			},
71019			d(detaching) {
71020				if (detaching) {
71021					detach(div);
71022				}
71023
71024				destroy_component(billingstate);
71025			}
71026		};
71027	}
71028
71029	// (164:6) {#if showPostalCode}
71030	function create_if_block_2$7(ctx) {
71031		let div;
71032		let label;
71033		let t0_value = /*config*/ ctx[0].postalCodeLabel + "";
71034		let t0;
71035		let t1;
71036		let input;
71037		let input_placeholder_value;
71038		let mounted;
71039		let dispose;
71040
71041		return {
71042			c() {
71043				div = element("div");
71044				label = element("label");
71045				t0 = text(t0_value);
71046				t1 = space();
71047				input = element("input");
71048				attr(label, "for", "postalCode");
71049				attr(label, "class", "svelte-1lcs5wj");
71050				attr(input, "id", "postalCode");
71051				attr(input, "type", "text");
71052				input.required = /*showPostalCode*/ ctx[4];
71053				attr(input, "placeholder", input_placeholder_value = /*config*/ ctx[0].postalCodePlaceholder);
71054				attr(input, "class", "svelte-1lcs5wj");
71055				attr(div, "class", "field svelte-1lcs5wj");
71056			},
71057			m(target, anchor) {
71058				insert(target, div, anchor);
71059				append(div, label);
71060				append(label, t0);
71061				append(div, t1);
71062				append(div, input);
71063				set_input_value(input, /*recipientAddress*/ ctx[2].postalCode);
71064
71065				if (!mounted) {
71066					dispose = [
71067						listen(input, "input", /*input_input_handler_1*/ ctx[18]),
71068						listen(input, "input", /*updateGiftRecipient*/ ctx[9])
71069					];
71070
71071					mounted = true;
71072				}
71073			},
71074			p(ctx, dirty) {
71075				if (dirty & /*config*/ 1 && t0_value !== (t0_value = /*config*/ ctx[0].postalCodeLabel + "")) set_data(t0, t0_value);
71076
71077				if (dirty & /*showPostalCode*/ 16) {
71078					input.required = /*showPostalCode*/ ctx[4];
71079				}
71080
71081				if (dirty & /*config*/ 1 && input_placeholder_value !== (input_placeholder_value = /*config*/ ctx[0].postalCodePlaceholder)) {
71082					attr(input, "placeholder", input_placeholder_value);
71083				}
71084
71085				if (dirty & /*recipientAddress*/ 4 && input.value !== /*recipientAddress*/ ctx[2].postalCode) {
71086					set_input_value(input, /*recipientAddress*/ ctx[2].postalCode);
71087				}
71088			},
71089			d(detaching) {
71090				if (detaching) {
71091					detach(div);
71092				}
71093
71094				mounted = false;
71095				run_all(dispose);
71096			}
71097		};
71098	}
71099
71100	// (178:4) {#if addressError}
71101	function create_if_block_1$9(ctx) {
71102		let div;
71103		let t;
71104
71105		return {
71106			c() {
71107				div = element("div");
71108				t = text(/*addressError*/ ctx[1]);
71109				attr(div, "class", "error-text svelte-1lcs5wj");
71110			},
71111			m(target, anchor) {
71112				insert(target, div, anchor);
71113				append(div, t);
71114			},
71115			p(ctx, dirty) {
71116				if (dirty & /*addressError*/ 2) set_data(t, /*addressError*/ ctx[1]);
71117			},
71118			d(detaching) {
71119				if (detaching) {
71120					detach(div);
71121				}
71122			}
71123		};
71124	}
71125
71126	function create_fragment$e(ctx) {
71127		let if_block_anchor;
71128		let current;
71129		let if_block = /*showAnyAddress*/ ctx[8] && create_if_block$a(ctx);
71130
71131		return {
71132			c() {
71133				if (if_block) if_block.c();
71134				if_block_anchor = empty();
71135			},
71136			m(target, anchor) {
71137				if (if_block) if_block.m(target, anchor);
71138				insert(target, if_block_anchor, anchor);
71139				current = true;
71140			},
71141			p(ctx, [dirty]) {
71142				if (/*showAnyAddress*/ ctx[8]) {
71143					if (if_block) {
71144						if_block.p(ctx, dirty);
71145
71146						if (dirty & /*showAnyAddress*/ 256) {
71147							transition_in(if_block, 1);
71148						}
71149					} else {
71150						if_block = create_if_block$a(ctx);
71151						if_block.c();
71152						transition_in(if_block, 1);
71153						if_block.m(if_block_anchor.parentNode, if_block_anchor);
71154					}
71155				} else if (if_block) {
71156					group_outros();
71157
71158					transition_out(if_block, 1, 1, () => {
71159						if_block = null;
71160					});
71161
71162					check_outros();
71163				}
71164			},
71165			i(local) {
71166				if (current) return;
71167				transition_in(if_block);
71168				current = true;
71169			},
71170			o(local) {
71171				transition_out(if_block);
71172				current = false;
71173			},
71174			d(detaching) {
71175				if (detaching) {
71176					detach(if_block_anchor);
71177				}
71178
71179				if (if_block) if_block.d(detaching);
71180			}
71181		};
71182	}
71183
71184	const func_1 = () => {
71185		
71186	};
71187
71188	const func_2 = () => {
71189		
71190	};
71191
71192	const func_4 = () => {
71193		
71194	};
71195
71196	const func_5 = () => {
71197		
71198	};
71199
71200	function instance$e($$self, $$props, $$invalidate) {
71201		let showAddress;
71202		let showPostalCode;
71203		let showCountry;
71204		let showState;
71205		let showCity;
71206		let showAnyAddress;
71207		let { formState } = $$props;
71208		let { formActions } = $$props;
71209		let { config } = $$props;
71210		let { form } = $$props;
71211		const dispatch = createEventDispatcher();
71212		let addressError = '';
71213
71214		// Initialize recipient address fields
71215		let recipientAddress = {
71216			addressLine1: formState.giftRecipient?.recipientAddress?.addressLine1 || '',
71217			addressLine2: formState.giftRecipient?.recipientAddress?.addressLine2 || '',
71218			city: formState.giftRecipient?.recipientAddress?.city || '',
71219			state: formState.giftRecipient?.recipientAddress?.state || '',
71220			country: formState.giftRecipient?.recipientAddress?.country || '',
71221			postalCode: formState.giftRecipient?.recipientAddress?.postalCode || ''
71222		};
71223
71224		// Update form state when inputs change
71225		const updateGiftRecipient = () => {
71226			const updatedGiftRecipient = {
71227				...formState.giftRecipient || {},
71228				recipientAddress
71229			};
71230
71231			formActions.updateFormState({ giftRecipient: updatedGiftRecipient });
71232			validateForm();
71233		};
71234
71235		const validateForm = () => {
71236			let isValid = true;
71237			let errorMessage = '';
71238
71239			// Validate country if shown
71240			if (showCountry && !recipientAddress.country.trim()) {
71241				isValid = false;
71242				errorMessage = config.countryRequiredError;
71243			}
71244
71245			// Validate state if shown and country requires it
71246			if (showState && (recipientAddress.country === 'US' || recipientAddress.country === 'CA') && !recipientAddress.state.trim()) {
71247				isValid = false;
71248				errorMessage = config.stateRequiredError;
71249			}
71250
71251			// Validate city if shown
71252			if (showCity && !recipientAddress.city.trim()) {
71253				isValid = false;
71254				errorMessage = config.cityRequiredError;
71255			}
71256
71257			// Validate postal code if shown
71258			if (showPostalCode && !errorMessage) {
71259				if (!recipientAddress.postalCode.trim()) {
71260					isValid = false;
71261					errorMessage = config.postalCodeRequiredError;
71262				}
71263			}
71264
71265			// Validate street address if shown
71266			if (showAddress && !errorMessage) {
71267				if (!recipientAddress.addressLine1.trim()) {
71268					isValid = false;
71269					errorMessage = config.addressRequiredError;
71270				}
71271			}
71272
71273			$$invalidate(1, addressError = errorMessage);
71274
71275			// Dispatch event for form validity
71276			dispatch('validity', { isValid });
71277		};
71278
71279		function input0_input_handler() {
71280			recipientAddress.addressLine1 = this.value;
71281			$$invalidate(2, recipientAddress);
71282		}
71283
71284		function input1_input_handler() {
71285			recipientAddress.addressLine2 = this.value;
71286			$$invalidate(2, recipientAddress);
71287		}
71288
71289		function input_input_handler() {
71290			recipientAddress.city = this.value;
71291			$$invalidate(2, recipientAddress);
71292		}
71293
71294		const func = value => {
71295			$$invalidate(2, recipientAddress.country = value, recipientAddress);
71296			updateGiftRecipient();
71297		};
71298
71299		const func_3 = value => {
71300			$$invalidate(2, recipientAddress.state = value, recipientAddress);
71301			updateGiftRecipient();
71302		};
71303
71304		function input_input_handler_1() {
71305			recipientAddress.postalCode = this.value;
71306			$$invalidate(2, recipientAddress);
71307		}
71308
71309		$$self.$$set = $$props => {
71310			if ('formState' in $$props) $$invalidate(10, formState = $$props.formState);
71311			if ('formActions' in $$props) $$invalidate(11, formActions = $$props.formActions);
71312			if ('config' in $$props) $$invalidate(0, config = $$props.config);
71313			if ('form' in $$props) $$invalidate(12, form = $$props.form);
71314		};
71315
71316		$$self.$$.update = () => {
71317			if ($$self.$$.dirty & /*config*/ 1) {
71318				// Use config values directly - they are reactive props
71319				$$invalidate(3, showAddress = config?.showAddress ?? false);
71320			}
71321
71322			if ($$self.$$.dirty & /*config*/ 1) {
71323				$$invalidate(4, showPostalCode = config?.showPostalCode ?? false);
71324			}
71325
71326			if ($$self.$$.dirty & /*config*/ 1) {
71327				$$invalidate(7, showCountry = config?.showCountry ?? false);
71328			}
71329
71330			if ($$self.$$.dirty & /*config*/ 1) {
71331				$$invalidate(6, showState = config?.showState ?? false);
71332			}
71333
71334			if ($$self.$$.dirty & /*config*/ 1) {
71335				$$invalidate(5, showCity = config?.showCity ?? false);
71336			}
71337		};
71338
71339		$$invalidate(8, showAnyAddress = true);
71340
71341		return [
71342			config,
71343			addressError,
71344			recipientAddress,
71345			showAddress,
71346			showPostalCode,
71347			showCity,
71348			showState,
71349			showCountry,
71350			showAnyAddress,
71351			updateGiftRecipient,
71352			formState,
71353			formActions,
71354			form,
71355			input0_input_handler,
71356			input1_input_handler,
71357			input_input_handler,
71358			func,
71359			func_3,
71360			input_input_handler_1
71361		];
71362	}
71363
71364	class RecipientAddress extends SvelteComponent {
71365		constructor(options) {
71366			super();
71367
71368			init(this, options, instance$e, create_fragment$e, safe_not_equal, {
71369				formState: 10,
71370				formActions: 11,
71371				config: 0,
71372				form: 12
71373			});
71374		}
71375	}
71376
71377	const recipientAddressFactory = {
71378	    matches: (sectionElement) => sectionElement.type === elementTypes.RECIPIENT_ADDRESS,
71379	    create: (form, formState, formActions, elementConfig) => {
71380	        // Determine if address is required from form configuration
71381	        const typeConfiguration = formConfigAs(form);
71382	        const requires_address = typeConfiguration.requires_address;
71383	        // If requires_address is false, don't render the component at all
71384	        if (requires_address === false) {
71385	            return {
71386	                component: null,
71387	                props: {},
71388	                isValid: true
71389	            };
71390	        }
71391	        // Resolve all labels and error messages through language pack service
71392	        const resolvedConfig = {
71393	            label: resolveLanguagePackKeyTyped(form, 'forms.gift.recipient-address', elementConfig.label),
71394	            addressLine1Label: resolveLanguagePackKeyTyped(form, 'forms.gift.address-line1', elementConfig.addressLine1Label),
71395	            addressLine2Label: resolveLanguagePackKeyTyped(form, 'forms.gift.address-line2', elementConfig.addressLine2Label),
71396	            cityLabel: resolveLanguagePackKeyTyped(form, 'forms.gift.city', elementConfig.cityLabel),
71397	            stateLabel: resolveLanguagePackKeyTyped(form, 'forms.gift.state', elementConfig.stateLabel),
71398	            countryLabel: resolveLanguagePackKeyTyped(form, 'forms.gift.country', elementConfig.countryLabel),
71399	            postalCodeLabel: resolveLanguagePackKeyTyped(form, 'forms.gift.postal-code', elementConfig.postalCodeLabel),
71400	            addressRequiredError: resolveLanguagePackKeyTyped(form, 'forms.gift.address-required', elementConfig.addressRequiredError),
71401	            countryRequiredError: resolveLanguagePackKeyTyped(form, 'forms.gift.country-required', elementConfig.countryRequiredError),
71402	            stateRequiredError: resolveLanguagePackKeyTyped(form, 'forms.gift.state-required', elementConfig.stateRequiredError),
71403	            cityRequiredError: resolveLanguagePackKeyTyped(form, 'forms.gift.city-required', elementConfig.cityRequiredError),
71404	            postalCodeRequiredError: resolveLanguagePackKeyTyped(form, 'forms.gift.postal-code-required', elementConfig.postalCodeRequiredError),
71405	            addressLine1Placeholder: resolveLanguagePackKeyTyped(form, 'forms.gift.address-line1-placeholder', elementConfig.addressLine1Placeholder),
71406	            addressLine2Placeholder: resolveLanguagePackKeyTyped(form, 'forms.gift.address-line2-placeholder', elementConfig.addressLine2Placeholder),
71407	            cityPlaceholder: resolveLanguagePackKeyTyped(form, 'forms.gift.city-placeholder', elementConfig.cityPlaceholder),
71408	            statePlaceholder: resolveLanguagePackKeyTyped(form, 'forms.gift.state-placeholder', elementConfig.statePlaceholder),
71409	            countryPlaceholder: resolveLanguagePackKeyTyped(form, 'forms.gift.country-placeholder', elementConfig.countryPlaceholder),
71410	            postalCodePlaceholder: resolveLanguagePackKeyTyped(form, 'forms.gift.postal-code-placeholder', elementConfig.postalCodePlaceholder),
71411	            // Field visibility controls - pass through from element config
71412	            showAddress: elementConfig.showAddress,
71413	            showPostalCode: elementConfig.showPostalCode,
71414	            showCountry: elementConfig.showCountry,
71415	            showState: elementConfig.showState,
71416	            showCity: elementConfig.showCity,
71417	        };
71418	        // Determine if the input is valid based on granular field requirements
71419	        const giftRecipient = (formState.giftRecipient || {});
71420	        const recipientAddress = giftRecipient.recipientAddress || {};
71421	        let isValid = true;
71422	        // Calculate which fields are shown (same logic as component)
71423	        const showAddress = elementConfig.showAddress ?? false;
71424	        const showPostalCode = elementConfig.showPostalCode ?? false;
71425	        const showCountry = elementConfig.showCountry ?? false;
71426	        const showState = elementConfig.showState ?? false;
71427	        const showCity = elementConfig.showCity ?? false;
71428	        // Validate address if required
71429	        if (showAddress && !recipientAddress.addressLine1?.trim()) {
71430	            isValid = false;
71431	        }
71432	        // Validate postal code if required
71433	        if (showPostalCode && !recipientAddress.postalCode?.trim()) {
71434	            isValid = false;
71435	        }
71436	        // Validate country if required
71437	        if (showCountry && !recipientAddress.country?.trim()) {
71438	            isValid = false;
71439	        }
71440	        // Validate state if required (only for US/CA when showState is enabled)
71441	        if (showState && (recipientAddress.country === 'US' || recipientAddress.country === 'CA') && !recipientAddress.state?.trim()) {
71442	            isValid = false;
71443	        }
71444	        // Validate city if required
71445	        if (showCity && !recipientAddress.city?.trim()) {
71446	            isValid = false;
71447	        }
71448	        return {
71449	            component: RecipientAddress,
71450	            props: {
71451	                config: resolvedConfig,
71452	                form,
71453	                formState,
71454	                formActions,
71455	            },
71456	            isValid
71457	        };
71458	    }
71459	};
71460
71461	/* src/components/elements/recipientMessage/RecipientMessage.svelte generated by Svelte v4.2.12 */
71462
71463	function create_fragment$d(ctx) {
71464		let div1;
71465		let div0;
71466		let label;
71467		let t0_value = /*config*/ ctx[0].messageLabel + "";
71468		let t0;
71469		let t1;
71470		let textarea;
71471		let textarea_placeholder_value;
71472		let mounted;
71473		let dispose;
71474
71475		return {
71476			c() {
71477				div1 = element("div");
71478				div0 = element("div");
71479				label = element("label");
71480				t0 = text(t0_value);
71481				t1 = space();
71482				textarea = element("textarea");
71483				attr(label, "for", "customMessage");
71484				attr(label, "class", "svelte-h6tpk7");
71485				attr(textarea, "id", "customMessage");
71486				attr(textarea, "placeholder", textarea_placeholder_value = /*config*/ ctx[0].messagePlaceholder);
71487				attr(textarea, "class", "svelte-h6tpk7");
71488				attr(div0, "class", "field svelte-h6tpk7");
71489				attr(div1, "class", "recipient-message-section svelte-h6tpk7");
71490			},
71491			m(target, anchor) {
71492				insert(target, div1, anchor);
71493				append(div1, div0);
71494				append(div0, label);
71495				append(label, t0);
71496				append(div0, t1);
71497				append(div0, textarea);
71498				set_input_value(textarea, /*customMessage*/ ctx[1]);
71499
71500				if (!mounted) {
71501					dispose = [
71502						listen(textarea, "input", /*textarea_input_handler*/ ctx[5]),
71503						listen(textarea, "input", /*updateGiftRecipient*/ ctx[2])
71504					];
71505
71506					mounted = true;
71507				}
71508			},
71509			p(ctx, [dirty]) {
71510				if (dirty & /*config*/ 1 && t0_value !== (t0_value = /*config*/ ctx[0].messageLabel + "")) set_data(t0, t0_value);
71511
71512				if (dirty & /*config*/ 1 && textarea_placeholder_value !== (textarea_placeholder_value = /*config*/ ctx[0].messagePlaceholder)) {
71513					attr(textarea, "placeholder", textarea_placeholder_value);
71514				}
71515
71516				if (dirty & /*customMessage*/ 2) {
71517					set_input_value(textarea, /*customMessage*/ ctx[1]);
71518				}
71519			},
71520			i: noop,
71521			o: noop,
71522			d(detaching) {
71523				if (detaching) {
71524					detach(div1);
71525				}
71526
71527				mounted = false;
71528				run_all(dispose);
71529			}
71530		};
71531	}
71532
71533	function instance$d($$self, $$props, $$invalidate) {
71534		let { formState } = $$props;
71535		let { formActions } = $$props;
71536		let { config } = $$props;
71537		const dispatch = createEventDispatcher();
71538		let customMessage = formState.giftRecipient?.customMessage || '';
71539
71540		// Update form state when input changes
71541		const updateGiftRecipient = () => {
71542			const updatedGiftRecipient = {
71543				...formState.giftRecipient || {},
71544				customMessage
71545			};
71546
71547			formActions.updateFormState({ giftRecipient: updatedGiftRecipient });
71548		};
71549
71550		// Initial validation
71551		onMount(() => {
71552			// Message is always valid as it's optional
71553			dispatch('validity', { isValid: true });
71554		});
71555
71556		function textarea_input_handler() {
71557			customMessage = this.value;
71558			$$invalidate(1, customMessage);
71559		}
71560
71561		$$self.$$set = $$props => {
71562			if ('formState' in $$props) $$invalidate(3, formState = $$props.formState);
71563			if ('formActions' in $$props) $$invalidate(4, formActions = $$props.formActions);
71564			if ('config' in $$props) $$invalidate(0, config = $$props.config);
71565		};
71566
71567		return [
71568			config,
71569			customMessage,
71570			updateGiftRecipient,
71571			formState,
71572			formActions,
71573			textarea_input_handler
71574		];
71575	}
71576
71577	class RecipientMessage extends SvelteComponent {
71578		constructor(options) {
71579			super();
71580			init(this, options, instance$d, create_fragment$d, safe_not_equal, { formState: 3, formActions: 4, config: 0 });
71581		}
71582	}
71583
71584	const recipientMessageFactory = {
71585	    matches: (sectionElement) => sectionElement.type === elementTypes.RECIPIENT_MESSAGE,
71586	    create: (form, formState, formActions, elementConfig) => {
71587	        // Resolve all labels through language pack service
71588	        const resolvedConfig = {
71589	            messageLabel: resolveLanguagePackKeyTyped(form, 'forms.gift.custom-message', elementConfig.messageLabel),
71590	            messagePlaceholder: resolveLanguagePackKeyTyped(form, 'forms.gift.message-placeholder', elementConfig.messagePlaceholder),
71591	        };
71592	        // Message is always valid as it's optional
71593	        const isValid = true;
71594	        return {
71595	            component: RecipientMessage,
71596	            props: {
71597	                config: resolvedConfig,
71598	                form,
71599	                formState,
71600	                formActions,
71601	            },
71602	            isValid
71603	        };
71604	    }
71605	};
71606
71607	/* src/components/elements/giftCode/GiftCode.svelte generated by Svelte v4.2.12 */
71608
71609	function create_if_block_1$8(ctx) {
71610		let label_1;
71611		let t0;
71612		let t1;
71613		let if_block = /*required*/ ctx[3] && create_if_block_2$6();
71614
71615		return {
71616			c() {
71617				label_1 = element("label");
71618				t0 = text(/*label*/ ctx[1]);
71619				t1 = space();
71620				if (if_block) if_block.c();
71621				attr(label_1, "for", "zephr-form-gift-code");
71622				attr(label_1, "class", "svelte-764k6k");
71623			},
71624			m(target, anchor) {
71625				insert(target, label_1, anchor);
71626				append(label_1, t0);
71627				append(label_1, t1);
71628				if (if_block) if_block.m(label_1, null);
71629			},
71630			p(ctx, dirty) {
71631				if (dirty & /*label*/ 2) set_data(t0, /*label*/ ctx[1]);
71632
71633				if (/*required*/ ctx[3]) {
71634					if (if_block) ; else {
71635						if_block = create_if_block_2$6();
71636						if_block.c();
71637						if_block.m(label_1, null);
71638					}
71639				} else if (if_block) {
71640					if_block.d(1);
71641					if_block = null;
71642				}
71643			},
71644			d(detaching) {
71645				if (detaching) {
71646					detach(label_1);
71647				}
71648
71649				if (if_block) if_block.d();
71650			}
71651		};
71652	}
71653
71654	// (22:6) {#if required}
71655	function create_if_block_2$6(ctx) {
71656		let span;
71657
71658		return {
71659			c() {
71660				span = element("span");
71661				span.textContent = "*";
71662				attr(span, "class", "required svelte-764k6k");
71663			},
71664			m(target, anchor) {
71665				insert(target, span, anchor);
71666			},
71667			d(detaching) {
71668				if (detaching) {
71669					detach(span);
71670				}
71671			}
71672		};
71673	}
71674
71675	// (40:2) {#if errorMessage}
71676	function create_if_block$9(ctx) {
71677		let div;
71678		let t;
71679
71680		return {
71681			c() {
71682				div = element("div");
71683				t = text(/*errorMessage*/ ctx[7]);
71684				attr(div, "class", "error-message svelte-764k6k");
71685			},
71686			m(target, anchor) {
71687				insert(target, div, anchor);
71688				append(div, t);
71689			},
71690			p(ctx, dirty) {
71691				if (dirty & /*errorMessage*/ 128) set_data(t, /*errorMessage*/ ctx[7]);
71692			},
71693			d(detaching) {
71694				if (detaching) {
71695					detach(div);
71696				}
71697			}
71698		};
71699	}
71700
71701	function create_fragment$c(ctx) {
71702		let div;
71703		let t0;
71704		let input;
71705		let t1;
71706		let mounted;
71707		let dispose;
71708		let if_block0 = /*label*/ ctx[1] && create_if_block_1$8(ctx);
71709		let if_block1 = /*errorMessage*/ ctx[7] && create_if_block$9(ctx);
71710
71711		return {
71712			c() {
71713				div = element("div");
71714				if (if_block0) if_block0.c();
71715				t0 = space();
71716				input = element("input");
71717				t1 = space();
71718				if (if_block1) if_block1.c();
71719				attr(input, "id", "zephr-form-gift-code");
71720				attr(input, "type", "text");
71721				attr(input, "placeholder", /*placeholder*/ ctx[2]);
71722				input.disabled = /*disabled*/ ctx[4];
71723				input.required = /*required*/ ctx[3];
71724				input.value = /*value*/ ctx[0];
71725				attr(input, "maxlength", "16");
71726				attr(input, "class", "svelte-764k6k");
71727				toggle_class(input, "error", !!/*errorMessage*/ ctx[7]);
71728				attr(div, "class", "zephr-form-input-wrapper svelte-764k6k");
71729			},
71730			m(target, anchor) {
71731				insert(target, div, anchor);
71732				if (if_block0) if_block0.m(div, null);
71733				append(div, t0);
71734				append(div, input);
71735				append(div, t1);
71736				if (if_block1) if_block1.m(div, null);
71737
71738				if (!mounted) {
71739					dispose = [
71740						listen(input, "input", /*handleChange*/ ctx[8]),
71741						listen(input, "focus", function () {
71742							if (is_function(/*onFocus*/ ctx[5])) /*onFocus*/ ctx[5].apply(this, arguments);
71743						}),
71744						listen(input, "blur", function () {
71745							if (is_function(/*onBlur*/ ctx[6])) /*onBlur*/ ctx[6].apply(this, arguments);
71746						})
71747					];
71748
71749					mounted = true;
71750				}
71751			},
71752			p(new_ctx, [dirty]) {
71753				ctx = new_ctx;
71754
71755				if (/*label*/ ctx[1]) {
71756					if (if_block0) {
71757						if_block0.p(ctx, dirty);
71758					} else {
71759						if_block0 = create_if_block_1$8(ctx);
71760						if_block0.c();
71761						if_block0.m(div, t0);
71762					}
71763				} else if (if_block0) {
71764					if_block0.d(1);
71765					if_block0 = null;
71766				}
71767
71768				if (dirty & /*placeholder*/ 4) {
71769					attr(input, "placeholder", /*placeholder*/ ctx[2]);
71770				}
71771
71772				if (dirty & /*disabled*/ 16) {
71773					input.disabled = /*disabled*/ ctx[4];
71774				}
71775
71776				if (dirty & /*required*/ 8) {
71777					input.required = /*required*/ ctx[3];
71778				}
71779
71780				if (dirty & /*value*/ 1 && input.value !== /*value*/ ctx[0]) {
71781					input.value = /*value*/ ctx[0];
71782				}
71783
71784				if (dirty & /*errorMessage*/ 128) {
71785					toggle_class(input, "error", !!/*errorMessage*/ ctx[7]);
71786				}
71787
71788				if (/*errorMessage*/ ctx[7]) {
71789					if (if_block1) {
71790						if_block1.p(ctx, dirty);
71791					} else {
71792						if_block1 = create_if_block$9(ctx);
71793						if_block1.c();
71794						if_block1.m(div, null);
71795					}
71796				} else if (if_block1) {
71797					if_block1.d(1);
71798					if_block1 = null;
71799				}
71800			},
71801			i: noop,
71802			o: noop,
71803			d(detaching) {
71804				if (detaching) {
71805					detach(div);
71806				}
71807
71808				if (if_block0) if_block0.d();
71809				if (if_block1) if_block1.d();
71810				mounted = false;
71811				run_all(dispose);
71812			}
71813		};
71814	}
71815
71816	function instance$c($$self, $$props, $$invalidate) {
71817		let errorMessage;
71818		let { value = "" } = $$props;
71819		let { label = "" } = $$props;
71820		let { placeholder = "" } = $$props;
71821		let { required = false } = $$props;
71822		let { disabled = false } = $$props;
71823		let { hasError = false } = $$props;
71824		let { error = false } = $$props;
71825
71826		let { onChange = _value => {
71827			
71828		} } = $$props;
71829
71830		let { onFocus = () => {
71831			
71832		} } = $$props;
71833
71834		let { onBlur = () => {
71835			
71836		} } = $$props;
71837
71838		const handleChange = event => {
71839			const newValue = event.target.value;
71840			onChange(newValue);
71841		};
71842
71843		$$self.$$set = $$props => {
71844			if ('value' in $$props) $$invalidate(0, value = $$props.value);
71845			if ('label' in $$props) $$invalidate(1, label = $$props.label);
71846			if ('placeholder' in $$props) $$invalidate(2, placeholder = $$props.placeholder);
71847			if ('required' in $$props) $$invalidate(3, required = $$props.required);
71848			if ('disabled' in $$props) $$invalidate(4, disabled = $$props.disabled);
71849			if ('hasError' in $$props) $$invalidate(9, hasError = $$props.hasError);
71850			if ('error' in $$props) $$invalidate(10, error = $$props.error);
71851			if ('onChange' in $$props) $$invalidate(11, onChange = $$props.onChange);
71852			if ('onFocus' in $$props) $$invalidate(5, onFocus = $$props.onFocus);
71853			if ('onBlur' in $$props) $$invalidate(6, onBlur = $$props.onBlur);
71854		};
71855
71856		$$self.$$.update = () => {
71857			if ($$self.$$.dirty & /*hasError, error*/ 1536) {
71858				$$invalidate(7, errorMessage = hasError || error);
71859			}
71860		};
71861
71862		return [
71863			value,
71864			label,
71865			placeholder,
71866			required,
71867			disabled,
71868			onFocus,
71869			onBlur,
71870			errorMessage,
71871			handleChange,
71872			hasError,
71873			error,
71874			onChange
71875		];
71876	}
71877
71878	class GiftCode extends SvelteComponent {
71879		constructor(options) {
71880			super();
71881
71882			init(this, options, instance$c, create_fragment$c, safe_not_equal, {
71883				value: 0,
71884				label: 1,
71885				placeholder: 2,
71886				required: 3,
71887				disabled: 4,
71888				hasError: 9,
71889				error: 10,
71890				onChange: 11,
71891				onFocus: 5,
71892				onBlur: 6
71893			});
71894		}
71895	}
71896
71897	const factory$2 = {
71898	    matches: (sectionElement) => sectionElement.type === elementTypes.GIFT_CODE,
71899	    create: (form, formState, formActions, config) => {
71900	        const { disabled, label, placeholder, required } = config;
71901	        const error = serverErrorForElement(elementTypes.GIFT_CODE, formState);
71902	        const onChange = (value) => {
71903	            formActions.updateFormState({
71904	                giftCode: value,
71905	                giftCodeError: undefined,
71906	            });
71907	            logDataLayerEvent(form, 'zephr_form_input_change', {
71908	                field: 'gift-code',
71909	                inputName: `zephr-form-gift-code-${form.uniqueKey}`,
71910	                sectionId: formState.currentSection.type,
71911	            });
71912	        };
71913	        const onFocus = () => logDataLayerEvent(form, 'zephr_form_input_focus', {
71914	            field: 'gift-code',
71915	            inputName: `zephr-form-gift-code-${form.uniqueKey}`,
71916	            sectionId: formState.currentSection.type,
71917	        });
71918	        const onBlur = () => logDataLayerEvent(form, 'zephr_form_input_blur', {
71919	            field: 'gift-code',
71920	            inputName: `zephr-form-gift-code-${form.uniqueKey}`,
71921	            sectionId: formState.currentSection.type,
71922	        });
71923	        const giftCode = formState.giftCode || '';
71924	        const isValid = (!required || !!giftCode) && giftCode.length === 16;
71925	        const errorMessage = error
71926	            ? resolveErrorLanguagePackKey(form, error)
71927	            : formState.giftCodeError;
71928	        return {
71929	            component: GiftCode,
71930	            props: {
71931	                hasError: errorMessage,
71932	                label,
71933	                placeholder,
71934	                required,
71935	                disabled,
71936	                onChange,
71937	                onFocus,
71938	                onBlur,
71939	                value: formState.giftCode || '',
71940	            },
71941	            isValid,
71942	        };
71943	    },
71944	};
71945
71946	/* src/components/elements/giftSubscriptionsList/GiftSubscriptionsListBoxItem.svelte generated by Svelte v4.2.12 */
71947
71948	function get_each_context$4(ctx, list, i) {
71949		const child_ctx = ctx.slice();
71950		child_ctx[25] = list[i];
71951		return child_ctx;
71952	}
71953
71954	// (30:39) 
71955	function create_if_block_14(ctx) {
71956		let div;
71957		let t;
71958
71959		return {
71960			c() {
71961				div = element("div");
71962				t = text(/*redeemedBannerText*/ ctx[5]);
71963				attr(div, "class", "zephr-banner-top svelte-srvimy");
71964			},
71965			m(target, anchor) {
71966				insert(target, div, anchor);
71967				append(div, t);
71968			},
71969			p(ctx, dirty) {
71970				if (dirty & /*redeemedBannerText*/ 32) set_data(t, /*redeemedBannerText*/ ctx[5]);
71971			},
71972			d(detaching) {
71973				if (detaching) {
71974					detach(div);
71975				}
71976			}
71977		};
71978	}
71979
71980	// (26:2) {#if gift.status === 'PENDING'}
71981	function create_if_block_13(ctx) {
71982		let div;
71983		let t0;
71984		let t1;
71985		let t2_value = /*gift*/ ctx[0].subscriptionStartDate + "";
71986		let t2;
71987
71988		return {
71989			c() {
71990				div = element("div");
71991				t0 = text(/*pendingBannerText*/ ctx[4]);
71992				t1 = space();
71993				t2 = text(t2_value);
71994				attr(div, "class", "zephr-banner-top svelte-srvimy");
71995			},
71996			m(target, anchor) {
71997				insert(target, div, anchor);
71998				append(div, t0);
71999				append(div, t1);
72000				append(div, t2);
72001			},
72002			p(ctx, dirty) {
72003				if (dirty & /*pendingBannerText*/ 16) set_data(t0, /*pendingBannerText*/ ctx[4]);
72004				if (dirty & /*gift*/ 1 && t2_value !== (t2_value = /*gift*/ ctx[0].subscriptionStartDate + "")) set_data(t2, t2_value);
72005			},
72006			d(detaching) {
72007				if (detaching) {
72008					detach(div);
72009				}
72010			}
72011		};
72012	}
72013
72014	// (38:6) {#if element === 'subscription_information' && !elementsHide.subscriptionInformation}
72015	function create_if_block_8(ctx) {
72016		let t0;
72017		let t1;
72018		let t2;
72019		let if_block3_anchor;
72020		let if_block0 = (/*gift*/ ctx[0].recipientFirstName || /*gift*/ ctx[0].recipientLastName || /*gift*/ ctx[0].is_recipient) && create_if_block_12(ctx);
72021		let if_block1 = /*gift*/ ctx[0].subscriptionType && create_if_block_11(ctx);
72022		let if_block2 = /*gift*/ ctx[0].subscriptionStartDate && create_if_block_10(ctx);
72023		let if_block3 = /*gift*/ ctx[0].subscriptionEndDate && create_if_block_9(ctx);
72024
72025		return {
72026			c() {
72027				if (if_block0) if_block0.c();
72028				t0 = space();
72029				if (if_block1) if_block1.c();
72030				t1 = space();
72031				if (if_block2) if_block2.c();
72032				t2 = space();
72033				if (if_block3) if_block3.c();
72034				if_block3_anchor = empty();
72035			},
72036			m(target, anchor) {
72037				if (if_block0) if_block0.m(target, anchor);
72038				insert(target, t0, anchor);
72039				if (if_block1) if_block1.m(target, anchor);
72040				insert(target, t1, anchor);
72041				if (if_block2) if_block2.m(target, anchor);
72042				insert(target, t2, anchor);
72043				if (if_block3) if_block3.m(target, anchor);
72044				insert(target, if_block3_anchor, anchor);
72045			},
72046			p(ctx, dirty) {
72047				if (/*gift*/ ctx[0].recipientFirstName || /*gift*/ ctx[0].recipientLastName || /*gift*/ ctx[0].is_recipient) {
72048					if (if_block0) {
72049						if_block0.p(ctx, dirty);
72050					} else {
72051						if_block0 = create_if_block_12(ctx);
72052						if_block0.c();
72053						if_block0.m(t0.parentNode, t0);
72054					}
72055				} else if (if_block0) {
72056					if_block0.d(1);
72057					if_block0 = null;
72058				}
72059
72060				if (/*gift*/ ctx[0].subscriptionType) {
72061					if (if_block1) {
72062						if_block1.p(ctx, dirty);
72063					} else {
72064						if_block1 = create_if_block_11(ctx);
72065						if_block1.c();
72066						if_block1.m(t1.parentNode, t1);
72067					}
72068				} else if (if_block1) {
72069					if_block1.d(1);
72070					if_block1 = null;
72071				}
72072
72073				if (/*gift*/ ctx[0].subscriptionStartDate) {
72074					if (if_block2) {
72075						if_block2.p(ctx, dirty);
72076					} else {
72077						if_block2 = create_if_block_10(ctx);
72078						if_block2.c();
72079						if_block2.m(t2.parentNode, t2);
72080					}
72081				} else if (if_block2) {
72082					if_block2.d(1);
72083					if_block2 = null;
72084				}
72085
72086				if (/*gift*/ ctx[0].subscriptionEndDate) {
72087					if (if_block3) {
72088						if_block3.p(ctx, dirty);
72089					} else {
72090						if_block3 = create_if_block_9(ctx);
72091						if_block3.c();
72092						if_block3.m(if_block3_anchor.parentNode, if_block3_anchor);
72093					}
72094				} else if (if_block3) {
72095					if_block3.d(1);
72096					if_block3 = null;
72097				}
72098			},
72099			d(detaching) {
72100				if (detaching) {
72101					detach(t0);
72102					detach(t1);
72103					detach(t2);
72104					detach(if_block3_anchor);
72105				}
72106
72107				if (if_block0) if_block0.d(detaching);
72108				if (if_block1) if_block1.d(detaching);
72109				if (if_block2) if_block2.d(detaching);
72110				if (if_block3) if_block3.d(detaching);
72111			}
72112		};
72113	}
72114
72115	// (39:8) {#if gift.recipientFirstName || gift.recipientLastName || gift.is_recipient}
72116	function create_if_block_12(ctx) {
72117		let div2;
72118		let span;
72119		let t0;
72120		let t1;
72121		let div0;
72122		let t2_value = (/*gift*/ ctx[0].recipientFirstName || '') + "";
72123		let t2;
72124		let t3;
72125		let t4_value = (/*gift*/ ctx[0].recipientLastName || '') + "";
72126		let t4;
72127		let t5;
72128		let div1;
72129
72130		let t6_value = (/*gift*/ ctx[0].status === 'REDEEMED'
72131		? /*activeStatusText*/ ctx[6]
72132		: /*pendingStatusText*/ ctx[7]) + "";
72133
72134		let t6;
72135
72136		return {
72137			c() {
72138				div2 = element("div");
72139				span = element("span");
72140				t0 = text(/*giftRecipientText*/ ctx[1]);
72141				t1 = space();
72142				div0 = element("div");
72143				t2 = text(t2_value);
72144				t3 = space();
72145				t4 = text(t4_value);
72146				t5 = space();
72147				div1 = element("div");
72148				t6 = text(t6_value);
72149				attr(span, "class", "svelte-srvimy");
72150				attr(div0, "class", "zephr-box-item-information svelte-srvimy");
72151				attr(div1, "class", "zephr-status-pill svelte-srvimy");
72152				attr(div2, "class", "zephr-section zephr-header-section svelte-srvimy");
72153			},
72154			m(target, anchor) {
72155				insert(target, div2, anchor);
72156				append(div2, span);
72157				append(span, t0);
72158				append(div2, t1);
72159				append(div2, div0);
72160				append(div0, t2);
72161				append(div0, t3);
72162				append(div0, t4);
72163				append(div2, t5);
72164				append(div2, div1);
72165				append(div1, t6);
72166			},
72167			p(ctx, dirty) {
72168				if (dirty & /*giftRecipientText*/ 2) set_data(t0, /*giftRecipientText*/ ctx[1]);
72169				if (dirty & /*gift*/ 1 && t2_value !== (t2_value = (/*gift*/ ctx[0].recipientFirstName || '') + "")) set_data(t2, t2_value);
72170				if (dirty & /*gift*/ 1 && t4_value !== (t4_value = (/*gift*/ ctx[0].recipientLastName || '') + "")) set_data(t4, t4_value);
72171
72172				if (dirty & /*gift, activeStatusText, pendingStatusText*/ 193 && t6_value !== (t6_value = (/*gift*/ ctx[0].status === 'REDEEMED'
72173				? /*activeStatusText*/ ctx[6]
72174				: /*pendingStatusText*/ ctx[7]) + "")) set_data(t6, t6_value);
72175			},
72176			d(detaching) {
72177				if (detaching) {
72178					detach(div2);
72179				}
72180			}
72181		};
72182	}
72183
72184	// (51:8) {#if gift.subscriptionType}
72185	function create_if_block_11(ctx) {
72186		let div1;
72187		let span;
72188		let t0;
72189		let t1;
72190		let div0;
72191		let t2_value = /*gift*/ ctx[0].subscriptionType + "";
72192		let t2;
72193
72194		return {
72195			c() {
72196				div1 = element("div");
72197				span = element("span");
72198				t0 = text(/*subscriptionTypeText*/ ctx[13]);
72199				t1 = space();
72200				div0 = element("div");
72201				t2 = text(t2_value);
72202				attr(span, "class", "svelte-srvimy");
72203				attr(div0, "class", "");
72204				attr(div1, "class", "zephr-section svelte-srvimy");
72205			},
72206			m(target, anchor) {
72207				insert(target, div1, anchor);
72208				append(div1, span);
72209				append(span, t0);
72210				append(div1, t1);
72211				append(div1, div0);
72212				append(div0, t2);
72213			},
72214			p(ctx, dirty) {
72215				if (dirty & /*subscriptionTypeText*/ 8192) set_data(t0, /*subscriptionTypeText*/ ctx[13]);
72216				if (dirty & /*gift*/ 1 && t2_value !== (t2_value = /*gift*/ ctx[0].subscriptionType + "")) set_data(t2, t2_value);
72217			},
72218			d(detaching) {
72219				if (detaching) {
72220					detach(div1);
72221				}
72222			}
72223		};
72224	}
72225
72226	// (60:8) {#if gift.subscriptionStartDate}
72227	function create_if_block_10(ctx) {
72228		let div1;
72229		let span;
72230		let t0;
72231		let t1;
72232		let div0;
72233		let t2_value = /*gift*/ ctx[0].subscriptionStartDate + "";
72234		let t2;
72235
72236		return {
72237			c() {
72238				div1 = element("div");
72239				span = element("span");
72240				t0 = text(/*startDateText*/ ctx[2]);
72241				t1 = space();
72242				div0 = element("div");
72243				t2 = text(t2_value);
72244				attr(span, "class", "svelte-srvimy");
72245				attr(div0, "class", "");
72246				attr(div1, "class", "zephr-section svelte-srvimy");
72247			},
72248			m(target, anchor) {
72249				insert(target, div1, anchor);
72250				append(div1, span);
72251				append(span, t0);
72252				append(div1, t1);
72253				append(div1, div0);
72254				append(div0, t2);
72255			},
72256			p(ctx, dirty) {
72257				if (dirty & /*startDateText*/ 4) set_data(t0, /*startDateText*/ ctx[2]);
72258				if (dirty & /*gift*/ 1 && t2_value !== (t2_value = /*gift*/ ctx[0].subscriptionStartDate + "")) set_data(t2, t2_value);
72259			},
72260			d(detaching) {
72261				if (detaching) {
72262					detach(div1);
72263				}
72264			}
72265		};
72266	}
72267
72268	// (69:8) {#if gift.subscriptionEndDate}
72269	function create_if_block_9(ctx) {
72270		let div1;
72271		let span;
72272		let t0;
72273		let t1;
72274		let div0;
72275		let t2_value = /*gift*/ ctx[0].subscriptionEndDate + "";
72276		let t2;
72277
72278		return {
72279			c() {
72280				div1 = element("div");
72281				span = element("span");
72282				t0 = text(/*endDateText*/ ctx[3]);
72283				t1 = space();
72284				div0 = element("div");
72285				t2 = text(t2_value);
72286				attr(span, "class", "svelte-srvimy");
72287				attr(div0, "class", "");
72288				attr(div1, "class", "zephr-section svelte-srvimy");
72289			},
72290			m(target, anchor) {
72291				insert(target, div1, anchor);
72292				append(div1, span);
72293				append(span, t0);
72294				append(div1, t1);
72295				append(div1, div0);
72296				append(div0, t2);
72297			},
72298			p(ctx, dirty) {
72299				if (dirty & /*endDateText*/ 8) set_data(t0, /*endDateText*/ ctx[3]);
72300				if (dirty & /*gift*/ 1 && t2_value !== (t2_value = /*gift*/ ctx[0].subscriptionEndDate + "")) set_data(t2, t2_value);
72301			},
72302			d(detaching) {
72303				if (detaching) {
72304					detach(div1);
72305				}
72306			}
72307		};
72308	}
72309
72310	// (78:6) {#if element === 'billing_history' && !elementsHide.billingHistory && gift.status === "PENDING"}
72311	function create_if_block_6$2(ctx) {
72312		let if_block_anchor;
72313		let current;
72314		let if_block = /*billingHistoryLink*/ ctx[16] && create_if_block_7(ctx);
72315
72316		return {
72317			c() {
72318				if (if_block) if_block.c();
72319				if_block_anchor = empty();
72320			},
72321			m(target, anchor) {
72322				if (if_block) if_block.m(target, anchor);
72323				insert(target, if_block_anchor, anchor);
72324				current = true;
72325			},
72326			p(ctx, dirty) {
72327				if (/*billingHistoryLink*/ ctx[16]) {
72328					if (if_block) {
72329						if_block.p(ctx, dirty);
72330
72331						if (dirty & /*billingHistoryLink*/ 65536) {
72332							transition_in(if_block, 1);
72333						}
72334					} else {
72335						if_block = create_if_block_7(ctx);
72336						if_block.c();
72337						transition_in(if_block, 1);
72338						if_block.m(if_block_anchor.parentNode, if_block_anchor);
72339					}
72340				} else if (if_block) {
72341					group_outros();
72342
72343					transition_out(if_block, 1, 1, () => {
72344						if_block = null;
72345					});
72346
72347					check_outros();
72348				}
72349			},
72350			i(local) {
72351				if (current) return;
72352				transition_in(if_block);
72353				current = true;
72354			},
72355			o(local) {
72356				transition_out(if_block);
72357				current = false;
72358			},
72359			d(detaching) {
72360				if (detaching) {
72361					detach(if_block_anchor);
72362				}
72363
72364				if (if_block) if_block.d(detaching);
72365			}
72366		};
72367	}
72368
72369	// (79:6) {#if billingHistoryLink}
72370	function create_if_block_7(ctx) {
72371		let tablink;
72372		let current;
72373
72374		tablink = new Tablink({
72375				props: {
72376					text: /*billingHistoryLink*/ ctx[16],
72377					onClick: /*func*/ ctx[21]
72378				}
72379			});
72380
72381		return {
72382			c() {
72383				create_component(tablink.$$.fragment);
72384			},
72385			m(target, anchor) {
72386				mount_component(tablink, target, anchor);
72387				current = true;
72388			},
72389			p(ctx, dirty) {
72390				const tablink_changes = {};
72391				if (dirty & /*billingHistoryLink*/ 65536) tablink_changes.text = /*billingHistoryLink*/ ctx[16];
72392				if (dirty & /*onViewHistory, gift*/ 131073) tablink_changes.onClick = /*func*/ ctx[21];
72393				tablink.$set(tablink_changes);
72394			},
72395			i(local) {
72396				if (current) return;
72397				transition_in(tablink.$$.fragment, local);
72398				current = true;
72399			},
72400			o(local) {
72401				transition_out(tablink.$$.fragment, local);
72402				current = false;
72403			},
72404			d(detaching) {
72405				destroy_component(tablink, detaching);
72406			}
72407		};
72408	}
72409
72410	// (83:4) {#if element === 'change_payment' && !elementsHide.changePayment && gift.status === "PENDING"}
72411	function create_if_block_4$2(ctx) {
72412		let if_block_anchor;
72413		let current;
72414		let if_block = /*changePaymentMethodText*/ ctx[9] && create_if_block_5$2(ctx);
72415
72416		return {
72417			c() {
72418				if (if_block) if_block.c();
72419				if_block_anchor = empty();
72420			},
72421			m(target, anchor) {
72422				if (if_block) if_block.m(target, anchor);
72423				insert(target, if_block_anchor, anchor);
72424				current = true;
72425			},
72426			p(ctx, dirty) {
72427				if (/*changePaymentMethodText*/ ctx[9]) {
72428					if (if_block) {
72429						if_block.p(ctx, dirty);
72430
72431						if (dirty & /*changePaymentMethodText*/ 512) {
72432							transition_in(if_block, 1);
72433						}
72434					} else {
72435						if_block = create_if_block_5$2(ctx);
72436						if_block.c();
72437						transition_in(if_block, 1);
72438						if_block.m(if_block_anchor.parentNode, if_block_anchor);
72439					}
72440				} else if (if_block) {
72441					group_outros();
72442
72443					transition_out(if_block, 1, 1, () => {
72444						if_block = null;
72445					});
72446
72447					check_outros();
72448				}
72449			},
72450			i(local) {
72451				if (current) return;
72452				transition_in(if_block);
72453				current = true;
72454			},
72455			o(local) {
72456				transition_out(if_block);
72457				current = false;
72458			},
72459			d(detaching) {
72460				if (detaching) {
72461					detach(if_block_anchor);
72462				}
72463
72464				if (if_block) if_block.d(detaching);
72465			}
72466		};
72467	}
72468
72469	// (84:6) {#if changePaymentMethodText}
72470	function create_if_block_5$2(ctx) {
72471		let tablink;
72472		let current;
72473
72474		tablink = new Tablink({
72475				props: {
72476					text: /*changePaymentMethodText*/ ctx[9],
72477					onClick: /*func_1*/ ctx[22]
72478				}
72479			});
72480
72481		return {
72482			c() {
72483				create_component(tablink.$$.fragment);
72484			},
72485			m(target, anchor) {
72486				mount_component(tablink, target, anchor);
72487				current = true;
72488			},
72489			p(ctx, dirty) {
72490				const tablink_changes = {};
72491				if (dirty & /*changePaymentMethodText*/ 512) tablink_changes.text = /*changePaymentMethodText*/ ctx[9];
72492				if (dirty & /*onChangePayment, gift*/ 262145) tablink_changes.onClick = /*func_1*/ ctx[22];
72493				tablink.$set(tablink_changes);
72494			},
72495			i(local) {
72496				if (current) return;
72497				transition_in(tablink.$$.fragment, local);
72498				current = true;
72499			},
72500			o(local) {
72501				transition_out(tablink.$$.fragment, local);
72502				current = false;
72503			},
72504			d(detaching) {
72505				destroy_component(tablink, detaching);
72506			}
72507		};
72508	}
72509
72510	// (88:4) {#if element === 'change_subscription' && !elementsHide.changeSubscription && gift.status === "PENDING"}
72511	function create_if_block_2$5(ctx) {
72512		let if_block_anchor;
72513		let current;
72514		let if_block = /*changeSubscriptionText*/ ctx[10] && create_if_block_3$3(ctx);
72515
72516		return {
72517			c() {
72518				if (if_block) if_block.c();
72519				if_block_anchor = empty();
72520			},
72521			m(target, anchor) {
72522				if (if_block) if_block.m(target, anchor);
72523				insert(target, if_block_anchor, anchor);
72524				current = true;
72525			},
72526			p(ctx, dirty) {
72527				if (/*changeSubscriptionText*/ ctx[10]) {
72528					if (if_block) {
72529						if_block.p(ctx, dirty);
72530
72531						if (dirty & /*changeSubscriptionText*/ 1024) {
72532							transition_in(if_block, 1);
72533						}
72534					} else {
72535						if_block = create_if_block_3$3(ctx);
72536						if_block.c();
72537						transition_in(if_block, 1);
72538						if_block.m(if_block_anchor.parentNode, if_block_anchor);
72539					}
72540				} else if (if_block) {
72541					group_outros();
72542
72543					transition_out(if_block, 1, 1, () => {
72544						if_block = null;
72545					});
72546
72547					check_outros();
72548				}
72549			},
72550			i(local) {
72551				if (current) return;
72552				transition_in(if_block);
72553				current = true;
72554			},
72555			o(local) {
72556				transition_out(if_block);
72557				current = false;
72558			},
72559			d(detaching) {
72560				if (detaching) {
72561					detach(if_block_anchor);
72562				}
72563
72564				if (if_block) if_block.d(detaching);
72565			}
72566		};
72567	}
72568
72569	// (89:6) {#if changeSubscriptionText}
72570	function create_if_block_3$3(ctx) {
72571		let tablink;
72572		let current;
72573
72574		tablink = new Tablink({
72575				props: {
72576					text: /*changeSubscriptionText*/ ctx[10],
72577					path: `${/*changeSubscriptionPath*/ ctx[8]}?subscription=${/*gift*/ ctx[0].externalId}`,
72578					logDlEvent: /*func_2*/ ctx[23]
72579				}
72580			});
72581
72582		return {
72583			c() {
72584				create_component(tablink.$$.fragment);
72585			},
72586			m(target, anchor) {
72587				mount_component(tablink, target, anchor);
72588				current = true;
72589			},
72590			p(ctx, dirty) {
72591				const tablink_changes = {};
72592				if (dirty & /*changeSubscriptionText*/ 1024) tablink_changes.text = /*changeSubscriptionText*/ ctx[10];
72593				if (dirty & /*changeSubscriptionPath, gift*/ 257) tablink_changes.path = `${/*changeSubscriptionPath*/ ctx[8]}?subscription=${/*gift*/ ctx[0].externalId}`;
72594				if (dirty & /*logChangeSubscription, gift*/ 524289) tablink_changes.logDlEvent = /*func_2*/ ctx[23];
72595				tablink.$set(tablink_changes);
72596			},
72597			i(local) {
72598				if (current) return;
72599				transition_in(tablink.$$.fragment, local);
72600				current = true;
72601			},
72602			o(local) {
72603				transition_out(tablink.$$.fragment, local);
72604				current = false;
72605			},
72606			d(detaching) {
72607				destroy_component(tablink, detaching);
72608			}
72609		};
72610	}
72611
72612	// (93:4) {#if element === 'cancel_subscription' && !elementsHide.cancelSubscription && gift.status === "PENDING"}
72613	function create_if_block$8(ctx) {
72614		let if_block_anchor;
72615		let current;
72616		let if_block = /*cancelSubscriptionText*/ ctx[11] && create_if_block_1$7(ctx);
72617
72618		return {
72619			c() {
72620				if (if_block) if_block.c();
72621				if_block_anchor = empty();
72622			},
72623			m(target, anchor) {
72624				if (if_block) if_block.m(target, anchor);
72625				insert(target, if_block_anchor, anchor);
72626				current = true;
72627			},
72628			p(ctx, dirty) {
72629				if (/*cancelSubscriptionText*/ ctx[11]) {
72630					if (if_block) {
72631						if_block.p(ctx, dirty);
72632
72633						if (dirty & /*cancelSubscriptionText*/ 2048) {
72634							transition_in(if_block, 1);
72635						}
72636					} else {
72637						if_block = create_if_block_1$7(ctx);
72638						if_block.c();
72639						transition_in(if_block, 1);
72640						if_block.m(if_block_anchor.parentNode, if_block_anchor);
72641					}
72642				} else if (if_block) {
72643					group_outros();
72644
72645					transition_out(if_block, 1, 1, () => {
72646						if_block = null;
72647					});
72648
72649					check_outros();
72650				}
72651			},
72652			i(local) {
72653				if (current) return;
72654				transition_in(if_block);
72655				current = true;
72656			},
72657			o(local) {
72658				transition_out(if_block);
72659				current = false;
72660			},
72661			d(detaching) {
72662				if (detaching) {
72663					detach(if_block_anchor);
72664				}
72665
72666				if (if_block) if_block.d(detaching);
72667			}
72668		};
72669	}
72670
72671	// (94:6) {#if cancelSubscriptionText}
72672	function create_if_block_1$7(ctx) {
72673		let tablink;
72674		let current;
72675
72676		tablink = new Tablink({
72677				props: {
72678					text: /*cancelSubscriptionText*/ ctx[11],
72679					path: `${/*cancelSubscriptionPath*/ ctx[12]}?subscription=${/*gift*/ ctx[0].externalId}`,
72680					logDlEvent: /*func_3*/ ctx[24]
72681				}
72682			});
72683
72684		return {
72685			c() {
72686				create_component(tablink.$$.fragment);
72687			},
72688			m(target, anchor) {
72689				mount_component(tablink, target, anchor);
72690				current = true;
72691			},
72692			p(ctx, dirty) {
72693				const tablink_changes = {};
72694				if (dirty & /*cancelSubscriptionText*/ 2048) tablink_changes.text = /*cancelSubscriptionText*/ ctx[11];
72695				if (dirty & /*cancelSubscriptionPath, gift*/ 4097) tablink_changes.path = `${/*cancelSubscriptionPath*/ ctx[12]}?subscription=${/*gift*/ ctx[0].externalId}`;
72696				if (dirty & /*logCancelSubscription, gift*/ 1048577) tablink_changes.logDlEvent = /*func_3*/ ctx[24];
72697				tablink.$set(tablink_changes);
72698			},
72699			i(local) {
72700				if (current) return;
72701				transition_in(tablink.$$.fragment, local);
72702				current = true;
72703			},
72704			o(local) {
72705				transition_out(tablink.$$.fragment, local);
72706				current = false;
72707			},
72708			d(detaching) {
72709				destroy_component(tablink, detaching);
72710			}
72711		};
72712	}
72713
72714	// (37:4) {#each elementsOrder as element}
72715	function create_each_block$4(ctx) {
72716		let t0;
72717		let t1;
72718		let t2;
72719		let t3;
72720		let if_block4_anchor;
72721		let current;
72722		let if_block0 = /*element*/ ctx[25] === 'subscription_information' && !/*elementsHide*/ ctx[14].subscriptionInformation && create_if_block_8(ctx);
72723		let if_block1 = /*element*/ ctx[25] === 'billing_history' && !/*elementsHide*/ ctx[14].billingHistory && /*gift*/ ctx[0].status === "PENDING" && create_if_block_6$2(ctx);
72724		let if_block2 = /*element*/ ctx[25] === 'change_payment' && !/*elementsHide*/ ctx[14].changePayment && /*gift*/ ctx[0].status === "PENDING" && create_if_block_4$2(ctx);
72725		let if_block3 = /*element*/ ctx[25] === 'change_subscription' && !/*elementsHide*/ ctx[14].changeSubscription && /*gift*/ ctx[0].status === "PENDING" && create_if_block_2$5(ctx);
72726		let if_block4 = /*element*/ ctx[25] === 'cancel_subscription' && !/*elementsHide*/ ctx[14].cancelSubscription && /*gift*/ ctx[0].status === "PENDING" && create_if_block$8(ctx);
72727
72728		return {
72729			c() {
72730				if (if_block0) if_block0.c();
72731				t0 = space();
72732				if (if_block1) if_block1.c();
72733				t1 = space();
72734				if (if_block2) if_block2.c();
72735				t2 = space();
72736				if (if_block3) if_block3.c();
72737				t3 = space();
72738				if (if_block4) if_block4.c();
72739				if_block4_anchor = empty();
72740			},
72741			m(target, anchor) {
72742				if (if_block0) if_block0.m(target, anchor);
72743				insert(target, t0, anchor);
72744				if (if_block1) if_block1.m(target, anchor);
72745				insert(target, t1, anchor);
72746				if (if_block2) if_block2.m(target, anchor);
72747				insert(target, t2, anchor);
72748				if (if_block3) if_block3.m(target, anchor);
72749				insert(target, t3, anchor);
72750				if (if_block4) if_block4.m(target, anchor);
72751				insert(target, if_block4_anchor, anchor);
72752				current = true;
72753			},
72754			p(ctx, dirty) {
72755				if (/*element*/ ctx[25] === 'subscription_information' && !/*elementsHide*/ ctx[14].subscriptionInformation) {
72756					if (if_block0) {
72757						if_block0.p(ctx, dirty);
72758					} else {
72759						if_block0 = create_if_block_8(ctx);
72760						if_block0.c();
72761						if_block0.m(t0.parentNode, t0);
72762					}
72763				} else if (if_block0) {
72764					if_block0.d(1);
72765					if_block0 = null;
72766				}
72767
72768				if (/*element*/ ctx[25] === 'billing_history' && !/*elementsHide*/ ctx[14].billingHistory && /*gift*/ ctx[0].status === "PENDING") {
72769					if (if_block1) {
72770						if_block1.p(ctx, dirty);
72771
72772						if (dirty & /*elementsOrder, elementsHide, gift*/ 49153) {
72773							transition_in(if_block1, 1);
72774						}
72775					} else {
72776						if_block1 = create_if_block_6$2(ctx);
72777						if_block1.c();
72778						transition_in(if_block1, 1);
72779						if_block1.m(t1.parentNode, t1);
72780					}
72781				} else if (if_block1) {
72782					group_outros();
72783
72784					transition_out(if_block1, 1, 1, () => {
72785						if_block1 = null;
72786					});
72787
72788					check_outros();
72789				}
72790
72791				if (/*element*/ ctx[25] === 'change_payment' && !/*elementsHide*/ ctx[14].changePayment && /*gift*/ ctx[0].status === "PENDING") {
72792					if (if_block2) {
72793						if_block2.p(ctx, dirty);
72794
72795						if (dirty & /*elementsOrder, elementsHide, gift*/ 49153) {
72796							transition_in(if_block2, 1);
72797						}
72798					} else {
72799						if_block2 = create_if_block_4$2(ctx);
72800						if_block2.c();
72801						transition_in(if_block2, 1);
72802						if_block2.m(t2.parentNode, t2);
72803					}
72804				} else if (if_block2) {
72805					group_outros();
72806
72807					transition_out(if_block2, 1, 1, () => {
72808						if_block2 = null;
72809					});
72810
72811					check_outros();
72812				}
72813
72814				if (/*element*/ ctx[25] === 'change_subscription' && !/*elementsHide*/ ctx[14].changeSubscription && /*gift*/ ctx[0].status === "PENDING") {
72815					if (if_block3) {
72816						if_block3.p(ctx, dirty);
72817
72818						if (dirty & /*elementsOrder, elementsHide, gift*/ 49153) {
72819							transition_in(if_block3, 1);
72820						}
72821					} else {
72822						if_block3 = create_if_block_2$5(ctx);
72823						if_block3.c();
72824						transition_in(if_block3, 1);
72825						if_block3.m(t3.parentNode, t3);
72826					}
72827				} else if (if_block3) {
72828					group_outros();
72829
72830					transition_out(if_block3, 1, 1, () => {
72831						if_block3 = null;
72832					});
72833
72834					check_outros();
72835				}
72836
72837				if (/*element*/ ctx[25] === 'cancel_subscription' && !/*elementsHide*/ ctx[14].cancelSubscription && /*gift*/ ctx[0].status === "PENDING") {
72838					if (if_block4) {
72839						if_block4.p(ctx, dirty);
72840
72841						if (dirty & /*elementsOrder, elementsHide, gift*/ 49153) {
72842							transition_in(if_block4, 1);
72843						}
72844					} else {
72845						if_block4 = create_if_block$8(ctx);
72846						if_block4.c();
72847						transition_in(if_block4, 1);
72848						if_block4.m(if_block4_anchor.parentNode, if_block4_anchor);
72849					}
72850				} else if (if_block4) {
72851					group_outros();
72852
72853					transition_out(if_block4, 1, 1, () => {
72854						if_block4 = null;
72855					});
72856
72857					check_outros();
72858				}
72859			},
72860			i(local) {
72861				if (current) return;
72862				transition_in(if_block1);
72863				transition_in(if_block2);
72864				transition_in(if_block3);
72865				transition_in(if_block4);
72866				current = true;
72867			},
72868			o(local) {
72869				transition_out(if_block1);
72870				transition_out(if_block2);
72871				transition_out(if_block3);
72872				transition_out(if_block4);
72873				current = false;
72874			},
72875			d(detaching) {
72876				if (detaching) {
72877					detach(t0);
72878					detach(t1);
72879					detach(t2);
72880					detach(t3);
72881					detach(if_block4_anchor);
72882				}
72883
72884				if (if_block0) if_block0.d(detaching);
72885				if (if_block1) if_block1.d(detaching);
72886				if (if_block2) if_block2.d(detaching);
72887				if (if_block3) if_block3.d(detaching);
72888				if (if_block4) if_block4.d(detaching);
72889			}
72890		};
72891	}
72892
72893	function create_fragment$b(ctx) {
72894		let div1;
72895		let t;
72896		let div0;
72897		let current;
72898
72899		function select_block_type(ctx, dirty) {
72900			if (/*gift*/ ctx[0].status === 'PENDING') return create_if_block_13;
72901			if (/*gift*/ ctx[0].status === 'REDEEMED') return create_if_block_14;
72902		}
72903
72904		let current_block_type = select_block_type(ctx);
72905		let if_block = current_block_type && current_block_type(ctx);
72906		let each_value = ensure_array_like(/*elementsOrder*/ ctx[15]);
72907		let each_blocks = [];
72908
72909		for (let i = 0; i < each_value.length; i += 1) {
72910			each_blocks[i] = create_each_block$4(get_each_context$4(ctx, each_value, i));
72911		}
72912
72913		const out = i => transition_out(each_blocks[i], 1, 1, () => {
72914			each_blocks[i] = null;
72915		});
72916
72917		return {
72918			c() {
72919				div1 = element("div");
72920				if (if_block) if_block.c();
72921				t = space();
72922				div0 = element("div");
72923
72924				for (let i = 0; i < each_blocks.length; i += 1) {
72925					each_blocks[i].c();
72926				}
72927
72928				attr(div0, "class", "zephr-inner-box svelte-srvimy");
72929				attr(div1, "class", "zephr-gift-list-box-item svelte-srvimy");
72930			},
72931			m(target, anchor) {
72932				insert(target, div1, anchor);
72933				if (if_block) if_block.m(div1, null);
72934				append(div1, t);
72935				append(div1, div0);
72936
72937				for (let i = 0; i < each_blocks.length; i += 1) {
72938					if (each_blocks[i]) {
72939						each_blocks[i].m(div0, null);
72940					}
72941				}
72942
72943				current = true;
72944			},
72945			p(ctx, [dirty]) {
72946				if (current_block_type === (current_block_type = select_block_type(ctx)) && if_block) {
72947					if_block.p(ctx, dirty);
72948				} else {
72949					if (if_block) if_block.d(1);
72950					if_block = current_block_type && current_block_type(ctx);
72951
72952					if (if_block) {
72953						if_block.c();
72954						if_block.m(div1, t);
72955					}
72956				}
72957
72958				if (dirty & /*cancelSubscriptionText, cancelSubscriptionPath, gift, logCancelSubscription, elementsOrder, elementsHide, changeSubscriptionText, changeSubscriptionPath, logChangeSubscription, changePaymentMethodText, onChangePayment, billingHistoryLink, onViewHistory, endDateText, startDateText, subscriptionTypeText, activeStatusText, pendingStatusText, giftRecipientText*/ 2097103) {
72959					each_value = ensure_array_like(/*elementsOrder*/ ctx[15]);
72960					let i;
72961
72962					for (i = 0; i < each_value.length; i += 1) {
72963						const child_ctx = get_each_context$4(ctx, each_value, i);
72964
72965						if (each_blocks[i]) {
72966							each_blocks[i].p(child_ctx, dirty);
72967							transition_in(each_blocks[i], 1);
72968						} else {
72969							each_blocks[i] = create_each_block$4(child_ctx);
72970							each_blocks[i].c();
72971							transition_in(each_blocks[i], 1);
72972							each_blocks[i].m(div0, null);
72973						}
72974					}
72975
72976					group_outros();
72977
72978					for (i = each_value.length; i < each_blocks.length; i += 1) {
72979						out(i);
72980					}
72981
72982					check_outros();
72983				}
72984			},
72985			i(local) {
72986				if (current) return;
72987
72988				for (let i = 0; i < each_value.length; i += 1) {
72989					transition_in(each_blocks[i]);
72990				}
72991
72992				current = true;
72993			},
72994			o(local) {
72995				each_blocks = each_blocks.filter(Boolean);
72996
72997				for (let i = 0; i < each_blocks.length; i += 1) {
72998					transition_out(each_blocks[i]);
72999				}
73000
73001				current = false;
73002			},
73003			d(detaching) {
73004				if (detaching) {
73005					detach(div1);
73006				}
73007
73008				if (if_block) {
73009					if_block.d();
73010				}
73011
73012				destroy_each(each_blocks, detaching);
73013			}
73014		};
73015	}
73016
73017	function instance$b($$self, $$props, $$invalidate) {
73018		let { gift } = $$props;
73019		let { giftRecipientText } = $$props;
73020		let { startDateText } = $$props;
73021		let { endDateText } = $$props;
73022		let { pendingBannerText } = $$props;
73023		let { redeemedBannerText } = $$props;
73024		let { activeStatusText } = $$props;
73025		let { pendingStatusText } = $$props;
73026		let { changeSubscriptionPath } = $$props;
73027		let { changePaymentMethodText } = $$props;
73028		let { changeSubscriptionText } = $$props;
73029		let { cancelSubscriptionText } = $$props;
73030		let { cancelSubscriptionPath } = $$props;
73031		let { subscriptionTypeText } = $$props;
73032		let { elementsHide } = $$props;
73033		let { elementsOrder = [] } = $$props;
73034		let { billingHistoryLink } = $$props;
73035		let { onViewHistory } = $$props;
73036		let { onChangePayment } = $$props;
73037		let { logChangeSubscription } = $$props;
73038		let { logCancelSubscription } = $$props;
73039		const func = () => onViewHistory(gift);
73040		const func_1 = () => onChangePayment(gift);
73041		const func_2 = () => logChangeSubscription(gift);
73042		const func_3 = () => logCancelSubscription(gift);
73043
73044		$$self.$$set = $$props => {
73045			if ('gift' in $$props) $$invalidate(0, gift = $$props.gift);
73046			if ('giftRecipientText' in $$props) $$invalidate(1, giftRecipientText = $$props.giftRecipientText);
73047			if ('startDateText' in $$props) $$invalidate(2, startDateText = $$props.startDateText);
73048			if ('endDateText' in $$props) $$invalidate(3, endDateText = $$props.endDateText);
73049			if ('pendingBannerText' in $$props) $$invalidate(4, pendingBannerText = $$props.pendingBannerText);
73050			if ('redeemedBannerText' in $$props) $$invalidate(5, redeemedBannerText = $$props.redeemedBannerText);
73051			if ('activeStatusText' in $$props) $$invalidate(6, activeStatusText = $$props.activeStatusText);
73052			if ('pendingStatusText' in $$props) $$invalidate(7, pendingStatusText = $$props.pendingStatusText);
73053			if ('changeSubscriptionPath' in $$props) $$invalidate(8, changeSubscriptionPath = $$props.changeSubscriptionPath);
73054			if ('changePaymentMethodText' in $$props) $$invalidate(9, changePaymentMethodText = $$props.changePaymentMethodText);
73055			if ('changeSubscriptionText' in $$props) $$invali
73055date(10, changeSubscriptionText = $$props.changeSubscriptionText);
73056			if ('cancelSubscriptionText' in $$props) $$invalidate(11, cancelSubscriptionText = $$props.cancelSubscriptionText);
73057			if ('cancelSubscriptionPath' in $$props) $$invalidate(12, cancelSubscriptionPath = $$props.cancelSubscriptionPath);
73058			if ('subscriptionTypeText' in $$props) $$invalidate(13, subscriptionTypeText = $$props.subscriptionTypeText);
73059			if ('elementsHide' in $$props) $$invalidate(14, elementsHide = $$props.elementsHide);
73060			if ('elementsOrder' in $$props) $$invalidate(15, elementsOrder = $$props.elementsOrder);
73061			if ('billingHistoryLink' in $$props) $$invalidate(16, billingHistoryLink = $$props.billingHistoryLink);
73062			if ('onViewHistory' in $$props) $$invalidate(17, onViewHistory = $$props.onViewHistory);
73063			if ('onChangePayment' in $$props) $$invalidate(18, onChangePayment = $$props.onChangePayment);
73064			if ('logChangeSubscription' in $$props) $$invalidate(19, logChangeSubscription = $$props.logChangeSubscription);
73065			if ('logCancelSubscription' in $$props) $$invali
73065date(20, logCancelSubscription = $$props.logCancelSubscription);
73066		};
73067
73068		return [
73069			gift,
73070			giftRecipientText,
73071			startDateText,
73072			endDateText,
73073			pendingBannerText,
73074			redeemedBannerText,
73075			activeStatusText,
73076			pendingStatusText,
73077			changeSubscriptionPath,
73078			changePaymentMethodText,
73079			changeSubscriptionText,
73080			cancelSubscriptionText,
73081			cancelSubscriptionPath,
73082			subscriptionTypeText,
73083			elementsHide,
73084			elementsOrder,
73085			billingHistoryLink,
73086			onViewHistory,
73087			onChangePayment,
73088			logChangeSubscription,
73089			logCancelSubscription,
73090			func,
73091			func_1,
73092			func_2,
73093			func_3
73094		];
73095	}
73096
73097	class GiftSubscriptionsListBoxItem extends SvelteComponent {
73098		constructor(options) {
73099			super();
73100
73101			init(this, options, instance$b, create_fragment$b, safe_not_equal, {
73102				gift: 0,
73103				giftRecipientText: 1,
73104				startDateText: 2,
73105				endDateText: 3,
73106				pendingBannerText: 4,
73107				redeemedBannerText: 5,
73108				activeStatusText: 6,
73109				pendingStatusText: 7,
73110				changeSubscriptionPath: 8,
73111				changePaymentMethodText: 9,
73112				changeSubscriptionText: 10,
73113				cancelSubscriptionText: 11,
73114				cancelSubscriptionPath: 12,
73115				subscriptionTypeText: 13,
73116				elementsHide: 14,
73117				elementsOrder: 15,
73118				billingHistoryLink: 16,
73119				onViewHistory: 17,
73120				onChangePayment: 18,
73121				logChangeSubscription: 19,
73122				logCancelSubscription: 20
73123			});
73124		}
73125	}
73126
73127	/* src/components/elements/giftSubscriptionsList/GiftSubscriptionsList.svelte generated by Svelte v4.2.12 */
73128
73129	function get_each_context$3(ctx, list, i) {
73130		const child_ctx = ctx.slice();
73131		child_ctx[24] = list[i];
73132		return child_ctx;
73133	}
73134
73135	// (36:2) {#if loading}
73136	function create_if_block_2$4(ctx) {
73137		let spinner;
73138		let current;
73139		spinner = new Spinner({});
73140
73141		return {
73142			c() {
73143				create_component(spinner.$$.fragment);
73144			},
73145			m(target, anchor) {
73146				mount_component(spinner, target, anchor);
73147				current = true;
73148			},
73149			i(local) {
73150				if (current) return;
73151				transition_in(spinner.$$.fragment, local);
73152				current = true;
73153			},
73154			o(local) {
73155				transition_out(spinner.$$.fragment, local);
73156				current = false;
73157			},
73158			d(detaching) {
73159				destroy_component(spinner, detaching);
73160			}
73161		};
73162	}
73163
73164	// (40:2) {#if !loading && !gifts.length}
73165	function create_if_block_1$6(ctx) {
73166		let div;
73167		let raw_value = (/*noSubscriptionsMessage*/ ctx[1] || /*emptyMessage*/ ctx[0]) + "";
73168
73169		return {
73170			c() {
73171				div = element("div");
73172			},
73173			m(target, anchor) {
73174				insert(target, div, anchor);
73175				div.innerHTML = raw_value;
73176			},
73177			p(ctx, dirty) {
73178				if (dirty & /*noSubscriptionsMessage, emptyMessage*/ 3 && raw_value !== (raw_value = (/*noSubscriptionsMessage*/ ctx[1] || /*emptyMessage*/ ctx[0]) + "")) div.innerHTML = raw_value;		},
73179			d(detaching) {
73180				if (detaching) {
73181					detach(div);
73182				}
73183			}
73184		};
73185	}
73186
73187	// (46:2) {#if !loading && gifts.length > 0}
73188	function create_if_block$7(ctx) {
73189		let each_1_anchor;
73190		let current;
73191		let each_value = ensure_array_like(/*gifts*/ ctx[3]);
73192		let each_blocks = [];
73193
73194		for (let i = 0; i < each_value.length; i += 1) {
73195			each_blocks[i] = create_each_block$3(get_each_context$3(ctx, each_value, i));
73196		}
73197
73198		const out = i => transition_out(each_blocks[i], 1, 1, () => {
73199			each_blocks[i] = null;
73200		});
73201
73202		return {
73203			c() {
73204				for (let i = 0; i < each_blocks.length; i += 1) {
73205					each_blocks[i].c();
73206				}
73207
73208				each_1_anchor = empty();
73209			},
73210			m(target, anchor) {
73211				for (let i = 0; i < each_blocks.length; i += 1) {
73212					if (each_blocks[i]) {
73213						each_blocks[i].m(target, anchor);
73214					}
73215				}
73216
73217				insert(target, each_1_anchor, anchor);
73218				current = true;
73219			},
73220			p(ctx, dirty) {
73221				if (dirty & /*gifts, giftRecipientText, startDateText, endDateText, pendingBannerText, redeemedBannerText, activeStatusText, pendingStatusText, onChangePayment, logChangeSubscription, logCancelSubscription, onViewHistory, changePaymentMethodText, changeSubscriptionText, cancelSubscriptionText, changeSubscriptionPath, cancelSubscriptionPath, elementsHide, subscriptionTypeText, elementsOrder, billingHistoryLink*/ 16777208) {
73222					each_value = ensure_array_like(/*gifts*/ ctx[3]);
73223					let i;
73224
73225					for (i = 0; i < each_value.length; i += 1) {
73226						const child_ctx = get_each_context$3(ctx, each_value, i);
73227
73228						if (each_blocks[i]) {
73229							each_blocks[i].p(child_ctx, dirty);
73230							transition_in(each_blocks[i], 1);
73231						} else {
73232							each_blocks[i] = create_each_block$3(child_ctx);
73233							each_blocks[i].c();
73234							transition_in(each_blocks[i], 1);
73235							each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor);
73236						}
73237					}
73238
73239					group_outros();
73240
73241					for (i = each_value.length; i < each_blocks.length; i += 1) {
73242						out(i);
73243					}
73244
73245					check_outros();
73246				}
73247			},
73248			i(local) {
73249				if (current) return;
73250
73251				for (let i = 0; i < each_value.length; i += 1) {
73252					transition_in(each_blocks[i]);
73253				}
73254
73255				current = true;
73256			},
73257			o(local) {
73258				each_blocks = each_blocks.filter(Boolean);
73259
73260				for (let i = 0; i < each_blocks.length; i += 1) {
73261					transition_out(each_blocks[i]);
73262				}
73263
73264				current = false;
73265			},
73266			d(detaching) {
73267				if (detaching) {
73268					detach(each_1_anchor);
73269				}
73270
73271				destroy_each(each_blocks, detaching);
73272			}
73273		};
73274	}
73275
73276	// (47:4) {#each gifts as gift}
73277	function create_each_block$3(ctx) {
73278		let giftsubscriptionslistboxitem;
73279		let current;
73280
73281		giftsubscriptionslistboxitem = new GiftSubscriptionsListBoxItem({
73282				props: {
73283					gift: /*gift*/ ctx[24],
73284					giftRecipientText: /*giftRecipientText*/ ctx[14],
73285					startDateText: /*startDateText*/ ctx[15],
73286					endDateText: /*endDateText*/ ctx[16],
73287					pendingBannerText: /*pendingBannerText*/ ctx[18],
73288					redeemedBannerText: /*redeemedBannerText*/ ctx[19],
73289					activeStatusText: /*activeStatusText*/ ctx[20],
73290					pendingStatusText: /*pendingStatusText*/ ctx[21],
73291					onChangePayment: /*onChangePayment*/ ctx[6],
73292					logChangeSubscription: /*logChangeSubscription*/ ctx[7],
73293					logCancelSubscription: /*logCancelSubscription*/ ctx[8],
73294					onViewHistory: /*onViewHistory*/ ctx[9],
73295					changePaymentMethodText: /*changePaymentMethodText*/ ctx[10],
73296					changeSubscriptionText: /*changeSubscriptionText*/ ctx[11],
73297					cancelSubscriptionText: /*cancelSubscriptionText*/ ctx[12],
73298					changeSubscriptionPath: /*changeSubscriptionPath*/ ctx[5],
73299					cancelSubscriptionPath: /*cancelSubscriptionPath*/ ctx[4],
73300					elementsHide: /*elementsHide*/ ctx[23],
73301					subscriptionTypeText: /*subscriptionTypeText*/ ctx[17],
73302					elementsOrder: /*elementsOrder*/ ctx[22],
73303					billingHistoryLink: /*billingHistoryLink*/ ctx[13]
73304				}
73305			});
73306
73307		return {
73308			c() {
73309				create_component(giftsubscriptionslistboxitem.$$.fragment);
73310			},
73311			m(target, anchor) {
73312				mount_component(giftsubscriptionslistboxitem, target, anchor);
73313				current = true;
73314			},
73315			p(ctx, dirty) {
73316				const giftsubscriptionslistboxitem_changes = {};
73317				if (dirty & /*gifts*/ 8) giftsubscriptionslistboxitem_changes.gift = /*gift*/ ctx[24];
73318				if (dirty & /*giftRecipientText*/ 16384) giftsubscriptionslistboxitem_changes.giftRecipientText = /*giftRecipientText*/ ctx[14];
73319				if (dirty & /*startDateText*/ 32768) giftsubscriptionslistboxitem_changes.startDateText = /*startDateText*/ ctx[15];
73320				if (dirty & /*endDateText*/ 65536) giftsubscriptionslistboxitem_changes.endDateText = /*endDateText*/ ctx[16];
73321				if (dirty & /*pendingBannerText*/ 262144) giftsubscriptionslistboxitem_changes.pendingBannerText = /*pendingBannerText*/ ctx[18];
73322				if (dirty & /*redeemedBannerText*/ 524288) giftsubscriptionslistboxitem_changes.redeemedBannerText = /*redeemedBannerText*/ ctx[19];
73323				if (dirty & /*activeStatusText*/ 1048576) giftsubscriptionslistboxitem_changes.activeStatusText = /*activeStatusText*/ ctx[20];
73324				if (dirty & /*pendingStatusText*/ 2097152) giftsubscriptionslistboxitem_changes.pendingStatusText = /*pendingStatusText*/ ctx[21];
73325				if (dirty & /*onChangePayment*/ 64) giftsubscriptionslistboxitem_changes.onChangePayment = /*onChangePayment*/ ctx[6];
73326				if (dirty & /*logChangeSubscription*/ 128) giftsubscriptionslistboxitem_changes.logChangeSubscription = /*logChangeSubscription*/ ctx[7];
73327				if (dirty & /*logCancelSubscription*/ 256) giftsubscriptionslistboxitem_changes.logCancelSubscription = /*logCancelSubscription*/ ctx[8];
73328				if (dirty & /*onViewHistory*/ 512) giftsubscriptionslistboxitem_changes.onViewHistory = /*onViewHistory*/ ctx[9];
73329				if (dirty & /*changePaymentMethodText*/ 1024) giftsubscriptionslistboxitem_changes.changePaymentMethodText = /*changePaymentMethodText*/ ctx[10];
73330				if (dirty & /*changeSubscriptionText*/ 2048) giftsubscriptionslistboxitem_changes.changeSubscriptionText = /*changeSubscriptionText*/ ctx[11];
73331				if (dirty & /*cancelSubscriptionText*/ 4096) giftsubscriptionslistboxitem_changes.cancelSubscriptionText = /*cancelSubscriptionText*/ ctx[12];
73332				if (dirty & /*changeSubscriptionPath*/ 32) giftsubscriptionslistboxitem_changes.changeSubscriptionPath = /*changeSubscriptionPath*/ ctx[5];
73333				if (dirty & /*cancelSubscriptionPath*/ 16) giftsubscriptionslistboxitem_changes.cancelSubscriptionPath = /*cancelSubscriptionPath*/ ctx[4];
73334				if (dirty & /*elementsHide*/ 8388608) giftsubscriptionslistboxitem_changes.elementsHide = /*elementsHide*/ ctx[23];
73335				if (dirty & /*subscriptionTypeText*/ 131072) giftsubscriptionslistboxitem_changes.subscriptionTypeText = /*subscriptionTypeText*/ ctx[17];
73336				if (dirty & /*elementsOrder*/ 4194304) giftsubscriptionslistboxitem_changes.elementsOrder = /*elementsOrder*/ ctx[22];
73337				if (dirty & /*billingHistoryLink*/ 8192) giftsubscriptionslistboxitem_changes.billingHistoryLink = /*billingHistoryLink*/ ctx[13];
73338				giftsubscriptionslistboxitem.$set(giftsubscriptionslistboxitem_changes);
73339			},
73340			i(local) {
73341				if (current) return;
73342				transition_in(giftsubscriptionslistboxitem.$$.fragment, local);
73343				current = true;
73344			},
73345			o(local) {
73346				transition_out(giftsubscriptionslistboxitem.$$.fragment, local);
73347				current = false;
73348			},
73349			d(detaching) {
73350				destroy_component(giftsubscriptionslistboxitem, detaching);
73351			}
73352		};
73353	}
73354
73355	function create_fragment$a(ctx) {
73356		let div;
73357		let t0;
73358		let t1;
73359		let current;
73360		let if_block0 = /*loading*/ ctx[2] && create_if_block_2$4();
73361		let if_block1 = !/*loading*/ ctx[2] && !/*gifts*/ ctx[3].length && create_if_block_1$6(ctx);
73362		let if_block2 = !/*loading*/ ctx[2] && /*gifts*/ ctx[3].length > 0 && create_if_block$7(ctx);
73363
73364		return {
73365			c() {
73366				div = element("div");
73367				if (if_block0) if_block0.c();
73368				t0 = space();
73369				if (if_block1) if_block1.c();
73370				t1 = space();
73371				if (if_block2) if_block2.c();
73372				attr(div, "class", "subscriptions-list-container svelte-ldb1rq");
73373			},
73374			m(target, anchor) {
73375				insert(target, div, anchor);
73376				if (if_block0) if_block0.m(div, null);
73377				append(div, t0);
73378				if (if_block1) if_block1.m(div, null);
73379				append(div, t1);
73380				if (if_block2) if_block2.m(div, null);
73381				current = true;
73382			},
73383			p(ctx, [dirty]) {
73384				if (/*loading*/ ctx[2]) {
73385					if (if_block0) {
73386						if (dirty & /*loading*/ 4) {
73387							transition_in(if_block0, 1);
73388						}
73389					} else {
73390						if_block0 = create_if_block_2$4();
73391						if_block0.c();
73392						transition_in(if_block0, 1);
73393						if_block0.m(div, t0);
73394					}
73395				} else if (if_block0) {
73396					group_outros();
73397
73398					transition_out(if_block0, 1, 1, () => {
73399						if_block0 = null;
73400					});
73401
73402					check_outros();
73403				}
73404
73405				if (!/*loading*/ ctx[2] && !/*gifts*/ ctx[3].length) {
73406					if (if_block1) {
73407						if_block1.p(ctx, dirty);
73408					} else {
73409						if_block1 = create_if_block_1$6(ctx);
73410						if_block1.c();
73411						if_block1.m(div, t1);
73412					}
73413				} else if (if_block1) {
73414					if_block1.d(1);
73415					if_block1 = null;
73416				}
73417
73418				if (!/*loading*/ ctx[2] && /*gifts*/ ctx[3].length > 0) {
73419					if (if_block2) {
73420						if_block2.p(ctx, dirty);
73421
73422						if (dirty & /*loading, gifts*/ 12) {
73423							transition_in(if_block2, 1);
73424						}
73425					} else {
73426						if_block2 = create_if_block$7(ctx);
73427						if_block2.c();
73428						transition_in(if_block2, 1);
73429						if_block2.m(div, null);
73430					}
73431				} else if (if_block2) {
73432					group_outros();
73433
73434					transition_out(if_block2, 1, 1, () => {
73435						if_block2 = null;
73436					});
73437
73438					check_outros();
73439				}
73440			},
73441			i(local) {
73442				if (current) return;
73443				transition_in(if_block0);
73444				transition_in(if_block2);
73445				current = true;
73446			},
73447			o(local) {
73448				transition_out(if_block0);
73449				transition_out(if_block2);
73450				current = false;
73451			},
73452			d(detaching) {
73453				if (detaching) {
73454					detach(div);
73455				}
73456
73457				if (if_block0) if_block0.d();
73458				if (if_block1) if_block1.d();
73459				if (if_block2) if_block2.d();
73460			}
73461		};
73462	}
73463
73464	function instance$a($$self, $$props, $$invalidate) {
73465		let { emptyMessage } = $$props;
73466		let { noSubscriptionsMessage } = $$props;
73467		let { loading } = $$props;
73468		let { gifts = [] } = $$props;
73469		let { cancelSubscriptionPath } = $$props;
73470		let { changeSubscriptionPath } = $$props;
73471		let { onChangePayment } = $$props;
73472		let { logChangeSubscription } = $$props;
73473		let { logCancelSubscription } = $$props;
73474		let { onViewHistory } = $$props;
73475		let { changePaymentMethodText } = $$props;
73476		let { changeSubscriptionText } = $$props;
73477		let { cancelSubscriptionText } = $$props;
73478		let { billingHistoryLink } = $$props;
73479		let { giftRecipientText } = $$props;
73480		let { startDateText } = $$props;
73481		let { endDateText } = $$props;
73482		let { subscriptionTypeText } = $$props;
73483		let { pendingBannerText } = $$props;
73484		let { redeemedBannerText } = $$props;
73485		let { activeStatusText } = $$props;
73486		let { pendingStatusText } = $$props;
73487		let { elementsOrder = [] } = $$props;
73488
73489		let { elementsHide = {
73490			subscriptionInformation: undefined,
73491			changePayment: undefined,
73492			changeSubscription: undefined,
73493			cancelSubscription: undefined,
73494			billingHistory: undefined
73495		} } = $$props;
73496
73497		$$self.$$set = $$props => {
73498			if ('emptyMessage' in $$props) $$invalidate(0, emptyMessage = $$props.emptyMessage);
73499			if ('noSubscriptionsMessage' in $$props) $$invalidate(1, noSubscriptionsMessage = $$props.noSubscriptionsMessage);
73500			if ('loading' in $$props) $$invalidate(2, loading = $$props.loading);
73501			if ('gifts' in $$props) $$invalidate(3, gifts = $$props.gifts);
73502			if ('cancelSubscriptionPath' in $$props) $$invalidate(4, cancelSubscriptionPath = $$props.cancelSubscriptionPath);
73503			if ('changeSubscriptionPath' in $$props) $$invalidate(5, changeSubscriptionPath = $$props.changeSubscriptionPath);
73504			if ('onChangePayment' in $$props) $$invalidate(6, onChangePayment = $$props.onChangePayment);
73505			if ('logChangeSubscription' in $$props) $$invalidate(7, logChangeSubscription = $$props.logChangeSubscription);
73506			if ('logCancelSubscription' in $$props) $$invalidate(8, logCancelSubscription = $$props.logCancelSubscription);
73507			if ('onViewHistory' in $$props) $$invalidate(9, onViewHistory = $$props.onViewHistory);
73508			if ('changePaymentMethodText' in $$props) $$invali
73508date(10, changePaymentMethodText = $$props.changePaymentMethodText);
73509			if ('changeSubscriptionText' in $$props) $$invalidate(11, changeSubscriptionText = $$props.changeSubscriptionText);
73510			if ('cancelSubscriptionText' in $$props) $$invalidate(12, cancelSubscriptionText = $$props.cancelSubscriptionText);
73511			if ('billingHistoryLink' in $$props) $$invalidate(13, billingHistoryLink = $$props.billingHistoryLink);
73512			if ('giftRecipientText' in $$props) $$invalidate(14, giftRecipientText = $$props.giftRecipientText);
73513			if ('startDateText' in $$props) $$invalidate(15, startDateText = $$props.startDateText);
73514			if ('endDateText' in $$props) $$invalidate(16, endDateText = $$props.endDateText);
73515			if ('subscriptionTypeText' in $$props) $$invalidate(17, subscriptionTypeText = $$props.subscriptionTypeText);
73516			if ('pendingBannerText' in $$props) $$invalidate(18, pendingBannerText = $$props.pendingBannerText);
73517			if ('redeemedBannerText' in $$props) $$invalidate(19, redeemedBannerText = $$props.redeemedBannerText);
73518			if ('activeStatusText' in $$props) $$invali
73518date(20, activeStatusText = $$props.activeStatusText);
73519			if ('pendingStatusText' in $$props) $$invalidate(21, pendingStatusText = $$props.pendingStatusText);
73520			if ('elementsOrder' in $$props) $$invalidate(22, elementsOrder = $$props.elementsOrder);
73521			if ('elementsHide' in $$props) $$invalidate(23, elementsHide = $$props.elementsHide);
73522		};
73523
73524		return [
73525			emptyMessage,
73526			noSubscriptionsMessage,
73527			loading,
73528			gifts,
73529			cancelSubscriptionPath,
73530			changeSubscriptionPath,
73531			onChangePayment,
73532			logChangeSubscription,
73533			logCancelSubscription,
73534			onViewHistory,
73535			changePaymentMethodText,
73536			changeSubscriptionText,
73537			cancelSubscriptionText,
73538			billingHistoryLink,
73539			giftRecipientText,
73540			startDateText,
73541			endDateText,
73542			subscriptionTypeText,
73543			pendingBannerText,
73544			redeemedBannerText,
73545			activeStatusText,
73546			pendingStatusText,
73547			elementsOrder,
73548			elementsHide
73549		];
73550	}
73551
73552	class GiftSubscriptionsList extends SvelteComponent {
73553		constructor(options) {
73554			super();
73555
73556			init(this, options, instance$a, create_fragment$a, safe_not_equal, {
73557				emptyMessage: 0,
73558				noSubscriptionsMessage: 1,
73559				loading: 2,
73560				gifts: 3,
73561				cancelSubscriptionPath: 4,
73562				changeSubscriptionPath: 5,
73563				onChangePayment: 6,
73564				logChangeSubscription: 7,
73565				logCancelSubscription: 8,
73566				onViewHistory: 9,
73567				changePaymentMethodText: 10,
73568				changeSubscriptionText: 11,
73569				cancelSubscriptionText: 12,
73570				billingHistoryLink: 13,
73571				giftRecipientText: 14,
73572				startDateText: 15,
73573				endDateText: 16,
73574				subscriptionTypeText: 17,
73575				pendingBannerText: 18,
73576				redeemedBannerText: 19,
73577				activeStatusText: 20,
73578				pendingStatusText: 21,
73579				elementsOrder: 22,
73580				elementsHide: 23
73581			});
73582		}
73583	}
73584
73585	const giftSubscriptionsListFactory = {
73586	    matches: (sectionElement, _form, _currentPart, _currentSection) => sectionElement.type === elementTypes.GIFT_SUBSCRIPTIONS_LIST,
73587	    create: (form, formState, formActions, elementConfig) => {
73588	        // Get all gift subscriptions from form state 
73589	        const giftSubscriptions = formState.giftSubscriptions || [];
73590	        // filter to only show sent gifts (where user is purchaser)
73591	        const activeGifts = giftSubscriptions.filter(gift => gift.is_purchaser === true);
73592	        const logEditSubscription = (gift) => {
73593	            logDataLayerEvent(form, 'zephr_form_subscription_change_clicked', {
73594	                productId: gift.subscription_type || 'gift',
73595	                planId: gift.subscription_number || gift.gift_code || ''
73596	            });
73597	        };
73598	        const logCancelSubscription = (gift) => {
73599	            logDataLayerEvent(form, 'zephr_form_cancel_subscription_clicked', {
73600	                productId: gift.subscription_type || 'gift',
73601	                planId: gift.subscription_number || gift.gift_code || ''
73602	            });
73603	        };
73604	        // Create elements hide object to match SubscriptionElementsHide
73605	        const elementsHide = {
73606	            subscriptionInformation: elementConfig?.hideSubscriptionInformation,
73607	            changePayment: elementConfig?.hideChangePayment,
73608	            changeSubscription: elementConfig?.hideChangeSubscription,
73609	            cancelSubscription: elementConfig?.hideCancelSubscription,
73610	            suspendResumeSubscription: elementConfig?.hideSuspendResumeSubscription,
73611	            billingHistory: elementConfig?.hideBillingHistory,
73612	            subscriptionCustomFields: elementConfig?.hideSubscriptionCustomFields,
73613	            updateBillToContact: elementConfig?.hideUpdateBillToContact
73614	        };
73615	        const cancelSubscriptionPath = elementConfig.cancelSubscriptionPath || '';
73616	        const changePaymentPath = ''; // Default empty string if not available in config
73617	        return {
73618	            component: GiftSubscriptionsList,
73619	            props: {
73620	                isPastSubscriptions: elementConfig.isPastSubscriptions,
73621	                billingHistoryText: elementConfig.billingHistoryText,
73622	                billingHistoryLink: elementConfig.billingHistoryLink,
73623	                changeSubscriptionPath: elementConfig.changeSubscriptionPath,
73624	                noSubscriptionsMessage: elementConfig.noSubscriptionsMessage || elementConfig.emptyMessage,
73625	                emptyMessage: elementConfig.emptyMessage,
73626	                loading: !formState.giftSubscriptions || formState.loadingGiftSubscriptions,
73627	                gifts: activeGifts,
73628	                changePaymentPath,
73629	                cancelSubscriptionPath,
73630	                changePaymentMethodText: elementConfig.changePaymentMethodText,
73631	                changeSubscriptionText: elementConfig.changeSubscriptionText,
73632	                cancelSubscriptionText: elementConfig.cancelSubscriptionText,
73633	                giftRecipientText: elementConfig.giftRecipientText,
73634	                startDateText: elementConfig.startDateText,
73635	                endDateText: elementConfig.endDateText,
73636	                pendingBannerText: elementConfig.pendingBannerText,
73637	                redeemedBannerText: elementConfig.redeemedBannerText,
73638	                activeStatusText: elementConfig.activeStatusText,
73639	                pendingStatusText: elementConfig.pendingStatusText,
73640	                subscriptionTypeText: elementConfig.subscriptionTypeText,
73641	                elementsOrder: elementConfig.elementsOrder,
73642	                elementsHide,
73643	                onSelectGift: (gift) => {
73644	                    formActions.updateFormState({
73645	                        selectedGiftSubscription: gift
73646	                    });
73647	                    formActions.jumpToPartStart('gift-details');
73648	                },
73649	                onEditSubscription: logEditSubscription,
73650	                onViewHistory: (subscription) => {
73651	                    formActions.updateFormState({
73652	                        selectedSubscription: subscription,
73653	                        selectedGiftSubscription: subscription
73654	                    });
73655	                    formActions.jumpToPartStart('billing-history');
73656	                    logDataLayerEvent(form, 'zephr_form_billing_history_view', null);
73657	                },
73658	                onCancelSubscription: logCancelSubscription,
73659	                onChangePayment: (subscription) => {
73660	                    formActions.updateFormState({
73661	                        selectedSubscription: subscription,
73662	                        selectedGiftSubscription: subscription
73663	                    });
73664	                    logDataLayerEvent(form, 'zephr_form_button_press', {
73665	                        sectionId: formState.currentSection.type,
73666	                        buttonType: 'SUBMIT'
73667	                    });
73668	                    formActions.completeSection();
73669	                },
73670	                logChangeSubscription: (subscription) => {
73671	                    logDataLayerEvent(form, 'zephr_form_subscription_change_clicked', {
73672	                        productId: subscription.productId,
73673	                        planId: subscription.externalId
73674	                    });
73675	                },
73676	                logCancelSubscription: (subscription) => {
73677	                    logDataLayerEvent(form, 'zephr_form_cancel_subscription_clicked', {
73678	                        productId: subscription.productId,
73679	                        planId: subscription.externalId
73680	                    });
73681	                },
73682	            }
73683	        };
73684	    }
73685	};
73686
73687	/* src/components/elements/giftToggle/GiftToggle.svelte generated by Svelte v4.2.12 */
73688
73689	function create_fragment$9(ctx) {
73690		let div;
73691		let checkbox;
73692		let current;
73693
73694		checkbox = new Checkbox({
73695				props: {
73696					id: "gift-toggle-checkbox",
73697					name: "gift-toggle",
73698					label: /*config*/ ctx[0]?.label || '',
73699					value: "true",
73700					checked: /*checked*/ ctx[1],
73701					disabled: /*disabled*/ ctx[2],
73702					required: false
73703				}
73704			});
73705
73706		checkbox.$on("change", /*handleChange*/ ctx[3]);
73707
73708		return {
73709			c() {
73710				div = element("div");
73711				create_component(checkbox.$$.fragment);
73712				attr(div, "class", "zephr-form-gift-toggle svelte-93167f");
73713			},
73714			m(target, anchor) {
73715				insert(target, div, anchor);
73716				mount_component(checkbox, div, null);
73717				current = true;
73718			},
73719			p(ctx, [dirty]) {
73720				const checkbox_changes = {};
73721				if (dirty & /*config*/ 1) checkbox_changes.label = /*config*/ ctx[0]?.label || '';
73722				if (dirty & /*checked*/ 2) checkbox_changes.checked = /*checked*/ ctx[1];
73723				if (dirty & /*disabled*/ 4) checkbox_changes.disabled = /*disabled*/ ctx[2];
73724				checkbox.$set(checkbox_changes);
73725			},
73726			i(local) {
73727				if (current) return;
73728				transition_in(checkbox.$$.fragment, local);
73729				current = true;
73730			},
73731			o(local) {
73732				transition_out(checkbox.$$.fragment, local);
73733				current = false;
73734			},
73735			d(detaching) {
73736				if (detaching) {
73737					detach(div);
73738				}
73739
73740				destroy_component(checkbox);
73741			}
73742		};
73743	}
73744
73745	function instance$9($$self, $$props, $$invalidate) {
73746		let { config } = $$props;
73747		let { checked = false } = $$props;
73748		let { disabled = false } = $$props;
73749		let { onChange } = $$props;
73750
73751		const handleChange = event => {
73752			const isChecked = event.detail;
73753			onChange(isChecked);
73754		};
73755
73756		$$self.$$set = $$props => {
73757			if ('config' in $$props) $$invalidate(0, config = $$props.config);
73758			if ('checked' in $$props) $$invalidate(1, checked = $$props.checked);
73759			if ('disabled' in $$props) $$invalidate(2, disabled = $$props.disabled);
73760			if ('onChange' in $$props) $$invalidate(4, onChange = $$props.onChange);
73761		};
73762
73763		return [config, checked, disabled, handleChange, onChange];
73764	}
73765
73766	class GiftToggle extends SvelteComponent {
73767		constructor(options) {
73768			super();
73769
73770			init(this, options, instance$9, create_fragment$9, safe_not_equal, {
73771				config: 0,
73772				checked: 1,
73773				disabled: 2,
73774				onChange: 4
73775			});
73776		}
73777	}
73778
73779	const giftToggleFactory = {
73780	    matches: (sectionElement) => sectionElement.type === elementTypes.GIFT_TOGGLE,
73781	    create: (form, formState, formActions, elementConfig) => {
73782	        // Only show if enabled
73783	        if (!elementConfig.enabled) {
73784	            return null;
73785	        }
73786	        const handleToggleChange = (isChecked) => {
73787	            const previousIsGiftForm = formState.isGiftForm;
73788	            formActions.updateFormState({
73789	                isGiftForm: isChecked
73790	            });
73791	            if (!isChecked && previousIsGiftForm) {
73792	                // When deselecting gift mode, only navigate if we're on gift-specific sections
73793	                if (formState.currentSection.type === 'recipient_details' && formState.giftTogglePreviousSection) {
73794	                    // If on recipient details, go back to where they were before enabling gift mode
73795	                    formActions.jumpToSection(formState.giftTogglePreviousSection);
73796	                }
73797	                // If on any other section (email, password, payment), stay on current section
73798	                // Clear the stored section
73799	                formActions.updateFormState({
73800	                    giftTogglePreviousSection: undefined
73801	                });
73802	            }
73803	            else if (isChecked && !previousIsGiftForm) {
73804	                // When enabling gift mode, always store current section (update it each time)
73805	                formActions.updateFormState({
73806	                    giftTogglePreviousSection: formState.currentSection.type
73807	                });
73808	                // Check if recipient details are valid before jumping
73809	                const recipientDetailsElementTypes = [
73810	                    elementTypes.RECIPIENT_NAME,
73811	                    elementTypes.RECIPIENT_EMAIL,
73812	                    elementTypes.RECIPIENT_ADDRESS,
73813	                    elementTypes.RECIPIENT_MESSAGE
73814	                ];
73815	                // Check if all recipient details elements are valid
73816	                const recipientDetailsValid = recipientDetailsElementTypes.every(elementType => {
73817	                    const elementValidity = formState.elementValidity.find(e => e.elementType === elementType &&
73818	                        e.sectionType === 'recipient_details');
73819	                    return elementValidity ? elementValidity.isValid : false;
73820	                });
73821	                // Only jump to recipient details if they are not valid
73822	                if (!recipientDetailsValid) {
73823	                    formActions.jumpToSection('recipient_details');
73824	                }
73825	                // If recipient details are valid, stay on current step
73826	            }
73827	            logDataLayerEvent(form, 'zephr_form_input_change', {
73828	                field: 'gift-toggle',
73829	                inputName: 'gift-toggle-checkbox',
73830	                sectionId: formState.currentSection.type,
73831	            });
73832	        };
73833	        return {
73834	            component: GiftToggle,
73835	            props: {
73836	                config: elementConfig,
73837	                checked: formState.isGiftForm || false,
73838	                disabled: formState.isBusy || formState.paymentProviderFormBusy || false,
73839	                onChange: handleToggleChange,
73840	            },
73841	            isValid: true,
73842	        };
73843	    },
73844	};
73845
73846	/* src/components/elements/giftFutureDateToggle/GiftFutureDateToggle.svelte generated by Svelte v4.2.12 */
73847
73848	function create_if_block$6(ctx) {
73849		let p;
73850		let t_value = /*config*/ ctx[0].description + "";
73851		let t;
73852
73853		return {
73854			c() {
73855				p = element("p");
73856				t = text(t_value);
73857				attr(p, "class", "zephr-form-gift-future-date-toggle-description svelte-c9nudz");
73858			},
73859			m(target, anchor) {
73860				insert(target, p, anchor);
73861				append(p, t);
73862			},
73863			p(ctx, dirty) {
73864				if (dirty & /*config*/ 1 && t_value !== (t_value = /*config*/ ctx[0].description + "")) set_data(t, t_value);
73865			},
73866			d(detaching) {
73867				if (detaching) {
73868					detach(p);
73869				}
73870			}
73871		};
73872	}
73873
73874	function create_fragment$8(ctx) {
73875		let div;
73876		let checkbox;
73877		let t;
73878		let current;
73879
73880		checkbox = new Checkbox({
73881				props: {
73882					id: "gift-future-date-toggle-checkbox",
73883					name: "gift-future-date-toggle",
73884					label: /*config*/ ctx[0]?.label || '',
73885					value: "true",
73886					checked: /*checked*/ ctx[1],
73887					disabled: /*disabled*/ ctx[2],
73888					required: false
73889				}
73890			});
73891
73892		checkbox.$on("change", /*handleChange*/ ctx[3]);
73893		let if_block = /*config*/ ctx[0]?.description && create_if_block$6(ctx);
73894
73895		return {
73896			c() {
73897				div = element("div");
73898				create_component(checkbox.$$.fragment);
73899				t = space();
73900				if (if_block) if_block.c();
73901				attr(div, "class", "zephr-form-gift-future-date-toggle svelte-c9nudz");
73902			},
73903			m(target, anchor) {
73904				insert(target, div, anchor);
73905				mount_component(checkbox, div, null);
73906				append(div, t);
73907				if (if_block) if_block.m(div, null);
73908				current = true;
73909			},
73910			p(ctx, [dirty]) {
73911				const checkbox_changes = {};
73912				if (dirty & /*config*/ 1) checkbox_changes.label = /*config*/ ctx[0]?.label || '';
73913				if (dirty & /*checked*/ 2) checkbox_changes.checked = /*checked*/ ctx[1];
73914				if (dirty & /*disabled*/ 4) checkbox_changes.disabled = /*disabled*/ ctx[2];
73915				checkbox.$set(checkbox_changes);
73916
73917				if (/*config*/ ctx[0]?.description) {
73918					if (if_block) {
73919						if_block.p(ctx, dirty);
73920					} else {
73921						if_block = create_if_block$6(ctx);
73922						if_block.c();
73923						if_block.m(div, null);
73924					}
73925				} else if (if_block) {
73926					if_block.d(1);
73927					if_block = null;
73928				}
73929			},
73930			i(local) {
73931				if (current) return;
73932				transition_in(checkbox.$$.fragment, local);
73933				current = true;
73934			},
73935			o(local) {
73936				transition_out(checkbox.$$.fragment, local);
73937				current = false;
73938			},
73939			d(detaching) {
73940				if (detaching) {
73941					detach(div);
73942				}
73943
73944				destroy_component(checkbox);
73945				if (if_block) if_block.d();
73946			}
73947		};
73948	}
73949
73950	function instance$8($$self, $$props, $$invalidate) {
73951		let { config } = $$props;
73952		let { checked = false } = $$props;
73953		let { disabled = false } = $$props;
73954		let { onChange } = $$props;
73955
73956		const handleChange = event => {
73957			const isChecked = event.detail;
73958			onChange(isChecked);
73959		};
73960
73961		$$self.$$set = $$props => {
73962			if ('config' in $$props) $$invalidate(0, config = $$props.config);
73963			if ('checked' in $$props) $$invalidate(1, checked = $$props.checked);
73964			if ('disabled' in $$props) $$invalidate(2, disabled = $$props.disabled);
73965			if ('onChange' in $$props) $$invalidate(4, onChange = $$props.onChange);
73966		};
73967
73968		return [config, checked, disabled, handleChange, onChange];
73969	}
73970
73971	class GiftFutureDateToggle extends SvelteComponent {
73972		constructor(options) {
73973			super();
73974
73975			init(this, options, instance$8, create_fragment$8, safe_not_equal, {
73976				config: 0,
73977				checked: 1,
73978				disabled: 2,
73979				onChange: 4
73980			});
73981		}
73982	}
73983
73984	const giftFutureDateToggleFactory = {
73985	    matches: (sectionElement) => sectionElement.type === elementTypes.GIFT_FUTURE_DATE_TOGGLE,
73986	    create: (form, formState, formActions, elementConfig) => {
73987	        // Only show if enabled and in gift mode
73988	        if (!elementConfig.enabled || !formState.isGiftForm) {
73989	            return null;
73990	        }
73991	        const handleToggleChange = (isChecked) => {
73992	            formActions.updateFormState({
73993	                giftRecipient: {
73994	                    ...formState.giftRecipient,
73995	                    futureDeliveryEnabled: isChecked,
73996	                    // Clear the date if toggling off
73997	                    futureDeliveryDate: isChecked ? formState.giftRecipient?.futureDeliveryDate || '' : ''
73998	                }
73999	            });
74000	            logDataLayerEvent(form, 'zephr_form_input_change', {
74001	                field: 'gift-future-date-toggle',
74002	                inputName: 'gift-future-date-toggle-checkbox',
74003	                sectionId: formState.currentSection.type,
74004	            });
74005	        };
74006	        return {
74007	            component: GiftFutureDateToggle,
74008	            props: {
74009	                config: elementConfig,
74010	                checked: formState.giftRecipient?.futureDeliveryEnabled || false,
74011	                disabled: formState.isBusy || formState.paymentProviderFormBusy || false,
74012	                onChange: handleToggleChange,
74013	            },
74014	            isValid: true,
74015	        };
74016	    },
74017	};
74018
74019	/* src/components/elements/giftFutureDateInput/GiftFutureDateInput.svelte generated by Svelte v4.2.12 */
74020
74021	function create_if_block_1$5(ctx) {
74022		let label;
74023		let current;
74024
74025		label = new Label({
74026				props: {
74027					for: "gift-future-date-input",
74028					required: /*config*/ ctx[0].required || false,
74029					$$slots: { default: [create_default_slot$1] },
74030					$$scope: { ctx }
74031				}
74032			});
74033
74034		return {
74035			c() {
74036				create_component(label.$$.fragment);
74037			},
74038			m(target, anchor) {
74039				mount_component(label, target, anchor);
74040				current = true;
74041			},
74042			p(ctx, dirty) {
74043				const label_changes = {};
74044				if (dirty & /*config*/ 1) label_changes.required = /*config*/ ctx[0].required || false;
74045
74046				if (dirty & /*$$scope, config*/ 513) {
74047					label_changes.$$scope = { dirty, ctx };
74048				}
74049
74050				label.$set(label_changes);
74051			},
74052			i(local) {
74053				if (current) return;
74054				transition_in(label.$$.fragment, local);
74055				current = true;
74056			},
74057			o(local) {
74058				transition_out(label.$$.fragment, local);
74059				current = false;
74060			},
74061			d(detaching) {
74062				destroy_component(label, detaching);
74063			}
74064		};
74065	}
74066
74067	// (25:4) <Label        for="gift-future-date-input"       required={config.required || false}     >
74068	function create_default_slot$1(ctx) {
74069		let t_value = /*config*/ ctx[0].label + "";
74070		let t;
74071
74072		return {
74073			c() {
74074				t = text(t_value);
74075			},
74076			m(target, anchor) {
74077				insert(target, t, anchor);
74078			},
74079			p(ctx, dirty) {
74080				if (dirty & /*config*/ 1 && t_value !== (t_value = /*config*/ ctx[0].label + "")) set_data(t, t_value);
74081			},
74082			d(detaching) {
74083				if (detaching) {
74084					detach(t);
74085				}
74086			}
74087		};
74088	}
74089
74090	// (47:2) {#if config?.description}
74091	function create_if_block$5(ctx) {
74092		let p;
74093		let t_value = /*config*/ ctx[0].description + "";
74094		let t;
74095
74096		return {
74097			c() {
74098				p = element("p");
74099				t = text(t_value);
74100				attr(p, "class", "zephr-form-gift-future-date-input-description svelte-1vykgtl");
74101			},
74102			m(target, anchor) {
74103				insert(target, p, anchor);
74104				append(p, t);
74105			},
74106			p(ctx, dirty) {
74107				if (dirty & /*config*/ 1 && t_value !== (t_value = /*config*/ ctx[0].description + "")) set_data(t, t_value);
74108			},
74109			d(detaching) {
74110				if (detaching) {
74111					detach(p);
74112				}
74113			}
74114		};
74115	}
74116
74117	function create_fragment$7(ctx) {
74118		let div;
74119		let t0;
74120		let input;
74121		let t1;
74122		let current;
74123		let if_block0 = /*config*/ ctx[0]?.label && create_if_block_1$5(ctx);
74124
74125		input = new Input({
74126				props: {
74127					id: "gift-future-date-input",
74128					name: "gift-future-date",
74129					type: "date",
74130					value: /*value*/ ctx[1],
74131					disabled: /*disabled*/ ctx[2],
74132					hasError: /*hasError*/ ctx[3],
74133					errorMessage: /*errorMessage*/ ctx[4],
74134					placeholder: /*config*/ ctx[0]?.placeholder || '',
74135					required: /*config*/ ctx[0]?.required || false,
74136					min: /*minDate*/ ctx[6]
74137				}
74138			});
74139
74140		input.$on("change", /*handleChange*/ ctx[5]);
74141		let if_block1 = /*config*/ ctx[0]?.description && create_if_block$5(ctx);
74142
74143		return {
74144			c() {
74145				div = element("div");
74146				if (if_block0) if_block0.c();
74147				t0 = space();
74148				create_component(input.$$.fragment);
74149				t1 = space();
74150				if (if_block1) if_block1.c();
74151				attr(div, "class", "zephr-form-gift-future-date-input svelte-1vykgtl");
74152			},
74153			m(target, anchor) {
74154				insert(target, div, anchor);
74155				if (if_block0) if_block0.m(div, null);
74156				append(div, t0);
74157				mount_component(input, div, null);
74158				append(div, t1);
74159				if (if_block1) if_block1.m(div, null);
74160				current = true;
74161			},
74162			p(ctx, [dirty]) {
74163				if (/*config*/ ctx[0]?.label) {
74164					if (if_block0) {
74165						if_block0.p(ctx, dirty);
74166
74167						if (dirty & /*config*/ 1) {
74168							transition_in(if_block0, 1);
74169						}
74170					} else {
74171						if_block0 = create_if_block_1$5(ctx);
74172						if_block0.c();
74173						transition_in(if_block0, 1);
74174						if_block0.m(div, t0);
74175					}
74176				} else if (if_block0) {
74177					group_outros();
74178
74179					transition_out(if_block0, 1, 1, () => {
74180						if_block0 = null;
74181					});
74182
74183					check_outros();
74184				}
74185
74186				const input_changes = {};
74187				if (dirty & /*value*/ 2) input_changes.value = /*value*/ ctx[1];
74188				if (dirty & /*disabled*/ 4) input_changes.disabled = /*disabled*/ ctx[2];
74189				if (dirty & /*hasError*/ 8) input_changes.hasError = /*hasError*/ ctx[3];
74190				if (dirty & /*errorMessage*/ 16) input_changes.errorMessage = /*errorMessage*/ ctx[4];
74191				if (dirty & /*config*/ 1) input_changes.placeholder = /*config*/ ctx[0]?.placeholder || '';
74192				if (dirty & /*config*/ 1) input_changes.required = /*config*/ ctx[0]?.required || false;
74193				input.$set(input_changes);
74194
74195				if (/*config*/ ctx[0]?.description) {
74196					if (if_block1) {
74197						if_block1.p(ctx, dirty);
74198					} else {
74199						if_block1 = create_if_block$5(ctx);
74200						if_block1.c();
74201						if_block1.m(div, null);
74202					}
74203				} else if (if_block1) {
74204					if_block1.d(1);
74205					if_block1 = null;
74206				}
74207			},
74208			i(local) {
74209				if (current) return;
74210				transition_in(if_block0);
74211				transition_in(input.$$.fragment, local);
74212				current = true;
74213			},
74214			o(local) {
74215				transition_out(if_block0);
74216				transition_out(input.$$.fragment, local);
74217				current = false;
74218			},
74219			d(detaching) {
74220				if (detaching) {
74221					detach(div);
74222				}
74223
74224				if (if_block0) if_block0.d();
74225				destroy_component(input);
74226				if (if_block1) if_block1.d();
74227			}
74228		};
74229	}
74230
74231	function instance$7($$self, $$props, $$invalidate) {
74232		let { config } = $$props;
74233		let { value = '' } = $$props;
74234		let { disabled = false } = $$props;
74235		let { hasError = false } = $$props;
74236		let { errorMessage = '' } = $$props;
74237		let { onChange } = $$props;
74238
74239		// Calculate tomorrow's date in YYYY-MM-DD format
74240		const getTomorrowDate = () => {
74241			const tomorrow = new Date();
74242			tomorrow.setDate(tomorrow.getDate() + 1);
74243			return tomorrow.toISOString().split('T')[0];
74244		};
74245
74246		const handleChange = event => {
74247			const inputValue = event.detail;
74248			onChange(inputValue);
74249		};
74250
74251		// Set minimum date to tomorrow
74252		const minDate = getTomorrowDate();
74253
74254		$$self.$$set = $$props => {
74255			if ('config' in $$props) $$invalidate(0, config = $$props.config);
74256			if ('value' in $$props) $$invalidate(1, value = $$props.value);
74257			if ('disabled' in $$props) $$invalidate(2, disabled = $$props.disabled);
74258			if ('hasError' in $$props) $$invalidate(3, hasError = $$props.hasError);
74259			if ('errorMessage' in $$props) $$invalidate(4, errorMessage = $$props.errorMessage);
74260			if ('onChange' in $$props) $$invalidate(7, onChange = $$props.onChange);
74261		};
74262
74263		return [
74264			config,
74265			value,
74266			disabled,
74267			hasError,
74268			errorMessage,
74269			handleChange,
74270			minDate,
74271			onChange
74272		];
74273	}
74274
74275	class GiftFutureDateInput extends SvelteComponent {
74276		constructor(options) {
74277			super();
74278
74279			init(this, options, instance$7, create_fragment$7, safe_not_equal, {
74280				config: 0,
74281				value: 1,
74282				disabled: 2,
74283				hasError: 3,
74284				errorMessage: 4,
74285				onChange: 7
74286			});
74287		}
74288	}
74289
74290	const giftFutureDateInputFactory = {
74291	    matches: (sectionElement) => sectionElement.type === elementTypes.GIFT_FUTURE_DATE_INPUT,
74292	    create: (form, formState, formActions, elementConfig) => {
74293	        // Only show if enabled, in gift mode, and future delivery is enabled
74294	        if (!elementConfig.enabled || !formState.isGiftForm || !formState.giftRecipient?.futureDeliveryEnabled) {
74295	            return null;
74296	        }
74297	        // Validation function
74298	        const validateDate = (value) => {
74299	            if (!value) {
74300	                return resolveLanguagePackKeyTyped(form, 'forms.errors.future-delivery-date-required', 'Please select a future delivery date');
74301	            }
74302	            if (value) {
74303	                const selectedDate = new Date(value);
74304	                const tomorrow = new Date();
74305	                tomorrow.setDate(tomorrow.getDate() + 1);
74306	                tomorrow.setHours(0, 0, 0, 0); // Reset time for date comparison
74307	                if (selectedDate < tomorrow) {
74308	                    return resolveLanguagePackKeyTyped(form, 'forms.errors.future-delivery-date-too-early', 'Delivery date must be at least 24 hours in the future');
74309	                }
74310	            }
74311	            return null;
74312	        };
74313	        const handleChange = (value) => {
74314	            formActions.updateFormState({
74315	                giftRecipient: {
74316	                    ...formState.giftRecipient,
74317	                    futureDeliveryDate: value
74318	                }
74319	            });
74320	            logDataLayerEvent(form, 'zephr_form_input_change', {
74321	                field: 'gift-future-date',
74322	                inputName: 'gift-future-date-input',
74323	                sectionId: formState.currentSection.type,
74324	            });
74325	        };
74326	        const currentValue = formState.giftRecipient?.futureDeliveryDate || '';
74327	        const errorMessage = validateDate(currentValue);
74328	        const isValid = !errorMessage;
74329	        return {
74330	            component: GiftFutureDateInput,
74331	            props: {
74332	                config: elementConfig,
74333	                value: currentValue,
74334	                disabled: formState.isBusy || formState.paymentProviderFormBusy || false,
74335	                hasError: !isValid,
74336	                errorMessage: errorMessage || '',
74337	                onChange: handleChange,
74338	            },
74339	            isValid,
74340	        };
74341	    },
74342	};
74343
74344	/* src/components/elements/suspendResumeSubscription/SuspendResumeSubscription.svelte generated by Svelte v4.2.12 */
74345
74346	function create_if_block_2$3(ctx) {
74347		let div;
74348		let t;
74349
74350		return {
74351			c() {
74352				div = element("div");
74353				t = text(/*suspensionDateError*/ ctx[3]);
74354				attr(div, "class", "error-text svelte-1hog2jr");
74355			},
74356			m(target, anchor) {
74357				insert(target, div, anchor);
74358				append(div, t);
74359			},
74360			p(ctx, dirty) {
74361				if (dirty & /*suspensionDateError*/ 8) set_data(t, /*suspensionDateError*/ ctx[3]);
74362			},
74363			d(detaching) {
74364				if (detaching) {
74365					detach(div);
74366				}
74367			}
74368		};
74369	}
74370
74371	// (88:6) {#if resumeDateError}
74372	function create_if_block_1$4(ctx) {
74373		let div;
74374		let t;
74375
74376		return {
74377			c() {
74378				div = element("div");
74379				t = text(/*resumeDateError*/ ctx[4]);
74380				attr(div, "class", "error-text svelte-1hog2jr");
74381			},
74382			m(target, anchor) {
74383				insert(target, div, anchor);
74384				append(div, t);
74385			},
74386			p(ctx, dirty) {
74387				if (dirty & /*resumeDateError*/ 16) set_data(t, /*resumeDateError*/ ctx[4]);
74388			},
74389			d(detaching) {
74390				if (detaching) {
74391					detach(div);
74392				}
74393			}
74394		};
74395	}
74396
74397	// (92:4) {#if generalError}
74398	function create_if_block$4(ctx) {
74399		let div;
74400		let t;
74401
74402		return {
74403			c() {
74404				div = element("div");
74405				t = text(/*generalError*/ ctx[5]);
74406				attr(div, "class", "error-text svelte-1hog2jr");
74407			},
74408			m(target, anchor) {
74409				insert(target, div, anchor);
74410				append(div, t);
74411			},
74412			p(ctx, dirty) {
74413				if (dirty & /*generalError*/ 32) set_data(t, /*generalError*/ ctx[5]);
74414			},
74415			d(detaching) {
74416				if (detaching) {
74417					detach(div);
74418				}
74419			}
74420		};
74421	}
74422
74423	function create_fragment$6(ctx) {
74424		let div2;
74425		let div0;
74426		let label0;
74427		let t0_value = /*config*/ ctx[0].suspensionDateLabel + "";
74428		let t0;
74429		let t1;
74430		let input0;
74431		let t2;
74432		let t3;
74433		let div1;
74434		let label1;
74435		let t4_value = /*config*/ ctx[0].resumeDateLabel + "";
74436		let t4;
74437		let t5;
74438		let input1;
74439		let t6;
74440		let t7;
74441		let mounted;
74442		let dispose;
74443		let if_block0 = /*suspensionDateError*/ ctx[3] && create_if_block_2$3(ctx);
74444		let if_block1 = /*resumeDateError*/ ctx[4] && create_if_block_1$4(ctx);
74445		let if_block2 = /*generalError*/ ctx[5] && create_if_block$4(ctx);
74446
74447		return {
74448			c() {
74449				div2 = element("div");
74450				div0 = element("div");
74451				label0 = element("label");
74452				t0 = text(t0_value);
74453				t1 = space();
74454				input0 = element("input");
74455				t2 = space();
74456				if (if_block0) if_block0.c();
74457				t3 = space();
74458				div1 = element("div");
74459				label1 = element("label");
74460				t4 = text(t4_value);
74461				t5 = space();
74462				input1 = element("input");
74463				t6 = space();
74464				if (if_block1) if_block1.c();
74465				t7 = space();
74466				if (if_block2) if_block2.c();
74467				attr(label0, "for", "suspensionDate");
74468				attr(label0, "class", "svelte-1hog2jr");
74469				attr(input0, "id", "suspensionDate");
74470				attr(input0, "type", "date");
74471				input0.required = true;
74472				attr(input0, "class", "svelte-1hog2jr");
74473				toggle_class(input0, "error", !!/*suspensionDateError*/ ctx[3]);
74474				attr(div0, "class", "field svelte-1hog2jr");
74475				attr(label1, "for", "resumeDate");
74476				attr(label1, "class", "svelte-1hog2jr");
74477				attr(input1, "id", "resumeDate");
74478				attr(input1, "type", "date");
74479				input1.required = true;
74480				attr(input1, "class", "svelte-1hog2jr");
74481				toggle_class(input1, "error", !!/*resumeDateError*/ ctx[4]);
74482				attr(div1, "class", "field svelte-1hog2jr");
74483				attr(div2, "class", "suspend-resume-subscription-section svelte-1hog2jr");
74484			},
74485			m(target, anchor) {
74486				insert(target, div2, anchor);
74487				append(div2, div0);
74488				append(div0, label0);
74489				append(label0, t0);
74490				append(div0, t1);
74491				append(div0, input0);
74492				set_input_value(input0, /*suspensionDate*/ ctx[1]);
74493				append(div0, t2);
74494				if (if_block0) if_block0.m(div0, null);
74495				append(div2, t3);
74496				append(div2, div1);
74497				append(div1, label1);
74498				append(label1, t4);
74499				append(div1, t5);
74500				append(div1, input1);
74501				set_input_value(input1, /*resumeDate*/ ctx[2]);
74502				append(div1, t6);
74503				if (if_block1) if_block1.m(div1, null);
74504				append(div2, t7);
74505				if (if_block2) if_block2.m(div2, null);
74506
74507				if (!mounted) {
74508					dispose = [
74509						listen(input0, "input", /*input0_input_handler*/ ctx[9]),
74510						listen(input0, "input", /*updateSuspendResumeSubscription*/ ctx[6]),
74511						listen(input1, "input", /*input1_input_handler*/ ctx[10]),
74512						listen(input1, "input", /*updateSuspendResumeSubscription*/ ctx[6])
74513					];
74514
74515					mounted = true;
74516				}
74517			},
74518			p(ctx, [dirty]) {
74519				if (dirty & /*config*/ 1 && t0_value !== (t0_value = /*config*/ ctx[0].suspensionDateLabel + "")) set_data(t0, t0_value);
74520
74521				if (dirty & /*suspensionDate*/ 2) {
74522					set_input_value(input0, /*suspensionDate*/ ctx[1]);
74523				}
74524
74525				if (dirty & /*suspensionDateError*/ 8) {
74526					toggle_class(input0, "error", !!/*suspensionDateError*/ ctx[3]);
74527				}
74528
74529				if (/*suspensionDateError*/ ctx[3]) {
74530					if (if_block0) {
74531						if_block0.p(ctx, dirty);
74532					} else {
74533						if_block0 = create_if_block_2$3(ctx);
74534						if_block0.c();
74535						if_block0.m(div0, null);
74536					}
74537				} else if (if_block0) {
74538					if_block0.d(1);
74539					if_block0 = null;
74540				}
74541
74542				if (dirty & /*config*/ 1 && t4_value !== (t4_value = /*config*/ ctx[0].resumeDateLabel + "")) set_data(t4, t4_value);
74543
74544				if (dirty & /*resumeDate*/ 4) {
74545					set_input_value(input1, /*resumeDate*/ ctx[2]);
74546				}
74547
74548				if (dirty & /*resumeDateError*/ 16) {
74549					toggle_class(input1, "error", !!/*resumeDateError*/ ctx[4]);
74550				}
74551
74552				if (/*resumeDateError*/ ctx[4]) {
74553					if (if_block1) {
74554						if_block1.p(ctx, dirty);
74555					} else {
74556						if_block1 = create_if_block_1$4(ctx);
74557						if_block1.c();
74558						if_block1.m(div1, null);
74559					}
74560				} else if (if_block1) {
74561					if_block1.d(1);
74562					if_block1 = null;
74563				}
74564
74565				if (/*generalError*/ ctx[5]) {
74566					if (if_block2) {
74567						if_block2.p(ctx, dirty);
74568					} else {
74569						if_block2 = create_if_block$4(ctx);
74570						if_block2.c();
74571						if_block2.m(div2, null);
74572					}
74573				} else if (if_block2) {
74574					if_block2.d(1);
74575					if_block2 = null;
74576				}
74577			},
74578			i: noop,
74579			o: noop,
74580			d(detaching) {
74581				if (detaching) {
74582					detach(div2);
74583				}
74584
74585				if (if_block0) if_block0.d();
74586				if (if_block1) if_block1.d();
74587				if (if_block2) if_block2.d();
74588				mounted = false;
74589				run_all(dispose);
74590			}
74591		};
74592	}
74593
74594	function instance$6($$self, $$props, $$invalidate) {
74595		let { formState } = $$props;
74596		let { formActions } = $$props;
74597		let { config } = $$props;
74598		const dispatch = createEventDispatcher();
74599		let suspensionDate = formState.suspendResumeSubscription?.suspensionDate || '';
74600		let resumeDate = formState.suspendResumeSubscription?.resumeDate || '';
74601		let suspensionDateError = '';
74602		let resumeDateError = '';
74603		let generalError = '';
74604
74605		// Update form state when input changes
74606		const updateSuspendResumeSubscription = () => {
74607			const updatedSuspendResumeSubscription = {
74608				...formState.suspendResumeSubscription || {},
74609				suspensionDate,
74610				resumeDate
74611			};
74612
74613			formActions.updateFormState({
74614				suspendResumeSubscription: updatedSuspendResumeSubscription
74615			});
74616
74617			validateForm();
74618		};
74619
74620		const validateForm = () => {
74621			const hasValidSuspensionDate = !!suspensionDate.trim();
74622			const hasValidResumeDate = !!resumeDate.trim();
74623			const today = new Date();
74624			today.setHours(0, 0, 0, 0); // Reset time to start of day for accurate comparison
74625			const suspensionDateObj = new Date(suspensionDate);
74626			const resumeDateObj = new Date(resumeDate);
74627			const isSuspensionDateInPast = hasValidSuspensionDate && suspensionDateObj < today;
74628			const isSuspensionDateBeforeResumeDate = hasValidSuspensionDate && hasValidResumeDate && suspensionDateObj < resumeDateObj;
74629
74630			// Reset errors
74631			$$invalidate(3, suspensionDateError = '');
74632
74633			$$invalidate(4, resumeDateError = '');
74634			$$invalidate(5, generalError = '');
74635
74636			if (!hasValidSuspensionDate) {
74637				$$invalidate(3, suspensionDateError = 'Suspension date is required');
74638			} else if (isSuspensionDateInPast) {
74639				$$invalidate(3, suspensionDateError = 'Suspension date cannot be in the past');
74640			}
74641
74642			if (!hasValidResumeDate) {
74643				$$invalidate(4, resumeDateError = 'Resume date is required');
74644			}
74645
74646			if (hasValidSuspensionDate && hasValidResumeDate && !isSuspensionDateBeforeResumeDate) {
74647				$$invalidate(5, generalError = 'Resume date must be after suspension date');
74648			}
74649
74650			// Dispatch event for form validity
74651			const isValid = hasValidSuspensionDate && hasValidResumeDate && !isSuspensionDateInPast && isSuspensionDateBeforeResumeDate;
74652
74653			dispatch('validity', { isValid });
74654		};
74655
74656		// Run validation on mount to ensure initial state is validated
74657		onMount(() => {
74658			validateForm();
74659		});
74660
74661		function input0_input_handler() {
74662			suspensionDate = this.value;
74663			$$invalidate(1, suspensionDate);
74664		}
74665
74666		function input1_input_handler() {
74667			resumeDate = this.value;
74668			$$invalidate(2, resumeDate);
74669		}
74670
74671		$$self.$$set = $$props => {
74672			if ('formState' in $$props) $$invalidate(7, formState = $$props.formState);
74673			if ('formActions' in $$props) $$invalidate(8, formActions = $$props.formActions);
74674			if ('config' in $$props) $$invalidate(0, config = $$props.config);
74675		};
74676
74677		return [
74678			config,
74679			suspensionDate,
74680			resumeDate,
74681			suspensionDateError,
74682			resumeDateError,
74683			generalError,
74684			updateSuspendResumeSubscription,
74685			formState,
74686			formActions,
74687			input0_input_handler,
74688			input1_input_handler
74689		];
74690	}
74691
74692	class SuspendResumeSubscription extends SvelteComponent {
74693		constructor(options) {
74694			super();
74695			init(this, options, instance$6, create_fragment$6, safe_not_equal, { formState: 7, formActions: 8, config: 0 });
74696		}
74697	}
74698
74699	const suspendResumeSubscriptionFactory = {
74700	    matches: (sectionElement) => sectionElement.type === elementTypes.SUSPEND_RESUME_SUBSCRIPTION,
74701	    create: (form, formState, formActions, elementConfig) => {
74702	        // Resolve all labels through language pack service
74703	        const resolvedConfig = {
74704	            suspensionDateLabel: resolveLanguagePackKeyTyped(form, 'forms.suspend-resume-subscription.suspension-date-label', elementConfig.suspensionDateLabel),
74705	            resumeDateLabel: resolveLanguagePackKeyTyped(form, 'forms.suspend-resume-subscription.resume-date-label', elementConfig.resumeDateLabel),
74706	        };
74707	        // Determine if the input is valid
74708	        const suspendResumeSubscription = (formState.suspendResumeSubscription || {});
74709	        const hasValidSuspensionDate = !!suspendResumeSubscription.suspensionDate?.trim();
74710	        const hasValidResumeDate = !!suspendResumeSubscription.resumeDate?.trim();
74711	        // Check if suspension date is in the past
74712	        const today = new Date();
74713	        today.setHours(0, 0, 0, 0); // Reset time to start of day for accurate comparison
74714	        const suspensionDateObj = new Date(suspendResumeSubscription.suspensionDate);
74715	        const isSuspensionDateInPast = hasValidSuspensionDate && suspensionDateObj < today;
74716	        const resumeDateObj = new Date(suspendResumeSubscription.resumeDate);
74717	        const isSuspensionDateBeforeResumeDate = hasValidSuspensionDate && hasValidResumeDate && suspensionDateObj < resumeDateObj;
74718	        const isValid = hasValidSuspensionDate &&
74719	            hasValidResumeDate &&
74720	            !isSuspensionDateInPast &&
74721	            isSuspensionDateBeforeResumeDate;
74722	        return {
74723	            component: SuspendResumeSubscription,
74724	            props: {
74725	                config: resolvedConfig,
74726	                form,
74727	                formState,
74728	                formActions,
74729	            },
74730	            isValid
74731	        };
74732	    }
74733	};
74734
74735	/* src/components/elements/subscriptionCustomFieldsList/SubscriptionCustomFieldsList.svelte generated by Svelte v4.2.12 */
74736
74737	function get_each_context$2(ctx, list, i) {
74738		const child_ctx = ctx.slice();
74739		child_ctx[30] = list[i][0];
74740		child_ctx[31] = list[i][1];
74741		return child_ctx;
74742	}
74743
74744	function get_each_context_1(ctx, list, i) {
74745		const child_ctx = ctx.slice();
74746		child_ctx[34] = list[i];
74747		return child_ctx;
74748	}
74749
74750	// (142:2) {#if formTitle}
74751	function create_if_block_6$1(ctx) {
74752		let h2;
74753		let t;
74754
74755		return {
74756			c() {
74757				h2 = element("h2");
74758				t = text(/*formTitle*/ ctx[2]);
74759				attr(h2, "class", "form-title svelte-uox0m2");
74760			},
74761			m(target, anchor) {
74762				insert(target, h2, anchor);
74763				append(h2, t);
74764			},
74765			p(ctx, dirty) {
74766				if (dirty[0] & /*formTitle*/ 4) set_data(t, /*formTitle*/ ctx[2]);
74767			},
74768			d(detaching) {
74769				if (detaching) {
74770					detach(h2);
74771				}
74772			}
74773		};
74774	}
74775
74776	// (146:2) {#if formDescription}
74777	function create_if_block_5$1(ctx) {
74778		let p;
74779		let t;
74780
74781		return {
74782			c() {
74783				p = element("p");
74784				t = text(/*formDescription*/ ctx[3]);
74785				attr(p, "class", "form-description svelte-uox0m2");
74786			},
74787			m(target, anchor) {
74788				insert(target, p, anchor);
74789				append(p, t);
74790			},
74791			p(ctx, dirty) {
74792				if (dirty[0] & /*formDescription*/ 8) set_data(t, /*formDescription*/ ctx[3]);
74793			},
74794			d(detaching) {
74795				if (detaching) {
74796					detach(p);
74797				}
74798			}
74799		};
74800	}
74801
74802	// (152:52) 
74803	function create_if_block_1$3(ctx) {
74804		let form;
74805		let t0;
74806		let t1;
74807		let t2;
74808		let mounted;
74809		let dispose;
74810		let each_value = ensure_array_like(/*activeFieldGroups*/ ctx[9]);
74811		let each_blocks = [];
74812
74813		for (let i = 0; i < each_value.length; i += 1) {
74814			each_blocks[i] = create_each_block$2(get_each_context$2(ctx, each_value, i));
74815		}
74816
74817		let if_block0 = /*successMessage*/ ctx[6] && create_if_block_4$1(ctx);
74818		let if_block1 = /*errorMessage*/ ctx[7] && create_if_block_3$2(ctx);
74819		let if_block2 = /*editableFieldNames*/ ctx[1].length > 0 && create_if_block_2$2(ctx);
74820
74821		return {
74822			c() {
74823				form = element("form");
74824
74825				for (let i = 0; i < each_blocks.length; i += 1) {
74826					each_blocks[i].c();
74827				}
74828
74829				t0 = space();
74830				if (if_block0) if_block0.c();
74831				t1 = space();
74832				if (if_block1) if_block1.c();
74833				t2 = space();
74834				if (if_block2) if_block2.c();
74835				attr(form, "class", "custom-fields-form svelte-uox0m2");
74836			},
74837			m(target, anchor) {
74838				insert(target, form, anchor);
74839
74840				for (let i = 0; i < each_blocks.length; i += 1) {
74841					if (each_blocks[i]) {
74842						each_blocks[i].m(form, null);
74843					}
74844				}
74845
74846				append(form, t0);
74847				if (if_block0) if_block0.m(form, null);
74848				append(form, t1);
74849				if (if_block1) if_block1.m(form, null);
74850				append(form, t2);
74851				if (if_block2) if_block2.m(form, null);
74852
74853				if (!mounted) {
74854					dispose = listen(form, "submit", prevent_default(/*handleSubmit*/ ctx[13]));
74855					mounted = true;
74856				}
74857			},
74858			p(ctx, dirty) {
74859				if (dirty[0] & /*activeFieldGroups, fieldValues, isFieldEditable, handleInputEvent*/ 21248) {
74860					each_value = ensure_array_like(/*activeFieldGroups*/ ctx[9]);
74861					let i;
74862
74863					for (i = 0; i < each_value.length; i += 1) {
74864						const child_ctx = get_each_context$2(ctx, each_value, i);
74865
74866						if (each_blocks[i]) {
74867							each_blocks[i].p(child_ctx, dirty);
74868						} else {
74869							each_blocks[i] = create_each_block$2(child_ctx);
74870							each_blocks[i].c();
74871							each_blocks[i].m(form, t0);
74872						}
74873					}
74874
74875					for (; i < each_blocks.length; i += 1) {
74876						each_blocks[i].d(1);
74877					}
74878
74879					each_blocks.length = each_value.length;
74880				}
74881
74882				if (/*successMessage*/ ctx[6]) {
74883					if (if_block0) {
74884						if_block0.p(ctx, dirty);
74885					} else {
74886						if_block0 = create_if_block_4$1(ctx);
74887						if_block0.c();
74888						if_block0.m(form, t1);
74889					}
74890				} else if (if_block0) {
74891					if_block0.d(1);
74892					if_block0 = null;
74893				}
74894
74895				if (/*errorMessage*/ ctx[7]) {
74896					if (if_block1) {
74897						if_block1.p(ctx, dirty);
74898					} else {
74899						if_block1 = create_if_block_3$2(ctx);
74900						if_block1.c();
74901						if_block1.m(form, t2);
74902					}
74903				} else if (if_block1) {
74904					if_block1.d(1);
74905					if_block1 = null;
74906				}
74907
74908				if (/*editableFieldNames*/ ctx[1].length > 0) {
74909					if (if_block2) {
74910						if_block2.p(ctx, dirty);
74911					} else {
74912						if_block2 = create_if_block_2$2(ctx);
74913						if_block2.c();
74914						if_block2.m(form, null);
74915					}
74916				} else if (if_block2) {
74917					if_block2.d(1);
74918					if_block2 = null;
74919				}
74920			},
74921			d(detaching) {
74922				if (detaching) {
74923					detach(form);
74924				}
74925
74926				destroy_each(each_blocks, detaching);
74927				if (if_block0) if_block0.d();
74928				if (if_block1) if_block1.d();
74929				if (if_block2) if_block2.d();
74930				mounted = false;
74931				dispose();
74932			}
74933		};
74934	}
74935
74936	// (150:2) {#if loading}
74937	function create_if_block$3(ctx) {
74938		let div;
74939
74940		return {
74941			c() {
74942				div = element("div");
74943				div.textContent = "Loading custom fields...";
74944				attr(div, "class", "loading svelte-uox0m2");
74945			},
74946			m(target, anchor) {
74947				insert(target, div, anchor);
74948			},
74949			p: noop,
74950			d(detaching) {
74951				if (detaching) {
74952					detach(div);
74953				}
74954			}
74955		};
74956	}
74957
74958	// (158:10) {#each group.fields as field}
74959	function create_each_block_1(ctx) {
74960		let div;
74961		let label;
74962		let t0_value = /*field*/ ctx[34].label + "";
74963		let t0;
74964		let label_for_value;
74965		let t1;
74966		let input;
74967		let input_id_value;
74968		let input_name_value;
74969		let input_value_value;
74970		let input_disabled_value;
74971		let mounted;
74972		let dispose;
74973
74974		function input_handler(...args) {
74975			return /*input_handler*/ ctx[20](/*field*/ ctx[34], ...args);
74976		}
74977
74978		return {
74979			c() {
74980				div = element("div");
74981				label = element("label");
74982				t0 = text(t0_value);
74983				t1 = space();
74984				input = element("input");
74985				attr(label, "for", label_for_value = /*field*/ ctx[34].name);
74986				attr(label, "class", "field-label svelte-uox0m2");
74987				attr(input, "id", input_id_value = /*field*/ ctx[34].name);
74988				attr(input, "name", input_name_value = /*field*/ ctx[34].name);
74989				attr(input, "type", "text");
74990				input.value = input_value_value = /*fieldValues*/ ctx[8][/*field*/ ctx[34].name];
74991				input.disabled = input_disabled_value = !/*isFieldEditable*/ ctx[12](/*field*/ ctx[34].name);
74992				attr(input, "class", "field-input svelte-uox0m2");
74993				attr(div, "class", "field-item svelte-uox0m2");
74994			},
74995			m(target, anchor) {
74996				insert(target, div, anchor);
74997				append(div, label);
74998				append(label, t0);
74999				append(div, t1);
75000				append(div, input);
75001
75002				if (!mounted) {
75003					dispose = listen(input, "input", input_handler);
75004					mounted = true;
75005				}
75006			},
75007			p(new_ctx, dirty) {
75008				ctx = new_ctx;
75009				if (dirty[0] & /*activeFieldGroups*/ 512 && t0_value !== (t0_value = /*field*/ ctx[34].label + "")) set_data(t0, t0_value);
75010
75011				if (dirty[0] & /*activeFieldGroups*/ 512 && label_for_value !== (label_for_value = /*field*/ ctx[34].name)) {
75012					attr(label, "for", label_for_value);
75013				}
75014
75015				if (dirty[0] & /*activeFieldGroups*/ 512 && input_id_value !== (input_id_value = /*field*/ ctx[34].name)) {
75016					attr(input, "id", input_id_value);
75017				}
75018
75019				if (dirty[0] & /*activeFieldGroups*/ 512 && input_name_value !== (input_name_value = /*field*/ ctx[34].name)) {
75020					attr(input, "name", input_name_value);
75021				}
75022
75023				if (dirty[0] & /*fieldValues, activeFieldGroups*/ 768 && input_value_value !== (input_value_value = /*fieldValues*/ ctx[8][/*field*/ ctx[34].name]) && input.value !== input_value_value) {
75024					input.value = input_value_value;
75025				}
75026
75027				if (dirty[0] & /*activeFieldGroups*/ 512 && input_disabled_value !== (input_disabled_value = !/*isFieldEditable*/ ctx[12](/*field*/ ctx[34].name))) {
75028					input.disabled = input_disabled_value;
75029				}
75030			},
75031			d(detaching) {
75032				if (detaching) {
75033					detach(div);
75034				}
75035
75036				mounted = false;
75037				dispose();
75038			}
75039		};
75040	}
75041
75042	// (156:6) {#each activeFieldGroups as [_groupKey, group]}
75043	function create_each_block$2(ctx) {
75044		let div;
75045		let t;
75046		let each_value_1 = ensure_array_like(/*group*/ ctx[31].fields);
75047		let each_blocks = [];
75048
75049		for (let i = 0; i < each_value_1.length; i += 1) {
75050			each_blocks[i] = create_each_block_1(get_each_context_1(ctx, each_value_1, i));
75051		}
75052
75053		return {
75054			c() {
75055				div = element("div");
75056
75057				for (let i = 0; i < each_blocks.length; i += 1) {
75058					each_blocks[i].c();
75059				}
75060
75061				t = space();
75062				attr(div, "class", "simple-field-group svelte-uox0m2");
75063			},
75064			m(target, anchor) {
75065				insert(target, div, anchor);
75066
75067				for (let i = 0; i < each_blocks.length; i += 1) {
75068					if (each_blocks[i]) {
75069						each_blocks[i].m(div, null);
75070					}
75071				}
75072
75073				append(div, t);
75074			},
75075			p(ctx, dirty) {
75076				if (dirty[0] & /*activeFieldGroups, fieldValues, isFieldEditable, handleInputEvent*/ 21248) {
75077					each_value_1 = ensure_array_like(/*group*/ ctx[31].fields);
75078					let i;
75079
75080					for (i = 0; i < each_value_1.length; i += 1) {
75081						const child_ctx = get_each_context_1(ctx, each_value_1, i);
75082
75083						if (each_blocks[i]) {
75084							each_blocks[i].p(child_ctx, dirty);
75085						} else {
75086							each_blocks[i] = create_each_block_1(child_ctx);
75087							each_blocks[i].c();
75088							each_blocks[i].m(div, t);
75089						}
75090					}
75091
75092					for (; i < each_blocks.length; i += 1) {
75093						each_blocks[i].d(1);
75094					}
75095
75096					each_blocks.length = each_value_1.length;
75097				}
75098			},
75099			d(detaching) {
75100				if (detaching) {
75101					detach(div);
75102				}
75103
75104				destroy_each(each_blocks, detaching);
75105			}
75106		};
75107	}
75108
75109	// (179:6) {#if successMessage}
75110	function create_if_block_4$1(ctx) {
75111		let div;
75112		let t0;
75113		let t1;
75114
75115		return {
75116			c() {
75117				div = element("div");
75118				t0 = text("✓ ");
75119				t1 = text(/*successMessage*/ ctx[6]);
75120				attr(div, "class", "success-message svelte-uox0m2");
75121			},
75122			m(target, anchor) {
75123				insert(target, div, anchor);
75124				append(div, t0);
75125				append(div, t1);
75126			},
75127			p(ctx, dirty) {
75128				if (dirty[0] & /*successMessage*/ 64) set_data(t1, /*successMessage*/ ctx[6]);
75129			},
75130			d(detaching) {
75131				if (detaching) {
75132					detach(div);
75133				}
75134			}
75135		};
75136	}
75137
75138	// (185:6) {#if errorMessage}
75139	function create_if_block_3$2(ctx) {
75140		let div;
75141		let t0;
75142		let t1;
75143
75144		return {
75145			c() {
75146				div = element("div");
75147				t0 = text("✗ ");
75148				t1 = text(/*errorMessage*/ ctx[7]);
75149				attr(div, "class", "error-message svelte-uox0m2");
75150			},
75151			m(target, anchor) {
75152				insert(target, div, anchor);
75153				append(div, t0);
75154				append(div, t1);
75155			},
75156			p(ctx, dirty) {
75157				if (dirty[0] & /*errorMessage*/ 128) set_data(t1, /*errorMessage*/ ctx[7]);
75158			},
75159			d(detaching) {
75160				if (detaching) {
75161					detach(div);
75162				}
75163			}
75164		};
75165	}
75166
75167	// (192:6) {#if editableFieldNames.length > 0}
75168	function create_if_block_2$2(ctx) {
75169		let div;
75170		let button;
75171
75172		let t_value = (/*submitting*/ ctx[11]
75173		? 'Updating...'
75174		: /*loading*/ ctx[5]
75175			? 'Loading...'
75176			: /*submitButtonText*/ ctx[4]) + "";
75177
75178		let t;
75179		let button_disabled_value;
75180
75181		return {
75182			c() {
75183				div = element("div");
75184				button = element("button");
75185				t = text(t_value);
75186				attr(button, "type", "submit");
75187				attr(button, "class", "submit-button svelte-uox0m2");
75188				button.disabled = button_disabled_value = /*loading*/ ctx[5] || /*submitting*/ ctx[11] || !/*hasChanges*/ ctx[10];
75189				attr(div, "class", "form-actions svelte-uox0m2");
75190			},
75191			m(target, anchor) {
75192				insert(target, div, anchor);
75193				append(div, button);
75194				append(button, t);
75195			},
75196			p(ctx, dirty) {
75197				if (dirty[0] & /*submitting, loading, submitButtonText*/ 2096 && t_value !== (t_value = (/*submitting*/ ctx[11]
75198				? 'Updating...'
75199				: /*loading*/ ctx[5]
75200					? 'Loading...'
75201					: /*submitButtonText*/ ctx[4]) + "")) set_data(t, t_value);
75202
75203				if (dirty[0] & /*loading, submitting, hasChanges*/ 3104 && button_disabled_value !== (button_disabled_value = /*loading*/ ctx[5] || /*submitting*/ ctx[11] || !/*hasChanges*/ ctx[10])) {
75204					button.disabled = button_disabled_value;
75205				}
75206			},
75207			d(detaching) {
75208				if (detaching) {
75209					detach(div);
75210				}
75211			}
75212		};
75213	}
75214
75215	function create_fragment$5(ctx) {
75216		let div;
75217		let t0;
75218		let t1;
75219		let if_block0 = /*formTitle*/ ctx[2] && create_if_block_6$1(ctx);
75220		let if_block1 = /*formDescription*/ ctx[3] && create_if_block_5$1(ctx);
75221
75222		function select_block_type(ctx, dirty) {
75223			if (/*loading*/ ctx[5]) return create_if_block$3;
75224			if (/*customFields*/ ctx[0] && /*customFields*/ ctx[0].length > 0) return create_if_block_1$3;
75225		}
75226
75227		let current_block_type = select_block_type(ctx);
75228		let if_block2 = current_block_type && current_block_type(ctx);
75229
75230		return {
75231			c() {
75232				div = element("div");
75233				if (if_block0) if_block0.c();
75234				t0 = space();
75235				if (if_block1) if_block1.c();
75236				t1 = space();
75237				if (if_block2) if_block2.c();
75238				attr(div, "class", "subscription-custom-fields-container svelte-uox0m2");
75239			},
75240			m(target, anchor) {
75241				insert(target, div, anchor);
75242				if (if_block0) if_block0.m(div, null);
75243				append(div, t0);
75244				if (if_block1) if_block1.m(div, null);
75245				append(div, t1);
75246				if (if_block2) if_block2.m(div, null);
75247			},
75248			p(ctx, dirty) {
75249				if (/*formTitle*/ ctx[2]) {
75250					if (if_block0) {
75251						if_block0.p(ctx, dirty);
75252					} else {
75253						if_block0 = create_if_block_6$1(ctx);
75254						if_block0.c();
75255						if_block0.m(div, t0);
75256					}
75257				} else if (if_block0) {
75258					if_block0.d(1);
75259					if_block0 = null;
75260				}
75261
75262				if (/*formDescription*/ ctx[3]) {
75263					if (if_block1) {
75264						if_block1.p(ctx, dirty);
75265					} else {
75266						if_block1 = create_if_block_5$1(ctx);
75267						if_block1.c();
75268						if_block1.m(div, t1);
75269					}
75270				} else if (if_block1) {
75271					if_block1.d(1);
75272					if_block1 = null;
75273				}
75274
75275				if (current_block_type === (current_block_type = select_block_type(ctx)) && if_block2) {
75276					if_block2.p(ctx, dirty);
75277				} else {
75278					if (if_block2) if_block2.d(1);
75279					if_block2 = current_block_type && current_block_type(ctx);
75280
75281					if (if_block2) {
75282						if_block2.c();
75283						if_block2.m(div, null);
75284					}
75285				}
75286			},
75287			i: noop,
75288			o: noop,
75289			d(detaching) {
75290				if (detaching) {
75291					detach(div);
75292				}
75293
75294				if (if_block0) if_block0.d();
75295				if (if_block1) if_block1.d();
75296
75297				if (if_block2) {
75298					if_block2.d();
75299				}
75300			}
75301		};
75302	}
75303
75304	function instance$5($$self, $$props, $$invalidate) {
75305		let hasChanges;
75306		let changedFields;
75307		let fieldGroups;
75308		let activeFieldGroups;
75309		let { customFields } = $$props;
75310		let { editableFieldNames } = $$props;
75311		let { formTitle } = $$props;
75312		let { formDescription } = $$props;
75313		let { submitButtonText } = $$props;
75314		let { onUpdateCustomFields } = $$props;
75315		let { loading = false } = $$props;
75316
75317		// New props for API call states
75318		let submitting = false;
75319
75320		let successMessage = '';
75321		let errorMessage = '';
75322		let fieldValues = {};
75323		let originalFieldValues = {}; // Track original values to detect changes
75324
75325		// Custom validation function that only validates sections with changes
75326		const validateChangedSections = () => {
75327			// Custom fields don't have validation requirements
75328			return [];
75329		};
75330
75331		// Initialize/reset form values when component mounts or custom fields change
75332		let lastCustomFieldsLength = 0;
75333
75334		// eslint-disable-next-line no-inner-declarations
75335		function initializeFormValues() {
75336			// Reset/initialize field values to original values
75337			$$invalidate(8, fieldValues = {});
75338
75339			$$invalidate(16, originalFieldValues = {});
75340
75341			customFields.forEach(field => {
75342				const originalValue = field.value || '';
75343				$$invalidate(8, fieldValues[field.name] = originalValue, fieldValues);
75344				$$invalidate(16, originalFieldValues[field.name] = originalValue, originalFieldValues);
75345			});
75346
75347			// Clear any messages and states
75348			$$invalidate(6, successMessage = '');
75349
75350			$$invalidate(7, errorMessage = '');
75351			$$invalidate(11, submitting = false);
75352		}
75353
75354		// Check if a field is editable
75355		const isFieldEditable = fieldName => {
75356			return editableFieldNames.includes(fieldName);
75357		};
75358
75359		const handleSubmit = async () => {
75360			// Validate only the sections that have changes
75361			const validationErrors = validateChangedSections();
75362
75363			if (validationErrors.length > 0) {
75364				$$invalidate(7, errorMessage = validationErrors.join(', '));
75365				return;
75366			}
75367
75368			$$invalidate(11, submitting = true);
75369			$$invalidate(6, successMessage = '');
75370			$$invalidate(7, errorMessage = '');
75371
75372			try {
75373				// Only send the fields that have actually changed
75374				const changedFieldValues = {};
75375
75376				changedFields.forEach(fieldName => {
75377					changedFieldValues[fieldName] = fieldValues[fieldName];
75378				});
75379
75380				await onUpdateCustomFields(changedFieldValues);
75381				$$invalidate(6, successMessage = 'Successfully updated subscription details!');
75382
75383				// Clear all input boxes after successful update
75384				Object.keys(fieldValues).forEach(fieldName => {
75385					$$invalidate(8, fieldValues[fieldName] = '', fieldValues);
75386					$$invalidate(16, originalFieldValues[fieldName] = '', originalFieldValues);
75387				});
75388
75389				// Clear success message after 5 seconds
75390				setTimeout(
75391					() => {
75392						$$invalidate(6, successMessage = '');
75393					},
75394					5000
75395				);
75396			} catch(error) {
75397				$$invalidate(7, errorMessage = error.message || 'Failed to update subscription details. Please try again.');
75398			} finally {
75399				$$invalidate(11, submitting = false);
75400			}
75401		};
75402
75403		const handleFieldChange = (fieldName, value) => {
75404			$$invalidate(8, fieldValues[fieldName] = value, fieldValues);
75405		};
75406
75407		const handleInputEvent = (fieldName, event) => {
75408			handleFieldChange(fieldName, event.target.value);
75409		};
75410
75411		const addressFieldNames = [
75412			'DeliveryAddressLine1__c',
75413			'DeliveryAddressLine2__c',
75414			'DeliveryCity__c',
75415			'DeliveryPostcode__c',
75416			'DeliveryZipcode__c',
75417			'DeliveryState__c',
75418			'DeliveryCountry__c'
75419		];
75420
75421		addressFieldNames.some(name => isFieldEditable(name));
75422		addressFieldNames.some(name => fieldValues[name]);
75423		const input_handler = (field, e) => handleInputEvent(field.name, e);
75424
75425		$$self.$$set = $$props => {
75426			if ('customFields' in $$props) $$invalidate(0, customFields = $$props.customFields);
75427			if ('editableFieldNames' in $$props) $$invalidate(1, editableFieldNames = $$props.editableFieldNames);
75428			if ('formTitle' in $$props) $$invalidate(2, formTitle = $$props.formTitle);
75429			if ('formDescription' in $$props) $$invalidate(3, formDescription = $$props.formDescription);
75430			if ('submitButtonText' in $$props) $$invalidate(4, submitButtonText = $$props.submitButtonText);
75431			if ('onUpdateCustomFields' in $$props) $$invalidate(15, onUpdateCustomFields = $$props.onUpdateCustomFields);
75432			if ('loading' in $$props) $$invalidate(5, loading = $$props.loading);
75433		};
75434
75435		$$self.$$.update = () => {
75436			if ($$self.$$.dirty[0] & /*fieldValues, originalFieldValues*/ 65792) {
75437				// Check if any field values have been modified
75438				$$invalidate(10, hasChanges = Object.keys(fieldValues).some(key => {
75439					const current = fieldValues[key];
75440					const original = originalFieldValues[key];
75441
75442					// Handle array values (multiselect)
75443					if (Array.isArray(current) && Array.isArray(original)) {
75444						return JSON.stringify(current.sort()) !== JSON.stringify(original.sort());
75445					}
75446
75447					// Handle regular values
75448					return current !== original;
75449				}));
75450			}
75451
75452			if ($$self.$$.dirty[0] & /*fieldValues, originalFieldValues*/ 65792) {
75453				// Get the fields that have been changed (and thus the sections that should be validated)
75454				$$invalidate(19, changedFields = Object.keys(fieldValues).filter(key => {
75455					const current = fieldValues[key];
75456					const original = originalFieldValues[key];
75457
75458					// Handle array values (multiselect)
75459					if (Array.isArray(current) && Array.isArray(original)) {
75460						return JSON.stringify(current.sort()) !== JSON.stringify(original.sort());
75461					}
75462
75463					// Handle regular values
75464					return current !== original;
75465				}));
75466			}
75467
75468			if ($$self.$$.dirty[0] & /*customFields*/ 1) {
75469				// Group fields by category - include all fields for display
75470				$$invalidate(18, fieldGroups = { all: { fields: customFields || [] } });
75471			}
75472
75473			if ($$self.$$.dirty[0] & /*fieldGroups*/ 262144) {
75474				// Get only field groups that have fields
75475				$$invalidate(9, activeFieldGroups = Object.entries(fieldGroups).filter(([_key, group]) => group.fields.length > 0));
75476			}
75477
75478			if ($$self.$$.dirty[0] & /*activeFieldGroups, changedFields*/ 524800) {
75479				// Get the sections that have changes and need validation
75480				activeFieldGroups.filter(([_groupKey, group]) => {
75481					return group.fields.some(field => changedFields.includes(field.name));
75482				});
75483			}
75484
75485			if ($$self.$$.dirty[0] & /*hasChanges, successMessage, errorMessage*/ 1216) {
75486				// Clear messages when user starts making changes
75487				if (hasChanges && (successMessage || errorMessage)) {
75488					$$invalidate(6, successMessage = '');
75489					$$invalidate(7, errorMessage = '');
75490				}
75491			}
75492
75493			if ($$self.$$.dirty[0] & /*customFields, lastCustomFieldsLength*/ 131073) {
75494				if (customFields && customFields.length !== lastCustomFieldsLength) {
75495					initializeFormValues();
75496					$$invalidate(17, lastCustomFieldsLength = customFields.length);
75497				}
75498			}
75499		};
75500
75501		return [
75502			customFields,
75503			editableFieldNames,
75504			formTitle,
75505			formDescription,
75506			submitButtonText,
75507			loading,
75508			successMessage,
75509			errorMessage,
75510			fieldValues,
75511			activeFieldGroups,
75512			hasChanges,
75513			submitting,
75514			isFieldEditable,
75515			handleSubmit,
75516			handleInputEvent,
75517			onUpdateCustomFields,
75518			originalFieldValues,
75519			lastCustomFieldsLength,
75520			fieldGroups,
75521			changedFields,
75522			input_handler
75523		];
75524	}
75525
75526	class SubscriptionCustomFieldsList extends SvelteComponent {
75527		constructor(options) {
75528			super();
75529
75530			init(
75531				this,
75532				options,
75533				instance$5,
75534				create_fragment$5,
75535				safe_not_equal,
75536				{
75537					customFields: 0,
75538					editableFieldNames: 1,
75539					formTitle: 2,
75540					formDescription: 3,
75541					submitButtonText: 4,
75542					onUpdateCustomFields: 15,
75543					loading: 5
75544				},
75545				null,
75546				[-1, -1]
75547			);
75548		}
75549	}
75550
75551	const subscriptionCustomFieldsListFactory = {
75552	    matches: (sectionElement) => sectionElement.type === elementTypes.SUBSCRIPTION_CUSTOM_FIELDS_LIST,
75553	    create: (form, formState, formActions, elementConfig) => {
75554	        // Get the selected subscription's custom fields data
75555	        const selectedSubscription = formState.selectedSubscription || formState.existingSubscriptions?.[0];
75556	        // Create custom fields array from field definitions and subscription data
75557	        // Include all field definitions so both read-only and editable fields are available
75558	        const customFields = (elementConfig.customFieldDefinitions || []).map(fieldDef => ({
75559	            ...fieldDef,
75560	            value: selectedSubscription?.[fieldDef.name] || ''
75561	        }));
75562	        return {
75563	            component: SubscriptionCustomFieldsList,
75564	            props: {
75565	                customFields,
75566	                editableFieldNames: elementConfig.enabledCustomFields || [],
75567	                formTitle: elementConfig.formTitle || 'Update Subscription Details',
75568	                formDescription: elementConfig.formDescription || 'Update your subscription information below',
75569	                submitButtonText: elementConfig.submitButtonText || 'Update Details',
75570	                loading: formState.loadingSubscriptionCustomFields || false,
75571	                onBack: () => {
75572	                    // Navigate back to the main subscription list
75573	                    formActions.jumpToPartStart(partTypes.LIST_SUBSCRIPTIONS.type);
75574	                },
75575	                onUpdateCustomFields: async (fieldValues) => {
75576	                    // Check if we have a selected subscription with ID
75577	                    if (!selectedSubscription?.externalId) {
75578	                        throw new Error('No subscription selected for update');
75579	                    }
75580	                    // Check if we have accountId for ownership verification
75581	                    if (!selectedSubscription?.accountId) {
75582	                        throw new Error('Subscription account information is missing. Please try again.');
75583	                    }
75584	                    const subscriptionId = selectedSubscription.externalId;
75585	                    const accountId = selectedSubscription.accountId;
75586	                    // Set loading state
75587	                    formActions.updateFormState({
75588	                        loadingSubscriptionCustomFields: true
75589	                    });
75590	                    // Handle preview mode with mock API response
75591	                    if (form.environment?.previewMode) {
75592	                        // Simulate API delay
75593	                        await new Promise(resolve => setTimeout(resolve, 1000));
75594	                        // Update form state with the new values
75595	                        formActions.updateFormState({
75596	                            selectedSubscription: {
75597	                                ...selectedSubscription,
75598	                                ...fieldValues
75599	                            },
75600	                            loadingSubscriptionCustomFields: false
75601	                        });
75602	                        // Return mock success response
75603	                        return { success: true, message: 'Custom fields updated successfully (preview mode)' };
75604	                    }
75605	                    try {
75606	                        // Make real API call to update subscription custom fields
75607	                        const response = await fetch(`/zephr/subscriptions/${subscriptionId}/custom-fields`, {
75608	                            method: 'PATCH',
75609	                            headers: {
75610	                                'Content-Type': 'application/json',
75611	                            },
75612	                            body: JSON.stringify({
75613	                                accountId: accountId, // Required for backend ownership verification
75614	                                customFields: fieldValues
75615	                            })
75616	                        });
75617	                        if (!response.ok) {
75618	                            const errorData = await response.json().catch(() => ({}));
75619	                            throw new Error(errorData.message || `Failed to update subscription: ${response.status} ${response.statusText}`);
75620	                        }
75621	                        const result = await response.json();
75622	                        // Update form state with the new values
75623	                        formActions.updateFormState({
75624	                            selectedSubscription: {
75625	                                ...selectedSubscription,
75626	                                ...fieldValues
75627	                            },
75628	                            loadingSubscriptionCustomFields: false
75629	                        });
75630	                        // Return success - the component will handle showing success message
75631	                        return result;
75632	                    }
75633	                    catch (error) {
75634	                        console.error('Error updating subscription custom fields:', error);
75635	                        // Clear loading state on error
75636	                        formActions.updateFormState({
75637	                            loadingSubscriptionCustomFields: false
75638	                        });
75639	                        throw error; // Re-throw so component can handle it
75640	                    }
75641	                }
75642	            }
75643	        };
75644	    }
75645	};
75646
75647	// TODO: This is a temporary list of countries that are accepted by Zuora.
75648	// We need to get this from the Contact metadata endpoint.
75649	const ZUORA_BILLING_COUNTRIES = [
75650	    "Afghanistan",
75651	    "Aland Islands",
75652	    "Albania",
75653	    "Algeria",
75654	    "American Samoa",
75655	    "Andorra",
75656	    "Angola",
75657	    "Anguilla",
75658	    "Antarctica",
75659	    "Antigua And Barbuda",
75660	    "Argentina",
75661	    "Armenia",
75662	    "Aruba",
75663	    "Australia",
75664	    "Austria",
75665	    "Azerbaijan",
75666	    "Bahamas",
75667	    "Bahrain",
75668	    "Bangladesh",
75669	    "Barbados",
75670	    "Belarus",
75671	    "Belgium",
75672	    "Belize",
75673	    "Benin",
75674	    "Bermuda",
75675	    "Bhutan",
75676	    "Bolivia",
75677	    "Bonaire, Saint Eustatius and Saba",
75678	    "Bosnia and Herzegovina",
75679	    "Botswana",
75680	    "Bouvet Island",
75681	    "Brazil",
75682	    "British Indian Ocean Territory",
75683	    "Brunei Darussalam",
75684	    "Bulgaria",
75685	    "Burkina Faso",
75686	    "Burundi",
75687	    "Cambodia",
75688	    "Cameroon",
75689	    "Canada",
75690	    "Cape Verde",
75691	    "Cayman Islands",
75692	    "Central African Republic",
75693	    "Chad",
75694	    "Chile",
75695	    "China",
75696	    "Christmas Island",
75697	    "Cocos (Keeling) Islands",
75698	    "Colombia",
75699	    "Comoros",
75700	    "Congo",
75701	    "Congo, the Democratic Republic of the",
75702	    "Cook Islands",
75703	    "Costa Rica",
75704	    "Cote d'Ivoire",
75705	    "Croatia",
75706	    "Cuba",
75707	    "Curacao",
75708	    "Cyprus",
75709	    "Czech Republic",
75710	    "Denmark",
75711	    "Djibouti",
75712	    "Dominica",
75713	    "Dominican Republic",
75714	    "Ecuador",
75715	    "Egypt",
75716	    "El Salvador",
75717	    "Equatorial Guinea",
75718	    "Eritrea",
75719	    "Estonia",
75720	    "Ethiopia",
75721	    "Falkland Islands (Malvinas)",
75722	    "Faroe Islands",
75723	    "Fiji",
75724	    "Finland",
75725	    "France",
75726	    "French Guiana",
75727	    "French Polynesia",
75728	    "French Southern Territories",
75729	    "Gabon",
75730	    "Gambia",
75731	    "Georgia",
75732	    "Germany",
75733	    "Ghana",
75734	    "Gibraltar",
75735	    "Greece",
75736	    "Greenland",
75737	    "Grenada",
75738	    "Guadeloupe",
75739	    "Guam",
75740	    "Guatemala",
75741	    "Guernsey",
75742	    "Guinea",
75743	    "Guinea-Bissau",
75744	    "Guyana",
75745	    "Haiti",
75746	    "Heard Island and McDonald Islands",
75747	    "Holy See (Vatican City State)",
75748	    "Honduras",
75749	    "Hong Kong",
75750	    "Hungary",
75751	    "Iceland",
75752	    "India",
75753	    "Indonesia",
75754	    "Iran, Islamic Republic of",
75755	    "Iraq",
75756	    "Ireland",
75757	    "Isle of Man",
75758	    "Israel",
75759	    "Italy",
75760	    "Jamaica",
75761	    "Japan",
75762	    "Jersey",
75763	    "Jordan",
75764	    "Kazakhstan",
75765	    "Kenya",
75766	    "Kiribati",
75767	    "Korea, Democratic People's Republic of",
75768	    "Korea, Republic of",
75769	    "Kosovo",
75770	    "Kuwait",
75771	    "Kyrgyzstan",
75772	    "Lao People's Democratic Republic",
75773	    "Latvia",
75774	    "Lebanon",
75775	    "Lesotho",
75776	    "Liberia",
75777	    "Libyan Arab Jamahiriya",
75778	    "Liechtenstein",
75779	    "Lithuania",
75780	    "Luxembourg",
75781	    "Macao",
75782	    "Macedonia, the former Yugoslav Republic of",
75783	    "Madagascar",
75784	    "Malawi",
75785	    "Malaysia",
75786	    "Maldives",
75787	    "Mali",
75788	    "Malta",
75789	    "Marshall Islands",
75790	    "Martinique",
75791	    "Mauritania",
75792	    "Mauritius",
75793	    "Mayotte",
75794	    "Mexico",
75795	    "Micronesia, Federated States of",
75796	    "Moldova, Republic of",
75797	    "Monaco",
75798	    "Mongolia",
75799	    "Montenegro",
75800	    "Montserrat",
75801	    "Morocco",
75802	    "Mozambique",
75803	    "Myanmar",
75804	    "Namibia",
75805	    "Nauru",
75806	    "Nepal",
75807	    "Netherlands",
75808	    "Netherlands Antilles",
75809	    "New Caledonia",
75810	    "New Zealand",
75811	    "Nicaragua",
75812	    "Niger",
75813	    "Nigeria",
75814	    "Niue",
75815	    "Norfolk Island",
75816	    "Northern Mariana Islands",
75817	    "Norway",
75818	    "Oman",
75819	    "Pakistan",
75820	    "Palau",
75821	    "Palestinian Territory, Occupied",
75822	    "Panama",
75823	    "Papua New Guinea",
75824	    "Paraguay",
75825	    "Peru",
75826	    "Philippines",
75827	    "Pitcairn",
75828	    "Poland",
75829	    "Portugal",
75830	    "Puerto Rico",
75831	    "Qatar",
75832	    "Reunion",
75833	    "Romania",
75834	    "Russian Federation",
75835	    "Rwanda",
75836	    "Saint Barthelemy",
75837	    "Saint Helena",
75838	    "Saint Kitts and Nevis",
75839	    "Saint Lucia",
75840	    "Saint Martin (French part)",
75841	    "Saint Pierre and Miquelon",
75842	    "Saint Vincent and the Grenadines",
75843	    "Samoa",
75844	    "San Marino",
75845	    "Sao Tome and Principe",
75846	    "Saudi Arabia",
75847	    "Senegal",
75848	    "Serbia",
75849	    "Seychelles",
75850	    "Sierra Leone",
75851	    "Singapore",
75852	    "Sint Maarten",
75853	    "Slovakia",
75854	    "Slovenia",
75855	    "Solomon Islands",
75856	    "Somalia",
75857	    "South Africa",
75858	    "South Georgia and the South Sandwich Islands",
75859	    "South Sudan",
75860	    "Spain",
75861	    "Sri Lanka",
75862	    "Sudan",
75863	    "Suriname",
75864	    "Svalbard and Jan Mayen",
75865	    "Swaziland",
75866	    "Sweden",
75867	    "Switzerland",
75868	    "Syrian Arab Republic",
75869	    "Taiwan",
75870	    "Tajikistan",
75871	    "Tanzania, United Republic of",
75872	    "Thailand",
75873	    "Timor-Leste",
75874	    "Togo",
75875	    "Tokelau",
75876	    "Tonga",
75877	    "Trinidad and Tobago",
75878	    "Tunisia",
75879	    "Turkey",
75880	    "Turkmenistan",
75881	    "Turks and Caicos Islands",
75882	    "Tuvalu",
75883	    "Uganda",
75884	    "Ukraine",
75885	    "United Arab Emirates",
75886	    "United Kingdom",
75887	    "United States",
75888	    "United States Minor Outlying Islands",
75889	    "Uruguay",
75890	    "Uzbekistan",
75891	    "Vanuatu",
75892	    "Venezuela",
75893	    "Viet Nam",
75894	    "Virgin Islands, British",
75895	    "Virgin Islands, U.S.",
75896	    "Wallis and Futuna",
75897	    "Western Sahara",
75898	    "Yemen",
75899	    "Zambia",
75900	    "Zimbabwe"
75901	];
75902
75903	/* src/components/elements/billToContact/BillToContact.svelte generated by Svelte v4.2.12 */
75904
75905	function get_each_context$1(ctx, list, i) {
75906		const child_ctx = ctx.slice();
75907		child_ctx[17] = list[i];
75908		return child_ctx;
75909	}
75910
75911	// (63:6) {#each ZUORA_BILLING_COUNTRIES as country}
75912	function create_each_block$1(ctx) {
75913		let option;
75914		let t0;
75915		let t1;
75916		let option_selected_value;
75917
75918		return {
75919			c() {
75920				option = element("option");
75921				t0 = text(/*country*/ ctx[17]);
75922				t1 = space();
75923				option.__value = /*country*/ ctx[17];
75924				set_input_value(option, option.__value);
75925				option.selected = option_selected_value = /*billToContact*/ ctx[0].country === /*country*/ ctx[17];
75926			},
75927			m(target, anchor) {
75928				insert(target, option, anchor);
75929				append(option, t0);
75930				append(option, t1);
75931			},
75932			p(ctx, dirty) {
75933				if (dirty & /*billToContact*/ 1 && option_selected_value !== (option_selected_value = /*billToContact*/ ctx[0].country === /*country*/ ctx[17])) {
75934					option.selected = option_selected_value;
75935				}
75936			},
75937			d(detaching) {
75938				if (detaching) {
75939					detach(option);
75940				}
75941			}
75942		};
75943	}
75944
75945	// (83:4) {#if errors["address1"]}
75946	function create_if_block_6(ctx) {
75947		let div;
75948		let t_value = /*errors*/ ctx[1]["address1"] + "";
75949		let t;
75950
75951		return {
75952			c() {
75953				div = element("div");
75954				t = text(t_value);
75955				attr(div, "class", "error-text svelte-z564ap");
75956			},
75957			m(target, anchor) {
75958				insert(target, div, anchor);
75959				append(div, t);
75960			},
75961			p(ctx, dirty) {
75962				if (dirty & /*errors*/ 2 && t_value !== (t_value = /*errors*/ ctx[1]["address1"] + "")) set_data(t, t_value);
75963			},
75964			d(detaching) {
75965				if (detaching) {
75966					detach(div);
75967				}
75968			}
75969		};
75970	}
75971
75972	// (97:4) {#if errors["address2"]}
75973	function create_if_block_5(ctx) {
75974		let div;
75975		let t_value = /*errors*/ ctx[1]["address2"] + "";
75976		let t;
75977
75978		return {
75979			c() {
75980				div = element("div");
75981				t = text(t_value);
75982				attr(div, "class", "error-text svelte-z564ap");
75983			},
75984			m(target, anchor) {
75985				insert(target, div, anchor);
75986				append(div, t);
75987			},
75988			p(ctx, dirty) {
75989				if (dirty & /*errors*/ 2 && t_value !== (t_value = /*errors*/ ctx[1]["address2"] + "")) set_data(t, t_value);
75990			},
75991			d(detaching) {
75992				if (detaching) {
75993					detach(div);
75994				}
75995			}
75996		};
75997	}
75998
75999	// (111:4) {#if errors["city"]}
76000	function create_if_block_4(ctx) {
76001		let div;
76002		let t_value = /*errors*/ ctx[1]["city"] + "";
76003		let t;
76004
76005		return {
76006			c() {
76007				div = element("div");
76008				t = text(t_value);
76009				attr(div, "class", "error-text svelte-z564ap");
76010			},
76011			m(target, anchor) {
76012				insert(target, div, anchor);
76013				append(div, t);
76014			},
76015			p(ctx, dirty) {
76016				if (dirty & /*errors*/ 2 && t_value !== (t_value = /*errors*/ ctx[1]["city"] + "")) set_data(t, t_value);
76017			},
76018			d(detaching) {
76019				if (detaching) {
76020					detach(div);
76021				}
76022			}
76023		};
76024	}
76025
76026	// (125:4) {#if errors["state"]}
76027	function create_if_block_3$1(ctx) {
76028		let div;
76029		let t_value = /*errors*/ ctx[1]["state"] + "";
76030		let t;
76031
76032		return {
76033			c() {
76034				div = element("div");
76035				t = text(t_value);
76036				attr(div, "class", "error-text svelte-z564ap");
76037			},
76038			m(target, anchor) {
76039				insert(target, div, anchor);
76040				append(div, t);
76041			},
76042			p(ctx, dirty) {
76043				if (dirty & /*errors*/ 2 && t_value !== (t_value = /*errors*/ ctx[1]["state"] + "")) set_data(t, t_value);
76044			},
76045			d(detaching) {
76046				if (detaching) {
76047					detach(div);
76048				}
76049			}
76050		};
76051	}
76052
76053	// (139:4) {#if errors["zipCode"]}
76054	function create_if_block_2$1(ctx) {
76055		let div;
76056		let t_value = /*errors*/ ctx[1]["zipCode"] + "";
76057		let t;
76058
76059		return {
76060			c() {
76061				div = element("div");
76062				t = text(t_value);
76063				attr(div, "class", "error-text svelte-z564ap");
76064			},
76065			m(target, anchor) {
76066				insert(target, div, anchor);
76067				append(div, t);
76068			},
76069			p(ctx, dirty) {
76070				if (dirty & /*errors*/ 2 && t_value !== (t_value = /*errors*/ ctx[1]["zipCode"] + "")) set_data(t, t_value);
76071			},
76072			d(detaching) {
76073				if (detaching) {
76074					detach(div);
76075				}
76076			}
76077		};
76078	}
76079
76080	// (153:4) {#if errors["county"]}
76081	function create_if_block_1$2(ctx) {
76082		let div;
76083		let t_value = /*errors*/ ctx[1]["county"] + "";
76084		let t;
76085
76086		return {
76087			c() {
76088				div = element("div");
76089				t = text(t_value);
76090				attr(div, "class", "error-text svelte-z564ap");
76091			},
76092			m(target, anchor) {
76093				insert(target, div, anchor);
76094				append(div, t);
76095			},
76096			p(ctx, dirty) {
76097				if (dirty & /*errors*/ 2 && t_value !== (t_value = /*errors*/ ctx[1]["county"] + "")) set_data(t, t_value);
76098			},
76099			d(detaching) {
76100				if (detaching) {
76101					detach(div);
76102				}
76103			}
76104		};
76105	}
76106
76107	// (167:4) {#if errors["taxRegion"]}
76108	function create_if_block$2(ctx) {
76109		let div;
76110		let t_value = /*errors*/ ctx[1]["taxRegion"] + "";
76111		let t;
76112
76113		return {
76114			c() {
76115				div = element("div");
76116				t = text(t_value);
76117				attr(div, "class", "error-text svelte-z564ap");
76118			},
76119			m(target, anchor) {
76120				insert(target, div, anchor);
76121				append(div, t);
76122			},
76123			p(ctx, dirty) {
76124				if (dirty & /*errors*/ 2 && t_value !== (t_value = /*errors*/ ctx[1]["taxRegion"] + "")) set_data(t, t_value);
76125			},
76126			d(detaching) {
76127				if (detaching) {
76128					detach(div);
76129				}
76130			}
76131		};
76132	}
76133
76134	function create_fragment$4(ctx) {
76135		let div8;
76136		let div0;
76137		let label0;
76138		let t1;
76139		let select;
76140		let option;
76141		let select_value_value;
76142		let t3;
76143		let div1;
76144		let label1;
76145		let t5;
76146		let input0;
76147		let t6;
76148		let t7;
76149		let div2;
76150		let label2;
76151		let t9;
76152		let input1;
76153		let t10;
76154		let t11;
76155		let div3;
76156		let label3;
76157		let t13;
76158		let input2;
76159		let t14;
76160		let t15;
76161		let div4;
76162		let label4;
76163		let t17;
76164		let input3;
76165		let t18;
76166		let t19;
76167		let div5;
76168		let label5;
76169		let t21;
76170		let input4;
76171		let t22;
76172		let t23;
76173		let div6;
76174		let label6;
76175		let t25;
76176		let input5;
76177		let t26;
76178		let t27;
76179		let div7;
76180		let label7;
76181		let t29;
76182		let input6;
76183		let t30;
76184		let mounted;
76185		let dispose;
76186		let each_value = ensure_array_like(ZUORA_BILLING_COUNTRIES);
76187		let each_blocks = [];
76188
76189		for (let i = 0; i < each_value.length; i += 1) {
76190			each_blocks[i] = create_each_block$1(get_each_context$1(ctx, each_value, i));
76191		}
76192
76193		let if_block0 = /*errors*/ ctx[1]["address1"] && create_if_block_6(ctx);
76194		let if_block1 = /*errors*/ ctx[1]["address2"] && create_if_block_5(ctx);
76195		let if_block2 = /*errors*/ ctx[1]["city"] && create_if_block_4(ctx);
76196		let if_block3 = /*errors*/ ctx[1]["state"] && create_if_block_3$1(ctx);
76197		let if_block4 = /*errors*/ ctx[1]["zipCode"] && create_if_block_2$1(ctx);
76198		let if_block5 = /*errors*/ ctx[1]["county"] && create_if_block_1$2(ctx);
76199		let if_block6 = /*errors*/ ctx[1]["taxRegion"] && create_if_block$2(ctx);
76200
76201		return {
76202			c() {
76203				div8 = element("div");
76204				div0 = element("div");
76205				label0 = element("label");
76206				label0.textContent = "Country";
76207				t1 = space();
76208				select = element("select");
76209				option = element("option");
76210				option.textContent = "Select a Country";
76211
76212				for (let i = 0; i < each_blocks.length; i += 1) {
76213					each_blocks[i].c();
76214				}
76215
76216				t3 = space();
76217				div1 = element("div");
76218				label1 = element("label");
76219				label1.textContent = "Address 1";
76220				t5 = space();
76221				input0 = element("input");
76222				t6 = space();
76223				if (if_block0) if_block0.c();
76224				t7 = space();
76225				div2 = element("div");
76226				label2 = element("label");
76227				label2.textContent = "Address 2";
76228				t9 = space();
76229				input1 = element("input");
76230				t10 = space();
76231				if (if_block1) if_block1.c();
76232				t11 = space();
76233				div3 = element("div");
76234				label3 = element("label");
76235				label3.textContent = "City";
76236				t13 = space();
76237				input2 = element("input");
76238				t14 = space();
76239				if (if_block2) if_block2.c();
76240				t15 = space();
76241				div4 = element("div");
76242				label4 = element("label");
76243				label4.textContent = "State/Province";
76244				t17 = space();
76245				input3 = element("input");
76246				t18 = space();
76247				if (if_block3) if_block3.c();
76248				t19 = space();
76249				div5 = element("div");
76250				label5 = element("label");
76251				label5.textContent = "Postal Code";
76252				t21 = space();
76253				input4 = element("input");
76254				t22 = space();
76255				if (if_block4) if_block4.c();
76256				t23 = space();
76257				div6 = element("div");
76258				label6 = element("label");
76259				label6.textContent = "County";
76260				t25 = space();
76261				input5 = element("input");
76262				t26 = space();
76263				if (if_block5) if_block5.c();
76264				t27 = space();
76265				div7 = element("div");
76266				label7 = element("label");
76267				label7.textContent = "Tax Region";
76268				t29 = space();
76269				input6 = element("input");
76270				t30 = space();
76271				if (if_block6) if_block6.c();
76272				attr(label0, "for", "address1");
76273				attr(label0, "class", "svelte-z564ap");
76274				option.disabled = true;
76275				option.__value = "";
76276				set_input_value(option, option.__value);
76277				attr(select, "name", "country");
76278				attr(select, "class", "zephr-form-input zephr-form-input-select svelte-z564ap");
76279				toggle_class(select, "unselected", !/*billToContact*/ ctx[0].country);
76280				attr(div0, "class", "field svelte-z564ap");
76281				attr(label1, "for", "address1");
76282				attr(label1, "class", "svelte-z564ap");
76283				attr(input0, "id", "address1");
76284				attr(input0, "type", "text");
76285				input0.required = true;
76286				attr(input0, "class", "svelte-z564ap");
76287				toggle_class(input0, "error", !!/*errors*/ ctx[1]["address1"]);
76288				attr(div1, "class", "field svelte-z564ap");
76289				attr(label2, "for", "address2");
76290				attr(label2, "class", "svelte-z564ap");
76291				attr(input1, "id", "address2");
76292				attr(input1, "type", "text");
76293				input1.required = true;
76294				attr(input1, "class", "svelte-z564ap");
76295				toggle_class(input1, "error", !!/*errors*/ ctx[1]["address2"]);
76296				attr(div2, "class", "field svelte-z564ap");
76297				attr(label3, "for", "city");
76298				attr(label3, "class", "svelte-z564ap");
76299				attr(input2, "id", "city");
76300				attr(input2, "type", "text");
76301				input2.required = true;
76302				attr(input2, "class", "svelte-z564ap");
76303				toggle_class(input2, "error", !!/*errors*/ ctx[1]["city"]);
76304				attr(div3, "class", "field svelte-z564ap");
76305				attr(label4, "for", "state");
76306				attr(label4, "class", "svelte-z564ap");
76307				attr(input3, "id", "state");
76308				attr(input3, "type", "text");
76309				input3.required = true;
76310				attr(input3, "class", "svelte-z564ap");
76311				toggle_class(input3, "error", !!/*errors*/ ctx[1]["state"]);
76312				attr(div4, "class", "field svelte-z564ap");
76313				attr(label5, "for", "zipCode");
76314				attr(label5, "class", "svelte-z564ap");
76315				attr(input4, "id", "zipCode");
76316				attr(input4, "type", "text");
76317				input4.required = true;
76318				attr(input4, "class", "svelte-z564ap");
76319				toggle_class(input4, "error", !!/*errors*/ ctx[1]["zipCode"]);
76320				attr(div5, "class", "field svelte-z564ap");
76321				attr(label6, "for", "county");
76322				attr(label6, "class", "svelte-z564ap");
76323				attr(input5, "id", "county");
76324				attr(input5, "type", "text");
76325				input5.required = true;
76326				attr(input5, "class", "svelte-z564ap");
76327				toggle_class(input5, "error", !!/*errors*/ ctx[1]["county"]);
76328				attr(div6, "class", "field svelte-z564ap");
76329				attr(label7, "for", "taxRegion");
76330				attr(label7, "class", "svelte-z564ap");
76331				attr(input6, "id", "taxRegion");
76332				attr(input6, "type", "text");
76333				input6.required = true;
76334				attr(input6, "class", "svelte-z564ap");
76335				toggle_class(input6, "error", !!/*errors*/ ctx[1]["taxRegion"]);
76336				attr(div7, "class", "field svelte-z564ap");
76337				attr(div8, "class", "bill-to-contact-section svelte-z564ap");
76338			},
76339			m(target, anchor) {
76340				insert(target, div8, anchor);
76341				append(div8, div0);
76342				append(div0, label0);
76343				append(div0, t1);
76344				append(div0, select);
76345				append(select, option);
76346
76347				for (let i = 0; i < each_blocks.length; i += 1) {
76348					if (each_blocks[i]) {
76349						each_blocks[i].m(select, null);
76350					}
76351				}
76352
76353				select_option(select, /*billToContact*/ ctx[0].country ?? "");
76354				append(div8, t3);
76355				append(div8, div1);
76356				append(div1, label1);
76357				append(div1, t5);
76358				append(div1, input0);
76359				set_input_value(input0, /*billToContact*/ ctx[0].address1);
76360				append(div1, t6);
76361				if (if_block0) if_block0.m(div1, null);
76362				append(div8, t7);
76363				append(div8, div2);
76364				append(div2, label2);
76365				append(div2, t9);
76366				append(div2, input1);
76367				set_input_value(input1, /*billToContact*/ ctx[0].address2);
76368				append(div2, t10);
76369				if (if_block1) if_block1.m(div2, null);
76370				append(div8, t11);
76371				append(div8, div3);
76372				append(div3, label3);
76373				append(div3, t13);
76374				append(div3, input2);
76375				set_input_value(input2, /*billToContact*/ ctx[0].city);
76376				append(div3, t14);
76377				if (if_block2) if_block2.m(div3, null);
76378				append(div8, t15);
76379				append(div8, div4);
76380				append(div4, label4);
76381				append(div4, t17);
76382				append(div4, input3);
76383				set_input_value(input3, /*billToContact*/ ctx[0].state);
76384				append(div4, t18);
76385				if (if_block3) if_block3.m(div4, null);
76386				append(div8, t19);
76387				append(div8, div5);
76388				append(div5, label5);
76389				append(div5, t21);
76390				append(div5, input4);
76391				set_input_value(input4, /*billToContact*/ ctx[0].zipCode);
76392				append(div5, t22);
76393				if (if_block4) if_block4.m(div5, null);
76394				append(div8, t23);
76395				append(div8, div6);
76396				append(div6, label6);
76397				append(div6, t25);
76398				append(div6, input5);
76399				set_input_value(input5, /*billToContact*/ ctx[0].county);
76400				append(div6, t26);
76401				if (if_block5) if_block5.m(div6, null);
76402				append(div8, t27);
76403				append(div8, div7);
76404				append(div7, label7);
76405				append(div7, t29);
76406				append(div7, input6);
76407				set_input_value(input6, /*billToContact*/ ctx[0].taxRegion);
76408				append(div7, t30);
76409				if (if_block6) if_block6.m(div7, null);
76410
76411				if (!mounted) {
76412					dispose = [
76413						listen(select, "change", /*onCountrySelect*/ ctx[3]),
76414						listen(input0, "input", /*input0_input_handler*/ ctx[6]),
76415						listen(input0, "input", /*updateSuspendResumeSubscription*/ ctx[2]),
76416						listen(input1, "input", /*input1_input_handler*/ ctx[7]),
76417						listen(input1, "input", /*updateSuspendResumeSubscription*/ ctx[2]),
76418						listen(input2, "input", /*input2_input_handler*/ ctx[8]),
76419						listen(input2, "input", /*updateSuspendResumeSubscription*/ ctx[2]),
76420						listen(input3, "input", /*input3_input_handler*/ ctx[9]),
76421						listen(input3, "input", /*updateSuspendResumeSubscription*/ ctx[2]),
76422						listen(input4, "input", /*input4_input_handler*/ ctx[10]),
76423						listen(input4, "input", /*updateSuspendResumeSubscription*/ ctx[2]),
76424						listen(input5, "input", /*input5_input_handler*/ ctx[11]),
76425						listen(input5, "input", /*updateSuspendResumeSubscription*/ ctx[2]),
76426						listen(input6, "input", /*input6_input_handler*/ ctx[12]),
76427						listen(input6, "input", /*updateSuspendResumeSubscription*/ ctx[2])
76428					];
76429
76430					mounted = true;
76431				}
76432			},
76433			p(ctx, [dirty]) {
76434				if (dirty & /*billToContact*/ 1) {
76435					each_value = ensure_array_like(ZUORA_BILLING_COUNTRIES);
76436					let i;
76437
76438					for (i = 0; i < each_value.length; i += 1) {
76439						const child_ctx = get_each_context$1(ctx, each_value, i);
76440
76441						if (each_blocks[i]) {
76442							each_blocks[i].p(child_ctx, dirty);
76443						} else {
76444							each_blocks[i] = create_each_block$1(child_ctx);
76445							each_blocks[i].c();
76446							each_blocks[i].m(select, null);
76447						}
76448					}
76449
76450					for (; i < each_blocks.length; i += 1) {
76451						each_blocks[i].d(1);
76452					}
76453
76454					each_blocks.length = each_value.length;
76455				}
76456
76457				if (dirty & /*billToContact*/ 1 && select_value_value !== (select_value_value = /*billToContact*/ ctx[0].country ?? "")) {
76458					select_option(select, /*billToContact*/ ctx[0].country ?? "");
76459				}
76460
76461				if (dirty & /*billToContact*/ 1) {
76462					toggle_class(select, "unselected", !/*billToContact*/ ctx[0].country);
76463				}
76464
76465				if (dirty & /*billToContact*/ 1 && input0.value !== /*billToContact*/ ctx[0].address1) {
76466					set_input_value(input0, /*billToContact*/ ctx[0].address1);
76467				}
76468
76469				if (dirty & /*errors*/ 2) {
76470					toggle_class(input0, "error", !!/*errors*/ ctx[1]["address1"]);
76471				}
76472
76473				if (/*errors*/ ctx[1]["address1"]) {
76474					if (if_block0) {
76475						if_block0.p(ctx, dirty);
76476					} else {
76477						if_block0 = create_if_block_6(ctx);
76478						if_block0.c();
76479						if_block0.m(div1, null);
76480					}
76481				} else if (if_block0) {
76482					if_block0.d(1);
76483					if_block0 = null;
76484				}
76485
76486				if (dirty & /*billToContact*/ 1 && input1.value !== /*billToContact*/ ctx[0].address2) {
76487					set_input_value(input1, /*billToContact*/ ctx[0].address2);
76488				}
76489
76490				if (dirty & /*errors*/ 2) {
76491					toggle_class(input1, "error", !!/*errors*/ ctx[1]["address2"]);
76492				}
76493
76494				if (/*errors*/ ctx[1]["address2"]) {
76495					if (if_block1) {
76496						if_block1.p(ctx, dirty);
76497					} else {
76498						if_block1 = create_if_block_5(ctx);
76499						if_block1.c();
76500						if_block1.m(div2, null);
76501					}
76502				} else if (if_block1) {
76503					if_block1.d(1);
76504					if_block1 = null;
76505				}
76506
76507				if (dirty & /*billToContact*/ 1 && input2.value !== /*billToContact*/ ctx[0].city) {
76508					set_input_value(input2, /*billToContact*/ ctx[0].city);
76509				}
76510
76511				if (dirty & /*errors*/ 2) {
76512					toggle_class(input2, "error", !!/*errors*/ ctx[1]["city"]);
76513				}
76514
76515				if (/*errors*/ ctx[1]["city"]) {
76516					if (if_block2) {
76517						if_block2.p(ctx, dirty);
76518					} else {
76519						if_block2 = create_if_block_4(ctx);
76520						if_block2.c();
76521						if_block2.m(div3, null);
76522					}
76523				} else if (if_block2) {
76524					if_block2.d(1);
76525					if_block2 = null;
76526				}
76527
76528				if (dirty & /*billToContact*/ 1 && input3.value !== /*billToContact*/ ctx[0].state) {
76529					set_input_value(input3, /*billToContact*/ ctx[0].state);
76530				}
76531
76532				if (dirty & /*errors*/ 2) {
76533					toggle_class(input3, "error", !!/*errors*/ ctx[1]["state"]);
76534				}
76535
76536				if (/*errors*/ ctx[1]["state"]) {
76537					if (if_block3) {
76538						if_block3.p(ctx, dirty);
76539					} else {
76540						if_block3 = create_if_block_3$1(ctx);
76541						if_block3.c();
76542						if_block3.m(div4, null);
76543					}
76544				} else if (if_block3) {
76545					if_block3.d(1);
76546					if_block3 = null;
76547				}
76548
76549				if (dirty & /*billToContact*/ 1 && input4.value !== /*billToContact*/ ctx[0].zipCode) {
76550					set_input_value(input4, /*billToContact*/ ctx[0].zipCode);
76551				}
76552
76553				if (dirty & /*errors*/ 2) {
76554					toggle_class(input4, "error", !!/*errors*/ ctx[1]["zipCode"]);
76555				}
76556
76557				if (/*errors*/ ctx[1]["zipCode"]) {
76558					if (if_block4) {
76559						if_block4.p(ctx, dirty);
76560					} else {
76561						if_block4 = create_if_block_2$1(ctx);
76562						if_block4.c();
76563						if_block4.m(div5, null);
76564					}
76565				} else if (if_block4) {
76566					if_block4.d(1);
76567					if_block4 = null;
76568				}
76569
76570				if (dirty & /*billToContact*/ 1 && input5.value !== /*billToContact*/ ctx[0].county) {
76571					set_input_value(input5, /*billToContact*/ ctx[0].county);
76572				}
76573
76574				if (dirty & /*errors*/ 2) {
76575					toggle_class(input5, "error", !!/*errors*/ ctx[1]["county"]);
76576				}
76577
76578				if (/*errors*/ ctx[1]["county"]) {
76579					if (if_block5) {
76580						if_block5.p(ctx, dirty);
76581					} else {
76582						if_block5 = create_if_block_1$2(ctx);
76583						if_block5.c();
76584						if_block5.m(div6, null);
76585					}
76586				} else if (if_block5) {
76587					if_block5.d(1);
76588					if_block5 = null;
76589				}
76590
76591				if (dirty & /*billToContact*/ 1 && input6.value !== /*billToContact*/ ctx[0].taxRegion) {
76592					set_input_value(input6, /*billToContact*/ ctx[0].taxRegion);
76593				}
76594
76595				if (dirty & /*errors*/ 2) {
76596					toggle_class(input6, "error", !!/*errors*/ ctx[1]["taxRegion"]);
76597				}
76598
76599				if (/*errors*/ ctx[1]["taxRegion"]) {
76600					if (if_block6) {
76601						if_block6.p(ctx, dirty);
76602					} else {
76603						if_block6 = create_if_block$2(ctx);
76604						if_block6.c();
76605						if_block6.m(div7, null);
76606					}
76607				} else if (if_block6) {
76608					if_block6.d(1);
76609					if_block6 = null;
76610				}
76611			},
76612			i: noop,
76613			o: noop,
76614			d(detaching) {
76615				if (detaching) {
76616					detach(div8);
76617				}
76618
76619				destroy_each(each_blocks, detaching);
76620				if (if_block0) if_block0.d();
76621				if (if_block1) if_block1.d();
76622				if (if_block2) if_block2.d();
76623				if (if_block3) if_block3.d();
76624				if (if_block4) if_block4.d();
76625				if (if_block5) if_block5.d();
76626				if (if_block6) if_block6.d();
76627				mounted = false;
76628				run_all(dispose);
76629			}
76630		};
76631	}
76632
76633	function instance$4($$self, $$props, $$invalidate) {
76634		let { formState } = $$props;
76635		let { formActions } = $$props;
76636		const dispatch = createEventDispatcher();
76637		let billToContact = {};
76638		const sourceContact = formState.selectedSubscription?.billToContact || {};
76639
76640		const fieldsToExtract = [
76641			'country',
76642			'address1',
76643			'address2',
76644			'city',
76645			'state',
76646			'zipCode',
76647			'county',
76648			'taxRegion'
76649		];
76650
76651		for (const field of fieldsToExtract) {
76652			if (sourceContact[field] != null) {
76653				billToContact[field] = sourceContact[field];
76654			}
76655		}
76656
76657		let errors = {};
76658
76659		// Update form state when input changes
76660		const updateSuspendResumeSubscription = () => {
76661			formActions.updateFormState({ billToContact });
76662			validateForm();
76663		};
76664
76665		const onCountrySelect = e => {
76666			$$invalidate(0, billToContact.country = e.target.value, billToContact);
76667			updateSuspendResumeSubscription();
76668		};
76669
76670		const validateForm = () => {
76671			// Reset errors
76672			$$invalidate(1, errors = {});
76673
76674			if (!!billToContact.address1 && billToContact.address1.length > 255) {
76675				$$invalidate(1, errors["address1"] = "Address 1 should be 255 characters or less", errors);
76676			}
76677
76678			if (!!billToContact.address2 && billToContact.address2.length > 255) {
76679				$$invalidate(1, errors["address2"] = "Address 2 should be 255 characters or less", errors);
76680			}
76681
76682			if (!!billToContact.city && billToContact.city.length > 40) {
76683				$$invalidate(1, errors["city"] = "City should be 40 characters or less", errors);
76684			}
76685
76686			if (!!billToContact.county && billToContact.county.length > 32) {
76687				$$invalidate(1, errors["county"] = "County should be 32 characters or less", errors);
76688			}
76689
76690			if (!!billToContact.zipCode && billToContact.zipCode.length > 20) {
76691				$$invalidate(1, errors["zipCode"] = "Postal code should be 20 characters or less", errors);
76692			}
76693
76694			// Dispatch event for form validity
76695			const isValid = Object.keys(errors).length === 0;
76696
76697			dispatch("validity", { isValid });
76698		};
76699
76700		function input0_input_handler() {
76701			billToContact.address1 = this.value;
76702			$$invalidate(0, billToContact);
76703		}
76704
76705		function input1_input_handler() {
76706			billToContact.address2 = this.value;
76707			$$invalidate(0, billToContact);
76708		}
76709
76710		function input2_input_handler() {
76711			billToContact.city = this.value;
76712			$$invalidate(0, billToContact);
76713		}
76714
76715		function input3_input_handler() {
76716			billToContact.state = this.value;
76717			$$invalidate(0, billToContact);
76718		}
76719
76720		function input4_input_handler() {
76721			billToContact.zipCode = this.value;
76722			$$invalidate(0, billToContact);
76723		}
76724
76725		function input5_input_handler() {
76726			billToContact.county = this.value;
76727			$$invalidate(0, billToContact);
76728		}
76729
76730		function input6_input_handler() {
76731			billToContact.taxRegion = this.value;
76732			$$invalidate(0, billToContact);
76733		}
76734
76735		$$self.$$set = $$props => {
76736			if ('formState' in $$props) $$invalidate(4, formState = $$props.formState);
76737			if ('formActions' in $$props) $$invalidate(5, formActions = $$props.formActions);
76738		};
76739
76740		return [
76741			billToContact,
76742			errors,
76743			updateSuspendResumeSubscription,
76744			onCountrySelect,
76745			formState,
76746			formActions,
76747			input0_input_handler,
76748			input1_input_handler,
76749			input2_input_handler,
76750			input3_input_handler,
76751			input4_input_handler,
76752			input5_input_handler,
76753			input6_input_handler
76754		];
76755	}
76756
76757	class BillToContact extends SvelteComponent {
76758		constructor(options) {
76759			super();
76760			init(this, options, instance$4, create_fragment$4, safe_not_equal, { formState: 4, formActions: 5 });
76761		}
76762	}
76763
76764	const billToContactFactory = {
76765	    matches: (sectionElement) => sectionElement.type === elementTypes.BILL_TO_CONTACT,
76766	    create: (form, formState, formActions) => {
76767	        return {
76768	            component: BillToContact,
76769	            props: {
76770	                form,
76771	                formState,
76772	                formActions,
76773	            }
76774	        };
76775	    }
76776	};
76777
76778	const factory$1 = {
76779	    matches: (sectionElement) => sectionElement.type === elementTypes.BILLING_COUNTRY,
76780	    create: (form, formState, formActions, elementConfig) => {
76781	        const disabled = elementConfig.disabled || formState.isBusy;
76782	        // Only show for zuora-billing payment provider AND when countryLabel is configured
76783	        if (form.organisationConfiguration.paymentProvider !== 'zuora-billing') {
76784	            return null;
76785	        }
76786	        const paymentConfig = formConfigAs(form);
76787	        // Don't render if countryLabel is not configured in admin console
76788	        if (!paymentConfig.countryLabel) {
76789	            return null;
76790	        }
76791	        const configuredLabel = paymentConfig.countryLabel || elementConfig.label || "Country";
76792	        return ({
76793	            component: BillingCountry,
76794	            props: {
76795	                formKey: form.uniqueKey,
76796	                config: {
76797	                    ...elementConfig,
76798	                    label: configuredLabel
76799	                },
76800	                value: formState.billingCountry || "",
76801	                disabled,
76802	                onChange: (value) => {
76803	                    if (!disabled) {
76804	                        formActions.updateFormState({
76805	                            billingCountry: value,
76806	                            // Clear state when country changes (always clear to avoid US/CA state conflicts)
76807	                            billingState: "",
76808	                            serverErrors: []
76809	                        });
76810	                        logDataLayerEvent(form, 'zephr_form_input_change', {
76811	                            inputName: `zephr-form-billing-country-${form.uniqueKey}`,
76812	                            sectionId: formState.currentSection.type,
76813	                            field: 'billing_country'
76814	                        });
76815	                    }
76816	                },
76817	                onFocus: () => logDataLayerEvent(form, 'zephr_form_input_focus', {
76818	                    inputName: `zephr-form-billing-country-${form.uniqueKey}`,
76819	                    sectionId: formState.currentSection.type,
76820	                    field: 'billing_country'
76821	                }),
76822	                onBlur: () => logDataLayerEvent(form, 'zephr_form_input_blur', {
76823	                    inputName: `zephr-form-billing-country-${form.uniqueKey}`,
76824	                    sectionId: formState.currentSection.type,
76825	                    field: 'billing_country'
76826	                }),
76827	                isPaymentForm: form.formType === FormType.PAYMENT,
76828	            },
76829	            isValid: !elementConfig.required || !!formState.billingCountry
76830	        });
76831	    }
76832	};
76833
76834	const factory = {
76835	    matches: (sectionElement) => sectionElement.type === elementTypes.BILLING_STATE,
76836	    create: (form, formState, formActions, elementConfig) => {
76837	        const disabled = elementConfig.disabled || formState.isBusy;
76838	        // Only show for zuora-billing payment provider AND when stateLabel is configured
76839	        if (form.organisationConfiguration.paymentProvider !== 'zuora-billing') {
76840	            return null;
76841	        }
76842	        const paymentConfig = formConfigAs(form);
76843	        // Don't render if stateLabel is not configured in admin console
76844	        if (!paymentConfig.stateLabel) {
76845	            return null;
76846	        }
76847	        const configuredLabel = paymentConfig.stateLabel || elementConfig.label || "State";
76848	        return ({
76849	            component: BillingState,
76850	            props: {
76851	                formKey: form.uniqueKey,
76852	                config: {
76853	                    ...elementConfig,
76854	                    label: configuredLabel
76855	                },
76856	                value: formState.billingState || "",
76857	                billingCountry: formState.billingCountry || "",
76858	                disabled,
76859	                onChange: (value) => {
76860	                    if (!disabled) {
76861	                        formActions.updateFormState({
76862	                            billingState: value,
76863	                            serverErrors: []
76864	                        });
76865	                        logDataLayerEvent(form, 'zephr_form_input_change', {
76866	                            inputName: `zephr-form-billing-state-${form.uniqueKey}`,
76867	                            sectionId: formState.currentSection.type,
76868	                            field: 'billing_state'
76869	                        });
76870	                    }
76871	                },
76872	                onFocus: () => logDataLayerEvent(form, 'zephr_form_input_focus', {
76873	                    inputName: `zephr-form-billing-state-${form.uniqueKey}`,
76874	                    sectionId: formState.currentSection.type,
76875	                    field: 'billing_state'
76876	                }),
76877	                onBlur: () => logDataLayerEvent(form, 'zephr_form_input_blur', {
76878	                    inputName: `zephr-form-billing-state-${form.uniqueKey}`,
76879	                    sectionId: formState.currentSection.type,
76880	                    field: 'billing_state'
76881	                }),
76882	                isPaymentForm: form.formType === FormType.PAYMENT,
76883	            },
76884	            isValid: !elementConfig.required ||
76885	                (formState.billingCountry === "US" || formState.billingCountry === "CA"
76886	                    ? !!formState.billingState
76887	                    : true) // Not required if country is not US or CA
76888	        });
76889	    }
76890	};
76891
76892	const elementFactories = [
76893	    factory$u,
76894	    factory$t,
76895	    factory$s,
76896	    factory$r,
76897	    factory$q,
76898	    factory$p,
76899	    factory$o,
76900	    factory$n,
76901	    paymentAutoRenewToggleFactory,
76902	    factory$m,
76903	    factory$l,
76904	    factory$k,
76905	    factory$j,
76906	    factory$i,
76907	    factory$h,
76908	    factory$g,
76909	    factory$f,
76910	    factory$e,
76911	    factory$d,
76912	    factory$c,
76913	    factory$b,
76914	    factory$a,
76915	    factory$9,
76916	    factory$8,
76917	    factory$7,
76918	    subscriptionSelectFactory,
76919	    subscriptionsListFactory,
76920	    pastSubscriptionsLinkFactory,
76921	    changePaymentMethodButtonFactory,
76922	    eventLinkFactory,
76923	    factory$6,
76924	    factory$5,
76925	    readOnlyUserAttributeFactory,
76926	    deviceSessionsFactory,
76927	    deviceSessionsSignOutAll,
76928	    billingHistoryFactory,
76929	    factory$4,
76930	    factory$3,
76931	    recipientNameFactory,
76932	    recipientEmailFactory,
76933	    recipientAddressFactory,
76934	    recipientMessageFactory,
76935	    factory$2,
76936	    giftSubscriptionsListFactory,
76937	    giftToggleFactory,
76938	    giftFutureDateToggleFactory,
76939	    giftFutureDateInputFactory,
76940	    suspendResumeSubscriptionFactory,
76941	    subscriptionCustomFieldsUpdateFactory,
76942	    subscriptionCustomFieldsListFactory,
76943	    billToContactFactory,
76944	    factory$1,
76945	    factory,
76946	];
76947
76948	/* src/components/ElementResolver.svelte generated by Svelte v4.2.12 */
76949
76950	function create_if_block$1(ctx) {
76951		let switch_instance;
76952		let t;
76953		let if_block_anchor;
76954		let current;
76955
76956		const switch_instance_spread_levels = [
76957			/*enrichPropsWithServerError*/ ctx[4](/*element*/ ctx[2].props, /*formState*/ ctx[0], /*sectionElement*/ ctx[1])
76958		];
76959
76960		var switch_value = /*element*/ ctx[2].component;
76961
76962		function switch_props(ctx, dirty) {
76963			let switch_instance_props = {};
76964
76965			for (let i = 0; i < switch_instance_spread_levels.length; i += 1) {
76966				switch_instance_props = assign(switch_instance_props, switch_instance_spread_levels[i]);
76967			}
76968
76969			if (dirty !== undefined && dirty & /*enrichPropsWithServerError, element, formState, sectionElement*/ 23) {
76970				switch_instance_props = assign(switch_instance_props, get_spread_update(switch_instance_spread_levels, [
76971					get_spread_object(/*enrichPropsWithServerError*/ ctx[4](/*element*/ ctx[2].props, /*formState*/ ctx[0], /*sectionElement*/ ctx[1]))
76972				]));
76973			}
76974
76975			return { props: switch_instance_props };
76976		}
76977
76978		if (switch_value) {
76979			switch_instance = construct_svelte_component(switch_value, switch_props(ctx));
76980		}
76981
76982		let if_block = /*element*/ ctx[2].isValid === false && /*formState*/ ctx[0].showFieldErrors && create_if_block_1$1(ctx);
76983
76984		return {
76985			c() {
76986				if (switch_instance) create_component(switch_instance.$$.fragment);
76987				t = space();
76988				if (if_block) if_block.c();
76989				if_block_anchor = empty();
76990			},
76991			m(target, anchor) {
76992				if (switch_instance) mount_component(switch_instance, target, anchor);
76993				insert(target, t, anchor);
76994				if (if_block) if_block.m(target, anchor);
76995				insert(target, if_block_anchor, anchor);
76996				current = true;
76997			},
76998			p(ctx, dirty) {
76999				if (dirty & /*element*/ 4 && switch_value !== (switch_value = /*element*/ ctx[2].component)) {
77000					if (switch_instance) {
77001						group_outros();
77002						const old_component = switch_instance;
77003
77004						transition_out(old_component.$$.fragment, 1, 0, () => {
77005							destroy_component(old_component, 1);
77006						});
77007
77008						check_outros();
77009					}
77010
77011					if (switch_value) {
77012						switch_instance = construct_svelte_component(switch_value, switch_props(ctx, dirty));
77013						create_component(switch_instance.$$.fragment);
77014						transition_in(switch_instance.$$.fragment, 1);
77015						mount_component(switch_instance, t.parentNode, t);
77016					} else {
77017						switch_instance = null;
77018					}
77019				} else if (switch_value) {
77020					const switch_instance_changes = (dirty & /*enrichPropsWithServerError, element, formState, sectionElement*/ 23)
77021					? get_spread_update(switch_instance_spread_levels, [
77022							get_spread_object(/*enrichPropsWithServerError*/ ctx[4](/*element*/ ctx[2].props, /*formState*/ ctx[0], /*sectionElement*/ ctx[1]))
77023						])
77024					: {};
77025
77026					switch_instance.$set(switch_instance_changes);
77027				}
77028
77029				if (/*element*/ ctx[2].isValid === false && /*formState*/ ctx[0].showFieldErrors) {
77030					if (if_block) {
77031						if_block.p(ctx, dirty);
77032
77033						if (dirty & /*element, formState*/ 5) {
77034							transition_in(if_block, 1);
77035						}
77036					} else {
77037						if_block = create_if_block_1$1(ctx);
77038						if_block.c();
77039						transition_in(if_block, 1);
77040						if_block.m(if_block_anchor.parentNode, if_block_anchor);
77041					}
77042				} else if (if_block) {
77043					group_outros();
77044
77045					transition_out(if_block, 1, 1, () => {
77046						if_block = null;
77047					});
77048
77049					check_outros();
77050				}
77051			},
77052			i(local) {
77053				if (current) return;
77054				if (switch_instance) transition_in(switch_instance.$$.fragment, local);
77055				transition_in(if_block);
77056				current = true;
77057			},
77058			o(local) {
77059				if (switch_instance) transition_out(switch_instance.$$.fragment, local);
77060				transition_out(if_block);
77061				current = false;
77062			},
77063			d(detaching) {
77064				if (detaching) {
77065					detach(t);
77066					detach(if_block_anchor);
77067				}
77068
77069				if (switch_instance) destroy_component(switch_instance, detaching);
77070				if (if_block) if_block.d(detaching);
77071			}
77072		};
77073	}
77074
77075	// (61:2) {#if element.isValid === false && formState.showFieldErrors}
77076	function create_if_block_1$1(ctx) {
77077		let errormessage;
77078		let current;
77079
77080		errormessage = new ErrorMessage({
77081				props: {
77082					error: "Field is invalid",
77083					isPaymentForm: /*isPaymentForm*/ ctx[3]
77084				}
77085			});
77086
77087		return {
77088			c() {
77089				create_component(errormessage.$$.fragment);
77090			},
77091			m(target, anchor) {
77092				mount_component(errormessage, target, anchor);
77093				current = true;
77094			},
77095			p: noop,
77096			i(local) {
77097				if (current) return;
77098				transition_in(errormessage.$$.fragment, local);
77099				current = true;
77100			},
77101			o(local) {
77102				transition_out(errormessage.$$.fragment, local);
77103				current = false;
77104			},
77105			d(detaching) {
77106				destroy_component(errormessage, detaching);
77107			}
77108		};
77109	}
77110
77111	function create_fragment$3(ctx) {
77112		let if_block_anchor;
77113		let current;
77114		let if_block = /*element*/ ctx[2] && create_if_block$1(ctx);
77115
77116		return {
77117			c() {
77118				if (if_block) if_block.c();
77119				if_block_anchor = empty();
77120			},
77121			m(target, anchor) {
77122				if (if_block) if_block.m(target, anchor);
77123				insert(target, if_block_anchor, anchor);
77124				current = true;
77125			},
77126			p(ctx, [dirty]) {
77127				if (/*element*/ ctx[2]) {
77128					if (if_block) {
77129						if_block.p(ctx, dirty);
77130
77131						if (dirty & /*element*/ 4) {
77132							transition_in(if_block, 1);
77133						}
77134					} else {
77135						if_block = create_if_block$1(ctx);
77136						if_block.c();
77137						transition_in(if_block, 1);
77138						if_block.m(if_block_anchor.parentNode, if_block_anchor);
77139					}
77140				} else if (if_block) {
77141					group_outros();
77142
77143					transition_out(if_block, 1, 1, () => {
77144						if_block = null;
77145					});
77146
77147					check_outros();
77148				}
77149			},
77150			i(local) {
77151				if (current) return;
77152				transition_in(if_block);
77153				current = true;
77154			},
77155			o(local) {
77156				transition_out(if_block);
77157				current = false;
77158			},
77159			d(detaching) {
77160				if (detaching) {
77161					detach(if_block_anchor);
77162				}
77163
77164				if (if_block) if_block.d(detaching);
77165			}
77166		};
77167	}
77168
77169	function instance$3($$self, $$props, $$invalidate) {
77170		let element;
77171		let { form } = $$props;
77172		let { formActions } = $$props;
77173		let isPaymentForm = form.formType === "PAYMENT";
77174		let { formState } = $$props;
77175		let { sectionElement } = $$props;
77176
77177		const enrichPropsWithServerError = (props, _formState, _sectionElement) => {
77178			const serverErrorForElementValue = serverErrorForElement(_sectionElement.type, _formState);
77179			const error = ServerErrors[serverErrorForElementValue];
77180
77181			if (error) {
77182				// send message to app saying payment form has errored
77183				const formErrorMessage = {
77184					error: ServerError[serverErrorForElementValue],
77185					errorMessage: resolveErrorLanguagePackKey(form, serverErrorForElementValue),
77186					success: false,
77187					formSlug: form.id
77188				};
77189
77190				const formEventPayload = JSON.stringify(formErrorMessage);
77191
77192				// handle ios message
77193				window?.webkit?.messageHandlers?.messageHandler?.postMessage(formEventPayload);
77194
77195				// handle android message
77196				window?.AndroidFormEventListener?.processFormEvent(formEventPayload);
77197			}
77198
77199			return error
77200			? {
77201					...element.props,
77202					error: element.props.error ?? (error.useDymamicMessage
77203					? _formState.dynamicServerErrorMessage
77204					: resolveErrorLanguagePackKey(form, serverErrorForElementValue))
77205				}
77206			: props;
77207		};
77208
77209		const buildElement = (_formState, _sectionElement) => {
77210			if (_sectionElement.config?.enabled === false || _sectionElement.hidden === true) {
77211				return null;
77212			}
77213
77214			const factory = elementFactories.find(f => f.matches(_sectionElement, form, _formState.currentPart, _formState.currentSection));
77215
77216			if (!factory) {
77217				throw `Unknown element ${JSON.stringify(_sectionElement)}`;
77218			}
77219
77220			const element = factory.create(form, _formState, formActions, _sectionElement.config);
77221			updateElementValidity(element, _formState, _sectionElement, formActions);
77222			return element;
77223		};
77224
77225		$$self.$$set = $$props => {
77226			if ('form' in $$props) $$invalidate(5, form = $$props.form);
77227			if ('formActions' in $$props) $$invalidate(6, formActions = $$props.formActions);
77228			if ('formState' in $$props) $$invalidate(0, formState = $$props.formState);
77229			if ('sectionElement' in $$props) $$invalidate(1, sectionElement = $$props.sectionElement);
77230		};
77231
77232		$$self.$$.update = () => {
77233			if ($$self.$$.dirty & /*formState, sectionElement*/ 3) {
77234				$$invalidate(2, element = buildElement(formState, sectionElement));
77235			}
77236		};
77237
77238		return [
77239			formState,
77240			sectionElement,
77241			element,
77242			isPaymentForm,
77243			enrichPropsWithServerError,
77244			form,
77245			formActions
77246		];
77247	}
77248
77249	class ElementResolver extends SvelteComponent {
77250		constructor(options) {
77251			super();
77252
77253			init(this, options, instance$3, create_fragment$3, safe_not_equal, {
77254				form: 5,
77255				formActions: 6,
77256				formState: 0,
77257				sectionElement: 1
77258			});
77259		}
77260	}
77261
77262	const extractDefaultUserAttributes = (form) => form.parts
77263	    .flatMap((p) => p.sections)
77264	    .flatMap((s) => s.elements)
77265	    .filter((e) => e.type === elementTypes.USER_ATTRIBUTE)
77266	    .map(e => e.config)
77267	    .reduce((attributes, config) => {
77268	    const schemafield = form.organisationConfiguration.schemaFields.find(s => s.slug === config.slug);
77269	    if (schemafield) {
77270	        return {
77271	            ...attributes,
77272	            [config.slug]: (config.defaultValue || (schemafield["select-options"]?.find(o => o.default)?.value)) ?? undefined
77273	        };
77274	    }
77275	    else {
77276	        return {
77277	            ...attributes
77278	        };
77279	    }
77280	}, {});
77281
77282	/**
77283	 * Sort all items in the Form by their order properties
77284	 */
77285	const sortForm = (form) => ({
77286	    ...form,
77287	    parts: form.parts
77288	        .sort((a, b) => partTypeFor(a.type).order - partTypeFor(b.type).order)
77289	        .map((p) => ({
77290	        ...p,
77291	        sections: p.sections
77292	            .sort((a, b) => a.order - b.order)
77293	            .map((s) => ({
77294	            ...s,
77295	            elements: s.elements.sort((a, b) => a.order - b.order),
77296	        })),
77297	    }))
77298	});
77299
77300	const addFormProcessorsToWindow = () => {
77301	    if (!window.Blaize) {
77302	        window.Blaize = {
77303	            formPreProcessors: {},
77304	            formPostProcessors: {},
77305	            registerFormPreProcessor: function (formSlug, processor) {
77306	                if (!window.Blaize.formPreProcessors[formSlug])
77307	                    window.Blaize.formPreProcessors[formSlug] = [];
77308	                if (typeof processor === "function") {
77309	                    window.Blaize.formPreProcessors[formSlug].push(processor);
77310	                }
77311	            },
77312	            registerFormPostProcessor: function (formSlug, processor) {
77313	                if (!window.Blaize.formPostProcessors[formSlug])
77314	                    window.Blaize.formPostProcessors[formSlug] = [];
77315	                if (typeof processor === "function") {
77316	                    window.Blaize.formPostProcessors[formSlug].push(processor);
77317	                }
77318	            },
77319	            preProcessFormData: function (formSlug, formData) {
77320	                if (window.Blaize.formPreProcessors[formSlug] ||
77321	                    window.Blaize.formPreProcessors["*"]) {
77322	                    const processors = [];
77323	                    if (window.Blaize.formPreProcessors["*"]) {
77324	                        window.Blaize.formPreProcessors["*"].forEach(function (processor) {
77325	                            processors.push(processor);
77326	                        });
77327	                    }
77328	                    if (window.Blaize.formPreProcessors[formSlug]) {
77329	                        window.Blaize.formPreProcessors[formSlug].forEach(function (processor) {
77330	                            processors.push(processor);
77331	                        });
77332	                    }
77333	                    processors.forEach(function (processor) {
77334	                        const processedFormData = processor(formData);
77335	                        if (processedFormData != undefined) {
77336	                            formData = processedFormData;
77337	                        }
77338	                    });
77339	                }
77340	                return formData;
77341	            },
77342	            postProcessFormData: function (formSlug, formData, response) {
77343	                if (window.Blaize.formPostProcessors[formSlug] ||
77344	                    window.Blaize.formPostProcessors["*"]) {
77345	                    const processors = [];
77346	                    if (window.Blaize.formPostProcessors["*"]) {
77347	                        window.Blaize.formPostProcessors["*"].forEach(function (processor) {
77348	                            processors.push(processor);
77349	                        });
77350	                    }
77351	                    if (window.Blaize.formPostProcessors[formSlug]) {
77352	                        window.Blaize.formPostProcessors[formSlug].forEach(function (processor) {
77353	                            processors.push(processor);
77354	                        });
77355	                    }
77356	                    processors.forEach(function (processor) {
77357	                        processor(formData, response);
77358	                    });
77359	                }
77360	            },
77361	        };
77362	    }
77363	};
77364
77365	/* src/components/FormViewedDetect.svelte generated by Svelte v4.2.12 */
77366
77367	function create_fragment$2(ctx) {
77368		let div;
77369		let current;
77370		const default_slot_template = /*#slots*/ ctx[3].default;
77371		const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[2], null);
77372
77373		return {
77374			c() {
77375				div = element("div");
77376				if (default_slot) default_slot.c();
77377			},
77378			m(target, anchor) {
77379				insert(target, div, anchor);
77380
77381				if (default_slot) {
77382					default_slot.m(div, null);
77383				}
77384
77385				/*div_binding*/ ctx[4](div);
77386				current = true;
77387			},
77388			p(ctx, [dirty]) {
77389				if (default_slot) {
77390					if (default_slot.p && (!current || dirty & /*$$scope*/ 4)) {
77391						update_slot_base(
77392							default_slot,
77393							default_slot_template,
77394							ctx,
77395							/*$$scope*/ ctx[2],
77396							!current
77397							? get_all_dirty_from_scope(/*$$scope*/ ctx[2])
77398							: get_slot_changes(default_slot_template, /*$$scope*/ ctx[2], dirty, null),
77399							null
77400						);
77401					}
77402				}
77403			},
77404			i(local) {
77405				if (current) return;
77406				transition_in(default_slot, local);
77407				current = true;
77408			},
77409			o(local) {
77410				transition_out(default_slot, local);
77411				current = false;
77412			},
77413			d(detaching) {
77414				if (detaching) {
77415					detach(div);
77416				}
77417
77418				if (default_slot) default_slot.d(detaching);
77419				/*div_binding*/ ctx[4](null);
77420			}
77421		};
77422	}
77423
77424	function instance$2($$self, $$props, $$invalidate) {
77425		let { $$slots: slots = {}, $$scope } = $$props;
77426		let { form } = $$props;
77427		let intersecting = false;
77428		let element;
77429		let observer;
77430		const dispatch = createEventDispatcher();
77431
77432		onMount(() => {
77433			if (typeof IntersectionObserver !== 'undefined') {
77434				observer = new IntersectionObserver(entries => {
77435						const entry = entries[0];
77436						intersecting = entry?.isIntersecting;
77437						dispatch('observe', entry);
77438
77439						if (intersecting && form) {
77440							logDataLayerEvent(form, 'zephr_form_view', null);
77441							observer.unobserve(element);
77442						}
77443					},
77444				{ threshold: 0.75 });
77445
77446				if (element) {
77447					observer.observe(element);
77448				}
77449			}
77450
77451			return () => {
77452				if (observer) {
77453					observer.disconnect();
77454				}
77455			};
77456		});
77457
77458		function div_binding($$value) {
77459			binding_callbacks[$$value ? 'unshift' : 'push'](() => {
77460				element = $$value;
77461				$$invalidate(0, element);
77462			});
77463		}
77464
77465		$$self.$$set = $$props => {
77466			if ('form' in $$props) $$invalidate(1, form = $$props.form);
77467			if ('$$scope' in $$props) $$invalidate(2, $$scope = $$props.$$scope);
77468		};
77469
77470		return [element, form, $$scope, slots, div_binding];
77471	}
77472
77473	class FormViewedDetect extends SvelteComponent {
77474		constructor(options) {
77475			super();
77476			init(this, options, instance$2, create_fragment$2, safe_not_equal, { form: 1 });
77477		}
77478	}
77479
77480	const checkForRegisteredUser = async (formActions) => {
77481	    if (!document.cookie?.includes("blaize_session")) {
77482	        formActions.updateFormState({
77483	            userSession: false,
77484	        });
77485	        return false;
77486	    }
77487	    let response;
77488	    try {
77489	        response = await request('blaize/account', { method: "GET" }, formActions);
77490	    }
77491	    catch (err) {
77492	        console.error(err);
77493	    }
77494	    if (response?.ok) {
77495	        const responseJson = await response.json();
77496	        formActions.updateFormState({
77497	            userExists: true,
77498	            emailIsContact: false,
77499	            emailAddress: responseJson.identifiers?.email_address,
77500	            userSession: true,
77501	            loginRegistrationComplete: true
77502	        });
77503	    }
77504	    else {
77505	        formActions.updateFormState({
77506	            userSession: false,
77507	        });
77508	    }
77509	    return response?.ok;
77510	};
77511
77512	/* src/components/FormRoot.svelte generated by Svelte v4.2.12 */
77513
77514	function get_each_context(ctx, list, i) {
77515		const child_ctx = ctx.slice();
77516		child_ctx[21] = list[i];
77517		return child_ctx;
77518	}
77519
77520	// (206:2) {#if formCanBeManuallyClosed}
77521	function create_if_block_3(ctx) {
77522		let div;
77523		let button;
77524		let fa;
77525		let current;
77526		let mounted;
77527		let dispose;
77528		fa = new Fa({ props: { icon: faTimesCircle } });
77529
77530		return {
77531			c() {
77532				div = element("div");
77533				button = element("button");
77534				create_component(fa.$$.fragment);
77535				attr(button, "type", "button");
77536				attr(button, "class", "close-button svelte-j7lu48");
77537				attr(div, "class", "close-button-container svelte-j7lu48");
77538			},
77539			m(target, anchor) {
77540				insert(target, div, anchor);
77541				append(div, button);
77542				mount_component(fa, button, null);
77543				current = true;
77544
77545				if (!mounted) {
77546					dispose = listen(button, "click", /*closeForm*/ ctx[8]);
77547					mounted = true;
77548				}
77549			},
77550			p: noop,
77551			i(local) {
77552				if (current) return;
77553				transition_in(fa.$$.fragment, local);
77554				current = true;
77555			},
77556			o(local) {
77557				transition_out(fa.$$.fragment, local);
77558				current = false;
77559			},
77560			d(detaching) {
77561				if (detaching) {
77562					detach(div);
77563				}
77564
77565				destroy_component(fa);
77566				mounted = false;
77567				dispose();
77568			}
77569		};
77570	}
77571
77572	// (219:2) {:else}
77573	function create_else_block(ctx) {
77574		let formvieweddetect;
77575		let t;
77576		let if_block_anchor;
77577		let current;
77578
77579		formvieweddetect = new FormViewedDetect({
77580				props: {
77581					form: /*form*/ ctx[5],
77582					$$slots: { default: [create_default_slot] },
77583					$$scope: { ctx }
77584				}
77585			});
77586
77587		let if_block = /*topLevelError*/ ctx[3] && create_if_block_2(ctx);
77588
77589		return {
77590			c() {
77591				create_component(formvieweddetect.$$.fragment);
77592				t = space();
77593				if (if_block) if_block.c();
77594				if_block_anchor = empty();
77595			},
77596			m(target, anchor) {
77597				mount_component(formvieweddetect, target, anchor);
77598				insert(target, t, anchor);
77599				if (if_block) if_block.m(target, anchor);
77600				insert(target, if_block_anchor, anchor);
77601				current = true;
77602			},
77603			p(ctx, dirty) {
77604				const formvieweddetect_changes = {};
77605
77606				if (dirty & /*$$scope, isFullWidth, formState*/ 16777221) {
77607					formvieweddetect_changes.$$scope = { dirty, ctx };
77608				}
77609
77610				formvieweddetect.$set(formvieweddetect_changes);
77611
77612				if (/*topLevelError*/ ctx[3]) {
77613					if (if_block) {
77614						if_block.p(ctx, dirty);
77615
77616						if (dirty & /*topLevelError*/ 8) {
77617							transition_in(if_block, 1);
77618						}
77619					} else {
77620						if_block = create_if_block_2(ctx);
77621						if_block.c();
77622						transition_in(if_block, 1);
77623						if_block.m(if_block_anchor.parentNode, if_block_anchor);
77624					}
77625				} else if (if_block) {
77626					group_outros();
77627
77628					transition_out(if_block, 1, 1, () => {
77629						if_block = null;
77630					});
77631
77632					check_outros();
77633				}
77634			},
77635			i(local) {
77636				if (current) return;
77637				transition_in(formvieweddetect.$$.fragment, local);
77638				transition_in(if_block);
77639				current = true;
77640			},
77641			o(local) {
77642				transition_out(formvieweddetect.$$.fragment, local);
77643				transition_out(if_block);
77644				current = false;
77645			},
77646			d(detaching) {
77647				if (detaching) {
77648					detach(t);
77649					detach(if_block_anchor);
77650				}
77651
77652				destroy_component(formvieweddetect, detaching);
77653				if (if_block) if_block.d(detaching);
77654			}
77655		};
77656	}
77657
77658	// (215:69) 
77659	function create_if_block_1(ctx) {
77660		let div;
77661		let spinner;
77662		let current;
77663		spinner = new Spinner({});
77664
77665		return {
77666			c() {
77667				div = element("div");
77668				create_component(spinner.$$.fragment);
77669				attr(div, "class", "loading-placeholder svelte-j7lu48");
77670			},
77671			m(target, anchor) {
77672				insert(target, div, anchor);
77673				mount_component(spinner, div, null);
77674				current = true;
77675			},
77676			p: noop,
77677			i(local) {
77678				if (current) return;
77679				transition_in(spinner.$$.fragment, local);
77680				current = true;
77681			},
77682			o(local) {
77683				transition_out(spinner.$$.fragment, local);
77684				current = false;
77685			},
77686			d(detaching) {
77687				if (detaching) {
77688					detach(div);
77689				}
77690
77691				destroy_component(spinner);
77692			}
77693		};
77694	}
77695
77696	// (213:2) {#if formHasCrashed}
77697	function create_if_block(ctx) {
77698		let div;
77699
77700		return {
77701			c() {
77702				div = element("div");
77703				div.textContent = `${resolveErrorLanguagePackKey(/*form*/ ctx[5], ServerError.UNKNOWN)}`;
77704			},
77705			m(target, anchor) {
77706				insert(target, div, anchor);
77707			},
77708			p: noop,
77709			i: noop,
77710			o: noop,
77711			d(detaching) {
77712				if (detaching) {
77713					detach(div);
77714				}
77715			}
77716		};
77717	}
77718
77719	// (226:8) {#each form.sectionFlow.extraElements.concat(formState.currentSection.elements || []) as element}
77720	function create_each_block(ctx) {
77721		let elementresolver;
77722		let current;
77723
77724		elementresolver = new ElementResolver({
77725				props: {
77726					form: /*form*/ ctx[5],
77727					formState: /*formState*/ ctx[0],
77728					formActions: /*formActions*/ ctx[7],
77729					sectionElement: /*element*/ ctx[21]
77730				}
77731			});
77732
77733		return {
77734			c() {
77735				create_component(elementresolver.$$.fragment);
77736			},
77737			m(target, anchor) {
77738				mount_component(elementresolver, target, anchor);
77739				current = true;
77740			},
77741			p(ctx, dirty) {
77742				const elementresolver_changes = {};
77743				if (dirty & /*formState*/ 1) elementresolver_changes.formState = /*formState*/ ctx[0];
77744				if (dirty & /*formState*/ 1) elementresolver_changes.sectionElement = /*element*/ ctx[21];
77745				elementresolver.$set(elementresolver_changes);
77746			},
77747			i(local) {
77748				if (current) return;
77749				transition_in(elementresolver.$$.fragment, local);
77750				current = true;
77751			},
77752			o(local) {
77753				transition_out(elementresolver.$$.fragment, local);
77754				current = false;
77755			},
77756			d(detaching) {
77757				destroy_component(elementresolver, detaching);
77758			}
77759		};
77760	}
77761
77762	// (220:4) <FormViewedDetect form={form}>
77763	function create_default_slot(ctx) {
77764		let form_1;
77765		let current;
77766		let mounted;
77767		let dispose;
77768		let each_value = ensure_array_like(/*form*/ ctx[5].sectionFlow.extraElements.concat(/*formState*/ ctx[0].currentSection.elements || []));
77769		let each_blocks = [];
77770
77771		for (let i = 0; i < each_value.length; i += 1) {
77772			each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i));
77773		}
77774
77775		const out = i => transition_out(each_blocks[i], 1, 1, () => {
77776			each_blocks[i] = null;
77777		});
77778
77779		return {
77780			c() {
77781				form_1 = element("form");
77782
77783				for (let i = 0; i < each_blocks.length; i += 1) {
77784					each_blocks[i].c();
77785				}
77786
77787				attr(form_1, "class", "zephr-form-content svelte-j7lu48");
77788				toggle_class(form_1, "zephr-payment-options-content", /*isFullWidth*/ ctx[2]);
77789			},
77790			m(target, anchor) {
77791				insert(target, form_1, anchor);
77792
77793				for (let i = 0; i < each_blocks.length; i += 1) {
77794					if (each_blocks[i]) {
77795						each_blocks[i].m(form_1, null);
77796					}
77797				}
77798
77799				current = true;
77800
77801				if (!mounted) {
77802					dispose = listen(form_1, "submit", submit_handler);
77803					mounted = true;
77804				}
77805			},
77806			p(ctx, dirty) {
77807				if (dirty & /*form, formState, formActions*/ 161) {
77808					each_value = ensure_array_like(/*form*/ ctx[5].sectionFlow.extraElements.concat(/*formState*/ ctx[0].currentSection.elements || []));
77809					let i;
77810
77811					for (i = 0; i < each_value.length; i += 1) {
77812						const child_ctx = get_each_context(ctx, each_value, i);
77813
77814						if (each_blocks[i]) {
77815							each_blocks[i].p(child_ctx, dirty);
77816							transition_in(each_blocks[i], 1);
77817						} else {
77818							each_blocks[i] = create_each_block(child_ctx);
77819							each_blocks[i].c();
77820							transition_in(each_blocks[i], 1);
77821							each_blocks[i].m(form_1, null);
77822						}
77823					}
77824
77825					group_outros();
77826
77827					for (i = each_value.length; i < each_blocks.length; i += 1) {
77828						out(i);
77829					}
77830
77831					check_outros();
77832				}
77833
77834				if (!current || dirty & /*isFullWidth*/ 4) {
77835					toggle_class(form_1, "zephr-payment-options-content", /*isFullWidth*/ ctx[2]);
77836				}
77837			},
77838			i(local) {
77839				if (current) return;
77840
77841				for (let i = 0; i < each_value.length; i += 1) {
77842					transition_in(each_blocks[i]);
77843				}
77844
77845				current = true;
77846			},
77847			o(local) {
77848				each_blocks = each_blocks.filter(Boolean);
77849
77850				for (let i = 0; i < each_blocks.length; i += 1) {
77851					transition_out(each_blocks[i]);
77852				}
77853
77854				current = false;
77855			},
77856			d(detaching) {
77857				if (detaching) {
77858					detach(form_1);
77859				}
77860
77861				destroy_each(each_blocks, detaching);
77862				mounted = false;
77863				dispose();
77864			}
77865		};
77866	}
77867
77868	// (236:4) {#if topLevelError}
77869	function create_if_block_2(ctx) {
77870		let errormessage;
77871		let current;
77872
77873		errormessage = new ErrorMessage({
77874				props: {
77875					error: resolveErrorLanguagePackKey(/*form*/ ctx[5], /*topLevelError*/ ctx[3]),
77876					isPaymentForm: /*isPaymentForm*/ ctx[6]
77877				}
77878			});
77879
77880		return {
77881			c() {
77882				create_component(errormessage.$$.fragment);
77883			},
77884			m(target, anchor) {
77885				mount_component(errormessage, target, anchor);
77886				current = true;
77887			},
77888			p(ctx, dirty) {
77889				const errormessage_changes = {};
77890				if (dirty & /*topLevelError*/ 8) errormessage_changes.error = resolveErrorLanguagePackKey(/*form*/ ctx[5], /*topLevelError*/ ctx[3]);
77891				errormessage.$set(errormessage_changes);
77892			},
77893			i(local) {
77894				if (current) return;
77895				transition_in(errormessage.$$.fragment, local);
77896				current = true;
77897			},
77898			o(local) {
77899				transition_out(errormessage.$$.fragment, local);
77900				current = false;
77901			},
77902			d(detaching) {
77903				destroy_component(errormessage, detaching);
77904			}
77905		};
77906	}
77907
77908	function create_fragment$1(ctx) {
77909		let div;
77910		let t;
77911		let current_block_type_index;
77912		let if_block1;
77913		let accordion_action;
77914		let current;
77915		let mounted;
77916		let dispose;
77917		let if_block0 = /*formCanBeManuallyClosed*/ ctx[9] && create_if_block_3(ctx);
77918		const if_block_creators = [create_if_block, create_if_block_1, create_else_block];
77919		const if_blocks = [];
77920
77921		function select_block_type(ctx, dirty) {
77922			if (/*form*/ ctx[5].formType === "GIFT_REDEMPTION" && !/*isSessionChecked*/ ctx[1]) return 1;
77923			return 2;
77924		}
77925
77926		current_block_type_index = select_block_type(ctx);
77927		if_block1 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
77928
77929		return {
77930			c() {
77931				div = element("div");
77932				if (if_block0) if_block0.c();
77933				t = space();
77934				if_block1.c();
77935				toggle_class(div, "zephr-form-max-width", !/*isFullWidth*/ ctx[2]);
77936				toggle_class(div, "zephr-payment-form-max-width", !/*isFullWidth*/ ctx[2]);
77937			},
77938			m(target, anchor) {
77939				insert(target, div, anchor);
77940				if (if_block0) if_block0.m(div, null);
77941				append(div, t);
77942				if_blocks[current_block_type_index].m(div, null);
77943				current = true;
77944
77945				if (!mounted) {
77946					dispose = action_destroyer(accordion_action = accordion.call(null, div, /*formIsOpen*/ ctx[4]));
77947					mounted = true;
77948				}
77949			},
77950			p(ctx, [dirty]) {
77951				if (/*formCanBeManuallyClosed*/ ctx[9]) if_block0.p(ctx, dirty);
77952				let previous_block_index = current_block_type_index;
77953				current_block_type_index = select_block_type(ctx);
77954
77955				if (current_block_type_index === previous_block_index) {
77956					if_blocks[current_block_type_index].p(ctx, dirty);
77957				} else {
77958					group_outros();
77959
77960					transition_out(if_blocks[previous_block_index], 1, 1, () => {
77961						if_blocks[previous_block_index] = null;
77962					});
77963
77964					check_outros();
77965					if_block1 = if_blocks[current_block_type_index];
77966
77967					if (!if_block1) {
77968						if_block1 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
77969						if_block1.c();
77970					} else {
77971						if_block1.p(ctx, dirty);
77972					}
77973
77974					transition_in(if_block1, 1);
77975					if_block1.m(div, null);
77976				}
77977
77978				if (accordion_action && is_function(accordion_action.update) && dirty & /*formIsOpen*/ 16) accordion_action.update.call(null, /*formIsOpen*/ ctx[4]);
77979
77980				if (!current || dirty & /*isFullWidth*/ 4) {
77981					toggle_class(div, "zephr-form-max-width", !/*isFullWidth*/ ctx[2]);
77982				}
77983
77984				if (!current || dirty & /*isFullWidth*/ 4) {
77985					toggle_class(div, "zephr-payment-form-max-width", !/*isFullWidth*/ ctx[2]);
77986				}
77987			},
77988			i(local) {
77989				if (current) return;
77990				transition_in(if_block0);
77991				transition_in(if_block1);
77992				current = true;
77993			},
77994			o(local) {
77995				transition_out(if_block0);
77996				transition_out(if_block1);
77997				current = false;
77998			},
77999			d(detaching) {
78000				if (detaching) {
78001					detach(div);
78002				}
78003
78004				if (if_block0) if_block0.d();
78005				if_blocks[current_block_type_index].d();
78006				mounted = false;
78007				dispose();
78008			}
78009		};
78010	}
78011	const defaultBusyKey = "default";
78012	const submit_handler = e => e?.preventDefault();
78013
78014	function instance$1($$self, $$props, $$invalidate) {
78015		let formIsOpen;
78016		let topLevelError;
78017		let isFullWidth;
78018		onMount(addFormProcessorsToWindow);
78019		let { formConfiguration } = $$props;
78020		let form = sortForm(formConfiguration);
78021
78022		if (form.environment.debugLogging) {
78023			console.log(form);
78024		}
78025
78026		// variable
78027		let isPaymentForm = form.formType === "PAYMENT";
78028
78029		let requestCountByKey = {};
78030		let isSessionChecked = false;
78031
78032		const previewSection = form.environment.previewMode && form.environment.previewInitialState
78033		? findSectionByAddress(form.environment.previewInitialState, form)
78034		: null;
78035
78036		let formState = Object.freeze({
78037			currentPart: previewSection?.part ?? form.parts[0],
78038			currentSection: previewSection?.section ?? form.parts[0].sections[0],
78039			paymentOption: null,
78040			paymentOptionPrices: null,
78041			emailAddress: "",
78042			billingCountry: "",
78043			billingState: "",
78044			createPassword: "",
78045			password: "",
78046			confirmCreatePassword: "",
78047			accountMembershipCode: "",
78048			passwordIsValid: false,
78049			elementValidity: [],
78050			canAttemptSectionCompletion: true,
78051			showFieldErrors: false,
78052			loginRegistrationComplete: false,
78053			serverErrors: [],
78054			isBusy: false,
78055			isBusyByKey: [],
78056			formCannotBeActioned: false,
78057			forgotPassword: false,
78058			promoCode: "",
78059			addons: [],
78060			discountedPlanPrices: [],
78061			paymentProviderFormLoaded: false,
78062			paymentProviderError: null,
78063			paymentFormComplete: false,
78064			paymentProviderVendorFields: null,
78065			verificationCode: "",
78066			userAttributes: extractDefaultUserAttributes(form),
78067			socialSignin: false,
78068			paymentProcessed: false,
78069			invitationEmail: "",
78070			invitationSent: false,
78071			validChangeFromPlans: [],
78072			taxCalculations: {},
78073			billingAddress: { country: null, postalCode: null },
78074			formPrerequisiteLoaded: !form.sectionFlow.formRequiresPrerequisiteLoading(form),
78075			dynamicOfferResult: null,
78076			originalDynamicOfferResult: null,
78077			giftCode: new URLSearchParams(window.location.search).get('giftCode') || '',
78078			giftRecipient: {
78079				name: '',
78080				email: '',
78081				customMessage: '',
78082				recipientAddress: {
78083					addressLine1: '',
78084					addressLine2: '',
78085					city: '',
78086					state: '',
78087					country: '',
78088					postalCode: ''
78089				}
78090			}
78091		});
78092
78093		// actions
78094		const updateFormState = update => {
78095			$$invalidate(0, formState = Object.freeze({ ...formState, ...update }));
78096			form.environment.debugLogging && console.log(formState);
78097			form.environment.onStateChanged(update, formState);
78098			return formState;
78099		};
78100
78101		const _attemptCompleteSection = () => {
78102			void attemptCompleteSection(form, formState, formActions);
78103		};
78104
78105		const _completeSection = () => {
78106			void completeSection(form, formState, formActions);
78107		};
78108
78109		const jumpToPartStart = partType => {
78110			void jumpToPart(partType, form, formActions);
78111		};
78112
78113		const _jumpToSection = sectionType => {
78114			void jumpToSection(sectionType, form, formActions);
78115		};
78116
78117		const onEvent = formEvent => {
78118			if (form.environment.previewMode) {
78119				return;
78120			}
78121
78122			void form.sectionFlow.eventHandlers[formEvent]?.(form, formState, formActions);
78123		};
78124
78125		const modifyRequestCount = (by, busyKey) => {
78126			const key = busyKey ?? defaultBusyKey;
78127
78128			if (requestCountByKey[key] === undefined) {
78129				requestCountByKey[key] = 0;
78130			}
78131
78132			requestCountByKey[key] += by;
78133
78134			if (requestCountByKey[key] < 0) {
78135				throw "Negative request count";
78136			}
78137
78138			const isBusy = Object.values(requestCountByKey).some(v => v > 0);
78139
78140			if (isBusy !== formState.isBusy) {
78141				updateFormState({ isBusy });
78142			}
78143
78144			const isBusyByKey = requestCountByKey[key] > 0;
78145
78146			if (isBusyByKey !== formState.isBusyByKey[key]) {
78147				updateFormState({
78148					isBusyByKey: {
78149						...formState.isBusyByKey,
78150						[key]: isBusyByKey
78151					}
78152				});
78153			}
78154		};
78155
78156		const formActions = {
78157			updateFormState,
78158			attemptCompleteSection: _attemptCompleteSection,
78159			completeSection: _completeSection,
78160			jumpToPartStart,
78161			jumpToSection: _jumpToSection,
78162			onEvent,
78163			incrementRequestCount: (busyKey = null) => modifyRequestCount(+1, busyKey),
78164			decrementRequestCount: (busyKey = null) => modifyRequestCount(-1, busyKey),
78165			getFormState: () => formState,
78166			apiUrlBase: form.environment.apiUrlBase
78167		};
78168
78169		// Preview
78170		if (form.environment.previewMode) {
78171			form.environment.previewBundle?.setupPreviewMode(form, formActions);
78172		}
78173
78174		// When the form first loads, check if this is a currently-registered user
78175		onMount(async () => {
78176			if (form.formType === "GIFT_REDEMPTION") {
78177				// Check user session before triggering form start
78178				await checkForRegisteredUser(formActions);
78179
78180				$$invalidate(1, isSessionChecked = true);
78181			}
78182
78183			formActions.onEvent(FormEvent.FORM_START);
78184			logDataLayerEvent(form, 'zephr_form_render', null);
78185		});
78186
78187		let formManuallyClosed = false;
78188		const closeForm = () => $$invalidate(11, formManuallyClosed = true);
78189		const formCanBeManuallyClosed = form.sectionFlow.canDismissFormManually(form) && form.formType !== 'CHANGE_SUBSCRIPTION';
78190
78191		$$self.$$set = $$props => {
78192			if ('formConfiguration' in $$props) $$invalidate(10, formConfiguration = $$props.formConfiguration);
78193		};
78194
78195		$$self.$$.update = () => {
78196			if ($$self.$$.dirty & /*formState*/ 1) {
78197				{
78198					const canAttemptSectionCompletion = form.sectionFlow.canAttemptSectionCompletion(form, formState);
78199
78200					if (canAttemptSectionCompletion != formState.canAttemptSectionCompletion) {
78201						updateFormState({ canAttemptSectionCompletion });
78202					}
78203				}
78204			}
78205
78206			if ($$self.$$.dirty & /*formManuallyClosed, formState*/ 2049) {
78207				$$invalidate(4, formIsOpen = !formManuallyClosed && formState.formPrerequisiteLoaded && !formState.formCannotBeActioned);
78208			}
78209
78210			if ($$self.$$.dirty & /*formState*/ 1) {
78211				// Unshown errors
78212				$$invalidate(3, topLevelError = formState.serverErrors[0] && (formState.currentSection.elements || []).filter(e => serverErrorForElement(e.type, formState)).length === 0
78213				? formState.serverErrors[0]
78214				: null);
78215			}
78216
78217			if ($$self.$$.dirty & /*formState*/ 1) {
78218				$$invalidate(2, isFullWidth = [...Object.values(sectionTypes)].find(s => s.type === formState.currentSection.type)?.fullWidth);
78219			}
78220		};
78221
78222		return [
78223			formState,
78224			isSessionChecked,
78225			isFullWidth,
78226			topLevelError,
78227			formIsOpen,
78228			form,
78229			isPaymentForm,
78230			formActions,
78231			closeForm,
78232			formCanBeManuallyClosed,
78233			formConfiguration,
78234			formManuallyClosed
78235		];
78236	}
78237
78238	class FormRoot extends SvelteComponent {
78239		constructor(options) {
78240			super();
78241			init(this, options, instance$1, create_fragment$1, safe_not_equal, { formConfiguration: 10 });
78242		}
78243	}
78244
78245	const defaultCssVariables = {
78246	    "--zephr-button-borderRadius": "9",
78247	    "--zephr-button-borderWidth": "0",
78248	    "--zephr-button-fontSize": "16",
78249	    "--zephr-button-fontWeight": "normal",
78250	    "--zephr-button-height": "50",
78251	    "--zephr-color-accent-main": "#dcf1fb",
78252	    "--zephr-color-accent-tinted": "#81cdf1",
78253	    "--zephr-color-action-main": "#006edb",
78254	    "--zephr-color-action-tinted": "#0f87ff",
78255	    "--zephr-color-background-main": "#fff",
78256	    "--zephr-color-background-tinted": "#ccc",
78257	    "--zephr-color-text-main": "#000",
78258	    "--zephr-color-text-tinted": "#333",
78259	    "--zephr-color-warning-main": "#d90b00",
78260	    "--zephr-color-warning-tinted": "#ff190d",
78261	    "--zephr-input-borderColor": "#333",
78262	    "--zephr-input-borderRadius": "5",
78263	    "--zephr-input-borderWidth": "1",
78264	    "--zephr-input-height": "50",
78265	    "--zephr-typography-title-fallbackFont": "sans-serif",
78266	    "--zephr-typography-title-font": "Roboto",
78267	    "--zephr-typography-body-fallbackFont": "sans-serif",
78268	    "--zephr-typography-body-font": "Roboto",
78269	};
78270	/* eslint-disable @typescript-eslint/restrict-template-expressions */
78271	const convertSiteStylesToCssVariables = (siteStyles) => {
78272	    const styles = {};
78273	    const convertToCssVariables = (styleGuide, variablePrefix) => {
78274	        if (styleGuide !== null && typeof styleGuide == "object") {
78275	            Object.entries(styleGuide).forEach(([key, value]) => {
78276	                convertToCssVariables(value, variablePrefix.concat(`${variablePrefix ? "-" : ""}${key}`));
78277	            });
78278	        }
78279	        else {
78280	            styles[`--zephr-${variablePrefix}`] = styleGuide;
78281	        }
78282	    };
78283	    convertToCssVariables(siteStyles, "");
78284	    return Object.entries({ ...defaultCssVariables, ...styles })
78285	        .map(([key, value]) => `${key}: ${value}`)
78286	        .join(';\n');
78287	};
78288
78289	function formTypeClass(formType) {
78290	    switch (formType) {
78291	        case FormType.CHANGE_SUBSCRIPTION:
78292	        case FormType.PAYMENT:
78293	        case FormType.GIFT_SUBSCRIPTION:
78294	            return "zephr-payment-form";
78295	        case FormType.REGISTRATION:
78296	        case FormType.COMPLETE_REGISTRATION:
78297	        case FormType.GIFT_REDEMPTION:
78298	            return "zephr-registration-form";
78299	        case FormType.CONTACT:
78300	            return "zephr-contact-form";
78301	        case FormType.DATA_CAPTURE:
78302	            return "zephr-data-capture-form";
78303	        default:
78304	            return "";
78305	    }
78306	}
78307
78308	const userAttributesValuesForPart = (partType, form, formState) => form.parts.find(p => p.type === partType)
78309	    .sections.flatMap(s => s.elements)
78310	    .filter(e => e.type === elementTypes.USER_ATTRIBUTE)
78311	    .map(e => e.config)
78312	    .reduce((current, elementConfig) => {
78313	    if (formState.userAttributes) {
78314	        return ({
78315	            ...current,
78316	            [elementConfig.slug]: formState.userAttributes[elementConfig.slug]
78317	        });
78318	    }
78319	    else {
78320	        return ({
78321	            ...current
78322	        });
78323	    }
78324	}, {});
78325
78326	const mapToServerError = (responseCode, responseMessage, formState) => {
78327	    if (responseCode === 401) {
78328	        if (responseMessage.indexOf("verification is required") > -1) {
78329	            return ServerError.EMAIL_VERIFICATION_REQUIRED;
78330	        }
78331	        if (responseMessage.indexOf("session must be authenticated") > -1) {
78332	            return ServerError.NO_AUTHENTICATED_SESSION;
78333	        }
78334	        if (formState.verificationCode) {
78335	            return ServerError.VERIFICATION_CODE_OR_PASSWORD_INCORRECT;
78336	        }
78337	        return ServerError.LOGIN_FAILED;
78338	    }
78339	    if (responseCode === 402 && responseMessage?.includes('this domain is not supported.')) {
78340	        return ServerError.BLOCKED_EMAIL_DOMAIN;
78341	    }
78342	    if (responseCode === 409) {
78343	        return ServerError.USER_ALREADY_EXISTS;
78344	    }
78345	    if (responseCode === 400 && responseMessage?.includes("The provided password is not strong enough")) {
78346	        return ServerError.PASSWORD_NOT_STRONG_ENOUGH;
78347	    }
78348	    if (responseCode === 404 && responseMessage?.includes("account")) {
78349	        return ServerError.ACCOUNT_NOT_FOUND;
78350	    }
78351	    if (responseCode === 404)
78352	        return ServerError.USER_DOES_NOT_EXIST;
78353	    if (responseCode === 429 && responseMessage?.includes("sessions limit reached")) {
78354	        return ServerError.TOO_MANY_SESSIONS;
78355	    }
78356	    if (responseCode === 429)
78357	        return ServerError.NO_ACCOUNT_ACCESS;
78358	    if (formState.socialSignin)
78359	        return ServerError.SOCIAL_SIGNIN_REGISTRATION_LOGIN_ERROR;
78360	    if (responseCode === 403 && responseMessage?.includes("Contact creation not enabled")) {
78361	        return ServerError.CONTACT_CREATION_NOT_ENABLED;
78362	    }
78363	    return ServerError.UNKNOWN_LOGIN_REGISTER_ERROR;
78364	};
78365
78366	const logConversion = (conversion, form, formActions) => {
78367	    if (!form.organisationConfiguration.ruleAnalyticsEnabled) {
78368	        return;
78369	    }
78370	    void request('zephr/public/rule-outcomes/v1/conversions', {
78371	        method: 'POST',
78372	        bodyObject: {
78373	            "conversion": conversion,
78374	            "ruleId": form.ruleId,
78375	            "outcomeId": form.outcomeId
78376	        }
78377	    }, formActions);
78378	};
78379
78380	const logConversionAfterRegistration = (form, formActions) => logConversion("REGISTERED", form, formActions);
78381
78382	const PATH_PARAM_NAME = "sharing_id";
78383	/**
78384	 * Extract a sharing ID from the page URL.
78385	 */
78386	const getProductSharingInvite = () => {
78387	    try {
78388	        const sharingId = new URLSearchParams(window.location.search).get(PATH_PARAM_NAME);
78389	        return sharingId ? { product_sharing_id: sharingId } : null;
78390	    }
78391	    catch {
78392	        // If there is any browser compatibility issue, ignore it
78393	        return null;
78394	    }
78395	};
78396	const removeSharingInviteFromUrl = (url) => {
78397	    try {
78398	        const r = new URL(url);
78399	        if (!r.searchParams.has(PATH_PARAM_NAME)) {
78400	            return url;
78401	        }
78402	        r.searchParams.delete(PATH_PARAM_NAME);
78403	        return r.href;
78404	    }
78405	    catch {
78406	        // If there is any browser compatibility issue, ignore it
78407	        return url;
78408	    }
78409	};
78410
78411	const toLoginPayload = (formState) => ({
78412	    identifiers: { email_address: formState.emailAddress },
78413	    validators: {
78414	        password: formState.password || undefined,
78415	        email_otp: formState.verificationCode || undefined,
78416	        token_exchange: formState.socialSigninToken || undefined
78417	    }
78418	});
78419	const preprocessorIdentity$2 = (slug, t) => t;
78420	const toRegistrationPayload = (form, formState) => {
78421	    const autoAppliedAttributes = formConfigAs(form).autoApplyAttributes ?? {};
78422	    const preprocessor = window.Blaize?.preProcessFormData ?? preprocessorIdentity$2;
78423	    const attributes = userAttributesValuesForPart(partTypes.ACCOUNT_VERIFICATION.type, form, formState);
78424	    const attributesWithAutoApplied = {
78425	        ...attributes,
78426	        ...autoAppliedAttributes
78427	    };
78428	    const productSharingData = getProductSharingInvite();
78429	    return preprocessor(form.id, {
78430	        identifiers: formState.socialSignin ? {} : { email_address: formState.emailAddress },
78431	        validators: {
78432	            password: formState.createPassword || undefined,
78433	            email_otp: formState.verificationCode || undefined,
78434	            token_exchange: formState.socialSigninToken || undefined
78435	        },
78436	        attributes: Object.keys(attributesWithAutoApplied).length ? attributesWithAutoApplied : undefined,
78437	        account_membership_code: formState.accountMembershipCode || undefined,
78438	        ...(productSharingData ?? {})
78439	    });
78440	};
78441	const register = async (form, formState, formActions) => {
78442	    const payload = toRegistrationPayload(form, formState);
78443	    const response = await request('blaize/register', {
78444	        method: "POST",
78445	        bodyObject: payload
78446	    }, formActions);
78447	    return processResponse$2(payload, response, form, formState, formActions);
78448	};
78449	const login = async (form, formState, formActions) => {
78450	    const payload = toLoginPayload(formState);
78451	    const response = await request('blaize/login', {
78452	        method: "POST",
78453	        bodyObject: payload
78454	    }, formActions);
78455	    return processResponse$2(null, response, form, formState, formActions);
78456	};
78457	const processResponse$2 = async (registrationPayload, response, form, formState, formActions) => {
78458	    registrationPayload ?
78459	        logDataLayerEvent(form, 'zephr_form_register', {
78460	            success: response?.ok
78461	        }) :
78462	        logDataLayerEvent(form, 'zephr_form_login', {
78463	            success: response?.ok
78464	        });
78465	    if (!response?.ok) {
78466	        if (formState.verificationCode) {
78467	            formActions.updateFormState({
78468	                verificationCodeValid: false
78469	            });
78470	        }
78471	        const responseMessage = (await response.json())?.message;
78472	        const serverError = mapToServerError(response.status, responseMessage, formState);
78473	        logDataLayerEvent(form, 'zephr_form_error', {
78474	            error: ServerError[serverError],
78475	        });
78476	        if (serverError === ServerError.PASSWORD_NOT_STRONG_ENOUGH) {
78477	            formActions.updateFormState({
78478	                dynamicServerErrorMessage: responseMessage,
78479	            });
78480	        }
78481	        formActions.updateFormState({
78482	            serverErrors: [serverError]
78483	        });
78484	        if (ServerErrors[serverError].jumpToPart) {
78485	            formActions.jumpToPartStart(ServerErrors[serverError].jumpToPart);
78486	        }
78487	        return Promise.resolve();
78488	    }
78489	    if (!formState.userExists) {
78490	        logConversionAfterRegistration(form, formActions);
78491	    }
78492	    return response.json()
78493	        .then(async (json) => {
78494	        const cookieInResponse = json.cookie?.includes("blaize_session");
78495	        if (cookieInResponse) {
78496	            document.cookie = json.cookie;
78497	        }
78498	        else {
78499	            if (!form.sectionFlow.canPartiallyRegister) {
78500	                console.warn("No cookie returned from login/register endpoint - most likely incorrect form configuration.");
78501	                formActions.updateFormState({
78502	                    serverErrors: [ServerError.NO_COOKIE_FROM_LOGIN_REGISTER_ERROR],
78503	                });
78504	                return Promise.resolve();
78505	            }
78506	        }
78507	        registrationPayload && window.Blaize?.postProcessFormData && window.Blaize.postProcessFormData(form.id, registrationPayload, json);
78508	        if (formState.verificationCode && formState.currentSection.elements.some(e => e.type === elementTypes.VERIFICATION_CODE)) {
78509	            formActions.updateFormState({
78510	                verificationCodeValid: true
78511	            });
78512	            await waitAfterCode(form);
78513	        }
78514	        formActions.updateFormState({
78515	            loginRegistrationComplete: true
78516	        });
78517	        return formActions.onEvent(FormEvent.LOGIN_REGISTRATION_COMPLETE);
78518	    });
78519	};
78520
78521	/**
78522	 * Submit user attributes in sections that are not part of registration.
78523	 */
78524	const submitUserAttributesForPart = async (partType, form, formState, formActions) => {
78525	    const attributes = userAttributesValuesForPart(partType, form, formState);
78526	    if (Object.keys(attributes).length === 0) {
78527	        return Promise.resolve();
78528	    }
78529	    const response = await request('blaize/profile', {
78530	        method: "PATCH",
78531	        bodyObject: attributes
78532	    }, formActions);
78533	    if (!response.ok) {
78534	        formActions.updateFormState({
78535	            serverErrors: [ServerError.INVALID_USER_ATTRIBUTES]
78536	        });
78537	        logDataLayerEvent(form, 'zephr_form_error', {
78538	            error: ServerError[ServerError.INVALID_USER_ATTRIBUTES],
78539	        });
78540	        throw `Error submitting user attributes ${JSON.stringify(response)}`;
78541	    }
78542	    return Promise.resolve();
78543	};
78544
78545	const CHANGE_SUBSCRIPTION_DEFAULT_CONVERSION_NAME = "CHANGE_SUBSCRIPTION";
78546	const logConversionAfterPurchase = (form, formActions) => logConversion(formConfigAs(form).changeSubscriptionMode
78547	    ? (formConfigAs(form).changeSubscriptionConversionName ?? CHANGE_SUBSCRIPTION_DEFAULT_CONVERSION_NAME)
78548	    : "CUSTOMER", form, formActions);
78549
78550	// Unique ID creation requires a high quality random # generator. In the browser we therefore
78551	// require the crypto API and do not support built-in fallback to lower quality random number
78552	// generators (like Math.random()).
78553	let getRandomValues;
78554	const rnds8 = new Uint8Array(16);
78555	function rng() {
78556	  // lazy load so that environments that need to polyfill have a chance to do so
78557	  if (!getRandomValues) {
78558	    // getRandomValues needs to be invoked in a context where "this" is a Crypto implementation.
78559	    getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);
78560
78561	    if (!getRandomValues) {
78562	      throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');
78563	    }
78564	  }
78565
78566	  return getRandomValues(rnds8);
78567	}
78568
78569	/**
78570	 * Convert array of 16 byte values to UUID string format of the form:
78571	 * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
78572	 */
78573
78574	const byteToHex = [];
78575
78576	for (let i = 0; i < 256; ++i) {
78577	  byteToHex.push((i + 0x100).toString(16).slice(1));
78578	}
78579
78580	function unsafeStringify(arr, offset = 0) {
78581	  // Note: Be careful editing this code!  It's been tuned for performance
78582	  // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434
78583	  return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];
78584	}
78585
78586	const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);
78587	var native = {
78588	  randomUUID
78589	};
78590
78591	function v4(options, buf, offset) {
78592	  if (native.randomUUID && !buf && !options) {
78593	    return native.randomUUID();
78594	  }
78595
78596	  options = options || {};
78597	  const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
78598
78599	  rnds[6] = rnds[6] & 0x0f | 0x40;
78600	  rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided
78601
78602	  if (buf) {
78603	    offset = offset || 0;
78604
78605	    for (let i = 0; i < 16; ++i) {
78606	      buf[offset + i] = rnds[i];
78607	    }
78608
78609	    return buf;
78610	  }
78611
78612	  return unsafeStringify(rnds);
78613	}
78614
78615	const pay = (form, formState, formActions) => submitUserAttributesForPart(partTypes.PAYMENT.type, form, formState, formActions)
78616	    .then(() => {
78617	    const completer = formState.mobilePaymentService == null
78618	        ? paymentProviderFor(form.organisationConfiguration.paymentProvider).completer
78619	        : mobilePaymentServiceFor(form.organisationConfiguration.paymentProvider).completer;
78620	    return completer(form, formState, formActions)
78621	        .then(() => {
78622	        const postFormSubmitMessage = {
78623	            error: null,
78624	            errorMessage: "",
78625	            success: true,
78626	            formSlug: form.id
78627	        };
78628	        const formEventPayload = JSON.stringify(postFormSubmitMessage);
78629	        // handle ios message
78630	        window?.webkit?.messageHandlers?.messageHandler?.postMessage(formEventPayload);
78631	        // handle android message
78632	        window?.AndroidFormEventListener?.processFormEvent(formEventPayload);
78633	        logConversionAfterPurchase(form, formActions);
78634	        formActions.updateFormState({
78635	            paymentProcessed: true
78636	        });
78637	        logDataLayerEvent(form, 'zephr_form_purchase', {
78638	            productId: formState.paymentOption.productId,
78639	            planId: formState.paymentOption.slug,
78640	            price: formState.paymentOptionPrices?.totalPrice
78641	        });
78642	        logDataLayerEvent(form, 'purchase', {
78643	            ecommerce: {
78644	                transaction_id: v4(),
78645	                value: formState.paymentOptionPrices?.totalPrice,
78646	                tax: formState.paymentOptionPrices?.taxPrice,
78647	                currency: getRelevantCurrency(form, formState),
78648	                coupon: formState.promoCode,
78649	                items: [{
78650	                        item_id: formState.paymentOption.slug,
78651	                        item_name: formState.paymentOption.productId,
78652	                        price: formState.paymentOptionPrices?.totalPrice,
78653	                        quantity: 1
78654	                    }]
78655	            }
78656	        });
78657	        if (formState.convertCancelSubscriptionToAcceptOffer) {
78658	            logDataLayerEvent(form, 'zephr_form_subscription_cancel_accept_offer', {
78659	                canceledProductId: formState.selectedSubscription.productId,
78660	                acceptedProductId: formState.paymentOption.productId,
78661	                productLabel: formState.paymentOption.label,
78662	                currency: formState.paymentOption.currencyCode,
78663	                amount: formState.paymentOptionPrices?.totalPrice
78664	            });
78665	        }
78666	        formActions.jumpToPartStart(partTypes.SUCCESS.type);
78667	        if (formConfigAs(form).changeSubscriptionMode) {
78668	            const changingFromSubscription = formState
78669	                .validChangeFromPlans
78670	                .find(plan => formState.paymentOption.slug === plan.planSlug && formState.paymentOption.productId === plan.productId)
78671	                .changesFromSubscription;
78672	            logDataLayerEvent(form, 'zephr_form_subscription_change', {
78673	                fromProductId: changingFromSubscription.productId,
78674	                fromProductAmount: changingFromSubscription.amount,
78675	                toProductId: formState.paymentOption.productId,
78676	                toProductAmount: formState.paymentOptionPrices.netPriceFormattedString,
78677	            });
78678	        }
78679	    }).catch(err => {
78680	        const serverError = formState.mobilePaymentService == null
78681	            ? ServerError.PAYMENT_PROCESSING_ERROR
78682	            : ServerError.MOBILE_PAYMENT_PROCESSING_ERROR;
78683	        console.error("Error completing payment", err);
78684	        logDataLayerEvent(form, 'zephr_form_payment_failure', {
78685	            reason: err
78686	        });
78687	        formActions.updateFormState({
78688	            mobilePaymentService: null,
78689	            serverErrors: [serverError]
78690	        });
78691	        logDataLayerEvent(form, 'zephr_form_error', {
78692	            error: ServerError[serverError],
78693	        });
78694	    });
78695	});
78696
78697	const calculateChangeSubscriptionProrate = async (form, formState, formActions) => {
78698	    if (!formConfigAs(form).changeSubscriptionMode) {
78699	        return;
78700	    }
78701	    formActions.updateFormState({
78702	        changeSubscriptionProrate: null
78703	    });
78704	    const prorateCalculator = paymentProviderFor(form.organisationConfiguration.paymentProvider)
78705	        .changeSubscriptionProrateCalculator;
78706	    if (!prorateCalculator) {
78707	        return;
78708	    }
78709	    const prorate = await prorateCalculator(form, formState, formActions);
78710	    formActions.updateFormState({
78711	        changeSubscriptionProrate: prorate
78712	    });
78713	};
78714
78715	const getSubscriptionParam = (url) => {
78716	    const urlObj = new URL(url);
78717	    return urlObj.searchParams.get("subscription");
78718	};
78719
78720	/**
78721	 * Checks if the current user has payment methods stored in their Zuora billing account
78722	 * Only runs for zuora-billing payment provider
78723	 */
78724	const checkUserHasPaymentMethods = async (form, formActions) => {
78725	    // Only check for zuora-billing provider
78726	    if (form.organisationConfiguration.paymentProvider !== 'zuora-billing') {
78727	        return true; // Assume other providers have payment methods or don't need this check
78728	    }
78729	    try {
78730	        const response = await request('plugins/public/zuora-billing/payment-methods', {
78731	            method: 'GET'
78732	        }, formActions);
78733	        const data = await response.json();
78734	        // Check if user has any credit cards stored
78735	        return data.creditCards && data.creditCards[0]?.id;
78736	    }
78737	    catch (error) {
78738	        console.warn('Unable to check payment methods, assuming user has payment methods:', error);
78739	        // If we can't check, assume they have payment methods to avoid blocking the flow
78740	        return true;
78741	    }
78742	};
78743
78744	const getChangeFromPlans = (subscriptions, form) => {
78745	    return subscriptions.length === 0 ? [] :
78746	        formConfigAs(form).paymentOptions.map(paymentOption => {
78747	            const mapping = (formConfigAs(form).changeSubscriptionPlanMappings ?? [])
78748	                .find(mapping => mapping.toPlan.planSlug === paymentOption.slug
78749	                && mapping.toPlan.productId === paymentOption.productId);
78750	            if (!mapping) {
78751	                return;
78752	            }
78753	            const validSubscriptions = subscriptions.filter(subscription => 
78754	            // Ignore if subscription is for the destination payment option
78755	            !(subscription.planId === paymentOption.slug && subscription.productId === paymentOption.productId)
78756	                &&
78757	                    (
78758	                    // Ignore if subscription plan is not in 'fromPlans', unless allowing any plan
78759	                    mapping.fromAnyPlan ||
78760	                        mapping.fromPlans.some(fromPlan => ((!subscription.multiphasePlan && fromPlan.planSlug === subscription.planId) ||
78761	                            subscriptionMatchesMultiphasePlan(fromPlan, subscription))
78762	                            && fromPlan.productId === subscription.productId)));
78763	            if (validSubscriptions.length === 0) {
78764	                return;
78765	            }
78766	            if (validSubscriptions.length > 1) {
78767	                console.log("Found multiple valid subscriptions to move to payment option, selecting the first", paymentOption);
78768	            }
78769	            return {
78770	                planSlug: paymentOption.slug,
78771	                productId: paymentOption.productId,
78772	                changesFromSubscription: subscriptions[0],
78773	            };
78774	        }
78774).filter(Boolean);
78775	};
78776	const subscriptionMatchesMultiphasePlan = (fromPlan, subscription) => {
78777	    if (!subscription.multiphasePlan) {
78778	        return false;
78779	    }
78780	    const planSlug = fromPlan.planSlug;
78781	    const multiphasePlan = subscription.multiphasePlanMappings?.[planSlug];
78782	    if (!multiphasePlan) {
78783	        return false;
78784	    }
78785	    return multiphasePlan.phases.some(phase => phase.planId === subscription.planId);
78786	};
78787	const loadExistingSubscriptions$1 = async (form, formState, formActions, hasDynamicOfferAttached, validPlansRequired) => {
78788	    const subscriptionLoader = paymentProviderFor(form.organisationConfiguration.paymentProvider).existingSubscriptionLoader;
78789	    if (!subscriptionLoader) {
78790	        console.error(`Existing subscription loader not configured for ${form.organisationConfiguration.paymentProvider}`);
78791	        formActions.updateFormState({
78792	            formCannotBeActioned: true
78793	        });
78794	        return;
78795	    }
78796	    let subscriptions;
78797	    try {
78798	        subscriptions = await subscriptionLoader(form, formState, formActions, true);
78799	    }
78800	    catch (err) {
78801	        console.error("Unable to load subscriptions", err);
78802	        formActions.updateFormState({
78803	            formCannotBeActioned: true
78804	        });
78805	        return;
78806	    }
78807	    // Check if payment method setup is required
78808	    const paymentConfig = formConfigAs(form);
78809	    let requiresPaymentMethodSetup = false;
78810	    if (paymentConfig.allowNoPaymentMethodUpgrade && form.organisationConfiguration.paymentProvider === 'zuora-billing') {
78811	        const hasPaymentMethods = await checkUserHasPaymentMethods(form, formActions);
78812	        if (!hasPaymentMethods) {
78813	            requiresPaymentMethodSetup = true;
78814	        }
78815	    }
78816	    const subscriptionQueryParamId = getSubscriptionParam(window.location.href);
78817	    if (subscriptionQueryParamId) {
78818	        const subscriptionMatched = subscriptions.filter(sub => sub.externalId === subscriptionQueryParamId);
78819	        if (subscriptionMatched.length && getChangeFromPlans(subscriptionMatched, form).length) {
78820	            subscriptions = subscriptionMatched;
78821	        }
78822	    }
78823	    if (hasDynamicOfferAttached) {
78824	        filterDynamicOfferChangeFromPlans(subscriptions, formState, formActions, requiresPaymentMethodSetup);
78825	        return subscriptions;
78826	    }
78827	    const changeFromPlans = getChangeFromPlans(subscriptions, form);
78828	    const selectionMode = formConfigAs(form).subscriptionSelectionMode;
78829	    if (subscriptions.length === 0) {
78830	        console.warn("Not showing form as user has no active subscriptions");
78831	    }
78832	    else if (changeFromPlans.length === 0 && !selectionMode && validPlansRequired) {
78833	        console.warn("Not showing form as no payment options can be actioned with the user's current subscriptions");
78834	    }
78835	    if (selectionMode) {
78836	        subscriptions = subscriptions.map(subscription => {
78837	            if (formConfigAs(form).changeSubscriptionPlanMappings.some(m => m.fromAnyPlan || m.fromPlans.some(fromPlan => ((!subscription.multiphasePlan && fromPlan.planSlug === subscription.planId) ||
78838	                subscriptionMatchesMultiphasePlan(fromPlan, subscription))
78839	                && fromPlan.productId === subscription.productId))) {
78840	                subscription.cannotBeChanged = false;
78841	            }
78842	            else {
78843	                subscription.cannotBeChanged = true;
78844	            }
78845	            return subscription;
78846	        });
78847	    }
78848	    formActions.updateFormState({
78849	        existingSubscriptions: subscriptions,
78850	        formCannotBeActioned: changeFromPlans.length === 0 && !selectionMode && validPlansRequired && !requiresPaymentMethodSetup,
78851	        validChangeFromPlans: changeFromPlans,
78852	        formPrerequisiteLoaded: true,
78853	        requiresPaymentMethodSetup,
78854	        showPaymentMethodFlowFirst: requiresPaymentMethodSetup,
78855	    });
78856	    return subscriptions;
78857	};
78858	const filterDynamicOfferChangeFromPlans = (subscriptions, formState, formActions, requiresPaymentMethodSetup) => {
78859	    if (subscriptions.length === 0) {
78860	        console.log("No subscriptions available.");
78861	        formActions.updateFormState({
78862	            existingSubscriptions: [],
78863	            formCannotBeActioned: true,
78864	            validChangeFromPlans: [],
78865	            formPrerequisiteLoaded: true,
78866	            requiresPaymentMethodSetup,
78867	            showPaymentMethodFlowFirst: requiresPaymentMethodSetup,
78868	        });
78869	        return;
78870	    }
78871	    const dynamicOffer = formState.dynamicOfferResult;
78872	    if (!dynamicOffer) {
78873	        console.log("No dynamic offer result available.");
78874	    }
78875	    // Filter payment plans from dynamic offers that the user is not already subscribed to and matches the currency of existing subscriptions.
78876	    const changeFromPlans = dynamicOffer?.products?.flatMap(product => product.paymentPlans.filter(plan => {
78877	        const isSubscribed = subscriptions.some(sub => sub.planId === plan.planId && sub.productId === product.id);
78878	        const currencyMatch = subscriptions.every(sub => plan.charges.every(charge => charge.prices?.some(price => price.currency === sub.currency)));
78879	        return !isSubscribed && currencyMatch;
78880	    }
78880).map(plan => ({
78881	        planSlug: plan.planId,
78882	        productId: product.id,
78883	        changesFromSubscription: subscriptions.find(sub => plan.charges.every(charge => charge.prices?.some(price => price.currency === sub.currency)))
78884	    })).filter(plan => {
78885	        const hasChangesFromSubscription = !!plan.changesFromSubscription;
78886	        return hasChangesFromSubscription;
78887	    })) ?? [];
78888	    formActions.updateFormState({
78889	        existingSubscriptions: subscriptions,
78890	        formCannotBeActioned: changeFromPlans.length === 0 && !requiresPaymentMethodSetup,
78891	        validChangeFromPlans: changeFromPlans,
78892	        formPrerequisiteLoaded: true,
78893	        requiresPaymentMethodSetup,
78894	        showPaymentMethodFlowFirst: requiresPaymentMethodSetup,
78895	    });
78896	};
78897
78898	const loadExistingSubscriptions = async (form, formState, formActions, activeOnly) => {
78899	    const provider = form.organisationConfiguration.paymentProvider;
78900	    const loader = paymentProviderFor(provider)?.existingSubscriptionLoader;
78901	    if (!loader) {
78902	        console.error(`❌ [loadExistingSubscriptions] Existing subscription loader not configured for ${provider}`);
78903	        return [];
78904	    }
78905	    const existingSubscriptions = loader ? await loader(form, formState, formActions, activeOnly) : [];
78906	    formActions.updateFormState({
78907	        existingSubscriptions
78908	    });
78909	    return existingSubscriptions;
78910	};
78911
78912	const formStartAction$9 = async (form, formState, formActions) => {
78913	    const hasGifts = form.formType === FormType.LIST_GIFT_SUBSCRIPTIONS_SENT
78914	        || (form.formType === FormType.LIST_SUBSCRIPTIONS && form.organisationConfiguration.paymentProvider.includes('zuora-billing'));
78915	    // Load gift subscriptions if applicable (for sent gifts or regular subscriptions that need to show received gifts)
78916	    if (hasGifts) {
78917	        // Set loading state to true first
78918	        formActions.updateFormState({
78919	            loadingGiftSubscriptions: true
78920	        });
78921	        // Get the mock data outside the try block so it's accessible in the catch block
78922	        let allGiftSubscriptionsData = [];
78923	        // For preview mode, we can skip the API call and use the mock data directly
78924	        if (form.environment?.previewMode) {
78925	            allGiftSubscriptionsData = [
78926	                // Received gift (current user is recipient)
78927	                {
78928	                    gift_code: "GIFT-PREVIEW-1",
78929	                    subscription_number: "gift-sub-preview-1",
78930	                    status: "REDEEMED",
78931	                    is_purchaser: false,
78932	                    is_recipient: true,
78933	                    amount: "GBP 99/year",
78934	                    currency: "GBP",
78935	                    currentTermPeriodType: "Year",
78936	                    tenant_id: "organization_tenant_id",
78937	                    purchaser_user_id: "user_sender_12345",
78938	                    recipient_user_id: "user_current",
78939	                    recipient_email: "[email protected]",
78940	                    recipientFirstName: "John",
78941	                    recipientLastName: "Smith",
78942	                    message: "Enjoy your premium gift subscription!",
78943	                    subscriptionType: "Premium Digital",
78944	                    subscriptionStartDate: "January 1, 2025",
78945	                    subscriptionEndDate: "January 1, 2026",
78946	                    error_reason: null,
78947	                    host: "example.com",
78948	                    recipient_zuora_account_id: "account_123"
78949	                },
78950	                // Sent gift (current user is purchaser)
78951	                {
78952	                    gift_code: "GIFT-PREVIEW-2",
78953	                    subscription_number: "gift-sub-preview-2",
78954	                    status: "REDEEMED",
78955	                    is_purchaser: true,
78956	                    is_recipient: false,
78957	                    amount: "GBP 50/year",
78958	                    currency: "GBP",
78959	                    currentTermPeriodType: "Year",
78960	                    tenant_id: "organization_tenant_id",
78961	                    purchaser_user_id: "user_current",
78962	                    recipient_user_id: "user_recipient_12345",
78963	                    recipient_email: "[email protected]",
78964	                    recipientFirstName: "Jane",
78965	                    recipientLastName: "Doe",
78966	                    message: "Here's your gift subscription!",
78967	                    subscriptionType: "Basic Digital",
78968	                    subscriptionStartDate: "February 15, 2025",
78969	                    subscriptionEndDate: "February 15, 2026",
78970	                    error_reason: null,
78971	                    host: "example.com",
78972	                    recipient_zuora_account_id: "account_456"
78973	                },
78974	                // Pending gift (not yet redeemed)
78975	                {
78976	                    gift_code: "GIFT-PREVIEW-3",
78977	                    subscription_number: "gift-sub-preview-3",
78978	                    status: "PENDING",
78979	                    is_purchaser: true,
78980	                    is_recipient: false,
78981	                    amount: "GBP 50/year",
78982	                    currency: "GBP",
78983	                    currentTermPeriodType: "Year",
78984	                    tenant_id: "organization_tenant_id",
78985	                    purchaser_user_id: "user_current",
78986	                    recipient_user_id: null,
78987	                    recipient_email: "[email protected]",
78988	                    recipientFirstName: "",
78989	                    recipientLastName: "",
78990	                    message: "A gift subscription for you!",
78991	                    subscriptionType: "Basic Digital",
78992	                    subscriptionStartDate: "March 1, 2025",
78993	                    subscriptionEndDate: "March 1, 2026",
78994	                    error_reason: null,
78995	                    host: "example.com",
78996	                    recipient_zuora_account_id: null
78997	                }
78998	            ];
78999	            formActions.updateFormState({
79000	                giftSubscriptions: allGiftSubscriptionsData,
79001	                formPrerequisiteLoaded: true,
79002	                loadingGiftSubscriptions: false
79003	            });
79004	        }
79005	        else {
79006	            try {
79007	                formActions.updateFormState({
79008	                    loadingSubscriptions: true
79009	                });
79010	                // loads in subscriptions and gift data
79011	                await loadGiftSubscriptions(form, formState, formActions);
79012	                formActions.updateFormState({
79013	                    formPrerequisiteLoaded: true,
79014	                    loadingGiftSubscriptions: false
79015	                });
79016	            }
79017	            catch (error) {
79018	                console.error('❌ [LIST_SUBSCRIPTIONS] Error loading gift subscriptions:', error);
79019	                formActions.updateFormState({
79020	                    formPrerequisiteLoaded: true,
79021	                    serverErrors: [
79022	                        ServerError.UNKNOWN
79023	                    ]
79024	                });
79025	            }
79026	        }
79027	        formActions.updateFormState({
79028	            loadingGiftSubscriptions: false,
79029	            loadingSubscriptions: false
79030	        });
79031	    }
79032	    // Load regular subscriptions for the standard list view
79033	    try {
79034	        formActions.updateFormState({
79035	            loadingSubscriptions: true
79036	        });
79037	        await loadExistingSubscriptions(form, formState, formActions, false);
79038	    }
79039	    catch (error) {
79040	        console.error("❌ [LIST_SUBSCRIPTIONS] Error loading subscriptions", error);
79041	        formActions.updateFormState({
79042	            serverErrors: [ServerError.PAYMENT_PROCESSING_ERROR],
79043	        });
79044	    }
79045	    finally {
79046	        formActions.updateFormState({
79047	            loadingSubscriptions: false,
79048	            loadingGiftSubscriptions: false,
79049	        });
79050	    }
79051	};
79052	const goBack$2 = async (_, __, formActions) => {
79053	    formActions.jumpToPartStart(partTypes.LIST_SUBSCRIPTIONS.type);
79054	    return Promise.resolve();
79055	};
79056	const changePayment = async (form, formState, formActions) => {
79057	    const completer = paymentProviderFor(form.organisationConfiguration.paymentProvider).changePaymentCompleter;
79058	    await completer(form, formState, formActions)
79059	        .then(async () => {
79060	        formActions.updateFormState({
79061	            paymentProviderFormBusy: false
79062	        });
79063	        const paymentConfig = formConfigAs(form);
79064	        if (paymentConfig.changeSubscriptionMode && formState.paymentMethodSetupComplete) {
79065	            const subscriptionCompleter = paymentProviderFor(form.organisationConfiguration.paymentProvider).completer;
79066	            await subscriptionCompleter(form, formState, formActions)
79067	                .then(() => {
79068	                formActions.jumpToPartStart(partTypes.SUCCESS.type);
79069	                logDataLayerEvent(form, 'zephr_form_subscription_change', null);
79070	            })
79071	                .catch(err => {
79072	                console.error("Error changing subscription after adding payment method:", err);
79073	                formActions.updateFormState({
79074	                    serverErrors: [ServerError.PAYMENT_PROCESSING_ERROR]
79075	                });
79076	            });
79077	        }
79078	        else {
79079	            formActions.jumpToPartStart(partTypes.SUCCESS.type);
79080	            logDataLayerEvent(form, 'zephr_form_payment_method_changed', null);
79081	        }
79082	    }).catch(err => {
79083	        const serverError = formState.mobilePaymentService == null
79084	            ? ServerError.PAYMENT_PROCESSING_ERROR
79085	            : ServerError.MOBILE_PAYMENT_PROCESSING_ERROR;
79086	        console.error("Error completing payment change", err);
79087	        formActions.updateFormState({
79088	            mobilePaymentService: null,
79089	            paymentProviderFormBusy: false,
79090	            serverErrors: [serverError]
79091	        });
79092	        logDataLayerEvent(form, 'zephr_form_error', {
79093	            error: ServerError[serverError],
79094	        });
79095	    });
79096	};
79097	// NB: If you change these event handlers, you must also consider updating the event handlers in giftSubscriptionsListSectionFlow.ts
79098	const eventHandlers$b = {
79099	    [FormEvent.FORM_START]: formStartAction$9,
79100	    [FormEvent.GO_BACK]: goBack$2,
79101	    [FormEvent.PART_CHANGE_PAYMENT_COMPLETE]: changePayment,
79102	};
79103	const sectionVisibilities$9 = [];
79104	const canAttemptSectionCompletion$a = (_, formState) => {
79105	    return !formState.elementValidity
79106	        .filter((e) => e.partType === formState.currentPart.type &&
79107	        e.sectionType === formState.currentSection.type &&
79108	        e.sectionOrder === formState.currentSection.order)
79109	        .some((e) => !e.isValid);
79110	};
79111	const extraElements$2 = [
79112	    {
79113	        type: elementTypes.PAYMENT_PRE_LOADER,
79114	        order: -1,
79115	    },
79116	];
79117	const listSubscriptionsSectionFlow = {
79118	    extraElements: extraElements$2,
79119	    eventHandlers: eventHandlers$b,
79120	    sectionVisibilities: sectionVisibilities$9,
79121	    canAttemptSectionCompletion: canAttemptSectionCompletion$a,
79122	    canDismissFormManually: () => false,
79123	    formRequiresPrerequisiteLoading: () => false,
79124	};
79125
79126	/**
79127	 * Map of possible movements through the form sections.
79128	 */
79129	let checkForRegisteredUserResolve;
79130	const checkForRegisteredUserPromise = new Promise(function (resolve) {
79131	    checkForRegisteredUserResolve = resolve;
79132	});
79133	const formStartAction$8 = async (form, _, formActions) => {
79134	    const hasDynamicOfferAttached = !!formConfigAs(form).dynamicOffer?.id
79135	        || !!formConfigAs(form).dynamicOfferPreview;
79136	    if (hasDynamicOfferAttached) {
79137	        await getDynamicOffer(form, formActions).catch((e) => { console.error('Error loading Dynamic Offer', e); });
79138	    }
79139	    return checkForRegisteredUser(formActions)
79140	        .then(async (alreadyRegistered) => {
79141	        checkForRegisteredUserResolve(checkForRegisteredUserResolve);
79142	        if (formConfigAs(form).changeSubscriptionMode) {
79143	            formActions.updateFormState({ formCannotBeActioned: !alreadyRegistered });
79144	            await loadExistingSubscriptions$1(form, formActions.getFormState(), formActions, hasDynamicOfferAttached, true);
79145	            const subscriptionQueryParam = getSubscriptionParam(window.location.href);
79146	            if (subscriptionQueryParam && formActions.getFormState().existingSubscriptions.length === 1) {
79147	                formActions.jumpToPartStart(partTypes.PLAN_SELECT.type);
79148	            }
79149	        }
79150	    });
79151	};
79152	const onPlanSelectComplete$2 = (form, formState, formActions) => 
79153	// After plan select, wait to see if the user is already logged in
79154	checkForRegisteredUserPromise
79155	    .then(async () => {
79156	    const state = formActions.getFormState();
79157	    if (state.userSession || state.loginRegistrationComplete) {
79158	        const updatedState = await getProductAddons(form, state, formActions);
79159	        void calculatePrices(form, updatedState, formActions)
79160	            .then(formState => logDataLayerEvents(form, formState));
79161	        void calculateChangeSubscriptionProrate(form, updatedState, formActions);
79162	        // If payment method setup is required, go to change-payment part first
79163	        if (updatedState.requiresPaymentMethodSetup && !updatedState.paymentMethodSetupComplete) {
79164	            formActions.jumpToPartStart(partTypes.CHANGE_PAYMENT.type);
79165	        }
79166	        else {
79167	            formActions.jumpToPartStart(partTypes.PAYMENT.type);
79168	        }
79169	    }
79170	    else {
79171	        void calculatePrices(form, formState, formActions)
79172	            .then(formState => logDataLayerEvents(form, formState));
79173	        void calculateChangeSubscriptionProrate(form, formState, formActions);
79174	        formActions.jumpToPartStart(partTypes.ACCOUNT_VERIFICATION.type);
79175	    }
79176	});
79177	const logDataLayerEvents = (form, formState) => {
79178	    // don't trigger data layer events for other form types that override this flow (i.e. gift subscription form)
79179	    if (form.organisationConfiguration.trackFormDataLayerEvents && form.formType == FormType.PAYMENT) {
79180	        const paymentOption = formState.paymentOption;
79181	        // await calculatePrices(form, formActions.getFormState(), formActions);
79182	        const paymentOptionPrice = formState.paymentOptionPrices?.totalPrice;
79183	        logDataLayerEvent(form, 'zephr_form_payment_option_selected', {
79184	            productId: paymentOption.productId,
79185	            planId: paymentOption.slug,
79186	            price: paymentOptionPrice,
79187	        });
79188	        logDataLayerEvent(form, 'select_item', {
79189	            ecommerce: {
79190	                items: [{
79191	                        item_id: paymentOption.slug,
79192	                        item_name: paymentOption.productId,
79193	                        price: paymentOptionPrice,
79194	                        quantity: 1
79195	                    }]
79196	            }
79197	        });
79198	        logDataLayerEvent(form, 'add_to_cart', {
79199	            ecommerce: {
79200	                currency: formConfigAs(form).formCurrency ?? paymentOption?.currencyCode,
79201	                value: paymentOptionPrice,
79202	                items: [{
79203	                        item_id: paymentOption.slug,
79204	                        item_name: paymentOption.productId,
79205	                        price: paymentOptionPrice,
79206	                        quantity: 1
79207	                    }]
79208	            }
79209	        });
79210	    }
79211	};
79212	const onAccountVerificationComplete$1 = (form, formState, formActions) => (formState.userExists ? login : register)(form, formState, formActions);
79213	const onSuccessComplete$1 = (form, formState, formActions) => submitUserAttributesForPart(partTypes.SUCCESS.type, form, formState, formActions)
79214	    .then(() => {
79215	    window.location.reload();
79216	});
79217	const onLoginRegister = (form, _, formActions) => getProductAddons(form, formActions.getFormState(), formActions)
79218	    .then(() => calculatePrices(form, formActions.getFormState(), formActions))
79219	    .then(() =>
79219 formActions.jumpToPartStart(partTypes.PAYMENT.type));
79220	const onSubscriptionSelectComplete$3 = (form, formState, formActions) => {
79221	    const changeFromPlans = getChangeFromPlans([formState.selectedSubscription], form);
79222	    formActions.updateFormState({
79223	        existingSubscriptions: [formState.selectedSubscription],
79224	        formCannotBeActioned: changeFromPlans.length === 0,
79225	        validChangeFromPlans: changeFromPlans,
79226	        formPrerequisiteLoaded: true,
79227	    });
79228	    formActions.jumpToPartStart(partTypes.PLAN_SELECT.type);
79229	};
79230	const eventHandlers$a = {
79231	    [FormEvent.FORM_START]: formStartAction$8,
79232	    [FormEvent.LOGIN_REGISTRATION_COMPLETE]: onLoginRegister,
79233	    [FormEvent.SECTION_EMAIL_COMPLETE]: onEmailEntered,
79234	    [FormEvent.SECTION_PASSWORD_RESET_COMPLETE]: resetPassword,
79235	    [FormEvent.SECTION_FORGOT_PASSWORD_COMPLETE]: verifiyPasswordResetCode,
79236	    [FormEvent.PART_PLAN_SELECT_COMPLETE]: onPlanSelectComplete$2,
79237	    [FormEvent.PART_ACCOUNT_VERIFICATION_COMPLETE]: onAccountVerificationComplete$1,
79238	    [FormEvent.PART_PAYMENT_COMPLETE]: pay,
79239	    [FormEvent.PART_SUCCESS_COMPLETE]: onSuccessComplete$1,
79240	    [FormEvent.SELECT_SUBSCRIPTION_COMPLETE]: onSubscriptionSelectComplete$3,
79241	    [FormEvent.PART_CHANGE_PAYMENT_COMPLETE]: changePayment,
79242	};
79243	const sectionVisibilities$8 = [
79244	    {
79245	        type: sectionTypes.EMAIL.type,
79246	        isDisplayedInProgressBar: true,
79247	        isVisible: (form) => !formConfigAs(form).changeSubscriptionMode
79248	    },
79249	    {
79250	        type: sectionTypes.LOGIN_PASSWORD.type,
79251	        isDisplayedInProgressBar: false,
79252	        isVisible: (form, formState) => formConfigAs(form).usePassword && formState.userExists && !formState.socialSignin
79253	    },
79254	    {
79255	        type: sectionTypes.PASSWORD_SETUP.type,
79256	        isDisplayedInProgressBar: false,
79257	        isVisible: (form, formState) => formConfigAs(form).usePassword && !formState.userExists && !formState.socialSignin
79258	    },
79259	    {
79260	        type: sectionTypes.SUCCESS.type,
79261	        isDisplayedInProgressBar: false,
79262	        isVisible: () => true
79263	    },
79264	    {
79265	        type: sectionTypes.PASSWORD_RESET.type,
79266	        isDisplayedInProgressBar: false,
79267	        isVisible: (form, formState) => formConfigAs(form).usePassword && formState.forgotPassword
79268	    },
79269	    {
79270	        type: sectionTypes.FORGOT_PASSWORD.type,
79271	        isDisplayedInProgressBar: false,
79272	        isVisible: (form, formState) => formConfigAs(form).usePassword && formState.forgotPassword
79273	    },
79274	    {
79275	        type: sectionTypes.VERIFICATION_CODE_LOGIN.type,
79276	        isDisplayedInProgressBar: false,
79277	        isVisible: (form, formState) => (formState.userExists && (formConfigAs(form).useVerificationCodes || formState.socialSignin)) ?? false
79278	    },
79279	    {
79280	        type: sectionTypes.VERIFICATION_CODE_REGISTRATION.type,
79281	        isDisplayedInProgressBar: false,
79282	        isVisible: (form, formState) => (!formState.userExists && (formConfigAs(form).useVerificationCodes || formState.emailIsContact)) ?? false
79283	    },
79284	    {
79285	        type: sectionTypes.REGISTRATION_CUSTOM.type,
79286	        isDisplayedInProgressBar: true,
79287	        isVisible: (form, formState) => !formState.userExists
79288	    },
79289	    {
79290	        type: sectionTypes.CHANGE_PAYMENT.type,
79291	        isDisplayedInProgressBar: false,
79292	        isVisible: (form, formState) => {
79293	            const paymentConfig = formConfigAs(form);
79294	            return paymentConfig.changeSubscriptionMode &&
79295	                paymentConfig.allowNoPaymentMethodUpgrade &&
79296	                formState.requiresPaymentMethodSetup === true &&
79297	                !formState.paymentMethodSetupComplete;
79298	        }
79299	    }
79300	];
79301	const canAttemptSectionCompletion$9 = (form, formState) => {
79302	    const providerConfig = paymentProviderFor(form.organisationConfiguration.paymentProvider);
79303	    return !formState.elementValidity.filter(e => e.partType === formState.currentPart.type &&
79304	        e.sectionType === formState.currentSection.type &&
79305	        e.sectionOrder === formState.currentSection.order)
79306	        .filter(e => !(e.elementType === elementTypes.PAYMENT
79307	        && providerConfig.canAttemptIncompletePaymentFormSubmission
79308	        && formState.paymentProviderFormLoaded))
79309	        .some(e => !e.isValid);
79310	};
79311	const canDismissFormManually = (form) => formConfigAs(form).changeSubscriptionMode;
79312	const formRequiresPrerequisiteLoading = (form) => formConfigAs(form).changeSubscriptionMode;
79313	const extraElements$1 = [
79314	    {
79315	        type: elementTypes.PAYMENT_PRE_LOADER,
79316	        order: -1,
79317	    },
79318	];
79319	const sectionFlow$9 = {
79320	    extraElements: extraElements$1,
79321	    sectionVisibilities: sectionVisibilities$8,
79322	    eventHandlers: eventHandlers$a,
79323	    canAttemptSectionCompletion: canAttemptSectionCompletion$9,
79324	    canDismissFormManually,
79325	    formRequiresPrerequisiteLoading
79326	};
79327
79328	/**
79329	 * Map of possible movements through the form sections for reg forms.
79330	 */
79331	const onAccountVerificationComplete = (form, formState, formActions) => (formState.userExists ? login : register)(form, formState, formActions);
79332	const onLoginRegisterComplete$1 = async (form, formState, formActions) => {
79333	    const config = formConfigAs(form);
79334	    const isPasswordless = getFormIsPasswordless(form);
79335	    if (!formState.userExists && (isPasswordless || (form.organisationConfiguration.requireEmailVerfication && !config.useVerificationCodes && !formState.socialSignin))) {
79336	        await sendLink(form, 'register', formState.emailAddress, formActions);
79337	        await jumpToSection(sectionTypes.EMAIL_VERIFIED.type, form, formActions);
79338	        return Promise.resolve();
79339	    }
79340	    if (config.showSuccessOnFormCompletion && !formState.userExists) {
79341	        await jumpToSection(sectionTypes.SUCCESS.type, form, formActions);
79342	    }
79343	    else {
79344	        window.location.href = removeSharingInviteFromUrl(window.location.href);
79345	        if (window.flowpoint) {
79346	            window.flowpoint.track("Registration/Login Form Submitted");
79347	        }
79348	    }
79349	    return Promise.resolve();
79350	};
79351	const onSuccessComplete = () => {
79352	    window.location.href = removeSharingInviteFromUrl(window.location.href);
79353	    if (window.flowpoint) {
79354	        window.flowpoint.track("Registration/Login Form Submitted");
79355	    }
79356	    return Promise.resolve();
79357	};
79358	const eventHandlers$9 = {
79359	    [FormEvent.LOGIN_REGISTRATION_COMPLETE]: onLoginRegisterComplete$1,
79360	    [FormEvent.SECTION_EMAIL_COMPLETE]: onEmailEntered,
79361	    [FormEvent.SECTION_PASSWORD_RESET_COMPLETE]: resetPassword,
79362	    [FormEvent.SECTION_FORGOT_PASSWORD_COMPLETE]: verifiyPasswordResetCode,
79363	    [FormEvent.PART_ACCOUNT_VERIFICATION_COMPLETE]: onAccountVerificationComplete,
79364	    [FormEvent.PART_SUCCESS_COMPLETE]: onSuccessComplete,
79365	};
79366	const sectionVisibilities$7 = [
79367	    {
79368	        type: sectionTypes.EMAIL.type,
79369	        isDisplayedInProgressBar: true,
79370	        isVisible: () => true
79371	    },
79372	    {
79373	        type: sectionTypes.LOGIN_PASSWORD.type,
79374	        isDisplayedInProgressBar: true,
79375	        isVisible: (form, formState) => formConfigAs(form).usePassword && formState.userExists && !formState.socialSignin
79376	    },
79377	    {
79378	        type: sectionTypes.PASSWORD_SETUP.type,
79379	        isDisplayedInProgressBar: true,
79380	        isVisible: (form, formState) => formConfigAs(form).usePassword && !formState.userExists && !formState.socialSignin
79381	    },
79382	    {
79383	        type: sectionTypes.PASSWORD_RESET.type,
79384	        isDisplayedInProgressBar: false,
79385	        isVisible: (form, formState) => formConfigAs(form).usePassword && formState.forgotPassword
79386	    },
79387	    {
79388	        type: sectionTypes.FORGOT_PASSWORD.type,
79389	        isDisplayedInProgressBar: false,
79390	        isVisible: (form, formState) => formConfigAs(form).usePassword && formState.forgotPassword
79391	    },
79392	    {
79393	        type: sectionTypes.VERIFICATION_CODE_LOGIN.type,
79394	        isDisplayedInProgressBar: false,
79395	        isVisible: (form, formState) => (formState.userExists && (formConfigAs(form).useVerificationCodes || formState.socialSignin)) ?? false
79396	    },
79397	    {
79398	        type: sectionTypes.VERIFICATION_CODE_REGISTRATION.type,
79399	        isDisplayedInProgressBar: false,
79400	        isVisible: (form, formState) => (!formState.userExists && (formConfigAs(form).useVerificationCodes || formState.emailIsContact)) ?? false
79401	    },
79402	    {
79403	        type: sectionTypes.REGISTRATION_CUSTOM.type,
79404	        isDisplayedInProgressBar: true,
79405	        isVisible: (_, formState) => !formState.userExists
79406	    },
79407	    {
79408	        type: sectionTypes.SUCCESS.type,
79409	        isDisplayedInProgressBar: false,
79410	        isVisible: () => true
79411	    },
79412	    {
79413	        type: sectionTypes.EMAIL_VERIFIED.type,
79414	        isDisplayedInProgressBar: false,
79415	        isVisible: (form, formState) => form.organisationConfiguration.requireEmailVerfication &&
79416	            !(formConfigAs(form).useVerificationCodes) &&
79417	            !formState.socialSignin
79418	    },
79419	    {
79420	        type: sectionTypes.PASSWORDLESS_VIA_LOGIN_LINK.type,
79421	        isDisplayedInProgressBar: false,
79422	        isVisible: (form, formState) => formState.userExists && getFormIsPasswordless(form)
79423	    }
79424	];
79425	const canAttemptSectionCompletion$8 = (_, formState) => {
79426	    return !formState.elementValidity.filter(e => e.partType === formState.currentPart.type &&
79427	        e.sectionType === formState.currentSection.type &&
79428	        e.sectionOrder === formState.currentSection.order)
79429	        .some(e => !e.isValid);
79430	};
79431	const sectionFlow$8 = {
79432	    extraElements: [],
79433	    eventHandlers: eventHandlers$9,
79434	    sectionVisibilities: sectionVisibilities$7,
79435	    canAttemptSectionCompletion: canAttemptSectionCompletion$8,
79436	    canDismissFormManually: () => false,
79437	    formRequiresPrerequisiteLoading: () => false,
79438	    canPartiallyRegister: true
79439	};
79440
79441	const processResponse$1 = async (payload, response, form, formState, formActions) => {
79442	    const json = await response.json();
79443	    if (response?.ok) {
79444	        logConversion('CONTACT', form, formActions);
79445	        window.Blaize?.postProcessFormData && window.Blaize.postProcessFormData(form.id, payload, json);
79446	        return Promise.resolve(true);
79447	    }
79448	    // Handle errors
79449	    const serverError = mapToServerError(response.status, json?.message, formState);
79450	    formActions.updateFormState({
79451	        serverErrors: [serverError]
79452	    });
79453	    logDataLayerEvent(form, 'zephr_form_error', {
79454	        error: ServerError[serverError],
79455	    });
79456	    if (ServerErrors[serverError].jumpToPart) {
79457	        formActions.jumpToPartStart(ServerErrors[serverError].jumpToPart);
79458	    }
79459	    return Promise.resolve(false);
79460	};
79461	const preprocessorIdentity$1 = (_, t) => t;
79462	const toContactCreeatePayload = (form, formState) => {
79463	    const autoAppliedAttributes = formConfigAs(form).autoApplyAttributes ?? {};
79464	    const preprocessor = window.Blaize?.preProcessFormData ?? preprocessorIdentity$1;
79465	    const attributes = userAttributesValuesForPart(partTypes.CONTACT_VERIFICATION.type, form, formState);
79466	    const attributesWithAutoApplied = {
79467	        ...attributes,
79468	        ...autoAppliedAttributes
79469	    };
79470	    return preprocessor(form.id, {
79471	        identifiers: { email_address: formState.emailAddress },
79472	        attributes: Object.keys(attributesWithAutoApplied).length ? attributesWithAutoApplied : undefined,
79473	    });
79474	};
79475	const registerContact = async (form, formState, formActions) => {
79476	    const payload = toContactCreeatePayload(form, formState);
79477	    const response = await request('zephr/createContact', {
79478	        method: "POST",
79479	        bodyObject: payload
79480	    }, formActions);
79481	    return processResponse$1(payload, response, form, formState, formActions);
79482	};
79483
79484	/**
79485	 * Map of possible movements through the form sections for contact forms.
79486	 */
79487	const formStartAction$7 = async (_, __, formActions) => {
79488	    await checkForRegisteredUser(formActions);
79489	};
79490	// handle submit of email on first step or after additional attributes preferences provided
79491	const onContactVerificationComplete = async (form, formState, formActions) => {
79492	    const config = formConfigAs(form);
79493	    try {
79494	        await registerContact(form, formState, formActions);
79495	        if (config.showSuccessOnFormCompletion) {
79496	            await jumpToPart(partTypes.SUCCESS.type, form, formActions);
79497	        }
79498	        else {
79499	            window.location.reload();
79500	        }
79501	    }
79502	    catch (error) {
79503	        console.error(error);
79504	        await jumpToSection(sectionTypes.EMAIL.type, form, formActions);
79505	    }
79506	};
79507	const eventHandlers$8 = {
79508	    [FormEvent.FORM_START]: formStartAction$7,
79509	    [FormEvent.PART_CONTACT_VERIFICATION_COMPLETE]: onContactVerificationComplete,
79510	};
79511	const sectionVisibilities$6 = [
79512	    {
79513	        type: sectionTypes.EMAIL.type,
79514	        isDisplayedInProgressBar: false,
79515	        isVisible: () => true,
79516	    },
79517	    {
79518	        type: sectionTypes.REGISTRATION_CUSTOM.type,
79519	        isDisplayedInProgressBar: false,
79520	        isVisible: (_, formState) => !formState.userExists,
79521	    },
79522	];
79523	const canAttemptSectionCompletion$7 = (_, formState) => {
79524	    return !formState.elementValidity
79525	        .filter((e) => e.partType === formState.currentPart.type &&
79526	        e.sectionType === formState.currentSection.type &&
79527	        e.sectionOrder === formState.currentSection.order)
79528	        .some((e) => !e.isValid);
79529	};
79530	const sectionFlow$7 = {
79531	    extraElements: [],
79532	    eventHandlers: eventHandlers$8,
79533	    sectionVisibilities: sectionVisibilities$6,
79534	    canAttemptSectionCompletion: canAttemptSectionCompletion$7,
79535	    canDismissFormManually: () => false,
79536	    formRequiresPrerequisiteLoading: () => false,
79537	};
79538
79539	const processResponse = async (payload, response, attributes, form, formState, formActions) => {
79540	    if (response?.ok) {
79541	        if (form.formType == FormType.UPDATE_PROFILE) {
79542	            logDataLayerEvent(form, 'zephr_form_profile_update', {
79543	                success: response?.ok,
79544	                ...Object.entries(attributes).reduce((acc, [key, value]) => ({ ...acc, [`attr_${key}`]: value }), {})
79545	            });
79546	        }
79547	        if (form.formType == FormType.DATA_CAPTURE) {
79548	            logConversion('Data Captured', form, formActions);
79549	            logDataLayerEvent(form, 'zephr_form_data_capture', {
79550	                success: response?.ok,
79551	                ...Object.entries(attributes).reduce((acc, [key, value]) => ({ ...acc, [`attr_${key}`]: value }), {})
79552	            });
79553	        }
79554	        if (form.formType == FormType.COMPLETE_REGISTRATION) {
79555	            logConversion('Completed Registration', form, formActions);
79556	            logDataLayerEvent(form, 'zephr_form_complete_registration', {
79557	                success: response?.ok,
79558	                ...Object.entries(attributes).reduce((acc, [key, value]) => ({ ...acc, [`attr_${key}`]: value }), {})
79559	            });
79560	        }
79561	        const json = await response.json();
79562	        payload && window.Blaize?.postProcessFormData && window.Blaize.postProcessFormData(form.id, payload, json);
79563	        return Promise.resolve(true);
79564	    }
79565	    const responseMessage = (await response.json())?.message;
79566	    const serverError = mapToServerError(response.status, responseMessage, formState);
79567	    formActions.updateFormState({
79568	        serverErrors: [serverError]
79569	    });
79570	    logDataLayerEvent(form, 'zephr_form_error', {
79571	        error: ServerError[serverError],
79572	    });
79573	    return Promise.resolve(false);
79574	};
79575	const preprocessorIdentity = (_, t) => t;
79576	const toUpdateUserPayload = (form, formState, partType) => {
79577	    const preprocessor = window.Blaize?.preProcessFormData ?? preprocessorIdentity;
79578	    const attributes = userAttributesValuesForPart(partType, form, formState);
79579	    const autoAppliedAttributes = formConfigAs(form).autoApplyAttributes ?? {};
79580	    return preprocessor(form.id, {
79581	        ...attributes,
79582	        ...autoAppliedAttributes,
79583	        ...(formState.createPassword && { 'blaize-validator': formState.createPassword }),
79584	    });
79585	};
79586	const updateUser = async (form, formState, formActions, partType) => {
79587	    const payload = toUpdateUserPayload(form, formState, partType);
79588	    if (formState.fireCancelationReasonEvent) {
79589	        formActions.updateFormState({
79590	            cancelationReasonAttributes: payload
79591	        });
79592	    }
79593	    const response = await request('blaize/profile', {
79594	        method: "PATCH",
79595	        bodyObject: payload
79596	    }, formActions);
79597	    const attributes = userAttributesValuesForPart(partType, form, formState);
79598	    return processResponse(payload, response, attributes, form, formState, formActions);
79599	};
79600
79601	const formStartAction$6 = async (form, formState, formActions) => {
79602	    const hideIfSet = form.parts
79603	        .map(e => e.sections)
79604	        .reduce((acc, curr) => {
79605	        const attrToHide = curr.map(e => e.elements
79606	            .filter(e => e.type == "user_attribute" && e.config?.hideIfSet)
79607	            .map(e => e.config?.slug)
79608	            .filter(slug => slug != null));
79609	        return acc.concat(attrToHide);
79610	    }, [])
79611	        .flat();
79612	    const toRemove = [];
79613	    try {
79614	        const response = await request('blaize/profile', { method: "GET" }, formActions);
79615	        if (response?.ok) {
79616	            const responseJson = await response.json();
79617	            formConfigAs(form).autoApplyAttributes &&
79618	                Object.keys(formConfigAs(form).autoApplyAttributes).forEac
79618h(a => {
79619	                    if (Object.prototype.hasOwnProperty.call(responseJson, a)) {
79620	                        delete responseJson[a];
79621	                    }
79622	                });
79623	            hideIfSet.forEach(a => {
79624	                if (Object.prototype.hasOwnProperty.call(responseJson, a)) {
79625	                    toRemove.push(a);
79626	                }
79627	            });
79628	            if (toRemove.length == Object.keys(formState.userAttributes).length && form.formType != FormType.COMPLETE_REGISTRATION) {
79629	                console.warn("Not showing form as user has no attributes to update");
79630	            }
79631	            else {
79632	                formActions.updateFormState({
79633	                    formPrerequisiteLoaded: true,
79634	                    hideIfSetAttributes: toRemove,
79635	                    userAttributes: { ...responseJson },
79636	                });
79637	            }
79638	        }
79639	    }
79640	    catch (err) {
79641	        console.error(err);
79642	    }
79643	};
79644	const onUpdateProfileComplete = async (form, formState, formActions) => {
79645	    const config = formConfigAs(form);
79646	    try {
79647	        await updateUser(form, formState, formActions, partTypes.PROFILE_UPDATE.type)
79648	            .then(async (success) => {
79649	            if (success && config.showSuccessOnFormCompletion) {
79650	                await jumpToPart(partTypes.SUCCESS.type, form, formActions);
79651	            }
79652	            else if (success) {
79653	                window.location.reload();
79654	            }
79655	        });
79656	    }
79657	    catch (error) {
79658	        console.error(error);
79659	    }
79660	};
79661	const eventHandlers$7 = {
79662	    [FormEvent.FORM_START]: formStartAction$6,
79663	    [FormEvent.PART_PROFILE_UPDATE_COMPLETE]: onUpdateProfileComplete,
79664	};
79665	const sectionVisibilities$5 = [];
79666	const canAttemptSectionCompletion$6 = (_, formState) => {
79667	    return !formState.elementValidity
79668	        .filter((e) => e.partType === formState.currentPart.type &&
79669	        e.sectionType === formState.currentSection.type &&
79670	        e.sectionOrder === formState.currentSection.order)
79671	        .some((e) => !e.isValid);
79672	};
79673	const sectionFlow$6 = {
79674	    extraElements: [],
79675	    eventHandlers: eventHandlers$7,
79676	    sectionVisibilities: sectionVisibilities$5,
79677	    canAttemptSectionCompletion: canAttemptSectionCompletion$6,
79678	    canDismissFormManually: () => false,
79679	    formRequiresPrerequisiteLoading: () => true,
79680	};
79681
79682	const startUpdateEmailFlow = async (form, formState, formActions) => {
79683	    try {
79684	        const updateEmailWithoutPassword = !formState.password;
79685	        const payload = {
79686	            current_identifiers: {
79687	                email_address: formState.readOnlyEmail,
79688	            },
79689	            new_identifiers: {
79690	                email_address: formState.emailAddress,
79691	            },
79692	            ...(updateEmailWithoutPassword ? {} : {
79693	                validators: {
79694	                    password: formState.password,
79695	                },
79696	            }),
79697	        };
79698	        const response = await request(updateEmailWithoutPassword ? 'blaize/users/update-email' : 'zephr/users/update-email', {
79699	            method: 'POST',
79700	            bodyObject: payload,
79701	        }, formActions);
79702	        logDataLayerEvent(form, 'zephr_form_email_update_code_sent', {
79703	            success: response?.ok
79704	        });
79705	        if (!response.ok) {
79706	            formActions.updateFormState({
79707	                serverErrors: [ServerError.UNKNOWN],
79708	            });
79709	            logDataLayerEvent(form, 'zephr_form_error', {
79710	                error: ServerError[ServerError.UNKNOWN],
79711	            });
79712	            return { success: false, isLinkBased: updateEmailWithoutPassword };
79713	        }
79714	        return { success: true, isLinkBased: updateEmailWithoutPassword };
79715	    }
79716	    catch (err) {
79717	        formActions.updateFormState({
79718	            serverErrors: [ServerError.UNKNOWN],
79719	        });
79720	        logDataLayerEvent(form, 'zephr_form_error', {
79721	            error: ServerError[ServerError.UNKNOWN],
79722	        });
79723	        return { success: false, isLinkBased: !formState.password };
79724	    }
79725	};
79726	const endEmailUpdateFlow = async (form, formState, formActions) => {
79727	    formActions.incrementRequestCount();
79728	    formActions.updateFormState({
79729	        verificationCodeValid: undefined
79730	    });
79731	    const response = await request(`zephr/users/update-email/${formState.verificationCode}`, {
79732	        method: "POST",
79733	        bodyObject: {
79734	            current_identifiers: {
79735	                email_address: formState.readOnlyEmail,
79736	            },
79737	        }
79738	    }, formActions);
79739	    logDataLayerEvent(form, 'zephr_form_password_reset_code_validate', {
79740	        success: response?.ok
79741	    });
79742	    if (!response.ok) {
79743	        formActions.updateFormState({
79744	            serverErrors: [ServerError.VERIFICATION_CODE_INCORRECT]
79745	        });
79746	        logDataLayerEvent(form, 'zephr_form_error', {
79747	            error: ServerError[ServerError.VERIFICATION_CODE_INCORRECT],
79748	        });
79749	        formActions.decrementRequestCount();
79750	        return false;
79751	    }
79752	    await waitAfterCode(form);
79753	    formActions.decrementRequestCount();
79754	    return true;
79755	};
79756
79757	const startPasswordUpdateFlow = async (form, formState, formActions) => {
79758	    try {
79759	        const payload = {
79760	            current_validators: {
79761	                password: formState.currentPassword,
79762	            },
79763	            new_validators: {
79764	                password: formState.createPassword,
79765	            },
79766	        };
79767	        const response = await request('zephr/users/change-password', {
79768	            method: 'POST',
79769	            bodyObject: payload,
79770	        }, formActions);
79771	        logDataLayerEvent(form, 'zephr_form_password_update_code_sent', {
79772	            success: response?.ok
79773	        });
79774	        if (!response.ok) {
79775	            formActions.updateFormState({
79776	                serverErrors: [ServerError.UNKNOWN],
79777	            });
79778	            return false;
79779	        }
79780	        return true;
79781	    }
79782	    catch (err) {
79783	        formActions.updateFormState({
79784	            serverErrors: [ServerError.UNKNOWN],
79785	        });
79786	        return false;
79787	    }
79788	};
79789	const endPasswordUpdateFlow = async (form, formState, formActions) => {
79790	    formActions.incrementRequestCount();
79791	    formActions.updateFormState({
79792	        verificationCodeValid: undefined
79793	    });
79794	    const response = await request(`zephr/users/change-password/${formState.verificationCode}`, {
79795	        method: "GET",
79796	    }, formActions);
79797	    logDataLayerEvent(form, 'zephr_form_password_update_code_validate', {
79798	        success: response?.ok
79799	    });
79800	    if (!response.ok) {
79801	        formActions.updateFormState({
79802	            serverErrors: [ServerError.VERIFICATION_CODE_INCORRECT]
79803	        });
79804	        logDataLayerEvent(form, 'zephr_form_error', {
79805	            error: ServerError[ServerError.VERIFICATION_CODE_INCORRECT],
79806	        });
79807	        formActions.decrementRequestCount();
79808	        return false;
79809	    }
79810	    await waitAfterCode(form);
79811	    formActions.decrementRequestCount();
79812	    return true;
79813	};
79814
79815	const formStartAction$5 = async (_, __, formActions) => {
79816	    formActions.incrementRequestCount();
79817	    try {
79818	        await Promise.all([fetchProfile(formActions), fetchEmail(formActions)]);
79819	    }
79820	    finally {
79821	        formActions.decrementRequestCount();
79822	    }
79823	};
79824	const startEmailUpdate = async (form, formState, formActions) => {
79825	    const result = await startUpdateEmailFlow(form, formState, formActions);
79826	    if (result.success) {
79827	        if (result.isLinkBased) {
79828	            // Passwordless flow - show confirmation message to check email for link
79829	            // Check if confirmation part exists in form config (defensive guard for legacy forms)
79830	            const hasConfirmationPart = form.parts.some(p => p.type === partTypes.EMAIL_UPDATE_CONFIRMATION.type);
79831	            if (hasConfirmationPart) {
79832	                await jumpToPart(partTypes.EMAIL_UPDATE_CONFIRMATION.type, form, formActions);
79833	            }
79834	            else {
79835	                // Fallback: show OTP screen for legacy forms without confirmation part
79836	                await jumpToPart(partTypes.EMAIL_UPDATE_OTP.type, form, formActions);
79837	            }
79838	        }
79839	        else {
79840	            // Password-protected flow - show OTP code input screen
79841	            await jumpToPart(partTypes.EMAIL_UPDATE_OTP.type, form, formActions);
79842	        }
79843	    }
79844	};
79845	const endEmailUpdate = async (form, formState, formActions) => {
79846	    const success = await endEmailUpdateFlow(form, formState, formActions);
79847	    if (success) {
79848	        await reset(form, formState, formActions, true);
79849	    }
79850	};
79851	const startPasswordUpdate = async (form, formState, formActions) => {
79852	    const success = await startPasswordUpdateFlow(form, formState, formActions);
79853	    if (success) {
79854	        await jumpToPart(partTypes.PASSWORD_UPDATE_OTP.type, form, formActions);
79855	    }
79856	};
79857	const endPasswordUpdate = async (form, formState, formActions) => {
79858	    const success = await endPasswordUpdateFlow(form, formState, formActions);
79859	    if (success) {
79860	        await reset(form, formState, formActions, true);
79861	    }
79862	};
79863	const onUpdateAttributes$1 = async (form, formState, formActions) => {
79864	    const submitSuccess = await updateUser(form, formState, formActions, partTypes.ATTRIBUTES_UPDATE.type);
79865	    if (submitSuccess) {
79866	        await reset(form, formState, formActions, true);
79867	    }
79868	};
79869	const goBack$1 = async (form, formState, formActions) => reset(form, formState, formActions, false);
79870	const jumpToUserAttributeUpdate = async (form, _, formActions) => {
79871	    await jumpToPart(partTypes.ATTRIBUTES_UPDATE.type, form, formActions);
79872	};
79873	const reset = async (form, formState, formActions, wait) => {
79874	    formActions.updateFormState({
79875	        emailAddress: null,
79876	        password: null,
79877	        createPassword: null,
79878	        passwordIsValid: null,
79879	        verificationCode: null,
79880	        currentPassword: null,
79881	        serverErrors: [],
79882	    });
79883	    if (wait) {
79884	        await formStartAction$5(form, formState, formActions);
79885	    }
79886	    else {
79887	        void formStartAction$5(form, formState, formActions);
79888	    }
79889	    await jumpToPart(partTypes.PROFILE_UPDATE.type, form, formActions);
79890	};
79891	const fetchProfile = async (formActions) => {
79892	    try {
79893	        const response = await request('blaize/profile', { method: "GET" }, formActions);
79894	        const json = await response.json();
79895	        formActions.updateFormState({
79896	            readOnlyAttributeValues: json,
79897	        });
79898	    }
79899	    catch (err) {
79900	        console.error("Unable to load user profile", err);
79901	    }
79902	};
79903	const fetchEmail = async (formActions) => {
79904	    try {
79905	        const response = await request('blaize/account', { method: "GET" }, formActions);
79906	        const email = (await response.json())?.identifiers.email_address;
79907	        formActions.updateFormState({
79908	            readOnlyEmail: email
79909	        });
79910	    }
79911	    catch (err) {
79912	        console.error("Unable to load user email", err);
79913	    }
79914	};
79915	const eventHandlers$6 = {
79916	    [FormEvent.FORM_START]: formStartAction$5,
79917	    [FormEvent.GO_BACK]: goBack$1,
79918	    [FormEvent.UPDATE]: jumpToUserAttributeUpdate,
79919	    [FormEvent.PART_EMAIL_UPDATE_COMPLETE]: startEmailUpdate,
79920	    [FormEvent.VERIFY_EMAIL_UPDATE_OTP]: endEmailUpdate,
79921	    [FormEvent.PART_PASSWORD_UPDATE_COMPLETE]: startPasswordUpdate,
79922	    [FormEvent.VERIFY_PASSWORD_UPDATE_OTP]: endPasswordUpdate,
79923	    [FormEvent.PART_ATTRIBUTES_UPDATE_COMPLETE]: onUpdateAttributes$1,
79924	};
79925	const canAttemptSectionCompletion$5 = (_, formState) => {
79926	    return !formState.elementValidity
79927	        .filter((e) => e.partType === formState.currentPart.type &&
79928	        e.sectionType === formState.currentSection.type &&
79929	        e.sectionOrder === formState.currentSection.order)
79930	        .some((e) => !e.isValid);
79931	};
79932	const sectionFlow$5 = {
79933	    extraElements: [],
79934	    eventHandlers: eventHandlers$6,
79935	    sectionVisibilities: [],
79936	    canAttemptSectionCompletion: canAttemptSectionCompletion$5,
79937	    canDismissFormManually: () => false,
79938	    formRequiresPrerequisiteLoading: () => false,
79939	};
79940
79941	const formStartAction$4 = async (form, formState, formActions) => {
79942	    const hasDynamicOfferAttached = !!formConfigAs(form).dynamicOffer?.id;
79943	    const hasCancelReason = formConfigAs(form).hasCancelReason;
79944	    const hasSaveOffer = formConfigAs(form).hasSaveOffer;
79945	    // Skip Dynamic Offer fetch if we need to capture cancellation reason first
79946	    // This ensures the cancellation reason is available as a user attribute for Dynamic Offer filtering
79947	    const shouldFetchDynamicOfferNow = hasDynamicOfferAttached && !(hasSaveOffer && hasCancelReason);
79948	    if (shouldFetchDynamicOfferNow) {
79949	        await getDynamicOffer(form, formActions).catch((e) => { console.error('Error loading Dynamic Offer', e); });
79950	        formState = formActions.getFormState();
79951	    }
79952	    const existingSubscriptions = formConfigAs(form).hasSaveOffer ?
79953	        await loadExistingSubscriptions$1(form, formState, formActions, shouldFetchDynamicOfferNow, false) : await loadExistingSubscriptions(form, formState, formActions, true);
79954	    const subscriptionQueryParam = getSubscriptionParam(window.location.href);
79955	    if (!subscriptionQueryParam) {
79956	        return;
79957	    }
79958	    const queryParamSubscription = existingSubscriptions.find(subscription => subscription.externalId === subscriptionQueryParam);
79959	    if (queryParamSubscription) {
79960	        formActions.updateFormState({
79961	            selectedSubscription: queryParamSubscription,
79962	            isExternalReferrer: true,
79963	        });
79964	        formActions.completeSection();
79965	    }
79966	};
79967	const cancel = async (form, formActions) => {
79968	    const formState = formActions.getFormState();
79969	    try {
79970	        const response = await request(`zephr/subscriptions/${formState.selectedSubscription.externalId}`, {
79971	            method: 'DELETE',
79972	        }, formActions);
79973	        if (response.ok) {
79974	            if (formState.fireCancelationReasonEvent) {
79975	                logDataLayerEvent(form, 'zephr_form_subscription_cancel_reason', {
79976	                    productId: formState.selectedSubscription.productId,
79977	                    ...Object.entries(formState.cancelationReasonAttributes).reduce((acc, [key, value]) => ({ ...acc, [`attr_${key}`]: value }), {})
79978	                });
79979	            }
79980	            logDataLayerEvent(form, 'zephr_form_subscription_cancel', {
79981	                productId: formState.selectedSubscription.productId,
79982	                productLabel: formState.selectedSubscription.productLabel,
79983	                currency: formState.selectedSubscription.currency,
79984	                amount: formState.selectedSubscription.amount,
79985	            });
79986	            if (form.parts.some(e => e.type == partTypes.CANCEL_SUCCESS.type)) {
79987	                formActions.jumpToPartStart(partTypes.CANCEL_SUCCESS.type);
79988	            }
79989	            else {
79990	                formActions.jumpToPartStart(partTypes.SUCCESS.type);
79991	            }
79992	        }
79993	        else {
79994	            formActions.updateFormState({
79995	                serverErrors: [ServerError.UNKNOWN],
79996	            });
79997	            logDataLayerEvent(form, 'zephr_form_error', {
79998	                error: ServerError[ServerError.UNKNOWN],
79999	            });
80000	        }
80001	    }
80002	    catch (error) {
80003	        console.error("Error occurred while cancelling subscription.", error);
80004	        formActions.updateFormState({
80005	            serverErrors: [ServerError.UNKNOWN],
80006	        });
80007	        logDataLayerEvent(form, 'zephr_form_error', {
80008	            error: ServerError[ServerError.UNKNOWN],
80009	        });
80010	    }
80011	};
80012	const onSubscriptionSelectComplete$2 = async (form, formState, formActions) => {
80013	    if (formConfigAs(form).hasCancelReason) {
80014	        formActions.updateFormState({
80015	            fireCancelationReasonEvent: true,
80016	            cancelFlowSubscriptionSelectedId: formState.selectedSubscription.externalId,
80017	        });
80018	        formActions.jumpToPartStart(partTypes.ATTRIBUTES_UPDATE.type);
80019	    }
80020	    else if (formState.validChangeFromPlans.length === 0) {
80021	        await cancel(form, formActions);
80022	    }
80023	    else if (formConfigAs(form).hasSaveOffer) {
80024	        formActions.updateFormState({
80025	            cancelFlowSubscriptionSelectedId: formState.selectedSubscription.externalId,
80026	        });
80027	        formActions.jumpToPartStart(partTypes.PLAN_SELECT.type);
80028	    }
80029	    else {
80030	        await cancel(form, formActions);
80031	    }
80032	};
80033	const onPlanSelectComplete$1 = async (form, formState, formActions) => {
80034	    if (formState.confirmCancel) {
80035	        await cancel(form, formActions);
80036	    }
80037	    else {
80038	        const state = formActions.getFormState();
80039	        const updatedState = await getProductAddons(form, state, formActions);
80040	        void calculatePrices(form, updatedState, formActions);
80041	        void calculateChangeSubscriptionProrate(form, updatedState, formActions);
80042	        formActions.updateFormState({
80043	            convertCancelSubscriptionToAcceptOffer: true,
80044	        });
80045	        formActions.jumpToPartStart(partTypes.PAYMENT.type);
80046	    }
80047	};
80048	const onUpdateAttributes = async (form, formState, formActions) => {
80049	    const submitSuccess = await updateUser(form, formState, formActions, partTypes.ATTRIBUTES_UPDATE.type);
80050	    if (!submitSuccess) {
80051	        return;
80052	    }
80053	    // Fetch Dynamic Offer now that cancellation reason is available as a user attribute
80054	    const hasDynamicOfferAttached = !!formConfigAs(form).dynamicOffer?.id;
80055	    const hasSaveOffer = formConfigAs(form).hasSaveOffer;
80056	    if (hasDynamicOfferAttached && hasSaveOffer) {
80057	        await getDynamicOffer(form, formActions).catch((e) => { console.error('Error loading Dynamic Offer', e); });
80058	        // Filter subscriptions with the newly fetched Dynamic Offer result
80059	        const updatedFormState = formActions.getFormState();
80060	        const existingSubscriptions = updatedFormState.existingSubscriptions || [];
80061	        if (existingSubscriptions.length > 0) {
80062	            filterDynamicOfferChangeFromPlans(existingSubscriptions, updatedFormState, formActions, updatedFormState.requiresPaymentMethodSetup || false);
80063	        }
80064	        formState = formActions.getFormState();
80065	    }
80066	    if (formState.validChangeFromPlans.length === 0) {
80067	        await cancel(form, formActions);
80068	    }
80069	    else if (hasSaveOffer) {
80070	        formActions.jumpToPartStart(partTypes.PLAN_SELECT.type);
80071	    }
80072	    else {
80073	        await cancel(form, formActions);
80074	    }
80075	};
80076	const goBack = async (_, __, formActions) => {
80077	    formActions.jumpToPartStart(partTypes.SELECT_SUBSCRIPTION.type);
80078	    return Promise.resolve();
80079	};
80080	const eventHandlers$5 = {
80081	    [FormEvent.FORM_START]: formStartAction$4,
80082	    [FormEvent.SELECT_SUBSCRIPTION_COMPLETE]: onSubscriptionSelectComplete$2,
80083	    [FormEvent.GO_BACK]: goBack,
80084	    [FormEvent.PART_PLAN_SELECT_COMPLETE]: onPlanSelectComplete$1,
80085	    [FormEvent.PART_PAYMENT_COMPLETE]: pay,
80086	    [FormEvent.PART_ATTRIBUTES_UPDATE_COMPLETE]: onUpdateAttributes,
80087	};
80088	const extraElements = [
80089	    {
80090	        type: elementTypes.PAYMENT_PRE_LOADER,
80091	        order: -1,
80092	    },
80093	];
80094	const cancelSubscriptionSectionFlow = {
80095	    extraElements,
80096	    eventHandlers: eventHandlers$5,
80097	    sectionVisibilities: [],
80098	    canAttemptSectionCompletion: () => true,
80099	    canDismissFormManually: () => false,
80100	    formRequiresPrerequisiteLoading: () => false,
80101	};
80102
80103	const formStartAction$3 = async (form, formState, formActions) => {
80104	    const existingSubscriptions = await loadExistingSubscriptions(form, formState, formActions, true);
80105	    const subscriptionQueryParam = getSubscriptionParam(window.location.href);
80106	    if (!subscriptionQueryParam) {
80107	        return;
80108	    }
80109	    const queryParamSubscription = existingSubscriptions.find(subscription => subscription.externalId === subscriptionQueryParam);
80110	    if (queryParamSubscription) {
80111	        formActions.updateFormState({
80112	            selectedSubscription: queryParamSubscription,
80113	            isExternalReferrer: true,
80114	        });
80115	        formActions.completeSection();
80116	    }
80117	};
80118	const onSubscriptionSelectComplete$1 = (form, formState, formActions) => {
80119	    formActions.updateFormState({
80120	        suspendResumeFlowSubscriptionSelectedId: formState.selectedSubscription.externalId,
80121	    });
80122	    formActions.jumpToPartStart(partTypes.SUSPEND_RESUME_SUBSCRIPTION.type);
80123	};
80124	const suspendResumeSubscriptionComplete = async (form, formState, formActions) => {
80125	    try {
80126	        const response = await request(`zephr/subscriptions/${formState.selectedSubscription.externalId}/manage`, {
80127	            method: 'POST',
80128	            bodyObject: {
80129	                vendor_fields: {
80130	                    order: JSON.stringify({
80131	                        subscription: {
80132	                            orderActions: [
80133	                                {
80134	                                    type: 'Suspend',
80135	                                    suspend: {
80136	                                        suspendPolicy: 'SpecificDate',
80137	                                        suspendSpecificDate: formState.suspendResumeSubscription.suspensionDate,
80138	                                    }
80139	                                },
80140	                                {
80141	                                    type: 'Resume',
80142	                                    resume: {
80143	                                        resumePolicy: 'SpecificDate',
80144	                                        resumeSpecificDate: formState.suspendResumeSubscription.resumeDate,
80145	                                        extendsTerm: true,
80146	                                    }
80147	                                }
80148	                            ]
80149	                        }
80150	                    })
80151	                }
80152	            }
80153	        }, formActions);
80154	        if (response.ok) {
80155	            logDataLayerEvent(form, 'zephr_form_subscription_suspend', {
80156	                productId: formState.selectedSubscription.productId,
80157	                productLabel: formState.selectedSubscription.productLabel,
80158	                currency: formState.selectedSubscription.currency,
80159	                amount: formState.selectedSubscription.amount,
80160	            });
80161	            formActions.jumpToPartStart(partTypes.SUCCESS.type);
80162	        }
80163	        else {
80164	            formActions.updateFormState({
80165	                serverErrors: [ServerError.UNKNOWN],
80166	            });
80167	            logDataLayerEvent(form, 'zephr_form_error', {
80168	                error: ServerError[ServerError.UNKNOWN],
80169	            });
80170	        }
80171	    }
80172	    catch (error) {
80173	        console.error("Error occurred while suspending subscription.", error);
80174	        formActions.updateFormState({
80175	            serverErrors: [ServerError.UNKNOWN],
80176	        });
80177	        logDataLayerEvent(form, 'zephr_form_error', {
80178	            error: ServerError[ServerError.UNKNOWN],
80179	        });
80180	    }
80181	};
80182	const eventHandlers$4 = {
80183	    [FormEvent.FORM_START]: formStartAction$3,
80184	    [FormEvent.SELECT_SUBSCRIPTION_COMPLETE]: onSubscriptionSelectComplete$1,
80185	    [FormEvent.SUSPEND_RESUME_SUBSCRIPTION_COMPLETE]: suspendResumeSubscriptionComplete,
80186	};
80187	const sectionVisibilities$4 = [];
80188	const canAttemptSectionCompletion$4 = (_, formState) => {
80189	    return !formState.elementValidity
80190	        .filter((e) => e.partType === formState.currentPart.type &&
80191	        e.sectionType === formState.currentSection.type &&
80192	        e.sectionOrder === formState.currentSection.order)
80193	        .some((e) => !e.isValid);
80194	};
80195	const sectionFlow$4 = {
80196	    extraElements: [],
80197	    eventHandlers: eventHandlers$4,
80198	    sectionVisibilities: sectionVisibilities$4,
80199	    canAttemptSectionCompletion: canAttemptSectionCompletion$4,
80200	    canDismissFormManually: () => false,
80201	    formRequiresPrerequisiteLoading: () => false,
80202	};
80203
80204	const formStartAction$2 = async (form, formState, formActions) => {
80205	    await loadDeviceSessions(form, formState, formActions);
80206	};
80207	const eventHandlers$3 = {
80208	    [FormEvent.FORM_START]: formStartAction$2,
80209	};
80210	const sectionVisibilities$3 = [];
80211	const canAttemptSectionCompletion$3 = (_, formState) => {
80212	    return !formState.elementValidity
80213	        .filter((e) => e.partType === formState.currentPart.type &&
80214	        e.sectionType === formState.currentSection.type &&
80215	        e.sectionOrder === formState.currentSection.order)
80216	        .some((e) => !e.isValid);
80217	};
80218	const sectionFlow$3 = {
80219	    extraElements: [],
80220	    eventHandlers: eventHandlers$3,
80221	    sectionVisibilities: sectionVisibilities$3,
80222	    canAttemptSectionCompletion: canAttemptSectionCompletion$3,
80223	    canDismissFormManually: () => false,
80224	    formRequiresPrerequisiteLoading: () => false,
80225	};
80226
80227	/**
80228	 * Map of possible movements through the form sections for gift subscription forms.
80229	 */
80230	// Handle the completion of the recipient details section
80231	const onGiftRecipientComplete = async (form, formState, formActions) => {
80232	    // Check if user is logged in using existing session state
80233	    if (formState.loginRegistrationComplete) {
80234	        // If logged in, jump directly to payment section
80235	        await jumpToPart(partTypes.PAYMENT.type, form, formActions);
80236	    }
80237	    else {
80238	        // If not logged in, continue with normal flow to account verification
80239	        await jumpToSection(sectionTypes.EMAIL.type, form, formActions);
80240	    }
80241	};
80242	// Modified pay service for gift subscription
80243	const payWithGiftInfo = async (form, formState, formActions) => {
80244	    try {
80245	        // Add gift recipient info to the payment metadata
80246	        const giftRecipient = formState.giftRecipient;
80247	        if (!giftRecipient) {
80248	            throw new Error("Gift recipient information is missing");
80249	        }
80250	        // Call the standard payment flow - the gift-specific logic is handled in zuoraService.ts
80251	        // which will make the actual API call to create the gift subscription
80252	        return await pay(form, formState, formActions);
80253	    }
80254	    catch (error) {
80255	        console.error("Error in gift subscription payment:", error);
80256	        // Use the language pack for error message
80257	        const errorMessage = resolveLanguagePackKeyTyped(form, 'forms.errors.unknown-payment-error', "Payment failed");
80258	        // Display the error message
80259	        formActions.updateFormState({
80260	            dynamicServerErrorMessage: errorMessage
80261	        });
80262	        throw error;
80263	    }
80264	};
80265	// Customize the payment flow's PART_PLAN_SELECT_COMPLETE handler to add our gift recipient step
80266	const onPlanSelectComplete = async (form, formState, formActions) => {
80267	    // Check gift form mode FIRST, before calling payment flow handler
80268	    if (formState.isGiftForm) {
80269	        // If gift mode is enabled, check if recipient details are valid before jumping
80270	        const recipientDetailsElementTypes = [
80271	            'recipient_name',
80272	            'recipient_email',
80273	            'recipient_address',
80274	            'recipient_message'
80275	        ];
80276	        // Check if all recipient details elements are valid
80277	        const recipientDetailsValid = recipientDetailsElementTypes.every(elementType => {
80278	            const elementValidity = formState.elementValidity.find(e => e.elementType === elementType &&
80279	                e.sectionType === 'recipient_details');
80280	            return elementValidity ? elementValidity.isValid : false;
80281	        });
80282	        // Calculate prices first (from payment form flow)
80283	        await sectionFlow$9.eventHandlers[FormEvent.PART_PLAN_SELECT_COMPLETE](form, formState, formActions);
80284	        // Then navigate to recipient details if they are not valid
80285	        if (!recipientDetailsValid) {
80286	            await jumpToSection('recipient_details', form, formActions);
80287	        }
80288	        // If recipient details are valid, the payment handler already navigated correctly
80289	    }
80290	    else {
80291	        // If gift mode is disabled, just run the standard payment flow
80292	        await sectionFlow$9.eventHandlers[FormEvent.PART_PLAN_SELECT_COMPLETE](form, formState, formActions);
80293	    }
80294	};
80295	// Starting with the payment form handlers, override only what we need
80296	const eventHandlers$2 = {
80297	    ...sectionFlow$9.eventHandlers,
80298	    [FormEvent.FORM_START]: async (form, formState, formActions) => {
80299	        // Execute the standard payment form start handler
80300	        await sectionFlow$9.eventHandlers[FormEvent.FORM_START](form, formState, formActions);
80301	        // Check if the form has any gift toggle elements
80302	        const hasGiftToggleElements = form.parts
80303	            .flatMap(part => part.sections)
80304	            .flatMap(section => section.elements)
80305	            .some(element => element.type === elementTypes.GIFT_TOGGLE);
80306	        // Initialize the gift form state based on whether gift toggle elements are present
80307	        // If no gift toggle elements are found, assume this is a dedicated gift form (isGiftForm = true)
80308	        // If gift toggle elements are present, default to regular subscription mode (isGiftForm = false)
80309	        formActions.updateFormState({
80310	            isGiftForm: !hasGiftToggleElements, // true if no toggles (dedicated gift form), false if toggles exist
80311	            giftRecipient: {
80312	                firstName: '',
80313	                lastName: '',
80314	                email: '',
80315	                recipientAddress: {
80316	                    addressLine1: '',
80317	                    addressLine2: '',
80318	                    city: '',
80319	                    state: '',
80320	                    country: '',
80321	                    postalCode: ''
80322	                },
80323	                customMessage: '',
80324	                futureDeliveryEnabled: false,
80325	                futureDeliveryDate: ''
80326	            }
80327	        });
80328	    },
80329	    // Override plan select to redirect to gift recipient conditionally
80330	    [FormEvent.PART_PLAN_SELECT_COMPLETE]: onPlanSelectComplete,
80331	    // Add gift recipient handler
80332	    [FormEvent.PART_GIFT_RECIPIENT_COMPLETE]: onGiftRecipientComplete,
80333	    // Override payment complete to include gift logic
80334	    [FormEvent.PART_PAYMENT_COMPLETE]: payWithGiftInfo,
80335	};
80336	// Add our new section visibility for recipient details
80337	const sectionVisibilities$2 = [
80338	    ...sectionFlow$9.sectionVisibilities,
80339	    {
80340	        type: sectionTypes.RECIPIENT_DETAILS.type,
80341	        isDisplayedInProgressBar: true,
80342	        isVisible: (form, formState) => {
80343	            // Only show recipient details section if gift form mode is enabled
80344	            return formState.isGiftForm === true;
80345	        }
80346	    }
80347	];
80348	const canAttemptSectionCompletion$2 = (form, formState) => {
80349	    return !formState.elementValidity
80350	        .filter((e) => e.partType === formState.currentPart.type &&
80351	        e.sectionType === formState.currentSection.type &&
80352	        e.sectionOrder === formState.currentSection.order)
80353	        .some((e) => !e.isValid);
80354	};
80355	// Inherit other properties from payment flow
80356	const sectionFlow$2 = {
80357	    extraElements: sectionFlow$9.extraElements,
80358	    sectionVisibilities: sectionVisibilities$2,
80359	    eventHandlers: eventHandlers$2,
80360	    canAttemptSectionCompletion: canAttemptSectionCompletion$2,
80361	    canDismissFormManually: sectionFlow$9.canDismissFormManually,
80362	    formRequiresPrerequisiteLoading: sectionFlow$9.formRequiresPrerequisiteLoading,
80363	    canPartiallyRegister: true
80364	};
80365
80366	const validateGiftCode = async (form, formState, formActions) => {
80367	    const giftCode = formState.giftCode;
80368	    try {
80369	        // First check locally if gift code is valid length
80370	        if (!giftCode || giftCode.length !== 16) {
80371	            formActions.updateFormState({
80372	                giftCodeError: resolveLanguagePackKeyTyped(form, 'forms.errors.gift-code-invalid-length', 'Gift code must be 16 characters long')
80373	            });
80374	            return false;
80375	        }
80376	        formActions.incrementRequestCount();
80377	        const response = await request('zephr/public/gifts/v1/redeem', {
80378	            method: 'POST',
80379	            bodyObject: {
80380	                giftCode: giftCode,
80381	            },
80382	        }, formActions);
80383	        // Log event for gift redemption attempt
80384	        logDataLayerEvent(form, 'zephr_form_gift_redeem', {
80385	            success: response.ok,
80386	        });
80387	        if (!response.ok) {
80388	            formActions.updateFormState({
80389	                serverErrors: [ServerError.GIFT_CODE_INVALID],
80390	                giftCodeError: resolveLanguagePackKeyTyped(form, 'forms.errors.gift-code-invalid', 'The gift code you entered is invalid'),
80391	            });
80392	            formActions.decrementRequestCount();
80393	            return false;
80394	        }
80395	        formActions.decrementRequestCount();
80396	        await jumpToSection(sectionTypes.GIFT_REDEEMED.type, form, formActions);
80397	        return true;
80398	    }
80399	    catch (error) {
80400	        formActions.updateFormState({
80401	            serverErrors: [ServerError.GIFT_CODE_SERVER_ERROR],
80402	            giftCodeError: resolveLanguagePackKeyTyped(form, 'forms.errors.gift-code-server-error', 'An error occurred processing your gift code'),
80403	        });
80404	        formActions.decrementRequestCount();
80405	        return false;
80406	    }
80407	};
80408
80409	const GIFT_REDEMPTION_PART = "gift_redemption";
80410	const onGiftRedemptionComplete = async (form, formState, formActions) => {
80411	    await validateGiftCode(form, formState, formActions);
80412	};
80413	const formStartAction$1 = async (form, formState, formActions) => {
80414	    // If user session is already set, we don't need to check again
80415	    if (formState.userSession) {
80416	        // Skip registration and go straight to gift redemption if user is logged in
80417	        const giftRedemptionPart = form.parts.find(part => part.type === "gift_redemption");
80418	        if (giftRedemptionPart) {
80419	            formActions.updateFormState({
80420	                currentPart: giftRedemptionPart,
80421	                currentSection: giftRedemptionPart.sections[0],
80422	                userSession: true,
80423	                loginRegistrationComplete: true
80424	            });
80425	        }
80426	        return;
80427	    }
80428	    // Otherwise check for user session
80429	    const userSession = await checkForRegisteredUser(formActions);
80430	    if (userSession) {
80431	        // Skip registration and go straight to gift redemption if user is logged in
80432	        const giftRedemptionPart = form.parts.find(part => part.type === "gift_redemption");
80433	        if (giftRedemptionPart) {
80434	            formActions.updateFormState({
80435	                currentPart: giftRedemptionPart,
80436	                currentSection: giftRedemptionPart.sections[0],
80437	                userSession: true,
80438	                loginRegistrationComplete: true
80439	            });
80440	        }
80441	    }
80442	};
80443	const onLoginRegisterComplete = async (form, formState, formActions) => {
80444	    // Instead of reloading page or showing success, go straight to gift redemption
80445	    await jumpToPart(GIFT_REDEMPTION_PART, form, formActions);
80446	    return Promise.resolve();
80447	};
80448	const canAttemptSectionCompletion$1 = (form, formState) => {
80449	    // Check if we're in the gift redemption section and enforce validation
80450	    if (formState.currentSection.type === sectionTypes.GIFT_REDEMPTION.type) {
80451	        const giftCodeElement = formState.elementValidity.find(e => e.elementType === elementTypes.GIFT_CODE &&
80452	            e.sectionType === formState.currentSection.type);
80453	        if (giftCodeElement && !giftCodeElement.isValid) {
80454	            return false;
80455	        }
80456	        if (formState.giftCode?.length !== 16) {
80457	            return false;
80458	        }
80459	    }
80460	    // For other sections, use the default registration flow validation
80461	    return sectionFlow$8.canAttemptSectionCompletion(form, formState);
80462	};
80463	const eventHandlers$1 = {
80464	    ...sectionFlow$8.eventHandlers,
80465	    [FormEvent.FORM_START]: formStartAction$1,
80466	    [FormEvent.GIFT_REDEMPTION_COMPLETE]: onGiftRedemptionComplete,
80467	    [FormEvent.LOGIN_REGISTRATION_COMPLETE]: onLoginRegisterComplete, // Override the registration flow handler
80468	};
80469	// Add gift redemption specific section visibilities while inheriting registration ones
80470	const sectionVisibilities$1 = [
80471	    {
80472	        type: sectionTypes.EMAIL.type,
80473	        isDisplayedInProgressBar: true,
80474	        isVisible: (form, formState) => !formState.userSession
80475	    },
80476	    {
80477	        type: sectionTypes.LOGIN_PASSWORD.type,
80478	        isDisplayedInProgressBar: true,
80479	        isVisible: (form, formState) => !formState.userSession &&
80480	            formConfigAs(form).usePassword &&
80481	            formState.userExists &&
80482	            !formState.socialSignin
80483	    },
80484	    {
80485	        type: sectionTypes.PASSWORD_SETUP.type,
80486	        isDisplayedInProgressBar: true,
80487	        isVisible: (form, formState) => !formState.userSession &&
80488	            formConfigAs(form).usePassword &&
80489	            !formState.userExists &&
80490	            !formState.socialSignin
80491	    },
80492	    {
80493	        type: sectionTypes.PASSWORD_RESET.type,
80494	        isDisplayedInProgressBar: false,
80495	        isVisible: (form, formState) => !formState.userSession &&
80496	            formConfigAs(form).usePassword &&
80497	            formState.forgotPassword
80498	    },
80499	    {
80500	        type: sectionTypes.FORGOT_PASSWORD.type,
80501	        isDisplayedInProgressBar: false,
80502	        isVisible: (form, formState) => !formState.userSession &&
80503	            formConfigAs(form).usePassword &&
80504	            formState.forgotPassword
80505	    },
80506	    {
80507	        type: sectionTypes.GIFT_REDEMPTION.type,
80508	        isDisplayedInProgressBar: true,
80509	        isVisible: (form, formState) => {
80510	            // Show after registration is complete or if user is logged in
80511	            return formState.loginRegistrationComplete || formState.userSession;
80512	        }
80513	    },
80514	    {
80515	        type: sectionTypes.GIFT_REDEEMED.type,
80516	        isDisplayedInProgressBar: false,
80517	        isVisible: () => true
80518	    }
80519	];
80520	const sectionFlow$1 = {
80521	    ...sectionFlow$8,
80522	    eventHandlers: eventHandlers$1,
80523	    sectionVisibilities: sectionVisibilities$1,
80524	    canAttemptSectionCompletion: canAttemptSectionCompletion$1,
80525	    canDismissFormManually: () => false,
80526	    formRequiresPrerequisiteLoading: () => false,
80527	    canPartiallyRegister: true
80528	};
80529
80530	const formStartAction = async (form, formState, formActions) => {
80531	    const existingSubscriptions = await loadExistingSubscriptions(form, formState, formActions, true);
80532	    const subscriptionQueryParam = getSubscriptionParam(window.location.href);
80533	    if (!subscriptionQueryParam) {
80534	        return;
80535	    }
80536	    const queryParamSubscription = existingSubscriptions.find(subscription => subscription.externalId === subscriptionQueryParam);
80537	    if (queryParamSubscription) {
80538	        formActions.updateFormState({
80539	            selectedSubscription: queryParamSubscription,
80540	            isExternalReferrer: true,
80541	        });
80542	        formActions.completeSection();
80543	    }
80544	};
80545	const onSubscriptionSelectComplete = (form, formState, formActions) => {
80546	    formActions.jumpToPartStart(partTypes.BILL_TO_CONTACT.type);
80547	};
80548	const onBillToContactComplete = async (form, formState, formActions) => {
80549	    try {
80550	        const response = await request(`zephr/accounts/${formState.selectedSubscription.accountId}/update`, {
80551	            method: 'PATCH',
80552	            bodyObject: {
80553	                vendor_fields: {
80554	                    account: JSON.stringify({
80555	                        billToContact: formState.billToContact
80556	                    })
80557	                }
80558	            }
80559	        }, formActions);
80560	        if (response.ok) {
80561	            logDataLayerEvent(form, 'zephr_form_bill_to_contact_change', {
80562	                accountId: formState.selectedSubscription.accountId,
80563	                billToContact: formState.billToContact
80564	            });
80565	            formActions.jumpToPartStart(partTypes.SUCCESS.type);
80566	        }
80567	        else {
80568	            formActions.updateFormState({
80569	                serverErrors: [ServerError.UNKNOWN],
80570	            });
80571	            logDataLayerEvent(form, 'zephr_form_error', {
80572	                error: ServerError[ServerError.UNKNOWN],
80573	            });
80574	        }
80575	    }
80576	    catch (error) {
80577	        console.error("Error occurred while updating bill to contact address.", error);
80578	        formActions.updateFormState({
80579	            serverErrors: [ServerError.UNKNOWN],
80580	        });
80581	        logDataLayerEvent(form, 'zephr_form_error', {
80582	            error: ServerError[ServerError.UNKNOWN],
80583	        });
80584	    }
80585	};
80586	const eventHandlers = {
80587	    [FormEvent.FORM_START]: formStartAction,
80588	    [FormEvent.SELECT_SUBSCRIPTION_COMPLETE]: onSubscriptionSelectComplete,
80589	    [FormEvent.BILL_TO_CONTACT_COMPLETE]: onBillToContactComplete,
80590	};
80591	const sectionVisibilities = [];
80592	const canAttemptSectionCompletion = (_, formState) => {
80593	    return !formState.elementValidity
80594	        .filter((e) => e.partType === formState.currentPart.type &&
80595	        e.sectionType === formState.currentSection.type &&
80596	        e.sectionOrder === formState.currentSection.order)
80597	        .some((e) => !e.isValid);
80598	};
80599	const sectionFlow = {
80600	    extraElements: [],
80601	    eventHandlers,
80602	    sectionVisibilities,
80603	    canAttemptSectionCompletion,
80604	    canDismissFormManually: () => false,
80605	    formRequiresPrerequisiteLoading: () => false,
80606	};
80607
80608	const sectionFlows = {
80609	    [FormType.PAYMENT]: sectionFlow$9,
80610	    [FormType.CHANGE_SUBSCRIPTION]: sectionFlow$9,
80611	    [FormType.REGISTRATION]: sectionFlow$8,
80612	    [FormType.CONTACT]: sectionFlow$7,
80613	    [FormType.DATA_CAPTURE]: sectionFlow$6,
80614	    [FormType.COMPLETE_REGISTRATION]: sectionFlow$6,
80615	    [FormType.UPDATE_PROFILE]: sectionFlow$5,
80616	    [FormType.CANCEL_SUBSCRIPTION]: cancelSubscriptionSectionFlow,
80617	    [FormType.LIST_SUBSCRIPTIONS]: listSubscriptionsSectionFlow,
80618	    [FormType.LIST_GIFT_SUBSCRIPTIONS_SENT]: listSubscriptionsSectionFlow,
80619	    [FormType.DEVICES]: sectionFlow$3,
80620	    [FormType.GIFT_SUBSCRIPTION]: sectionFlow$2,
80621	    [FormType.GIFT_REDEMPTION]: sectionFlow$1,
80622	    [FormType.SUSPEND_RESUME_SUBSCRIPTION]: sectionFlow$4,
80623	    [FormType.BILL_TO_CONTACT]: sectionFlow,
80624	    [FormType.EMPTY]: {
80625	        extraElements: [],
80626	        sectionVisibilities: [],
80627	        eventHandlers: {},
80628	        canAttemptSectionCompletion: () => true,
80629	        canDismissFormManually: () => false,
80630	        formRequiresPrerequisiteLoading: () => false,
80631	    }
80632	};
80633	const sectionFlowFor = (formType) => {
80634	    const flow = sectionFlows[formType];
80635	    if (!flow) {
80636	        throw `No flow for form type ${formType}`;
80637	    }
80638	    return flow;
80639	};
80640
80641	const baselineCssVariablesTimestamp = Date.parse("2024-04-19T00:00:00Z");
80642	const baselineCssVariables = {
80643	    "--zf-container-color": "unset",
80644	    "--zf-container-bgColor": "#fff",
80645	    "--zf-container-borderRadius": "0",
80646	    "--zf-input-bgColor": "#fff",
80647	    "--zf-payment-options-border": "1px solid #000",
80648	    "--zf-payment-options-color": "#000",
80649	    "--zf-payment-options-bgColor": "#fff",
80650	    "--zf-payment-summary-border": "1px solid #000",
80651	    "--zf-payment-summary-borderRadius": "0",
80652	    "--zf-payment-summary-color": "unset",
80653	    "--zf-payment-summary-bgColor": "transparent",
80654	};
80655	const appendCssVariables = (cssVariablesStyle, additionalCssVariables) => {
80656	    const additionalCssVariablesStyle = Object.entries(additionalCssVariables)
80657	        .map(([key, value]) => `${key}: ${value}`)
80658	        .join(';\n');
80659	    return `${cssVariablesStyle};\n${additionalCssVariablesStyle}`;
80660	};
80661	const addBackwardsCompatibilityCssVariables = (cssVariablesStyle, formConfigTimestamp) => (formConfigTimestamp || 0) < baselineCssVariablesTimestamp
80662	    ? appendCssVariables(cssVariablesStyle, baselineCssVariables)
80663	    : cssVariablesStyle;
80664
80665	/* src/FormApp.svelte generated by Svelte v4.2.12 */
80666
80667	function create_fragment(ctx) {
80668		let div;
80669		let formroot;
80670		let div_class_value;
80671		let current;
80672
80673		formroot = new FormRoot({
80674				props: {
80675					formConfiguration: /*formConfiguration*/ ctx[2]
80676				}
80677			});
80678
80679		return {
80680			c() {
80681				div = element("div");
80682				create_component(formroot.$$.fragment);
80683				attr(div, "id", /*formConfiguration*/ ctx[2].formId);
80684				attr(div, "class", div_class_value = "" + (null_to_empty(`zephr-form ${formTypeClass(/
80684*formType*/ ctx[0])}`) + " svelte-789zog"));
80685				attr(div, "style", /*cssVariables*/ ctx[1]);
80686			},
80687			m(target, anchor) {
80688				insert(target, div, anchor);
80689				mount_component(formroot, div, null);
80690				current = true;
80691			},
80692			p(ctx, [dirty]) {
80693				if (!current || dirty & /*formType*/ 1 && div_class_value !== (div_class_value = "" + (null_to_empty(`zephr-form ${formTypeClass(/*formType*/ ctx[0])}`) + " svelte-789zog"))) {
80694					attr(div, "class", div_class_value);
80695				}
80696			},
80697			i(local) {
80698				if (current) return;
80699				transition_in(formroot.$$.fragment, local);
80700				current = true;
80701			},
80702			o(local) {
80703				transition_out(formroot.$$.fragment, local);
80704				current = false;
80705			},
80706			d(detaching) {
80707				if (detaching) {
80708					detach(div);
80709				}
80710
80711				destroy_component(formroot);
80712			}
80713		};
80714	}
80715
80716	function instance($$self, $$props, $$invalidate) {
80717		const defaultEnvironment = {
80718			apiUrlBase: "",
80719			onStateChanged: () => {
80720				
80721			},
80722			debugLogging: false,
80723			reduceDelays: false,
80724			previewMode: false
80725		};
80726
80727		let { formType } = $$props;
80728		let { formConfig } = $$props;
80729		let { formTypeConfig } = $$props;
80730		let { organisationConfig } = $$props;
80731		let { environment = {} } = $$props;
80732
80733		const mergedEnvironment = {
80734			...defaultEnvironment,
80735			...environment,
80736			...(formConfig?._spikeApiUrl)
80737			? { apiUrlBase: formConfig._spikeApiUrl }
80738			: {}
80739		};
80740
80741		// Styles
80742		const styleGuideObj = JSON.parse(organisationConfig.siteStyles ?? "{}");
80743
80744		const cssVariables = addBackwardsCompatibilityCssVariables(convertSiteStylesToCssVariables(styleGuideObj), formConfig.timestamp);
80745
80746		// Section flow
80747		const sectionFlow = sectionFlowFor(formType);
80748
80749		// Language pack resolving
80750		const formConfigResolved = resolveLanguagePackKeys(formConfig.languagePack, formConfig);
80751
80752		const typeConfigResolved = resolveLanguagePackKeys(formConfig.languagePack, formTypeConfig);
80753		const orgConfigResolved = resolveLanguagePackKeys(formConfig.languagePack, organisationConfig);
80754		const uniqueKey = randomId();
80755		const isPaymentForm = formType === FormType.PAYMENT;
80756
80757		const formConfiguration = {
80758			environment: mergedEnvironment,
80759			formType,
80760			...formConfigResolved,
80761			organisationConfiguration: orgConfigResolved,
80762			typeConfiguration: typeConfigResolved,
80763			sectionFlow,
80764			uniqueKey,
80765			formId: isPaymentForm
80766			? "zephr-payment-form-root"
80767			: `zephr-form-root-${uniqueKey}`
80768		};
80769
80770		$$self.$$set = $$props => {
80771			if ('formType' in $$props) $$invalidate(0, formType = $$props.formType);
80772			if ('formConfig' in $$props) $$invalidate(3, formConfig = $$props.formConfig);
80773			if ('formTypeConfig' in $$props) $$invalidate(4, formTypeConfig = $$props.formTypeConfig);
80774			if ('organisationConfig' in $$props) $$invalidate(5, organisationConfig = $$props.organisationConfig);
80775			if ('environment' in $$props) $$invalidate(6, environment = $$props.environment);
80776		};
80777
80778		return [
80779			formType,
80780			cssVariables,
80781			formConfiguration,
80782			formConfig,
80783			formTypeConfig,
80784			organisationConfig,
80785			environment
80786		];
80787	}
80788
80789	class FormApp extends SvelteComponent {
80790		constructor(options) {
80791			super();
80792
80793			init(this, options, instance, create_fragment, safe_not_equal, {
80794				formType: 0,
80795				formConfig: 3,
80796				formTypeConfig: 4,
80797				organisationConfig: 5,
80798				environment: 6
80799			});
80800		}
80801	}
80802
80803	// TODO Parameter version translation
80804	// TODO remove circular deps
80805	const currentPropsVersion = "main:1";
80806	const translateFormProps = (propsVersion, props) => {
80807	    if (propsVersion === currentPropsVersion) {
80808	        return props;
80809	    }
80810	    // Knowledge of other prop versions goes here once some backwards-incompatible changes
80811	    // have been made to the props schema.
80812	    throw `Unknown props version ${propsVersion}`;
80813	};
80814	const renderForm = (container, props) => {
80815	    const target = (typeof container === 'string' || container instanceof String)
80816	        ? document.getElementById(container)
80817	        : container;
80818	    return new FormApp({ target, props });
80819	};
80820	// Public API entrypoint
80821	if (window.Zephr == null) {
80822	    window.Zephr = {};
80823	}
80824	window.Zephr.renderForm = renderForm;
80825	window.Zephr.translateFormProps = translateFormProps;
80826
80827})();
80828//# sourceMappingURL=bundle.js.map
80829</script>
80829
80830                                <style></style>
80831                                <div id="zephr-form-19iuln" class="zephr-form-container">
80832                                </div>
80833                                
80833<script data-cmp-ab="2">
80834                                    var element = document.currentScript;
80835                                    while(!(element.classList && element.classList.contains('zephr-form-container'))){
80836                                        element = element.previousSibling;
80837                                    }
80838                                    window.Zephr.renderForm(element, window.Zephr.translateFormProps("main:1", {"formType":"REGISTRATION","formConfig":{"parts":[{"type":"account-verification","label":"<<<forms.registration.account-verification-section|Account Verification>>>","sections":[{"type":"email","order":0,"elements":[{"type":"text","order":0,"id":"28f060c1-625f-49b7-a7c4-9b5e3d4be04c","config":{"text":"<h2>Login or Register</h2>\n<h3>Enter your email to start</h3>\n<hr />","centerText":true},"hidden":false},{"type":"email_address","id":"23e4942d-9917-4173-a82e-8a6e9888a002","config":{"label":"<<<forms.common.email|Email>>>","placeholder":"[email protected]"},"order":1,"hidden":false},{"type":"account_code","id":"a392308a-cc18-4483-a5bf-eff8429e21ad","config":{"label":"<<<forms.common.account-code.label|Have an account registration code? Enter it here>>>","placeholder":"<<<forms.common.account-code.placeholder|e.g. ACCOUNT001>>>","enabled":false,"hidden":true},"order":2,"hidden":false},{"type":"divider","id":"0f41d61b-4521-4df5-b3b1-34454cbdc3f2","config":{"show":false,"text":"OR USE","showLine":true,"enabled":false,"hidden":true},"order":3,"hidden":false},{"type":"social_sign_in","id":"4680165a-8bf4-4de6-8fd8-5bce8ee4c854","config":{"labelText":"<<<forms.common.social-sign-in-label|Continue with>>>","enabled":false,"allowEmptyLabel":true,"hidden":true},"order":4,"hidden":false},{"type":"button","id":"26da6627-87c1-4219-bdfb-5d313a7c9cec","config":{"text":"<<<forms.common.continue|Continue>>>","isSubmit":false},"order":5,"hidden":false},{"type":"text","order":6,"id":"fb31a359-7ed1-457e-92e4-962c099f8cb4","config":{"text":"<p>You will receive a one time passcode to this email address.</p>","centerText":true}},{"type":"text","order":7,"id":"e0f3ecbb-4f2b-40aa-8d7c-a1063181185b","config":{"text":"<p style=\"font-size: 11px;\">By continuing you agree to our <a href=\"/terms-of-use\">terms and conditions</a> and acknowledge our <a href=\"/privacy-policy\">privacy policy</a>.</p>","centerText":true}}]},{"type":"verification_code_registration","order":1,"label":"OTP Verification","elements":[{"type":"progress_bar","id":"076d7bbb-3769-4f67-b40e-de62c7fa2b8f","config":{"enabled":false,"hidden":true},"order":0,"hidden":false},{"type":"text","order":1,"id":"66d72e1b-8194-43c1-bd50-ab2b3a67f438","config":{"text":"<h2>Register</h2>\n<h3>Enter code to register</h3>\n<hr />","centerText":true},"hidden":false},{"type":"email_address","id":"f982f2ea-31f0-4625-8a9f-fee3a990ba36","config":{"label":"<<<forms.common.email|Email>>>","editText":"<<<forms.common.email-edit|Edit>>>","disabled":true},"order":2,"hidden":false},{"type":"otp_code","id":"5c98f09e-cb7c-4449-b7a0-7e120878f743","config":{"label":"<<<forms.common.otp.label|Code>>>","placeholder":"<<<forms.common.otp.placeholder|e.g. 350271>>>","resendText":"<<<forms.common.otp.resend|Didn't get a code?>>>","message":"<<<forms.common.otp.resent|Resent!>>>"},"order":3,"hidden":false}]},{"type":"password_setup","order":2,"label":"<<<forms.registration.password-setup-section|Password Setup>>>","elements":[{"type":"progress_bar","id":"a73c1373-3496-4df1-a9b4-d59278688cc1","config":{"enabled":false,"hidden":true}},{"type":"text","id":"aed60673-d037-409a-90d1-9e8df17423b5","config":{"text":"<<<forms.registration.password-setup-text|Create an account>>>"}},{"type":"email_address","id":"51fe6911-ae51-48f7-a328-de1eb96c7d36","config":{"label":"<<<forms.common.email|Email>>>","editText":"<<<forms.common.email-edit|Edit>>>","disabled":true}},{"type":"password","id":"3593ba37-a0a3-4a25-ae73-69c0b3e9d9cf","config":{"password":"<<<forms.common.password|Password>>>","show":"<<<forms.common.password-show|Show>>>","hide":"<<<forms.common.password-hide|Hide>>>","passValidatorEnabled":true,"placeholder":"<<<forms.common.password-placeholder|password...>>>","confirm":"<<<forms.common.password-confirm|Confirm Password>>>","confirmPlaceholder":"<<<forms.common.password-confirm-placeholder|confirm password...>>>","passwordsMatchIndicatorEnabled":true,"minLengthValidation":"<<<forms.common.password-validator.length|Must include at least 8 characters>>>","uppercaseValidation":"<<<forms.common.password-validator.uppercase|Must include an uppercase letter>>>","numberValidation":"<<<forms.common.password-validator.number|Must include a number character>>>","symbolValidation":"<<<forms.common.password-validator.symbol|Must include a supported symbol>>>","passwordsMatchText":"<<<forms.common.password-validator.match|Passwords match>>>"}},{"type":"button","id":"f86e29f8-2717-4b64-9bc1-64a6003e99c7","config":{"text":"<<<forms.common.continue|Continue>>>","isSubmit":false}}]},{"type":"verification_code_login","order":3,"label":"Passwordless Login via Login Code","elements":[{"type":"progress_bar","id":"0da34152-a835-4c05-a009-f9510a221678","config":{"enabled":false,"hidden":true},"order":0,"hidden":false},{"type":"text","order":1,"id":"d435c818-a98f-42a2-b5a5-dfac166dafa3","config":{"text":"<h2>Welcome back</h2>\n<h3>Enter code to log in</h3>\n<hr />","centerText":true},"hidden":false},{"type":"email_address","id":"1a371d45-b6db-4b5c-b462-a6893c262451","config":{"label":"<<<forms.common.email|Email>>>","editText":"<<<forms.common.email-edit|Edit>>>","disabled":true},"order":2,"hidden":false},{"type":"otp_code","id":"4678ce12-dd4d-4340-a657-d34f9d38ff87","config":{"label":"<<<forms.common.otp.label|Code>>>","placeholder":"<<<forms.common.otp.placeholder|e.g. 350271>>>","resendText":"<<<forms.common.otp.resend|Didn't get a code?>>>","message":"<<<forms.common.otp.resent|Resent!>>>"},"order":3,"hidden":false}]},{"type":"login_password","order":4,"label":"Login with Password","elements":[{"id":"31ee5cfe-36ea-43fb-91cc-0225b03fcc1c","config":{"enabled":false,"hidden":true},"type":"progress_bar"},{"type":"password","id":"dc705dfc-2f9a-409d-877b-d06fc28f33f0","config":{"password":"<<<forms.common.password|Password>>>","placeholder":"<<<forms.common.password-placeholder|password...>>>","isLogin":true}},{"type":"link","id":"793325e9-fdfd-4b53-92ca-5748ed7ef911","config":{"text":"<<<forms.common.otp.forgot-password|Forgot Password?>>>","message":"<<<forms.common.otp.forgot-password-code-sent|Code sent!>>>"}},{"type":"button","id":"76f11c51-367e-483b-8152-fcc00dcbb333","config":{"isSubmit":false,"text":"<<<forms.common.continue|Continue>>>"}}]},{"type":"passwordless_login_via_link","order":5,"label":"Passwordless Login","elements":[{"type":"text","id":"a25adc84-1477-4f04-8637-16813c93781a","config":{"text":"<<<forms.registration.login-link-text|A login link has been sent to>>>"}},{"type":"email_address","id":"fe5345ad-51ac-4de8-a684-359214a04b74","config":{"label":"<<<forms.common.email|Email>>>","editText":"<<<forms.common.email-edit|Edit>>>","disabled":true}},{"type":"resend_login_link","id":"7233076d-df77-4481-8043-6f4e12cf9
808381a3","config":{"text":"<<<forms.registration.resend-login-link|Didn't get a link?>>>","message":"<<<forms.registration.resend-login-link-resent|Resent!>>>"}}]},{"type":"forgot_password","order":6,"label":"Password Reset Code","elements":[{"type":"text","id":"fae3aabd-64c1-4158-ab95-8405a38ae4d5","config":{"text":"<<<forms.registration.reset-password-text|Reset your password>>>"}},{"type":"text","id":"068950e7-a317-4779-ad95-d2135ff52683","config":{"text":"<<<forms.common.otp.code-sent-to|A message with a code has been sent to>>>"}},{"type":"email_address","id":"df8d043b-ebab-4a45-bea1-1f32ddf83813","config":{"label":"<<<forms.common.email|Email>>>","editText":"<<<forms.common.email-edit|Edit>>>","disabled":true}},{"type":"text","id":"88797ea0-e3fe-43e0-8128-bb108cef36d9","config":{"text":"<<<forms.common.otp.enter-code|Enter the code in the box below.>>>"}},{"type":"otp_code","id":"4d18e49a-d9fe-456b-8283-5cf0b405e0b0","config":{"label":"<<<forms.common.otp.label|Code>>>","placeholder":"<<<forms.common.otp.placeholder|e.g. 350271>>>","resendText":"<<<forms.common.otp.resend|Didn't get a code?>>>","message":"<<<forms.common.otp.resent|Resent!>>>"}},{"type":"divider","id":"5d1cd9a2-502c-47e9-9f16-8695f2dad00a","config":{"text":"<<<forms.common.divider-text|or use>>>","showLine":true,"show":true}},{"type":"button","id":"f1235a31-cbf2-462b-a5f0-cea89f0ca005","config":{"isSubmit":false,"isLogin":true,"text":"<<<forms.registration.login|Login>>>"}}]},{"type":"reset_password","order":7,"label":"Reset Password","elements":[{"type":"email_address","id":"40fdea0a-4115-4eb7-9c71-5038cf82cf1d","config":{"label":"<<<forms.common.email|Email>>>","editText":"<<<forms.common.email-edit|Edit>>>","disabled":true}},{"type":"password","id":"b144c9f4-a085-4ca6-a597-1fddca446f36","config":{"password":"<<<forms.common.password|Password>>>","show":"<<<forms.common.password-show|Show>>>","hide":"<<<forms.common.password-hide|Hide>>>","passValidatorEnabled":true,"placeholder":"<<<forms.common.password-placeholder|password...>>>","confirm":"<<<forms.common.password-confirm|Confirm Password>>>","confirmPlaceholder":"<<<forms.common.password-confirm-placeholder|confirm password...>>>","passwordsMatchIndicatorEnabled":true,"minLengthValidation":"<<<forms.common.password-validator.length|Must include at least 8 characters>>>","uppercaseValidation":"<<<forms.common.password-validator.uppercase|Must include an uppercase letter>>>","numberValidation":"<<<forms.common.password-validator.number|Must include a number character>>>","symbolValidation":"<<<forms.common.password-validator.symbol|Must include a supported symbol>>>","passwordsMatchText":"<<<forms.common.password-validator.match|Passwords match>>>"}},{"type":"button","id":"555843e1-6b8f-4153-b1c3-ad6570c55cf8","config":{"text":"<<<forms.registration.reset|Reset!>>>","isSubmit":false}}]},{"type":"custom_69d7686c-deb1-4d0f-ad81-16f66e1bd423","label":"Create your account","order":8,"elements":[{"type":"progress_bar","order":0,"id":"4b9c4219-9766-413e-a7c9-bc0709f940ff","config":{"enabled":false,"hidden":true},"hidden":false},{"type":"text","order":1,"id":"48502c22-359c-43c5-af19-644b135923bf","config":{"text":"<h2>Create your account</h2>\n<h3>Join over 150K members who use Sifted to stay up to speed on latest developments across Startup Europe</h3>\n<hr />","centerText":true},"hidden":false},{"type":"user_attribute","order":2,"id":"aa413ab8-0c27-4f08-bbb4-2129b4dda733","config":{"slug":"first_name","label":"First name","hasCondition":false,"required":true},"hidden":false},{"type":"user_attribute","order":3,"id":"a103adde-5608-49e8-9afd-bd2c43968d85","config":{"slug":"last_name","label":"Last name","hasCondition":false,"required":true},"hidden":false}
80838,{"type":"user_attribute","order":4,"id":"f8a22532-e393-4025-b15c-377d4d1a5f47","config":{"slug":"form_role_at_business","label":"Job role","hasCondition":false,"required":true,"placeholder":"Select..."},"hidden":false},{"type":"user_attribute","order":5,"id":"f05e5418-207e-47e1-a5ad-e66e58354190","config":{"slug":"form_company_name","label":"Company name","hasCondition":false,"required":true},"hidden":false},{"type":"user_attribute","order":6,"id":"e500fd49-f6e3-4fd5-9f00-5786e98881aa","config":{"slug":"agree_to_have_data_stored","label":"I agree to have my data stored and processed by Sifted.","hasCondition":false,"required":true},"hidden":false},{"type":"button","order":7,"id":"9c5dac75-8bf4-49ea-83ea-45d3caeccf56","config":{"isSubmit":true,"text":"Create account"},"hidden":false},{"type":"text","order":8,"id":"f35e521e-6366-4175-9a50-e098e262d2c8","config":{"text":"<p style=\"font-size: 12px;\">Your account registration includes access to a limited number of articles each month and the Sifted Daily newsletter. By signing up you agree to our&nbsp;<a href=\"/privacy-policy\" target=\"_blank\" rel=\"noopener noreferrer\">privacy policy</a>&nbsp;and&nbsp;<a href=\"/cookie-policy\" target=\"_blank\" rel=\"noopener noreferrer\">cookie policy</a>&nbsp;and to receive marketing and account-related emails from Sifted, as well as the Sifted Daily newsletter. You can unsubscribe at any time. This site is protected by reCAPTCHA and the Google&nbsp;<a href=\"https://policies.google.com/privacy\" target=\"_blank\" rel=\"noopener noreferrer\">Privacy Policy</a>&nbsp;and&nbsp;<a href=\"https://policies.google.com/terms\" target=\"_blank\" rel=\"noopener noreferrer\">Terms of Service</a>&nbsp;apply.</p>","centerText":true},"hidden":false}]}]},{"type":"success","sections":[{"type":"success","order":1,"label":"Successful Registration","elements":[{"type":"text","id":"7ac39017-c217-4a87-9e05-3c9677563be3","config":{"text":"<<<forms.registration.success-message|You have signed up successfully!>>>"}},{"type":"button","id":"cb503d01-3609-4664-bb91-949a0ddc2981","config":{"text":"Continue"}}]},{"type":"email_verified","order":2,"label":"Email Verification","elements":[{"type":"text","id":"f20f8e40-fecd-412e-8c91-3a613235107d","config":{"text":"<p>A link has been sent to you. Please check your Email. (Registration)</p>"},"order":0}]}]}],"timestamp":1789634112517,"id":"U-ReMprg","outcomeId":"graph/1#2,graph/1#4,graph/2#1,graph/2#2,transformation/1","ruleId":"H-checkout-registration-form-1","resolvedComponentTemplates":[],"languagePack":{"entries":{"forms.billing.history.date":"Date","forms.billing.history.every":"every","forms.billing.history.period":"Period","forms.billing.history.subtotal":"Subtotal","forms.billing.history.total":"Total","forms.buttons.back-button":"Back","forms.common.account-code.label":"Have an account registration code? Enter it here","forms.common.account-code.placeholder":"e.g. ACCOUNT001","forms.common.additional-section":"Additional Section","forms.common.continue":"Continue","forms.common.current-password":"Current Password","forms.common.divider-text":"or use","forms.common.email":"Email","forms.common.email-edit":"Edit","forms.common.email-placeholder":"Your email address","forms.common.otp.code-sent-to":"A message with a code has been sent to","forms.common.otp.enter-code":"Enter the code in the box below.","forms.common.otp.forgot-password":"Forgot Password?","forms.common.otp.forgot-password-code-sent":"Code sent!","forms.common.otp.label":"Code","forms.common.otp.placeholder":"e.g. 350271","forms.common.otp.resend":"Didn't get a code?","forms.common.otp.resent":"Resent!","forms.common.password":"Password","forms.common.password-confirm":"Confirm Password","forms.common.password-confirm-placeholder":"confirm password...","forms.common.password-hide":"Hide","forms.common.password-placeholder":"password...","forms.common.password-show":"Show","forms.common.password-validator.length":"Must include at least 8 characters","forms.common.password-validator.match":"Passwords match","forms.common.password-validator.number":"Mu
80838st include a number character","forms.common.password-validator.symbol":"Must include a supported symbol","forms.common.password-validator.uppercase":"Must include an uppercase letter","forms.common.social-sign-in-label":"Continue with","forms.common.submit":"Submit","forms.common.update":"Update","forms.complete-registration-form.default-intro-text":"Set up your password","forms.complete-registration-form.default-success-message":"Thank you for updating your profile.","forms.contact-form.default-intro-text-1":"Stay in touch","forms.contact-form.default-intro-text-2":"Subscribe to our newsletter today","forms.contact-form.default-success-message":"Thank you for submitting your contact information.","forms.data-capture-form.default-intro-text":"Tell us more about you!","forms.data-capture-form.default-success-message":"Thank you for updating your profile.","forms.devices.current-device-label":"Current Device","forms.devices.login-time-label":"Login Time","forms.devices.no-session-message":"No Device sessions recorded","forms.devices.sign-out-button":"Sign Out","forms.devices.sign-out-of-other-devices-button":"Sign Out of Other Devices","forms.devices.your-devices-label":"Your Devices","forms.errors.company-account-not-found":"Account not found","forms.errors.contact-creation-disabled":"This operation is not possible at the moment, please try again later","forms.errors.email-domain-blocked":"Please use a different email address, this domain is not supported","forms.errors.email-taken":"This email address is already registered. Please log in to continue","forms.errors.email-verification-required":"Email verification is required","forms.errors.future-delivery-date-invalid":"Please select a valid future date","forms.errors.future-delivery-date-required":"Please select a future delivery date","forms.errors.future-delivery-date-too-early":"Delivery date must be at least 24 hours in the future","forms.errors.invitation-failed-duplicate-email":"An invite has already been created for this email","forms.errors.invitation-failed-invalid-email":"Invalid email address","forms.errors.invitation-failed-limit-reached":"You have reached the sharing limit for this product","forms.errors.invitation-failed-no-product-access":"You do not currently have access to this product","forms.errors.login-failed":"The email address or password you entered is incorrect","forms.errors.no-authenticated-session":"Please login to update your profile","forms.errors.otp-incorrect":"The code you entered is incorrect","forms.errors.otp-or-password-incorrect":"The password or code you entered is incorrect","forms.errors.otp-send-failed":"Unable to send a verification code. Please try again later","forms.errors.password-reset-failed":"Unable to reset your password. Please try again later","forms.errors.password-reset-link-send-failed":"Unable to send a password reset link. Please try again later","forms.errors.promo-code-expired":"Promo code expired","forms.errors.promo-code-invalid":"Invalid promo code","forms.errors.promo-code-invalid-for-payment-option":"Promo code cannot be applied to selected option","forms.errors.session-limit-reached":"You have reached the session limit. Please log out from another device to access this content","forms.errors.too-many-requests":"To gain login access, please contact your administrator","forms.errors.unknown-error":"Something went wrong. Please try again later","forms.errors.unknown-payment-error":"Something went wrong when processing your payment. Please try again later","forms.errors.user-attribute-invalid":"Invalid user attribute","forms.errors.user-not-found":"User not found","forms.gift-subscription.enable-future-delivery-toggle-description":"Schedule this gift subscription to start on a specific date","forms.gift-subscription.enable-future-delivery-toggle-label":"Schedule for future date","forms.gift-subscription.future-delivery-date-description":"Choose when the gift subscription should start","forms.gift-subscription.future-delivery-date-label":"Start date","forms.gift-subscription.future-delivery-date-placeholder":"Select start date","forms.list-subscriptions.billing-history-link":"Billing history","forms.list-subscriptions.billing-history-text":"To see previous invoices visit","forms.list-subscriptions.cancel-subscription-text":"Cancel subscription","forms.list-subscriptions.change-default-payment-method-button":"Change Default Payment Method","forms.list-subscriptions.change-payment-method-button":"Change Payment Method","forms.list-subscriptions.change-payment-success-text":"Payment successfully changed","forms.list-subscriptions.change-subscription-text":"Change subscription","forms.list-subscriptions.custom-fields-section-description":"Update your subscription information below","forms.list-subscriptions.custom-fields-section-title":"Update Subscription Details","forms.list-subscriptions.custom-fields-submit-button-text":"Update Details","forms.list-subscriptions.delivery-address-line-1-label":"Delivery Address Line 1","forms.list-subscriptions.delivery-address-line-1-placeholder":"Enter delivery address line 1","forms.list-subscriptions.delivery-address-line-2-label":"Delivery Address Line 2","forms.list-subscriptions.delivery-address-line-2-placeholder":"Enter delivery address line 2","forms.list-subscriptions.delivery-city-label":"Delivery City","forms.list-subscriptions.delivery-city-placeholder":"Enter delivery city","forms.list-subscriptions.delivery-country-label":"Delivery Country","forms.list-subscriptions.delivery-country-placeholder":"Enter delivery country","forms.list-subscriptions.delivery-information-description":"Manage your delivery address and preferences","forms.list-subscriptions.delivery-information-title":"Delivery Information","forms.list-subscriptions.delivery-postcode-label":"Delivery Postc
80838ode","forms.list-subscriptions.delivery-postcode-placeholder":"Enter delivery postcode","forms.list-subscriptions.next-payment-date":"Next payment date","forms.list-subscriptions.no-subscriptions-message":"You don't have any subscriptions","forms.list-subscriptions.subscription-rate-label":"Subscription rate","forms.list-subscriptions.suspend-resume-subscription-text":"Suspend/Resume subscription","forms.list-subscriptions.view-past-subscriptions-link":"View past subscriptions","forms.payment.account-verification-section":"Account Verification","forms.payment.invitation-button":"Send Invite","forms.payment.invitation-description":"You can invite people by entering their email","forms.payment.invitation-label":"Email Address","forms.payment.invitation-link-sent":"Invite sent!","forms.payment.invitation-title":"Invite people to your sharable plan","forms.payment.login":"Login","forms.payment.login-link":"Login","forms.payment.login-link-message":"Already a registered user?","forms.payment.password-setup-text":"Create an account","forms.payment.payment-button":"Confirm and process payment","forms.payment.payment-option-select-button":"Select Plan","forms.payment.payment-section":"Payment Details","forms.payment.payment-summary-disclaimer":"Today's payment may vary","forms.payment.payment-summary-prorate":"DUE TODAY","forms.payment.payment-summary-tax":"Tax","forms.payment.payment-summary-title":"Subscription","forms.payment.payment-summary-total":"TOTAL","forms.payment.plan-select-section":"Plan Select","forms.payment.promo-code-button":"Verify","forms.payment.promo-code-placeholder":"Promo code","forms.payment.promo-code-text":"Have a promo code?","forms.payment.reset-password-text":"Reset your password","forms.payment.success-button":"Continue Reading","forms.payment.success-message":"Payment processed successfully","forms.registration.account-verification-section":"Account Verification","forms.registration.default-intro-text":"You've reached the limit of free articles","forms.registration.email-verification-required-message":"A link has been sent to you. Please check your Email.","forms.registration.login":"Login","forms.registration.login-link-text":"A login link has been sent to","forms.registration.password-setup-section":"Password Setup","forms.registration.password-setup-text":"Create an account","forms.registration.resend-login-link":"Didn't get a link?","forms.registration.resend-login-link-resent":"Resent!","forms.registration.reset":"Reset!","forms.registration.reset-password-text":"Reset your password","forms.registration.success-button":"Continue Reading","forms.registration.success-message":"You have signed up successfully!","forms.subscription-cancel.back-button":"Back","forms.subscription-cancel.back-cancellation-button":"Back","forms.subscription-cancel.cancel-button":"Cancel Subscription","forms.subscription-cancel.confirm-text":"Are you sure you want to cancel?","forms.subscription-cancel.continue-cancel-button":"Continue Cancellation","forms.subscription-cancel.intro-text":"Select a subscription to cancel","forms.subscription-cancel.offer-text":"<h2>We are sorry to see you go</h2>Here is a special offer just for you.","forms.subscription-cancel.payment-option-select-button":"Accept Offer","forms.subscription-cancel.reason-text":"<h2>We would like to hear your feedback</h2>We'd appreciate it if you could to take a moment to let us know why you are cancelling.","forms.subscription-cancel.success-text":"Your subscription has been cancelled","forms.subscription-select.amount-label":"Amount:","forms.subscription-select.intro-text":"Select a subscription to upgrade","forms.subscription-select.next-billing-date-label":"Next billing date:","forms.subscription-select.no-change-plan-mapping-message":"No upgrade options are available for this subscription","forms.subscription-select.no-subscriptions-message":"No subscriptions available","forms.subscription-select.select-button":"Select","forms.suspend-resume-subscription.back-button":"Back to Home","forms.suspend-resume-subscription.intro-text":"Select a subscription to suspend or resume","forms.suspend-resume-subscription.resume-d
80838ate-label":"Resume date:","forms.suspend-resume-subscription.success-text":"Your subscription has been suspended","forms.suspend-resume-subscription.suspension-date-label":"Suspension date:","forms.update-profile.update-email-title":"<h2>Update Email Address</h2>","forms.update-profile.update-password-title":"<h2>Update Password</h2>","forms.update-profile.your-profile":"Your Profile","forms.update-profile.your-profile-title":"<h2>Your Profile</h2>","hidden.example-key":"Hello world","hidden.form-preview.locale":"en-US","hidden.forms-preview.example-payment-option-description":"Example Payment Option","hidden.forms-preview.example-payment-option-label":"Example Offer","interstitial-page.password-reset.new-password":"New password:","interstitial-page.password-reset.password-mismatch-error":"You did not enter the same password twice","interstitial-page.password-reset.repeat-password":"Repeat password:","interstitial-page.password-reset.reset-button":"Reset","interstitial-page.password-reset.return-home-link":"Go back to the site","interstitial-page.password-reset.success-message":"Your password has been reset successfully!","interstitial-page.password-reset.title":"Change your password","interstitial-page.password-reset.unknown-error":"Something went wrong! Please try again later.","interstitial-page.passwordless-login.title":"Welcome","interstitial-page.update-email.enter-password":"Please enter your current password to complete the email update request.","interstitial-page.update-email.incorrect-password-error":"Incorrect password.","interstitial-page.update-email.password":"Password:","interstitial-page.update-email.return-home-link":"Go back to the site","interstitial-page.update-email.submit-button":"Update","interstitial-page.update-email.title":"Changing your email","interstitial-page.update-email.unknown-error":"Something went wrong! Please try again later.","interstitial-page.update-email-passwordless.message":"Please check the inbox of your new email for further instructions.","interstitial-page.update-email-passwordless.title":"Changing your email","interstitial-page.update-email-passwordless-success.message":"You have successfully changed your email address.","interstitial-page.update-email-passwordless-success.title":"Changing your email","interstitial-page.update-email-success.message":"Your email has been updated successfully!","pages.account-management.account-select-dropdown":"Select account","pages.account-management.delete-link":"Delete","pages.account-management.delete-modal-body":"Are you sure you want to delete this user?","pages.account-management.delete-modal-button":"Yes Delete","pages.account-management.delete-modal-title":"You are about to delete user","pages.account-management.delete-success-modal-body":"has been successfully deleted.","pages.account-management.delete-success-modal-title":"User Deleted","pages.account-management.errors.already-exists":"already exists","pages.account-management.errors.delete-fail":"Failed to delete","pages.account-management.errors.invite-fail":"Could not invite user","pages.account-management.invite-button-text":"Invite a User","pages.account-management.invite-modal-cancel-button":"Cancel","pages.account-management.invite-modal-confirm-button":"Invite User","pages.account-management.invite-modal-email-label":"Email Address","pages.account-management.invite-modal-email-placeholder":"Enter Email Address","pages.account-management.invite-modal-title":"Invite User","pages.account-management.invite-success-modal-body":"An invite has been sent to","pages.account-management.no-users":"No users found","pages.account-management.owner":"Owner","pages.account-management.search-button-text":"Search","pages.account-management.search-placeholder-text":"Search for a user","pages.account-management.success-modal-button":"Close","pages.account-management.title":"Manage Your Users","pages.cancel.back-to-subscriptions":"Back to Subscriptions","pages.cancel.cancel-subscription":"Cancel Subscription","pages.cancel.cancelled":"Cancelled","pages.cancel.continue-subscription":"Continue Subscription","pages.cancel.days-left":"DAYS LEFT:","pages.cancel.plan-frequency":"Frequency","pages.cancel.plan-name":"Name","pages.cancel.plan-next-billing":"Next Billing","pages.cancel.plan-period":"Period","pages.cancel.plan-price":"Price","pages.cancel.plan-type":"Type","pages.cancel.select-plans":"Select the plans you wish to cancel","pages.cancel.status-active":"Active","pages.cancel.status-cancelled":"Cancelled","pages.cancel.status-draft":"Draft","pages.cancel.status-expired":"Expired","pages.cancel.status-pending-acceptance":"Pending Acceptance","pages.cancel.status-pending-activation":"Pending Activation","pages.cancel.status-suspended":"Suspended","pages.cancel.status-unknown":"Unknown","pages.cancel.subscription-ends-on":"Subscription ends on","pages.cancel.subscription-will-end-on":"Your subscription will end on","pages.cancel.success":"You've cancelled your subscription","pages.cancel.until-cancelled":"Until Cancelled","pages.common.collapsible-content-text":"See details","pages.common.confirmation-modal-cancel-button":"Cancel","pages.common.confirmation-modal-confirm-button":"Confirm","pages.common.confirmation-primary-error-message":"Something went wrong!","pages.common.confirmation-secondary-error-message":"Try again later.","pages.common.date-time-format-locale":"en-US","pages.common.input-errors-invalid-email":"Please enter a valid email","pages.common.input-errors-invalid-url":"Please enter a valid URL","pages.common.input-errors-missing-value":"Please enter a value","pages.common.loading":"Loading...","pages.common.no-access-back-link":"Go Back","pages.common.no-access-body":"Sorry, you are not allowed to access this page. Click the button to go back.","pages.common.no-access-title":"No access.","pages.common.password-hide":"Hide","pages.common.password-show":"Show","pages.login-reg.already-registered-sign-in":"Already registered? Sign in","pages.login-reg.cancel":"Cancel","pages.login-reg.complete-registration-button":"Complete Registration","pages.login-reg.continue-with-apple":"Continue with Apple","pages.login-reg.continue-with-facebook":"Continue with Facebook","pages.login-reg.continue-with-google":"Continue with Google","pages.login-reg.continue-with-linkedin":"Continue with Linkedin","pages.login-reg.continue-with-microsoft":"Continue with Microsoft","pages.login-reg.continue-with-open-id-connect":"Continue with Open ID Connect","pages.login-reg.continue-with-twitter":"Continue with X","pages.login-reg.create-account":"Create an account","pages.login-reg.email-me-login-link":"Email me login link","pages.login-reg.email-me-reset-code":"Email me reset code","pages.login-reg.email-placeholder":"Email Address","pages.login-reg.enter-account-reg-code-here":"Enter an account registration code here","pages.login-reg.errors.contact-admin":"Please contact the administrator","pages.login-reg.errors.email-already-taken":"Email already taken","pages.login-reg.errors.email-verification-required":"Email verification is required","pages.login-reg.errors.password-incorrect":"The password you entered is incorrect","pages.login-reg.errors.password-not-strong-enough":"Password is not strong enough","pages.login-reg.errors.seat-capacity":"Your registration request couldn't be completed due to account seat capacity issue.","pages.login-reg.errors.something-went-wrong":"Something went wrong!","pages.login-reg.errors.to-gain-access-contact-admin":"To gain login access, please contact your administrator","pages.login-reg.errors.try-again-later":"Please try again later.","pages.login-reg.errors.user-not-found":"User not found","pages.login-reg.errors.username-already-taken":"Username already taken","pages.login-reg.forgotten-password":"Forgotten Password?","pages.login-reg.logging-in":"Logging in...","pages.login-reg.login-button":"Login","pages.login-reg.login-to-account":"Login to your account","pages.login-reg.or":"Or","pages.login-reg.password-placeholder":"Password","pages.login-reg.password-requirement":"Password must be a minimum of 8 characters and contain uppercase and lowercase, numbers and at least 1 special character.","pages.login-reg.register-button":"Register","pages.login-reg.register-for-account":"Register for an account","pages.login-reg.reset-your-password":"Reset your password","pages.login-reg.wait":"Please wait...","pages.pref-center.devices.current-device":"Current Device","pages.pref-center.devices.error-loading":"There was an error getting the device list","pages.pref-center.devices.sign-in-time":"Login date and time:","pages.pref-center.devices.sign-out":"Sign out","pages.pref-center.devices.sign-out-all":"Sign out of all other devices","pages.pref-center.devices.sign-out-all-success":"All other devices are now signed out","pages.pref-center.devices.sign-out-fail":"Signing out failed","pages.pref-center.devices.sign-out-success":"is now signed out.","pages.pref-center.devices.title":"Your Devices","pages.pref-center.devices.unknown-device":"Unknown","pages.pref-center.email-update-passwordless-message":"A link has been sent to your current email. Please check your inbox.","pages.pref-center.email-update-passwordless-title":"Check Your Inbox","pages.pref-center.general-error":"Something went wrong - please try again later","pages.pref-center.profile.attributes-select-list-placeholder":"Select One","pages.pref-center.profile.attributes-update-save":"Save","pages.pref-center.profile.attributes-update-title":"Your profile","pages.pref-center.profile.email":"Email Address","pages.pref-center.profile.email-update-email-label":"New Email","pages.pref-center.profile.email-update-email-placeholder":"Enter Email","pages.pref-center.profile.email-update-password-label":"Your Password","pages.pref-center.profile.email-update-password-placeholder":"Enter password","pages.pref-center.profile.email-update-save":"Save","pages.pref-center.profile.email-update-step-2-title":"Update Email Address","pages.pref-center.profile.email-update-title":"Update Email Address","pages.pref-center.profile.errors.change-email-error":"Sorry but your email address has not been changed. Please try again.","pages.pref-center.profile.errors.change-password-error":"Sorry but we were unable to reset your password. Please try again.","pages.pref-center.profile.errors.email-already-taken-error":"This email address is already taken.","pages.pref-center.profile.errors.incorrect-code":"Entered code is incorrect","pages.pref-center.profile.errors.incorrect-password":"The password you entered is incorrect","pages.pref-center.profile.errors.password-validation-error":"Password is not strong enough","pages.pref-center.profile.errors.unsuccessful":"Unsuccessful","pages.pref-center.profile.errors.update-profile-error":"Sorry but we were unable to update your profile. Please try again.","pages.pref-center.profile.password":"Password","pages.pref-center.profile.password-update-current-password-label":"Current Password","pages.pref-center.profile.password-update-current-password-placeholder":"Enter your password","pages.pref-center.profile.password-update-new-password-label":"New Password","pages.pref-center.profile.password-update-new-password-placeholder":"Enter a password","pages.pref-center.profile.password-update-save":"Continue","pages.pref-center.profile.password-update-step-2-title":"Reset your password","pages.pref-center.profile.password-update-title":"Update Password","pages.pref-center.profile.title":"Your Profile","pages.pref-center.profile.update":"Update","pages.pref-center.profile.update-email-successful":"Your email address has been changed.","pages.pref-center.profile.update-password-successful":"Your password has been reset.","pages.pref-center.profile.update-profile-successful":"Your profile has been updated.","pages.pref-center.profile.update-return-text":"Return to Personal Information","pages.pref-center.profile.update-step-2-code-label":"Code","pages.pref-center.profile.update-step-2-code-placeholder":"e.g. 350271","pages.pref-center.profile.update-step-2-enter-code":"Enter the code in the box below.","pages.pref-center.profile.update-step-2-message-sent":"A message with a code has been sent to email address:","pages.pref-center.profile.update-step-2-ne
80838w-code-modal-body":"Would you like to send a new verification code to","pages.pref-center.profile.update-step-2-new-code-modal-button":"Resend Code","pages.pref-center.profile.update-step-2-new-code-modal-title":"Get a new verification code","pages.pref-center.profile.update-step-2-resend-code-link-text":"Didn't get a code?","pages.pref-center.profile.update-step-2-save":"Submit","pages.pref-center.profile.update-successful":"Success","pages.pref-center.share-product.modal-body":"You can invite people by entering their email. Available seats:","pages.pref-center.share-product.modal-email-label":"Email Address","pages.pref-center.share-product.modal-email-placeholder":"Enter Email Address","pages.pref-center.share-product.modal-send-button-text":"Send Invite","pages.pref-center.share-product.modal-title":"Invite people to your sharable subscription","pages.pref-center.shared-members.done-button":"Done","pages.pref-center.shared-members.invite-button-text":"Invite new members","pages.pref-center.shared-members.manage-shared-members-title":"Manage shared members","pages.pref-center.shared-members.no-members":"This product is not currently shared with anyone.","pages.pref-center.shared-members.seats-used":"seats used","pages.pref-center.shared-members.status-active":"Active","pages.pref-center.shared-members.status-inactive":"Inactive","pages.pref-center.shared-members.status-pending":"Pending","pages.pref-center.shared-members.table-header-date":"Date Shared","pages.pref-center.shared-members.table-header-email":"Email Address","pages.pref-center.shared-members.table-header-status":"Status","pages.pref-center.shared-members.table-remove-member":"Remove member","pages.pref-center.shared-members.title":"Shared Members","pages.pref-center.shared-products.errors.existing-invite-error":"An invite has already been created for this email","pages.pref-center.shared-products.errors.invalid-email-error":"Invalid email address","pages.pref-center.shared-products.errors.limit-reached-error":"You have reached the sharing limit for this product","pages.pref-center.shared-products.errors.no-access-error":"You do not currently have access to this product","pages.pref-center.shared-products.leave-product-body":"Are you sure you want to leave this shared product?","pages.pref-center.shared-products.leave-product-title":"Leave Product","pages.pref-center.shared-products.no-subscriptions":"You do not currently have any products shared with you.","pages.pref-center.shared-products.remove-invite-body":"Are you sure you want to remove this pending invite from your subscription?","pages.pref-center.shared-products.remove-invite-title":"Remove Invite","pages.pref-center.shared-products.remove-member-body":"Are you sure you want to remove this user from your subscription?","pages.pref-center.shared-products.remove-member-title":"Remove Member","pages.pref-center.shared-products.remove-subscription":"Leave shared subscription","pages.pref-center.shared-products.shared-by":"Shared by","pages.pref-center.subscriptions.billing-history-link":"Billing History.","pages.pref-center.subscriptions.billing-history-table-canceled":"Subscription canceled","pages.pref-center.subscriptions.billing-history-table-header-date":"Date","pages.pref-center.subscriptions.billing-history-table-header-period":"Subscription Period","pages.pref-center.subscriptions.billing-history-table-header-subtotal":"Subtotal","pages.pref-center.subscriptions.billing-history-table-header-total":"Total","pages.pref-center.subscriptions.billing-history-title":"Billing History","pages.pref-center.subscriptions.cancel-subscription-confirm-modal-body":"Your subscription has been canceled.","pages.pref-center.subscriptions.cancel-subscription-confirm-modal-button":"Close","pages.pref-center.subscriptions.cancel-subscription-confirm-modal-title":"Subscription canceled","pages.pref-center.subscriptions.cancel-subscription-modal-body":"Are you sure you want to cancel the subscription","pages.pref-center.subscriptions.cancel-subscription-modal-button":"Cancel Subscription","pages.pref-center.subscriptions.cancel-subscription-modal-title":"Cancel your subscription","pages.pref-center.subscriptions.cancel-subscription-title":"Cancel your subscription","pages.pref-center.subscriptions.canceled-date":"Canceled on","pages.pref-center.subscriptions.change-multi-subscription-screen-active-subscription":"active","pages.pref-center.subscriptions.change-multi-subscription-screen-best-value":"best value","pages.pref-center.subscriptions.change-multi-subscription-screen-cancel-subscriptions-confirm-modal-body":"Your subscriptions have been canceled.","pages.pref-center.subscriptions.change-multi-subscription-screen-cancel-subscriptions-confirm-modal-title":"Subscriptions canceled","pages.pref-center.subscriptions.change-multi-subscription-screen-cancel-subscriptions-modal-title":"Cancel your subscriptions","pages.pref-center.subscriptions.change-multi-subscription-screen-cancel-subscriptions-text":"Cancel Subscriptions","pages.pref-center.subscriptions.change-multi-subscription-screen-current-subscription":"current subscription","pages.pref-center.subscriptions.change-multi-subscription-screen-current-subscriptions-title":"Current Subscriptions","pages.pref-center.subscriptions.change-multi-subscription-screen-edit-subscription-text":"Edit","pages.pref-center.subscriptions.change-multi-subscription-screen-new-subscriptions-title":"New Subscriptions","pages.pref-center.subscriptions.change-multi-subscription-screen-review-button":"Review Changes","pages.pref-center.subscriptions.change-multi-subscription-screen-title":"Manage Subscriptions","pages.pref-center.subscriptions.change-payment-method-description":"Adjust how you pay for the product.","pages.pref-center.subscriptions.change-payment-method-screen-description":"This credit card will be used as the payment method for the following subscription:","pages.pref-center.subscriptions.change-payment-method-screen-save-button":"Save","pages.pref-center.subscriptions.change-payment-method-screen-title":"Enter Payment Detail","pages.pref-center.subscriptions.change-payment-method-title":"Change payment method","pages.pref-center.subscriptions.change-single-subscription-screen-add-new":"Add a new card","pages.pref-center.subscriptions.change-single-subscription-screen-best-value":"Best Value","pages.pref-center.subscriptions.change-single-subscription-screen-confirm-button":"CONFIRM & PROCESS PAYMENT","pages.pref-center.subscriptions.change-single-subscription-screen-current-subscription-title":"Current Subscription","pages.pref-center.subscriptions.change-single-subscription-screen-existing-payment":"Use existing payment method","pages.pref-center.subscriptions.change-single-subscription-screen-new-subscription-description":"Change your current subscription for another.","pages.pref-center.subscriptions.change-single-subscription-screen-new-subscription-title":"Change Subscription","pages.pref-center.subscriptions.change-single-subscription-screen-payment-method-selection":"Payment Method","pages.pref-center.subscriptions.change-single-subscription-screen-review-button":"Review Changes","pages.pref-center.subscriptions.change-single-subscription-screen-select-plan":"Select Plan","pages.pref-center.subscriptions.change-single-subscription-screen-selected-plan":"Selected Plan","pages.pref-center.subscriptions.change-single-subscription-screen-title":"Manage Subscription","pages.pref-center.subscriptions.change-single-subscription-title":"Change your subscription","pages.pref-center.subscriptions.change-subscription-description":"Adjust what products you have access to.","pages.pref-center.subscriptions.change-subscriptions-title":"Change your subscriptions","pages.pref-center.subscriptions.invoices-text":"To see previous invoices visit","pages.pref-center.subscriptions.manage-single-subscription-title":"Manage Subscription","pages.pref-center.subscriptions.manage-subscriptions-title":"Manage Subscriptions","pages.pref-center.subscriptions.next-payment-title":"Next payment date","pages.pref-center.subscriptions.no-subscriptions":"You don't have any subscriptions.","pages.pref-center.subscriptions.one-off-expiry-date":"Expiry Date","pages.pref-center.subscriptions.one-off-price-title":"Price","pages.pref-center.subscriptions.payment-information-title":"Payment Information","pages.pref-center.subscriptions.payment-processing-text":"(payment processing)","pages.pref-center.subscriptions.product-canceled":"Product canceled","pages.pref-center.subscriptions.return-to-subscription-text":"Return to Subscription","pages.pref-center.subscriptions.return-to-subscriptions-text":"Return to Subscriptions","pages.pref-center.subscriptions.subscription-rate-title":"Subscription rate","pages.pref-center.subscriptions.update-success":"Update success"}}},"formTypeConfig":{"allowAccountRegistrationCodes":false,"usePasswordlessAuthentication":false,"twoFactorEmailAuthentication":true,"usePassword":false,"useVerificationCodes":true,"showSuccessOnFormCompletion":false,"autoApplyAttributes":{"email_verified":"true","wants_main_newsletter":"true","would-like-member-newsletter":"false"},"version":1,"requestCountry":"US","requestState":"Illinois","requestCity":"Chicago","requestZipCode":"60602"},"organisationConfig":{"schemaFields":[{"slug":"agree_to_have_data_stored","visibility":"PUBLIC","label":"I agree to have my data stored and processed by Sifted.","required":false,"public-description":"","validation-expression":null,"input-type":"checkbox","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"articles-gift-given","visibility":"PUBLIC","label":"Articles gift given","required":false,"public-description":"","validation-expression":null,"input-type":"number","select-options":null,"range-start":null,"range-end":null,"range-step":null},{"slug":"breakfastRsvp","visibility":"PUBLIC","label":"breakfastRsvp","required":false,"public-description":null,"validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"company","visibility":"PUBLIC","label":"Company","required":false,"public-description":null,"validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"complete_profile_submitted","visibility":"PUBLIC","label":"Complete profile submitted","required":false,"public-description":"","validation-expression":null,"input-type":"checkbox","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"cookiebot_user_hash","visibility":"PUBLIC","label":"Cookiebot User Hash","required":false,"public-description":null,"validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"date-of-current-gifting-cycle-started","visibility":"PUBLIC","label":"Date of current gifting cycle started","required":false,"public-description":"","validation-expression":null,"input-type":"date","select-options":null,"range-start":null,"range-end":null,"range-step":null},{"slug":"department","visibility":"PUBLIC","label":"Department","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"⚙️ Engineering","value":"⚙️ Engineering","default":false},{"label":"👥 HR","value":"👥 HR","default":false},{"label":"🐈 Product","value":"🐈 Product","default":false},{"label":"🎨 Design","value":"🎨 Design","default":false},{"label":"🤝 Sales","value":"🤝 Sales","default":false},{"label":"🚀 Marketing","value":"🚀 Marketing","default":false},{"label":"⚖️ Legal","value":"⚖️ Legal","default":false},{"label":"💼 Business Development","value":"💼 Business Development","default":false},{"label":"🚦 Leadership","value":"🚦 Leadership","default":false},{"label":"💸 Finance","value":"💸 Finance","default":false},{"label":"👀 Other","value":"👀 Other","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"email_verified","visibility":"PUBLIC","label":"email verified","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"legacy","value":"legacy","default":false},{"label":"true","value":"true","default":false},{"label":"false","value":"false","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"expressed_interest","visibility":"PUBLIC","label":"Expressed Interest (Subscriber Events)","required":false,"public-description":null,"validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"first_name","visibility":"PUBLIC","label":"First name","required":true,"public-description":"","validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"form_advisory_firm_type","visibility":"PUBLIC","label":"form_advisory_firm_type","required":false,"public-description":"","validation-expression":null,"input-type":"select","select-options":[{"label":"Law Firm","value":"Law Firm","default":false},{"label":"Consultancy Firm","value":"Consultancy Firm","default":false},{"label":"Financial Advisory","value":"Financial Advisory","default":false}],"range-start":null,"range-end":null,"range-step":null},{"slug":"form_aum","visibility":"PUBLIC","label":"form_aum","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"Less than $1 million","value":"Less than $1 million","default":false},{"label":"$1 million - $10 million","value":"$1 million - $10 million","default":false},{"label":"$10 million - $50 million","value":"$10 million - $50 million","default":false},{"label":"$50 million - $100 million","value":"$50 million - $100 million","default":false},{"label":"$100 million - $500 million","value":"$100 million - $500 million","default":false},{"label":"$500 million - $1 billion","value":"$500 million - $1 billion","default":false},{"label":"Over $1 billion","value":"Over $1 billion","default":false},{"label":"Prefer not to disclose","value":"Prefer not to disclose","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"form_b2b_or_b2c","visibility":"PUBLIC","label":"form_b2b_or_b2c","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"B2B","value":"B2B","default":false},{"label":"B2C","value":"B2C","default":false},{"label":"Both","value":"Both","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"form_company_founded","visibility":"PUBLIC","label":"form_company_founded","required":false,"public-description":null,"validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"form_company_hq_country","visibility":"PUBLIC","label":"form_company_hq_country","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"Antilles","value":"Antilles","default":false},{"label":"Antigua and Barbuda","value":"Antigua and Barbuda","default":false},{"label":"Angola","value":"Angola","default":false},{"label":"Afghanistan","value":"Afghanistan","default":false},{"label":"Armenia","value":"Armenia","default":false},{"label":"Antarctica","value":"Antarctica","default":false},{"label":"Albania","value":"Albania","default":false},{"label":"Argentina","value":"Argentina","default":false},{"label":"Austria","value":"Austria","default":false},{"label":"American Samoa","value":"American Samoa","default":false},{"label":"Canada","value":"Canada","default":false},{"label":"Burkina Faso","value":"Burkina Faso","default":false},{"label":"Switzerland","value":"Switzerland","default":false},{"label":"Åland Islands","value":"Åland Islands","default":false},{"label":"France","value":"France","default":false},{"label":"Aruba","value":"Aruba","default":false},{"label":"Azerbaijan","value":"Azerbaijan","default":false},{"label":"Bahrain","value":"Bahrain","default":false},{"label":"Bosnia and Herzegovina","value":"Bosnia and Herzegovina","default":false},{"label":"Australia","value":"Australia","default":false},{"label":"Barbados","value":"Barbados","default
80838":false},{"label":"Belgium","value":"Belgium","default":false},{"label":"Bulgaria","value":"Bulgaria","default":false},{"label":"Burundi","value":"Burundi","default":false},{"label":"Benin","value":"Benin","default":false},{"label":"Brunei Darussalam","value":"Brunei Darussalam","default":false},{"label":"Bermuda","value":"Bermuda","default":false},{"label":"Bolivia, Plurinational State of","value":"Bolivia, Plurinational State of","default":false},{"label":"Bonaire, Sint Eustatius and Saba","value":"Bonaire, Sint Eustatius and Saba","default":false},{"label":"Brazil","value":"Brazil","default":false},{"label":"Germany","value":"Germany","default":false},{"label":"Saint Barthélemy","value":"Saint Barthélemy","default":false},{"label":"Bahamas","value":"Bahamas","default":false},{"label":"Botswana","value":"Botswana","default":false},{"label":"Bouvet Island","value":"Bouvet Island","default":false},{"label":"Belarus","value":"Belarus","default":false},{"label":"Belize","value":"Belize","default":false},{"label":"Cocos (Keeling) Islands","value":"Cocos (Keeling) Islands","default":false},{"label":"Congo, the Democratic Republic of the","value":"Congo, the Democratic Republic of the","default":false},{"label":"Congo","value":"Congo","default":false},{"label":"Central African Republic","value":"Central African Republic","default":false},{"label":"Cabo Verde","value":"Cabo Verde","default":false},{"label":"Colombia","value":"Colombia","default":false},{"label":"Cameroon","value":"Cameroon","default":false},{"label":"Czech Republic","value":"Czech Republic","default":false},{"label":"Costa Rica","value":"Costa Rica","default":false},{"label":"China","value":"China","default":false},{"label":"Christmas Island","value":"Christmas Island","default":false},{"label":"Cyprus","value":"Cyprus","default":false},{"label":"Côte d'Ivoire","value":"Côte d'Ivoire","default":false},{"label":"Cuba","value":"Cuba","default":false},{"label":"Cook Islands","value":"Cook Islands","default":false},{"label":"Serbia and Montenegro","value":"Serbia and Montenegro","default":false},{"label":"Curaçao","value":"Curaçao","default":false},{"label":"Denmark","value":"Denmark","default":false},{"label":"Djibouti","value":"Djibouti","default":false},{"label":"Dominican Republic","value":"Dominican Republic","default":false},{"label":"Algeria","value":"Algeria","default":false},{"label":"Ethiopia","value":"Ethiopia","default":false},{"label":"Chile","value":"Chile","default":false},{"label":"Faroe Islands","value":"Faroe Islands","default":false},{"label":"Ecuador","value":"Ecuador","default":false},{"label":"Dominica","value":"Dominica","default":false},{"label":"Bangladesh","value":"Bangladesh","default":false},{"label":"Egypt","value":"Egypt","default":false},{"label":"Micronesia, Federated States of","value":"Micronesia, Federated States of","default":false},{"label":"Spain","value":"Spain","default":false},{"label":"Falkland Islands (Malvinas)","value":"Falkland Islands (Malvinas)","default":false},{"label":"Finland","value":"Finland","default":false},{"label":"Estonia","value":"Estonia","default":false},{"label":"Gabon","value":"Gabon","default":false},{"label":"Bhutan","value":"Bhutan","default":false},{"label":"Western Sahara","value":"Western Sahara","default":false},{"label":"Fiji","value":"Fiji","default":false},{"label":"Eritrea","value":"Eritrea","default":false},{"label":"Andorra","value":"Andorra","default":false},{"label":"United Kingdom","value":"United Kingdom","default":false},{"label":"Grenada","value":"Grenada","default":false},{"label":"Georgia","value":"Georgia","default":false},{"label":"French Guiana","value":"French Guiana","default":false},{"label":"Guernsey","value":"Guernsey","default":false},{"label":"Ghana","value":"Ghana","default":false},{"label":"Gibraltar","value":"Gibraltar","default":false},{"label":"Greenland","value":"Greenland","default":false},{"label":"Gambia","value":"Gambia","default":false},{"label":"Guinea","value":"Guinea","default":false},{"label":"Guadeloupe","value":"Guadeloupe","default":false},{"label":"Equatorial Guinea","value":"Equatorial Guinea","default":false},{"label":"Greece","value":"Greece","default":false},{"label":"South Georgia and the South Sandwich Islands","value":"South Georgia and the South Sandwich Islands","default":false},{"label":"Guatemala","value":"Guatemala","default":false},{"label":"Guam","value":"Guam","default":false},{"label":"Guinea-Bissau","value":"Guinea-Bissau","default":false},{"label":"Guyana","value":"Guyana","default":false},{"label":"Hong Kong","value":"Hong Kong","default":false},{"label":"Heard Island and McDonald Islands","value":"Heard Island and McDonald Islands","default":false},{"label":"Honduras","value":"Honduras","default":false},{"label":"Croatia","value":"Croatia","default":false},{"label":"Haiti","value":"Haiti","default":false},{"label":"Hungary","value":"Hungary","default":false},{"label":"Indonesia","value":"Indonesia","default":false},{"label":"Ireland","value":"Ireland","default":false},{"label":"Israel","value":"Israel","default":false},{"label":"Isle of Man","value":"Isle of Man","default":false},{"label":"India","value":"India","default":false},{"label":"British Indian Ocean Territory","value":"British Indian Ocean Territory","default":false},{"label":"Iraq","value":"Iraq","default":false}
80838,{"label":"Iran, Islamic Republic of","value":"Iran, Islamic Republic of","default":false},{"label":"Iceland","value":"Iceland","default":false},{"label":"Italy","value":"Italy","default":false},{"label":"Jersey","value":"Jersey","default":false},{"label":"Jamaica","value":"Jamaica","default":false},{"label":"Jordan","value":"Jordan","default":false},{"label":"Japan","value":"Japan","default":false},{"label":"Kenya","value":"Kenya","default":false},{"label":"Kyrgyzstan","value":"Kyrgyzstan","default":false},{"label":"Cambodia","value":"Cambodia","default":false},{"label":"Kiribati","value":"Kiribati","default":false},{"label":"Comoros","value":"Comoros","default":false},{"label":"Saint Kitts and Nevis","value":"Saint Kitts and Nevis","default":false},{"label":"Korea, Democratic People's Republic of","value":"Korea, Democratic People's Republic of","default":false},{"label":"Korea, Republic of","value":"Korea, Republic of","default":false},{"label":"Kuwait","value":"Kuwait","default":false},{"label":"Cayman Islands","value":"Cayman Islands","default":false},{"label":"Kazakhstan","value":"Kazakhstan","default":false},{"label":"Lao People's Democratic Republic","value":"Lao People's Democratic Republic","default":false},{"label":"Lebanon","value":"Lebanon","default":false},{"label":"Saint Lucia","value":"Saint Lucia","default":false},{"label":"Liechtenstein","value":"Liechtenstein","default":false},{"label":"Sri Lanka","value":"Sri Lanka","default":false},{"label":"Liberia","value":"Liberia","default":false},{"label":"Lesotho","value":"Lesotho","default":false},{"label":"Lithuania","value":"Lithuania","default":false},{"label":"Luxembourg","value":"Luxembourg","default":false},{"label":"Latvia","value":"Latvia","default":false},{"label":"Libya","value":"Libya","default":false},{"label":"Morocco","value":"Morocco","default":false},{"label":"Monaco","value":"Monaco","default":false},{"label":"Moldova, Republic of","value":"Moldova, Republic of","default":false},{"label":"Montenegro","value":"Montenegro","default":false},{"label":"Saint Martin (French part)","value":"Saint Martin (French part)","default":false},{"label":"Madagascar","value":"Madagascar","default":false},{"label":"Marshall Islands","value":"Marshall Islands","default":false},{"label":"Macedonia","value":"Macedonia","default":false},{"label":"Mali","value":"Mali","default":false},{"label":"Myanmar","value":"Myanmar","default":false},{"label":"Mongolia","value":"Mongolia","default":false},{"label":"Macao","value":"Macao","default":false},{"label":"Northern Mariana Islands","value":"Northern Mariana Islands","default":false},{"label":"Martinique","value":"Martinique","default":false},{"label":"Mauritania","value":"Mauritania","default":false},{"label":"Montserrat","value":"Montserrat","default":false},{"label":"Malta","value":"Malta","default":false},{"label":"Mauritius","value":"Mauritius","default":false},{"label":"Maldives","value":"Maldives","default":false},{"label":"Malawi","value":"Malawi","default":false},{"label":"Mexico","value":"Mexico","default":false},{"label":"Malaysia","value":"Malaysia","default":false},{"label":"Mozambique","value":"Mozambique","default":false},{"label":"Namibia","value":"Namibia","default":false},{"label":"New Caledonia","value":"New Caledonia","default":false},{"label":"Niger","value":"Niger","default":false},{"label":"Norfolk Island","value":"Norfolk Island","default":false},{"label":"Nigeria","value":"Nigeria","default":false},{"label":"Nicaragua","value":"Nicaragua","default":false},{"label":"Netherlands","value":"Netherlands","default":false},{"label":"Norway","value":"Norway","default":false},{"label":"Nepal","value":"Nepal","default":false},{"label":"Nauru","value":"Nauru","default":false},{"label":"Niue","value":"Niue","default":false},{"label":"New Zealand","value":"New Zealand","default":false},{"label":"Oman","value":"Oman","default":false},{"label":"Panama","value":"Panama","default":false},{"label":"Peru","value":"Peru","default":false},{"label":"French Polynesia","value":"French Polynesia","default":false},{"label":"Papua New Guinea","value":"Papua New Guinea","default":false},{"label":"Philippines","value":"Philippines","default":false},{"label":"Pakistan","value":"Pakistan","default":false},{"label":"Poland","value":"Poland","default":false},{"label":"Saint Pierre and Miquelon","value":"Saint Pierre and Miquelon","default":false},{"label":"Pitcairn","value":"Pitcairn","default":false},{"label":"Puerto Rico","value":"Puerto Rico","default":false},{"label":"Palestine, State of","value":"Palestine, State of","default":false},{"label":"Portugal","value":"Portugal","default":false},{"label":"Palau","value":"Palau","default":false},{"label":"Paraguay","value":"Paraguay","default":false},{"label":"Qatar","value":"Qatar","default":false},{"label":"Réunion","value":"Réunion","default":false},{"label":"Romania","value":"Romania","default":false},{"label":"Serbia","value":"Serbia","default":false},{"label":"Russian Federation","value":"Russian Federation","default":false},{"label":"Rwanda","value":"Rwanda","default":false},{"label":"Saudi Arabia","value":"Saudi Arabia","default":false},{"label":"Solomon Islands","value":"Solomon Islands","default":false},{"label":"Seychelles","value":"Seychelles","default":false},{"label":"Sudan","value":"Sudan","default":false},{"label":"Sweden","value":"Sweden","default":false},{"label":"Singapore","value":"Singapore","default":false},{"label":"Saint Helena, Ascension and Tristan da Cunha","value":"Saint Helena, Ascension and Tristan da Cunha","default":false},{"label":"Slovenia","value":"Slovenia","default":false},{"label":"Svalbard and Jan Mayen","value":"Svalbard and Jan Mayen","default":false},{"label":"Slovakia","value":"Slovakia","default":false},{"label":"Sierra Leone","value":"Sierra Leone","default":false},{"label":"San Marino","value":"San Marino","default":false},{"label":"Senegal","value":"Senegal","default":false},{"label":"Somalia","value":"Somalia","default":false},{"label":"Suriname","value":"Suriname","default":false},{"label":"South Sudan","value":"South Sudan","default":false},{"label":"Sao Tome and Principe","value":"Sao Tome and Principe","default":false},{"label":"El Salvador","value":"El Salvador","default":false},{"label":"Sint Maarten (Dutch part)","value":"Sint Maarten (Dutch part)","default":false},{"label":"Syrian Arab Republic","value":"Syrian Arab Republic","default":false},{"label":"Swaziland","value":"Swaziland","default":false},{"label":"Turks and Caicos Islands","value":"Turks and Caicos Islands","default":false},{"label":"Chad","value":"Chad","default":false},{"label":"French Southern Territories","value":"French Southern Territories","default":false},{"label":"Togo","value":"Togo","default":false},{"label":"Thailand","value":"Thailand","default":false},{"label":"Tajikistan","value":"Tajikistan","default":false},{"label":"Tokelau","value":"Tokelau","default":false},{"label":"Timor-Leste","value":"Timor-Leste","default":false},{"label":"Turkmenistan","value":"Turkmenistan","default":false},{"label":"Tunisia","value":"Tunisia","default":false},{"label":"Tonga","value":"Tonga","default":false},{"label":"Turkey","value":"Turkey","default":false},{"label":"Trinidad and Tobago","value":"Trinidad and Tobago","default":false},{"label":"Tuvalu","value":"Tuvalu","default":false},{"label":"Taiwan, Province of China","value":"Taiwan, Province of China","default":false},{"label":"Tanzania, United Republic of","value":"Tanzania, United Republic of","default":false},{"label":"Ukraine","value":"Ukraine","default":false},{"label":"Uganda","value":"Uganda","default":false},{"label":"United Arab Emirates","value":"United Arab Emirates","default":false},{"label":"United States Minor Outlying Islands","value":"United States Minor Outlying Islands","default":false},{"label":"United States","value":"United States","default":false},{"label":"Uruguay","value":"Uruguay","default":false},{"label":"Uzbekistan","value":"Uzbekistan","default":false},{"label":"Holy See (Vatican City State)","value":"Holy See (Vatican City State)","default":false},{"label":"Saint Vincent and the Grenadines","value":"Saint Vincent and the Grenadines","default":false},{"label":"Venezuela, Bolivarian Republic of","value":"Venezuela, Bolivarian Republic of","default":false},{"label":"Virgin Islands, British","value":"Virgin Islands, British","default":false},{"label":"Virgin Islands, U.S.","value":"Virgin Islands, U.S.","default":false},{"label":"Viet Nam","value":"Viet Nam","default":false},{"label":"Vanuatu","value":"Vanuatu","default":false},{"label":"Wallis and Futuna","value":"Wallis and Futuna","default":false},{"label":"Samoa","value":"Samoa","default":false},{"label":"Kosovo","value":"Kosovo","default":false},{"label":"Yemen","value":"Yemen","default":false},{"label":"Mayotte","value":"Mayotte","default":false},{"label":"South Africa","value":"South Africa","default":false},{"label":"Zambia","value":"Zambia","default":false},{"label":"Zimbabwe","value":"Zimbabwe","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"form_company_name","visibility":"PUBLIC","label":"form_company_name","required":false,"public-description":null,"validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5}
80838,{"slug":"form_company_size","visibility":"PUBLIC","label":"form_company_size","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"1-10","value":"1-10","default":false},{"label":"11-50","value":"11-50","default":false},{"label":"51-200","value":"51-200","default":false},{"label":"201-500","value":"201-500","default":false},{"label":"501-1000","value":"501-1000","default":false},{"label":"1001-5000","value":"1001-5000","default":false},{"label":"5001-10,000","value":"5001-10,000","default":false},{"label":"10,001+","value":"10,001+","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"form_company_type","visibility":"PUBLIC","label":"form_company_type","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"Startup (up to Series A)","value":"Startup","default":false},{"label":"Scaleup (Series B+)","value":"Scaleup","default":false},{"label":"Professional Services","value":"Professional Services","default":false},{"label":"Investment Firm","value":"Investment Firm","default":false},{"label":"Non-profit","value":"Non-profit","default":false},{"label":"Academic Institution","value":"Academic Institution","default":false},{"label":"Media & Publishing","value":"Media & Publishing","default":false},{"label":"Research & Data Platform","value":"Research & Data Platform","default":false},{"label":"Government","value":"Government","default":false},{"label":"Tech & SaaS","value":"Tech & SaaS","default":false},{"label":"Advisory Firm","value":"Advisory Firm","default":false},{"label":"Other","value":"other","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"form_country","visibility":"PUBLIC","label":"form_country","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"United Kingdom","value":"United Kingdom","default":false},{"label":"Afghanistan","value":"Afghanistan","default":false},{"label":"Åland Islands","value":"Åland Islands","default":false},{"label":"Albania","value":"Albania","default":false},{"label":"Algeria","value":"Algeria","default":false},{"label":"American Samoa","value":"American Samoa","default":false},{"label":"Andorra","value":"Andorra","default":false},{"label":"Angola","value":"Angola","default":false},{"label":"Antarctica","value":"Antarctica","default":false},{"label":"Antigua and Barbuda","value":"Antigua and Barbuda","default":false},{"label":"Antilles","value":"Antilles","default":false},{"label":"Argentina","value":"Argentina","default":false},{"label":"Armenia","value":"Armenia","default":false},{"label":"Aruba","value":"Aruba","default":false},{"label":"Australia","value":"Australia","default":false},{"label":"Austria","value":"Austria","default":false},{"label":"Azerbaijan","value":"Azerbaijan","default":false},{"label":"Bahamas","value":"Bahamas","default":false},{"label":"Bahrain","value":"Bahrain","default":false},{"label":"Bangladesh","value":"Bangladesh","default":false},{"label":"Barbados","value":"Barbados","default":false},{"label":"Belarus","value":"Belarus","default":false},{"label":"Belgium","value":"Belgium","default":false},{"label":"Belize","value":"Belize","default":false},{"label":"Benin","value":"Benin","default":false},{"label":"Bermuda","value":"Bermuda","default":false},{"label":"Bhutan","value":"Bhutan","default":false},{"label":"Bolivia, Plurinational State of","value":"Bolivia, Plurinational State of","default":false},{"label":"Bonaire, Sint Eustatius and Saba","value":"Bonaire, Sint Eustatius and Saba","default":false},{"label":"Bosnia and Herzegovina","value":"Bosnia and Herzegovina","default":false},{"label":"Botswana","value":"Botswana","default":false},{"label":"Bouvet Island","value":"Bouvet Island","default":false},{"label":"Brazil","value":"Brazil","default":false},{"label":"British Indian Ocean Territory","value":"British Indian Ocean Territory","default":false},{"label":"Brunei Darussalam","value":"Brunei Darussalam","default":false},{"label":"Bulgaria","value":"Bulgaria","default":false},{"label":"Burkina Faso","value":"Burkina Faso","default":false},{"label":"Burundi","value":"Burundi","default":false},{"label":"Cabo Verde","value":"Cabo Verde","default":false},{"label":"Cambodia","value":"Cambodia","default":false},{"label":"Cameroon","value":"Cameroon","default":false},{"label":"Canada","value":"Canada","default":false},{"label":"Cayman Islands","value":"Cayman Islands","default":false},{"label":"Central African Republic","value":"Central African Republic","default":false},{"label":"Chad","value":"Chad","default":false},{"label":"Chile","value":"Chile","default":false},{"label":"China","value":"China","default":false},{"label":"Christmas Island","value":"Christmas Island","default":false},{"label":"Cocos (Keeling) Islands","value":"Cocos (Keeling) Islands","default":false},{"label":"Colombia","value":"Colombia","default":false},{"label":"Comoros","value":"Comoros","default":false},{"label":"Congo, the Democratic Republic of the","value":"Congo, the Democratic Republic of the","default":false},{"label":"Congo","value":"Congo","default":false},{"label":"Cook Islands","value":"Cook Islands","default":false},{"label":"Costa Rica","value":"Costa Rica","default":false},{"label":"Côte d'Ivoire","value":"Côte d'Ivoire","default":false},{"label":"Croatia","value":"Croatia","default":false},{"label":"Cuba","value":"Cuba","default":false},{"label":"Curaçao","value":"Curaçao","default":false},{"label":"Cyprus","value":"Cyprus","default":false},{"label":"Czech Republic","value":"Czech Republic","default":false},{"label":"Denmark","value":"Denmark","default":false},{"label":"Djibouti","value":"Djibouti","default":false},{"label":"Dominica","value":"Dominica","default":false},{"label":"Dominican Republic","value":"Dominican Republic","default":false},{"label":"Ecuador","value":"Ecuador","default":false},{"label":"Egypt","value":"Egypt","default":false},{"label":"El Salvador","value":"El Salvador","default":false},{"label":"Equatorial Guinea","value":"Equatorial Guinea","default":false},{"label":"Eritrea","value":"Eritrea","default":false},{"label":"Estonia","value":"Estonia","default":false},{"label":"Ethiopia","value":"Ethiopia","default":false},{"label":"Falkland Islands (Malvinas)","value":"Falkland Islands (Malvinas)","default":false},{"label":"Faroe Islands","value":"Faroe Islands","default":false},{"label":"Fiji","value":"Fiji","default":false},{"label":"Finland","value":"Finland","default":false},{"label":"France","value":"France","default":false},{"label":"French Guiana","value":"French Guiana","default":false},{"label":"French Polynesia","value":"French Polynesia","default":false},{"label":"French Southern Territories","value":"French Southern Territories","default":false},{"label":"Gabon","value":"Gabon","default":false},{"label":"Gambia","value":"Gambia","default":false},{"label":"Georgia","value":"Georgia","default":false},{"label":"Germany","value":"Germany","default":false},{"label":"Ghana","value":"Ghana","default":false},{"label":"Gibraltar","value":"Gibraltar","default":false},{"label":"Greece","value":"Greece","default":false},{"label":"Greenland","value":"Greenland","default":false},{"label":"Grenada","value":"Grenada","default":false},{"label":"Guadeloupe","value":"Guadeloupe","default":false},{"label":"Guam","value":"Guam","default":false},{"label":"Guatemala","value":"Guatemala","default":false},{"label":"Guernsey","value":"Guernsey","default":false},{"label":"Guinea-Bissau","value":"Guinea-Bissau","default":false},{"label":"Guinea","value":"Guinea","default":false},{"label":"Guyana","value":"Guyana","default":false},{"label":"Haiti","value":"Haiti","default":false},{"label":"Heard Island and McDonald Islands","value":"Heard Island and McDonald Islands","default":false},{"label":"Holy See (Vatican City State)","value":"Holy See (Vatican City State)","default":false},{"label":"Honduras","value":"Honduras","default":false},{"label":"Hong Kong","value":"Hong Kong","default":false},{"label":"Hungary","value":"Hungary","default":false},{"label":"Iceland","value":"Iceland","default":false},{"label":"India","value":"India","default":false},{"label":"Indonesia","value":"Indonesia","default":false}
80838,{"label":"Iran, Islamic Republic of","value":"Iran, Islamic Republic of","default":false},{"label":"Iraq","value":"Iraq","default":false},{"label":"Ireland","value":"Ireland","default":false},{"label":"Isle of Man","value":"Isle of Man","default":false},{"label":"Israel","value":"Israel","default":false},{"label":"Italy","value":"Italy","default":false},{"label":"Jamaica","value":"Jamaica","default":false},{"label":"Japan","value":"Japan","default":false},{"label":"Jersey","value":"Jersey","default":false},{"label":"Jordan","value":"Jordan","default":false},{"label":"Kazakhstan","value":"Kazakhstan","default":false},{"label":"Kenya","value":"Kenya","default":false},{"label":"Kiribati","value":"Kiribati","default":false},{"label":"Korea, Democratic People's Republic of","value":"Korea, Democratic People's Republic of","default":false},{"label":"Korea, Republic of","value":"Korea, Republic of","default":false},{"label":"Kosovo","value":"Kosovo","default":false},{"label":"Kuwait","value":"Kuwait","default":false},{"label":"Kyrgyzstan","value":"Kyrgyzstan","default":false},{"label":"Lao People's Democratic Republic","value":"Lao People's Democratic Republic","default":false},{"label":"Latvia","value":"Latvia","default":false},{"label":"Lebanon","value":"Lebanon","default":false},{"label":"Lesotho","value":"Lesotho","default":false},{"label":"Liberia","value":"Liberia","default":false},{"label":"Libya","value":"Libya","default":false},{"label":"Liechtenstein","value":"Liechtenstein","default":false},{"label":"Lithuania","value":"Lithuania","default":false},{"label":"Luxembourg","value":"Luxembourg","default":false},{"label":"Macao","value":"Macao","default":false},{"label":"Macedonia","value":"Macedonia","default":false},{"label":"Madagascar","value":"Madagascar","default":false},{"label":"Malawi","value":"Malawi","default":false},{"label":"Malaysia","value":"Malaysia","default":false},{"label":"Maldives","value":"Maldives","default":false},{"label":"Mali","value":"Mali","default":false},{"label":"Malta","value":"Malta","default":false},{"label":"Marshall Islands","value":"Marshall Islands","default":false},{"label":"Martinique","value":"Martinique","default":false},{"label":"Mauritania","value":"Mauritania","default":false},{"label":"Mauritius","value":"Mauritius","default":false},{"label":"Mayotte","value":"Mayotte","default":false},{"label":"Mexico","value":"Mexico","default":false},{"label":"Micronesia, Federated States of","value":"Micronesia, Federated States of","default":false},{"label":"Moldova, Republic of","value":"Moldova, Republic of","default":false},{"label":"Monaco","value":"Monaco","default":false},{"label":"Mongolia","value":"Mongolia","default":false},{"label":"Montenegro","value":"Montenegro","default":false},{"label":"Montserrat","value":"Montserrat","default":false},{"label":"Morocco","value":"Morocco","default":false},{"label":"Mozambique","value":"Mozambique","default":false},{"label":"Myanmar","value":"Myanmar","default":false},{"label":"Namibia","value":"Namibia","default":false},{"label":"Nauru","value":"Nauru","default":false},{"label":"Nepal","value":"Nepal","default":false},{"label":"Netherlands","value":"Netherlands","default":false},{"label":"New Caledonia","value":"New Caledonia","default":false},{"label":"New Zealand","value":"New Zealand","default":false},{"label":"Nicaragua","value":"Nicaragua","default":false},{"label":"Niger","value":"Niger","default":false},{"label":"Nigeria","value":"Nigeria","default":false},{"label":"Niue","value":"Niue","default":false},{"label":"Norfolk Island","value":"Norfolk Island","default":false},{"label":"Northern Mariana Islands","value":"Northern Mariana Islands","default":false},{"label":"Norway","value":"Norway","default":false},{"label":"Oman","value":"Oman","default":false},{"label":"Pakistan","value":"Pakistan","default":false},{"label":"Palau","value":"Palau","default":false},{"label":"Palestine, State of","value":"Palestine, State of","default":false},{"label":"Panama","value":"Panama","default":false},{"label":"Papua New Guinea","value":"Papua New Guinea","default":false},{"label":"Paraguay","value":"Paraguay","default":false},{"label":"Peru","value":"Peru","default":false},{"label":"Philippines","value":"Philippines","default":false},{"label":"Pitcairn","value":"Pitcairn","default":false},{"label":"Poland","value":"Poland","default":false},{"label":"Portugal","value":"Portugal","default":false},{"label":"Puerto Rico","value":"Puerto Rico","default":false},{"label":"Qatar","value":"Qatar","default":false},{"label":"Réunion","value":"Réunion","default":false},{"label":"Romania","value":"Romania","default":false},{"label":"Russian Federation","value":"Russian Federation","default":false},{"label":"Rwanda","value":"Rwanda","default":false},{"label":"Saint Barthélemy","value":"Saint Barthélemy","default":false},{"label":"Saint Helena, Ascension and Tristan da Cunha","value":"Saint Helena, Ascension and Tristan da Cunha","default":false},{"label":"Saint Kitts and Nevis","value":"Saint Kitts and Nevis","default":false},{"label":"Saint Lucia","value":"Saint Lucia","default":false},{"label":"Saint Martin (French part)","value":"Saint Martin (French part)","default":false},{"label":"Saint Pierre and Miquelon","value":"Saint Pierre and Miquelon","default":false},{"label":"Saint Vincent and the Grenadines","value":"Saint Vincent and the Grenadines","default":false},{"label":"Samoa","value":"Samoa","default":false},{"label":"San Marino","value":"San Marino","default":false},{"label":"Sao Tome and Principe","value":"Sao Tome and Principe","default":false},{"label":"Saudi Arabia","value":"Saudi Arabia","default":false},{"label":"Senegal","value":"Senegal","default":false},{"label":"Serbia and Montenegro","value":"Serbia and Montenegro","default":false},{"label":"Serbia","value":"Serbia","default":false},{"label":"Seychelles","value":"Seychelles","default":false},{"label":"Sierra Leone","value":"Sierra Leone","default":false},{"label":"Singapore","value":"Singapore","default":false},{"label":"Sint Maarten (Dutch part)","value":"Sint Maarten (Dutch part)","default":false},{"label":"Slovakia","value":"Slovakia","default":false},{"label":"Slovenia","value":"Slovenia","default":false},{"label":"Solomon Islands","value":"Solomon Islands","default":false},{"label":"Somalia","value":"Somalia","default":false},{"label":"South Africa","value":"South Africa","default":false},{"label":"South Georgia and the South Sandwich Islands","value":"South Georgia and the South Sandwich Islands","default":false},{"label":"South Sudan","value":"South Sudan","default":false},{"label":"Spain","value":"Spain","default":false},{"label":"Sri Lanka","value":"Sri Lanka","default":false},{"label":"Sudan","value":"Sudan","default":false},{"label":"Suriname","value":"Suriname","default":false},{"label":"Svalbard and Jan Mayen","value":"Svalbard and Jan Mayen","default":false},{"label":"Swaziland","value":"Swaziland","default":false},{"label":"Sweden","value":"Sweden","default":false},{"label":"Switzerland","value":"Switzerland","default":false},{"label":"Syrian Arab Republic","value":"Syrian Arab Republic","default":false},{"label":"Taiwan, Province of China","value":"Taiwan, Province of China","default":false},{"label":"Tajikistan","value":"Tajikistan","default":false},{"label":"Tanzania, United Republic of","value":"Tanzania, United Republic of","default":false},{"label":"Thailand","value":"Thailand","default":false},{"label":"Timor-Leste","value":"Timor-Leste","default":false},{"label":"Togo","value":"Togo","default":false},{"label":"Tokelau","value":"Tokelau","default":false},{"label":"Tonga","value":"Tonga","default":false},{"label":"Trinidad and Tobago","value":"Trinidad and Tobago","default":false},{"label":"Tunisia","value":"Tunisia","default":false},{"label":"Turkey","value":"Turkey","default":false},{"label":"Turkmenistan","value":"Turkmenistan","default":false},{"label":"Turks and Caicos Islands","value":"Turks and Caicos Islands","default":false},{"label":"Tuvalu","value":"Tuvalu","default":false},{"label":"Uganda","value":"Uganda","default":false},{"label":"Ukraine","value":"Ukraine","default":false},{"label":"United Arab Emirates","value":"United Arab Emirates","default":false},{"label":"United States Minor Outlying Islands","value":"United States Minor Outlying Islands","default":false},{"label":"United States","value":"United States","default":false},{"label":"Uruguay","value":"Uruguay","default":false},{"label":"Uzbekistan","value":"Uzbekistan","default":false},{"label":"Vanuatu","value":"Vanuatu","default":false},{"label":"Venezuela, Bolivarian Republic of","value":"Venezuela, Bolivarian Republic of","default":false},{"label":"Viet Nam","value":"Viet Nam","default":false},{"label":"Virgin Islands, British","value":"Virgin Islands, British","default":false},{"label":"Virgin Islands, U.S.","value":"Virgin Islands, U.S.","default":false},{"label":"Wallis and Futuna","value":"Wallis and Futuna","default":false},{"label":"Western Sahara","value":"Western Sahara","default":false},{"label":"Yemen","value":"Yemen","default":false},{"label":"Zambia","value":"Zambia","default":false},{"label":"Zimbabwe","value":"Zimbabwe","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"form_department","visibility":"PUBLIC","label":"form_department","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"Sales, Business Development or Partnerships","value":"Sales, Business Development or Partnerships","default":false},{"label":"Marketing","value":"Marketing","default":false},{"label":"Product","value":"Product","default":false},{"label":"HR, People & Talent","value":"HR, People & Talent","default":false},{"label":"Data","value":"Data","default":false},{"label":"Technology & Engineering","value":"Technology & Engineering","default":false},{"label":"Legal","value":"Legal","default":false},{"label":"Finance","value":"Finance","default":false},{"label":"Operations","value":"Operations","default":false},{"label":"Innovation","value":"Innovation","default":false},{"label":"PR & Communications","value":"PR & Communications","default":false},{"label":"Investor Relations","value":"Investor Relations","default":false},{"label":"Senior Leadership","value":"Senior Leadership","default":false},{"label":"Other","value":"Other","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"form_events_consent","visibility":"PUBLIC","label":"form_events_consent","required":false,"public-description":null,"validation-expression":null,"input-type":"checkbox","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"form_funding_stages_invested","visibility":"PUBLIC","label":"form_funding_stages_invested","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"Pre-Series A","value":"Pre-Series A","default":false},{"label":"Series A","value":"Series A","default":false},{"label":"Growth","value":"Growth","default":false},{"label":"Late","value":"Late","default":false},{"label":"Venture Debt","value":"Venture Debt","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"form_investment_firm_type","visibility":"PUBLIC","label":"form_investment_firm_type","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"Venture Capital","value":"Venture Capital","default":false},{"label":"Private Equity","value":"Private Equity","default":false},{"label":"Family Office","value":"Family Office","default":false},{"label":"Fund of Funds & LPs","value":"Fund of Funds & LPs","default":false},{"label":"Accelerator","value":"Accelerator","default":false},{"label":"Corporate Venture Capital","value":"Corporate Venture Capital","default":false},{"label":"Public Fund","value":"Public Fund","default":false},{"label":"Pension Fund","value":"Pension Fund","default":false},{"label":"Institutional Investor","value":"Institutional Investor","default":false},{"label":"Angel Network","value":"Angel Network","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"form_job_title","visibility":"PUBLIC","label":"form_job_title","required":false,"public-description":null,"validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"form_last_asked_for_optional_data","visibility":"PUBLIC","label":"form_last_asked_for_optional_data","required":false,"public-description":null,"validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"form_latest_funding_stage","visibility":"PUBLIC","label":"form_latest_funding_stage","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"Bootstrapped","value":"Bootstrapped","default":false},{"label":"Pre-Series A","value":"Pre-Series A","default":false},{"label":"Series A","value":"Series A","default":false},{"label":"Growth","value":"Growth","default":false},{"label":"Late","value":"Late","default":false},{"label":"Public Company","value":"Public Company","default":false},{"label":"Acquired","value":"Acquired","default":false},{"label":"I don't know","value":"I don't know","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"form_professional_service_type","visibility":"PUBLIC","label":"form_professional_service_type","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"Accountancy or Audit Firm","value":"Accountancy or Audit Firm","default":false},{"label":"Asset/Investment Manager","value":"Asset/Investment Manager","default":false},{"label":"Business Bank","value":"Business Bank","default":false},{"label":"Commercial Real Estate or Co-working Space","value":"Commercial Real Estate or Co-working Space","default":false},{"label":"Fintech","value":"Fintech","default":false},{"label":"IT Consulting & Services","value":"IT Consulting & Services","default":false},{"label":"Insurance","value":"Insurance","default":false},{"label":"Investment Bank","value":"Investment Bank","default":false},{"label":"Marketing, Advertising or Design Agency","value":"Marketing, Advertising or Design Agency","default":false},{"label":"Other","value":"Other","default":false},{"label":"PR & Communications Agency","value":"PR & Communications Agency","default":false}
80838,{"label":"Professional Training and Coaching","value":"Professional Training and Coaching","default":false},{"label":"Staffing & Recruitment","value":"Staffing & Recruitment","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"form_role_at_business","visibility":"PUBLIC","label":"form_role_at_business","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"(Co) founder","value":"(Co) founder","default":false},{"label":"C-Suite","value":"C-Suite","default":false},{"label":"VP","value":"VP","default":false},{"label":"Director","value":"Director","default":false},{"label":"Senior manager","value":"Senior manager","default":false},{"label":"Manager","value":"Manager","default":false},{"label":"Junior","value":"Junior","default":false},{"label":"General Partner","value":"General Partner","default":false},{"label":"Partner","value":"Partner","default":false},{"label":"Principal","value":"Principal","default":false},{"label":"Associate","value":"Associate","default":false},{"label":"Analyst","value":"Analyst","default":false},{"label":"Researcher","value":"Researcher","default":false},{"label":"Angel Investor","value":"Angel Investor","default":false},{"label":"Other","value":"Other","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"form_sector","visibility":"PUBLIC","label":"form_sector","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"B2B SaaS","value":"B2B SaaS","default":false},{"label":"Fintech","value":"Fintech","default":false},{"label":"Deeptech","value":"Deeptech","default":false},{"label":"Climate tech","value":"Climate tech","default":false},{"label":"Healthtech","value":"Healthtech","default":false},{"label":"Consumer","value":"Consumer","default":false},{"label":"Other","value":"Other","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"form_sectors","visibility":"PUBLIC","label":"form_sectors","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"B2B SaaS","value":"B2B SaaS","default":false},{"label":"Fintech","value":"Fintech","default":false},{"label":"Deeptech","value":"Deeptech","default":false},{"label":"Climate tech","value":"Climate tech","default":false},{"label":"Healthtech","value":"Healthtech","default":false},{"label":"Consumer","value":"Consumer","default":false},{"label":"Other","value":"Other","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"form_work_in_startup_ecosystem","visibility":"PUBLIC","label":"form_work_in_startup_ecosystem","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"Service provider","value":"Service provider","default":false},{"label":"Venture arm","value":"Venture arm","default":false},{"label":"Accelerator / incubator / open innovation","value":"Accelerator / incubator / open innovation","default":false},{"label":"Corporate innovation","value":"Corporate innovation","default":false},{"label":"Other","value":"Other","default":false},{"label":"Do not work with startup ecosystem","value":"Do not work with startup ecosystem","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"is_academic_user","visibility":"PUBLIC","label":"is_academic_user","required":false,"public-description":"Does user is academic user","validation-expression":null,"input-type":"checkbox","select-options":null,"range-start":null,"range-end":null,"range-step":null},{"slug":"is-migrated-from-hubspot","visibility":"PUBLIC","label":"Is migrated from Hubspot","required":false,"public-description":"","validation-expression":null,"input-type":"hidden","select-options":null,"range-start":null,"range-end":null,"range-step":null},{"slug":"last_name","visibility":"PUBLIC","label":"Last name","required":true,"public-description":"","validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"newsletter_preferences_seen","visibility":"PUBLIC","label":"Newsletter preferences seen","required":false,"public-description":"","validation-expression":null,"input-type":"checkbox","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"nudges","visibility":"PUBLIC","label":"nudges","required":false,"public-description":null,"validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"organisation_type","visibility":"PUBLIC","label":"Organisation Type","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"Pre-seed Startup","value":"Pre-seed Startup","default":false},{"label":"Seed Startup","value":"Seed Startup","default":false},{"label":"Series A Startup","value":"Series A Startup","default":false},{"label":"Series B+ Startup","value":"Series B+ Startup","default":false},{"label":"Corporate","value":"Corporate","default":false},{"label":"Service provider to Startups","value":"Service provider to Startups","default":false},{"label":"Investment firm","value":"Investment firm","default":false},{"label":"Other","value":"Other","default":false},{"label":"I don't work at the moment","value":"I don't work at the moment","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"paywallCounter","visibility":"PUBLIC","label":"paywallCounter","required":false,"public-description":null,"validation-expression":null,"input-type":"number","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"paywallHitsList","visibility":"PUBLIC","label":"paywallHitsList","required":false,"public-description":null,"validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"position","visibility":"PUBLIC","label":"Job Title","required":false,"public-description":null,"validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"pql-test","visibility":"PUBLIC","label":"Also interested in...","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"Our Sifted Pro product (investment-grade research on the early-stage startup ecosystem)","value":"Our Sifted Pro product (investment-grade research on the early-stage startup ecosystem)","default":false},{"label":"Sponsorship and advertising opportunities (reaching Sifted’s audie
80838nce)","value":"Sponsorship and advertising opportunities (reaching Sifted’s audience)","default":false},{"label":"None of the above","value":"None of the above","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"reports_downloaded","visibility":"PUBLIC","label":"Reports Downloaded","required":false,"public-description":null,"validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"role","visibility":"PUBLIC","label":"Role","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"(Co) Founder","value":"(Co) Founder","default":false},{"label":"Partner","value":"Partner","default":false},{"label":"Director","value":"Director","default":false},{"label":"Senior manager","value":"Senior manager","default":false},{"label":"Manager","value":"Manager","default":false},{"label":"Associate","value":"Associate","default":false},{"label":"Junior","value":"Junior","default":false},{"label":"Senior","value":"Senior","default":false},{"label":"Student","value":"Student","default":false},{"label":"Academic","value":"Academic","default":false},{"label":"Other","value":"Other","default":false},{"label":"Staff","value":"Staff","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"roundtableRsvp","visibility":"PUBLIC","label":"Roundtable RSVP","required":false,"public-description":null,"validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"sector_preference","visibility":"PUBLIC","label":"Sector of interest","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"📈 Fintech","value":"📈 Fintech","default":false},{"label":"🔭 Venture Capital","value":"🔭 Venture Capital","default":false},{"label":"🌱 Sustainability","value":"🌱 Sustainability","default":false},{"label":"🎓 Public & Academia","value":"🎓 Public & Academia","default":false},{"label":"🦄 Startup Life","value":"🦄 Startup Life","default":false},{"label":"📱 Consumer","value":"📱 Consumer","default":false},{"label":"👾 Deeptech","value":"👾 Deeptech","default":false},{"label":"🚄 Mobility","value":"🚄 Mobility","default":false},{"label":"🏥 Healthtech","value":"🏥 Healthtech","default":false},{"label":"💡 Corporate Innovation","value":"💡 Corporate Innovation","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"self_serve_address_line_1","visibility":"PUBLIC","label":"self_serve_address_line_1","required":false,"public-description":null,"validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"self_serve_address_line_2","visibility":"PUBLIC","label":"self_serve_address_line_2","required":false,"public-description":null,"validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"self_serve_address_line_3","visibility":"PUBLIC","label":"self_serve_address_line_3","required":false,"public-description":null,"validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"self_serve_city","visibility":"PUBLIC","label":"self_serve_city","required":false,"public-description":null,"validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"self_serve_country","visibility":"PUBLIC","label":"self_serve_country","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"Afghanistan","value":"Afghanistan","default":false},{"label":"Albania","value":"Albania","default":false},{"label":"Algeria","value":"Algeria","default":false},{"label":"American Samoa","value":"American Samoa","default":false},{"label":"Andorra","value":"Andorra","default":false},{"label":"Angola","value":"Angola","default":false},{"label":"Antarctica","value":"Antarctica","default":false},{"label":"Antigua and Barbuda","value":"Antigua and Barbuda","default":false},{"label":"Antilles","value":"Antilles","default":false},{"label":"Argentina","value":"Argentina","default":false},{"label":"Armenia","value":"Armenia","default":false},{"label":"Aruba","value":"Aruba","default":false},{"label":"Australia","value":"Australia","default":false},{"label":"Austria","value":"Austria","default":false},{"label":"Azerbaijan","value":"Azerbaijan","default":false},{"label":"Bahamas","value":"Bahamas","default":false},{"label":"Bahrain","value":"Bahrain","default":false},{"label":"Bangladesh","value":"Bangladesh","default":false},{"label":"Barbados","value":"Barbados","default":false},{"label":"Belarus","value":"Belarus","default":false},{"label":"Belgium","value":"Belgium","default":false},{"label":"Belize","value":"Belize","default":false},{"label":"Benin","value":"Benin","default":false},{"label":"Bermuda","value":"Bermuda","default":false},{"label":"Bhutan","value":"Bhutan","default":false},{"label":"Bolivia, Plurinational State of","value":"Bolivia, Plurinational State of","default":false},{"label":"Bonaire, Sint Eustatius and Saba","value":"Bonaire, Sint Eustatius and Saba","default":false},{"label":"Bosnia and Herzegovina","value":"Bosnia and Herzegovina","default":false},{"label":"Botswana","value":"Botswana","default":false},{"label":"Bouvet Island","value":"Bouvet Island","default":false},{"label":"Brazil","value":"Brazil","default":false},{"label":"British Indian Ocean Territory","value":"British Indian Ocean Territory","default":false},{"label":"Brunei Darussalam","value":"Brunei Darussalam","default":false},{"label":"Bulgaria","value":"Bulgaria","default":false},{"label":"Burkina Faso","value":"Burkina Faso","default":false},{"label":"Burundi","value":"Burundi","default":false},{"label":"Cabo Verde","value":"Cabo Verde","default":false},{"label":"Cambodia","value":"Cambodia","default":false},{"label":"Cameroon","value":"Cameroon","default":false},{"label":"Canada","value":"Canada","default":false},{"label":"Cayman Islands","value":"Cayman Islands","default":false},{"label":"Central African Republic","value":"Central African Republic","default":false},{"label":"Chad","value":"Chad","default":false},{"label":"Chile","value":"Chile","default":false},{"label":"China","value":"China","default":false},{"label":"Christmas Island","value":"Christmas Island","default":false},{"label":"Cocos (Keeling) Islands","value":"Cocos (Keeling) Islands","default":false},{"label":"Colombia","value":"Colombia","default":false},{"label":"Comoros","value":"Comoros","default":false},{"label":"Congo","value":"Congo","default":false},{"label":"Congo, the Democratic Republic of the","value":"Congo, the Democratic Republic of the","default":false},{"label":"Cook Islands","value":"Cook Islands","default":false},{"label":"Costa Rica","value":"Costa Rica","default":false},{"label":"Croatia","value":"Croatia","default":false},{"label":"Cuba","value":"Cuba","default":false},{"label":"Curaçao","value":"Curaçao","default":false},{"label":"Cyprus","value":"Cyprus","default":false},{"label":"Czech Republic","value":"Czech Republic","default":false},{"label":"Côte d'Ivoire","value":"Côte d'Ivoire","default":false},{"label":"Denmark","value":"Denmark","default":false},{"label":"Djibouti","value":"Djibouti","default":false},{"label":"Dominica","value":"Dominica","default":false},{"label":"Dominican Republic","value":"Dominican Republic","default":false},{"label":"Ecuador","value":"Ecuador","default":false},{"label":"Egypt","value":"Egypt","default":false},{"label":"El Salvador","value":"El Salvador","default":false},{"label":"Equatorial Guinea","value":"Equatorial Guinea","default":false},{"label":"Eritrea","value":"Eritrea","default":false},{"label":"Estonia","value":"Estonia","default":false},{"label":"Ethiopia","value":"Ethiopia","default":false},{"label":"Falkland Islands (Malvinas)","value":"Falkland Islands (Malvinas)","default":false},{"label":"Faroe Islands","value":"Faroe Islands","default":false},{"label":"Fiji","value":"Fiji","default":false},{"label":"Finland","value":"Finland","default":false},{"label":"France","value":"France","default":false},{"label":"French Guiana","value":"French Guiana","default":false},{"label":"French Polynesia","value":"French Polynesia","default":false},{"label":"French Southern Territories","value":"French Southern Territories","default":false},{"label":"Gabon","value":"Gabon","default":false},{"label":"Gambia","value":"Gambia","default":false},{"label":"Georgia","value":"Georgia","default":false},{"label":"Germany","value":"Germany","default":false},{"label":"Ghana","value":"Ghana","default":false},{"label":"Gibraltar","value":"Gibraltar","default":false},{"label":"Greece","value":"Greece","default":false},{"label":"Greenland","value":"Greenland","default":false},{"label":"Grenada","value":"Grenada","default":false},{"label":"Guadeloupe","value":"Guadeloupe","default":false},{"label":"Guam","value":"Guam","default":false},{"label":"Guatemala","value":"Guatemala","default":false},{"label":"Guernsey","value":"Guernsey","default":false},{"label":"Guinea","value":"Guinea","default":false},{"label":"Guinea-Bissau","value":"Guinea-Bissau","default":false},{"label":"Guyana","value":"Guyana","default":false},{"label":"Haiti","value":"Haiti","default":false},{"label":"Heard Island and McDonald Islands","value":"Heard Island and McDonald Islands","default":false},{"label":"Holy See (Vatican City State)","value":"Holy See (Vatican City State)","default":false},{"label":"Honduras","value":"Honduras","default":false},{"label":"Hong Kong","value":"Hong Kong","default":false},{"label":"Hungary","value":"Hungary","default":false},{"label":"Iceland","value":"Iceland","default":false},{"label":"India","value":"India","default":false},{"label":"Indonesia","value":"Indonesia","default":false}
80838,{"label":"Iran, Islamic Republic of","value":"Iran, Islamic Republic of","default":false},{"label":"Iraq","value":"Iraq","default":false},{"label":"Ireland","value":"Ireland","default":false},{"label":"Isle of Man","value":"Isle of Man","default":false},{"label":"Israel","value":"Israel","default":false},{"label":"Italy","value":"Italy","default":false},{"label":"Jamaica","value":"Jamaica","default":false},{"label":"Japan","value":"Japan","default":false},{"label":"Jersey","value":"Jersey","default":false},{"label":"Jordan","value":"Jordan","default":false},{"label":"Kazakhstan","value":"Kazakhstan","default":false},{"label":"Kenya","value":"Kenya","default":false},{"label":"Kiribati","value":"Kiribati","default":false},{"label":"Korea, Democratic People's Republic of","value":"Korea, Democratic People's Republic of","default":false},{"label":"Korea, Republic of","value":"Korea, Republic of","default":false},{"label":"Kosovo","value":"Kosovo","default":false},{"label":"Kuwait","value":"Kuwait","default":false},{"label":"Kyrgyzstan","value":"Kyrgyzstan","default":false},{"label":"Lao People's Democratic Republic","value":"Lao People's Democratic Republic","default":false},{"label":"Latvia","value":"Latvia","default":false},{"label":"Lebanon","value":"Lebanon","default":false},{"label":"Lesotho","value":"Lesotho","default":false},{"label":"Liberia","value":"Liberia","default":false},{"label":"Libya","value":"Libya","default":false},{"label":"Liechtenstein","value":"Liechtenstein","default":false},{"label":"Lithuania","value":"Lithuania","default":false},{"label":"Luxembourg","value":"Luxembourg","default":false},{"label":"Macao","value":"Macao","default":false},{"label":"Macedonia","value":"Macedonia","default":false},{"label":"Madagascar","value":"Madagascar","default":false},{"label":"Malawi","value":"Malawi","default":false},{"label":"Malaysia","value":"Malaysia","default":false},{"label":"Maldives","value":"Maldives","default":false},{"label":"Mali","value":"Mali","default":false},{"label":"Malta","value":"Malta","default":false},{"label":"Marshall Islands","value":"Marshall Islands","default":false},{"label":"Martinique","value":"Martinique","default":false},{"label":"Mauritania","value":"Mauritania","default":false},{"label":"Mauritius","value":"Mauritius","default":false},{"label":"Mayotte","value":"Mayotte","default":false},{"label":"Mexico","value":"Mexico","default":false},{"label":"Micronesia, Federated States of","value":"Micronesia, Federated States of","default":false},{"label":"Moldova, Republic of","value":"Moldova, Republic of","default":false},{"label":"Monaco","value":"Monaco","default":false},{"label":"Mongolia","value":"Mongolia","default":false},{"label":"Montenegro","value":"Montenegro","default":false},{"label":"Montserrat","value":"Montserrat","default":false},{"label":"Morocco","value":"Morocco","default":false},{"label":"Mozambique","value":"Mozambique","default":false},{"label":"Myanmar","value":"Myanmar","default":false},{"label":"Namibia","value":"Namibia","default":false},{"label":"Nauru","value":"Nauru","default":false},{"label":"Nepal","value":"Nepal","default":false},{"label":"Netherlands","value":"Netherlands","default":false},{"label":"New Caledonia","value":"New Caledonia","default":false},{"label":"New Zealand","value":"New Zealand","default":false},{"label":"Nicaragua","value":"Nicaragua","default":false},{"label":"Niger","value":"Niger","default":false},{"label":"Nigeria","value":"Nigeria","default":false},{"label":"Niue","value":"Niue","default":false},{"label":"Norfolk Island","value":"Norfolk Island","default":false},{"label":"Northern Mariana Islands","value":"Northern Mariana Islands","default":false},{"label":"Norway","value":"Norway","default":false},{"label":"Oman","value":"Oman","default":false},{"label":"Pakistan","value":"Pakistan","default":false},{"label":"Palau","value":"Palau","default":false},{"label":"Palestine, State of","value":"Palestine, State of","default":false},{"label":"Panama","value":"Panama","default":false},{"label":"Papua New Guinea","value":"Papua New Guinea","default":false},{"label":"Paraguay","value":"Paraguay","default":false},{"label":"Peru","value":"Peru","default":false},{"label":"Philippines","value":"Philippines","default":false},{"label":"Pitcairn","value":"Pitcairn","default":false},{"label":"Poland","value":"Poland","default":false},{"label":"Portugal","value":"Portugal","default":false},{"label":"Puerto Rico","value":"Puerto Rico","default":false},{"label":"Qatar","value":"Qatar","default":false},{"label":"Romania","value":"Romania","default":false},{"label":"Russian Federation","value":"Russian Federation","default":false},{"label":"Rwanda","value":"Rwanda","default":false},{"label":"Réunion","value":"Réunion","default":false},{"label":"Saint Barthélemy","value":"Saint Barthélemy","default":false},{"label":"Saint Helena, Ascension and Tristan da Cunha","value":"Saint Helena, Ascension and Tristan da Cunha","default":false},{"label":"Saint Kitts and Nevis","value":"Saint Kitts and Nevis","default":false},{"label":"Saint Lucia","value":"Saint Lucia","default":false},{"label":"Saint Martin (French part)","value":"Saint Martin (French part)","default":false},{"label":"Saint Pierre and Miquelon","value":"Saint Pierre and Miquelon","default":false},{"label":"Saint Vincent and the Grenadines","value":"Saint Vincent and the Grenadines","default":false},{"label":"Samoa","value":"Samoa","default":false},{"label":"San Marino","value":"San Marino","default":false},{"label":"Sao Tome and Principe","value":"Sao Tome and Principe","default":false},{"label":"Saudi Arabia","value":"Saudi Arabia","default":false},{"label":"Senegal","value":"Senegal","default":false},{"label":"Serbia","value":"Serbia","default":false},{"label":"Serbia and Montenegro","value":"Serbia and Montenegro","default":false},{"label":"Seychelles","value":"Seychelles","default":false},{"label":"Sierra Leone","value":"Sierra Leone","default":false},{"label":"Singapore","value":"Singapore","default":false},{"label":"Sint Maarten (Dutch part)","value":"Sint Maarten (Dutch part)","default":false},{"label":"Slovakia","value":"Slovakia","default":false},{"label":"Slovenia","value":"Slovenia","default":false},{"label":"Solomon Islands","value":"Solomon Islands","default":false},{"label":"Somalia","value":"Somalia","default":false},{"label":"South Africa","value":"South Africa","default":false},{"label":"South Georgia and the South Sandwich Islands","value":"South Georgia and the South Sandwich Islands","default":false},{"label":"South Sudan","value":"South Sudan","default":false},{"label":"Spain","value":"Spain","default":false},{"label":"Sri Lanka","value":"Sri Lanka","default":false},{"label":"Sudan","value":"Sudan","default":false},{"label":"Suriname","value":"Suriname","default":false},{"label":"Svalbard and Jan Mayen","value":"Svalbard and Jan Mayen","default":false},{"label":"Swaziland","value":"Swaziland","default":false},{"label":"Sweden","value":"Sweden","default":false},{"label":"Switzerland","value":"Switzerland","default":false},{"label":"Syrian Arab Republic","value":"Syrian Arab Republic","default":false},{"label":"Taiwan, Province of China","value":"Taiwan, Province of China","default":false},{"label":"Tajikistan","value":"Tajikistan","default":false},{"label":"Tanzania, United Republic of","value":"Tanzania, United Republic of","default":false},{"label":"Thailand","value":"Thailand","default":false},{"label":"Timor-Leste","value":"Timor-Leste","default":false},{"label":"Togo","value":"Togo","default":false},{"label":"Tokelau","value":"Tokelau","default":false},{"label":"Tonga","value":"Tonga","default":false},{"label":"Trinidad and Tobago","value":"Trinidad and Tobago","default":false},{"label":"Tunisia","value":"Tunisia","default":false},{"label":"Turkey","value":"Turkey","default":false},{"label":"Turkmenistan","value":"Turkmenistan","default":false},{"label":"Turks and Caicos Islands","value":"Turks and Caicos Islands","default":false},{"label":"Tuvalu","value":"Tuvalu","default":false},{"label":"Uganda","value":"Uganda","default":false},{"label":"Ukraine","value":"Ukraine","default":false},{"label":"United Arab Emirates","value":"United Arab Emirates","default":false},{"label":"United Kingdom","value":"United Kingdom","default":false},{"label":"United States","value":"United States","default":false},{"label":"United States Minor Outlying Islands","value":"United States Minor Outlying Islands","default":false},{"label":"Uruguay","value":"Uruguay","default":false},{"label":"Uzbekistan","value":"Uzbekistan","default":false},{"label":"Vanuatu","value":"Vanuatu","default":false},{"label":"Venezuela, Bolivarian Republic of","value":"Venezuela, Bolivarian Republic of","default":false},{"label":"Viet Nam","value":"Viet Nam","default":false},{"label":"Virgin Islands, British","value":"Virgin Islands, British","default":false},{"label":"Virgin Islands, U.S.","value":"Virgin Islands, U.S.","default":false},{"label":"Wallis and Futuna","value":"Wallis and Futuna","default":false},{"label":"Western Sahara","value":"Western Sahara","default":false},{"label":"Yemen","value":"Yemen","default":false},{"label":"Zambia","value":"Zambia","default":false},{"label":"Zimbabwe","value":"Zimbabwe","default":false},{"label":"Åland Islands","value":"Åland Islands","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"self_serve_name","visibility":"PUBLIC","label":"self_serve_name","required":false,"public-description":null,"validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"self_serve_need_an_invoice","visibility":"PUBLIC","label":"Do you need an invoice?","required":false,"public-description":"","validation-expression":null,"input-type":"radio","select-options":[{"label":"Yes","value":"yes","default":false},{"label":"No","value":"no","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"self_serve_personal_or_business","visibility":"PUBLIC","label":"self_serve_personal_or_business","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"Personal","value":"Personal","default":false},{"label":"Business","value":"Business","default":false}],"range-start":0,"range-end":100,"range-step":5}
80838,{"slug":"self_serve_phone_number","visibility":"PUBLIC","label":"self_serve_phone_number","required":false,"public-description":null,"validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"self_serve_postcode","visibility":"PUBLIC","label":"self_serve_postcode","required":false,"public-description":null,"validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"self_serve_vat_number","visibility":"PUBLIC","label":"self_serve_vat_number","required":false,"public-description":null,"validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"show_angel_onboard","visibility":"PUBLIC","label":"show angel onboard ","required":false,"public-description":null,"validation-expression":null,"input-type":"checkbox","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"show_pro_onboard","visibility":"PUBLIC","label":"show pro onboard","required":false,"public-description":null,"validation-expression":null,"input-type":"checkbox","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"show_pro_trial_onboard","visibility":"PUBLIC","label":"show pro trial onboard","required":false,"public-description":null,"validation-expression":null,"input-type":"checkbox","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"show_reg_onboard","visibility":"PUBLIC","label":"show reg onboard","required":false,"public-description":null,"validation-expression":null,"input-type":"checkbox","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"show_startup_onboard","visibility":"PUBLIC","label":"show startup onboard","required":false,"public-description":null,"validation-expression":null,"input-type":"checkbox","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"sifted12","visibility":"PUBLIC","label":"Profession","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"Founder / cofounder","value":"Founder / cofounder","default":false},{"label":"C-suite","value":"C-suite","default":false},{"label":"Investor (VC/private equity/angel etc)","value":"Investor (VC/private equity/angel etc)","default":false},{"label":"Corporate consultant","value":"Corporate consultant","default":false},{"label":"Startup service provider (e.g. brand agency etc)","value":"Startup service provider (e.g. brand agency etc)","default":false},{"label":"Student","value":"Student","default":false},{"label":"Academia","value":"Academia","default":false},{"label":"Startup employee (e.g. operations etc)","value":"Startup employee (e.g. operations etc)","default":false},{"label":"Policy / government","value":"Policy / government","default":false},{"label":"Media","value":"Media","default":false},{"label":"Unemployed / looking for work","value":"Unemployed / looking for work","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"sifted13","visibility":"PUBLIC","label":"Primary reason for joining","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"Stay ahead of the competition","value":"Stay ahead of the competition","default":false},{"label":"Find actionable data insights","value":"Find actionable data insights","default":false},{"label":"Hear the views of those in similar roles","value":"Hear the views of those in similar roles","default":false},{"label":"Find a community of like-minded people","value":"Find a community of like-minded people","default":false},{"label":"Support quality tech journalism","value":"Support quality tech journalism","default":false},{"label":"Understand business best practices","value":"Understand business best practices","default":false},{"label":"Understand industry/sector trends","value":"Understand industry/sector trends","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"subscriberEventCheckIn","visibility":"PUBLIC","label":"Subscriber Event Check-in","required":false,"public-description":null,"validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"talkcheckin","visibility":"PUBLIC","label":"talkCheckIn","required":false,"public-description":"","validation-expression":null,"input-type":"textarea","select-options":null,"range-start":null,"range-end":null,"range-step":null},{"slug":"talks_rsvp","visibility":"PUBLIC","label":"talksRsvp","required":false,"public-description":"","validation-expression":null,"input-type":"textarea","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"top_banner_dismissed_at","visibility":"PUBLIC","label":"Top_banner_dismissed_at","required":false,"public-description":"Top banner dismissal timestamp","validation-expression":null,"input-type":"text","select-options":null,"range-start":null,"range-end":null,"range-step":null},{"slug":"validation_last_timestamp","visibility":"PUBLIC","label":"validation_last_timestamp","required":false,"public-description":"JISC Student verification timestamp","validation-expression":null,"input-type":"text","select-options":null,"range-start":null,"range-end":null,"range-step":null},{"slug":"wants_main_newsletter","visibility":"PUBLIC","label":"Daily Newsletter","required":false,"public-description":null,"validation-expression":null,"input-type":"checkbox","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"work_country","visibility":"PUBLIC","label":"Work Country","required":false,"public-description":null,"validation-expression":null,"input-type":"select","select-options":[{"label":"Antilles","value":"Antilles","default":false},{"label":"Antigua and Barbuda","value":"Antigua and Barbuda","default":false},{"label":"Angola","value":"Angola","default":false},{"label":"Afghanistan","value":"Afghanistan","default":false},{"label":"Armenia","value":"Armenia","default":false},{"label":"Antarctica","value":"Antarctica","default":false},{"label":"Albania","value":"Albania","default":false},{"label":"Argentina","value":"Argentina","default":false},{"label":"Austria","value":"Austria","default":false},{"label":"American Samoa","value":"American Samoa","default":false},{"label":"Canada","value":"Canada","default":false},{"label":"Burkina Faso","value":"Burkina Faso","default":false},{"label":"Switzerland","value":"Switzerland","default":false},{"label":"Åland Islands","value":"Åland Islands","default":false},{"label":"France","value":"France","default":false},{"label":"Aruba","value":"Aruba","default":false},{"label":"Azerbaijan","value":"Azerbaijan","default":false},{"label":"Bahrain","value":"Bahrain","default":false},{"label":"Bosnia and Herzegovina","value":"Bosnia and Herzegovina","default":false},{"label":"Australia","value":"Australia","default":false},{"label":"Barbados","value":"Barbados","default":false},{"label":"Belgium","value":"Belgium","default":false},{"label":"Bulgaria","value":"Bulgaria","default":false},{"label":"Burundi","value":"Burundi","default":false},{"label":"Benin","value":"Benin","default":false},{"label":"Brunei Darussalam","value":"Brunei Darussalam","default":false},{"label":"Bermuda","value":"Bermuda","default":false},{"label":"Bolivia, Plurinational State of","value":"Bolivia, Plurinational State of","default":false},{"label":"Bonaire, Sint Eustatius and Saba","value":"Bonaire, Sint Eustatius and Saba","default":false},{"label":"Brazil","value":"Brazil","default":false},{"label":"Germany","value":"Germany","default":false},{"label":"Saint Barthélemy","value":"Saint Barthélemy","default":false},{"label":"Bahamas","value":"Bahamas","default":false},{"label":"Botswana","value":"Botswana","default":false},{"label":"Bouvet Island","value":"Bouvet Island","default":false},{"label":"Belarus","value":"Belarus","default":false},{"label":"Belize","value":"Belize","default":false},{"label":"Cocos (Keeling) Islands","value":"Cocos (Keeling) Islands","default":false},{"label":"Congo, the Democratic Republic of the","value":"Congo, the Democratic Republic of the","default":false},{"label":"Congo","value":"Congo","default":false},{"label":"Central African Republic","value":"Central African Republic","default":false},{"label":"Cabo Verde","value":"Cabo Verde","default":false},{"label":"Colombia","value":"Colombia","default":false},{"label":"Cameroon","value":"Cameroon","default":false},{"label":"Czech Republic","value":"Czech Republic","default":false},{"label":"Costa Rica","value":"Costa Rica","default":false},{"label":"China","value":"China","default":false},{"label":"Christmas Island","value":"Christmas Island","default":false},{"label":"Cyprus","value":"Cyprus","default":false},{"label":"Côte d'Ivoire","value":"Côte d'Ivoire","default":false},{"label":"Cuba","value":"Cuba","default":false},{"label":"Cook Islands","value":"Cook Islands","default":false},{"label":"Serbia and Montenegro","value":"Serbia and Montenegro","default":false},{"label":"Curaçao","value":"Curaçao","default":false},{"label":"Denmark","value":"Denmark","default":false},{"label":"Djibouti","value":"Djibouti","default":false},{"label":"Dominican Republic","value":"Dominican Republic","default":false},{"label":"Algeria","value":"Algeria","default":false},{"label":"Ethiopia","value":"Ethiopia","default":false},{"label":"Chile","value":"Chile","default":false},{"label":"Faroe Islands","value":"Faroe Islands","default":false},{"label":"Ecuador","value":"Ecuador","default":false},{"label":"Dominica","value":"Dominica","default":false},{"label":"Bangladesh","value":"Bangladesh","default":false},{"label":"Egypt","value":"Egypt","default":false},{"label":"Micronesia, Federated States of","value":"Micronesia, Federated States of","default":false},{"label":"Spain","value":"Spain","default":false},{"label":"Falkland Islands (Malvinas)","value":"Falkland Islands (Malvinas)","default":false},{"label":"Finland","value":"Finland","default":false},{"label":"Estonia","value":"Estonia","default":false},{"label":"Gabon","value":"Gabon","default":false},{"label":"Bhutan","value":"Bhutan","default":false},{"label":"Western Sahara","value":"Western Sahara","default":false},{"label":"Fiji","value":"Fiji","default":false},{"label":"Eritrea","value":"Eritrea","default":false},{"label":"Andorra","value":"Andorra","default":false},{"label":"United Kingdom","value":"United Kingdom","default":false},{"label":"Grenada","value":"Grenada","default":false},{"label":"Georgia","value":"Georgia","default":false},{"label":"French Guiana","value":"French Guiana","default":false},{"label":"Guernsey","value":"Guernsey","default":false},{"label":"Ghana","value":"Ghana","default":false},{"label":"Gibraltar","value":"Gibraltar","default":false},{"label":"Greenland","value":"Greenland","default":false},{"label":"Gambia","value":"Gambia","default":false},{"label":"Guinea","value":"Guinea","default":false},{"label":"Guadeloupe","value":"Guadeloupe","default":false},{"label":"Equatorial Guinea","value":"Equatorial Guinea","default":false},{"label":"Greece","value":"Greece","default":false},{"label":"South Georgia and the South Sandwich Islands","value":"South Georgia and the South Sandwich Islands","default":false},{"label":"Guatemala","value":"Guatemala","default":false},{"label":"Guam","value":"Guam","default":false},{"label":"Guinea-Bissau","value":"Guinea-Bissau","default":false},{"label":"Guyana","value":"Guyana","default":false},{"label":"Hong Kong","value":"Hong Kong","default":false},{"label":"Heard Island and McDonald Islands","value":"Heard Island and McDonald Islands","default":false},{"label":"Honduras","value":"Honduras","default":false},{"label":"Croatia","value":"Croatia","default":false},{"label":"Haiti","value":"Haiti","default":false},{"label":"Hungary","value":"Hungary","default":false},{"label":"Indonesia","value":"Indonesia","default":false},{"label":"Ireland","value":"Ireland","default":false},{"label":"Israel","value":"Israel","default":false},{"label":"Isle of Man","value":"Isle of Man","default":false},{"label":"India","value":"India","default":false},{"label":"British Indian Ocean Territory","value":"British Indian Ocean Territory","default":false},{"label":"Iraq","value":"Iraq","default":false}
80838,{"label":"Iran, Islamic Republic of","value":"Iran, Islamic Republic of","default":false},{"label":"Iceland","value":"Iceland","default":false},{"label":"Italy","value":"Italy","default":false},{"label":"Jersey","value":"Jersey","default":false},{"label":"Jamaica","value":"Jamaica","default":false},{"label":"Jordan","value":"Jordan","default":false},{"label":"Japan","value":"Japan","default":false},{"label":"Kenya","value":"Kenya","default":false},{"label":"Kyrgyzstan","value":"Kyrgyzstan","default":false},{"label":"Cambodia","value":"Cambodia","default":false},{"label":"Kiribati","value":"Kiribati","default":false},{"label":"Comoros","value":"Comoros","default":false},{"label":"Saint Kitts and Nevis","value":"Saint Kitts and Nevis","default":false},{"label":"Korea, Democratic People's Republic of","value":"Korea, Democratic People's Republic of","default":false},{"label":"Korea, Republic of","value":"Korea, Republic of","default":false},{"label":"Kuwait","value":"Kuwait","default":false},{"label":"Cayman Islands","value":"Cayman Islands","default":false},{"label":"Kazakhstan","value":"Kazakhstan","default":false},{"label":"Lao People's Democratic Republic","value":"Lao People's Democratic Republic","default":false},{"label":"Lebanon","value":"Lebanon","default":false},{"label":"Saint Lucia","value":"Saint Lucia","default":false},{"label":"Liechtenstein","value":"Liechtenstein","default":false},{"label":"Sri Lanka","value":"Sri Lanka","default":false},{"label":"Liberia","value":"Liberia","default":false},{"label":"Lesotho","value":"Lesotho","default":false},{"label":"Lithuania","value":"Lithuania","default":false},{"label":"Luxembourg","value":"Luxembourg","default":false},{"label":"Latvia","value":"Latvia","default":false},{"label":"Libya","value":"Libya","default":false},{"label":"Morocco","value":"Morocco","default":false},{"label":"Monaco","value":"Monaco","default":false},{"label":"Moldova, Republic of","value":"Moldova, Republic of","default":false},{"label":"Montenegro","value":"Montenegro","default":false},{"label":"Saint Martin (French part)","value":"Saint Martin (French part)","default":false},{"label":"Madagascar","value":"Madagascar","default":false},{"label":"Marshall Islands","value":"Marshall Islands","default":false},{"label":"Macedonia, the former Yugoslav Republic of","value":"Macedonia, the former Yugoslav Republic of","default":false},{"label":"Mali","value":"Mali","default":false},{"label":"Myanmar","value":"Myanmar","default":false},{"label":"Mongolia","value":"Mongolia","default":false},{"label":"Macao","value":"Macao","default":false},{"label":"Northern Mariana Islands","value":"Northern Mariana Islands","default":false},{"label":"Martinique","value":"Martinique","default":false},{"label":"Mauritania","value":"Mauritania","default":false},{"label":"Montserrat","value":"Montserrat","default":false},{"label":"Malta","value":"Malta","default":false},{"label":"Mauritius","value":"Mauritius","default":false},{"label":"Maldives","value":"Maldives","default":false},{"label":"Malawi","value":"Malawi","default":false},{"label":"Mexico","value":"Mexico","default":false},{"label":"Malaysia","value":"Malaysia","default":false},{"label":"Mozambique","value":"Mozambique","default":false},{"label":"Namibia","value":"Namibia","default":false},{"label":"New Caledonia","value":"New Caledonia","default":false},{"label":"Niger","value":"Niger","default":false},{"label":"Norfolk Island","value":"Norfolk Island","default":false},{"label":"Nigeria","value":"Nigeria","default":false},{"label":"Nicaragua","value":"Nicaragua","default":false},{"label":"Netherlands","value":"Netherlands","default":false},{"label":"Norway","value":"Norway","default":false},{"label":"Nepal","value":"Nepal","default":false},{"label":"Nauru","value":"Nauru","default":false},{"label":"Niue","value":"Niue","default":false},{"label":"New Zealand","value":"New Zealand","default":false},{"label":"Oman","value":"Oman","default":false},{"label":"Panama","value":"Panama","default":false},{"label":"Peru","value":"Peru","default":false},{"label":"French Polynesia","value":"French Polynesia","default":false},{"label":"Papua New Guinea","value":"Papua New Guinea","default":false},{"label":"Philippines","value":"Philippines","default":false},{"label":"Pakistan","value":"Pakistan","default":false},{"label":"Poland","value":"Poland","default":false},{"label":"Saint Pierre and Miquelon","value":"Saint Pierre and Miquelon","default":false},{"label":"Pitcairn","value":"Pitcairn","default":false},{"label":"Puerto Rico","value":"Puerto Rico","default":false},{"label":"Palestine, State of","value":"Palestine, State of","default":false},{"label":"Portugal","value":"Portugal","default":false},{"label":"Palau","value":"Palau","default":false},{"label":"Paraguay","value":"Paraguay","default":false},{"label":"Qatar","value":"Qatar","default":false},{"label":"Réunion","value":"Réunion","default":false},{"label":"Romania","value":"Romania","default":false},{"label":"Serbia","value":"Serbia","default":false},{"label":"Russian Federation","value":"Russian Federation","default":false},{"label":"Rwanda","value":"Rwanda","default":false},{"label":"Saudi Arabia","value":"Saudi Arabia","default":false},{"label":"Solomon Islands","value":"Solomon Islands","default":false},{"label":"Seychelles","value":"Seychelles","default":false},{"label":"Sudan","value":"Sudan","default":false},{"label":"Sweden","value":"Sweden","default":false},{"label":"Singapore","value":"Singapore","default":false},{"label":"Saint Helena, Ascension and Tristan da Cunha","value":"Saint Helena, Ascension and Tristan da Cunha","default":false},{"label":"Slovenia","value":"Slovenia","default":false},{"label":"Svalbard and Jan Mayen","value":"Svalbard and Jan Mayen","default":false},{"label":"Slovakia","value":"Slovakia","default":false},{"label":"Sierra Leone","value":"Sierra Leone","default":false},{"label":"San Marino","value":"San Marino","default":false},{"label":"Senegal","value":"Senegal","default":false},{"label":"Somalia","value":"Somalia","default":false},{"label":"Suriname","value":"Suriname","default":false},{"label":"South Sudan","value":"South Sudan","default":false},{"label":"Sao Tome and Principe","value":"Sao Tome and Principe","default":false},{"label":"El Salvador","value":"El Salvador","default":false},{"label":"Sint Maarten (Dutch part)","value":"Sint Maarten (Dutch part)","default":false},{"label":"Syrian Arab Republic","value":"Syrian Arab Republic","default":false},{"label":"Swaziland","value":"Swaziland","default":false},{"label":"Turks and Caicos Islands","value":"Turks and Caicos Islands","default":false},{"label":"Chad","value":"Chad","default":false},{"label":"French Southern Territories","value":"French Southern Territories","default":false},{"label":"Togo","value":"Togo","default":false},{"label":"Thailand","value":"Thailand","default":false},{"label":"Tajikistan","value":"Tajikistan","default":false},{"label":"Tokelau","value":"Tokelau","default":false},{"label":"Timor-Leste","value":"Timor-Leste","default":false},{"label":"Turkmenistan","value":"Turkmenistan","default":false},{"label":"Tunisia","value":"Tunisia","default":false},{"label":"Tonga","value":"Tonga","default":false},{"label":"Turkey","value":"Turkey","default":false},{"label":"Trinidad and Tobago","value":"Trinidad and Tobago","default":false},{"label":"Tuvalu","value":"Tuvalu","default":false},{"label":"Taiwan, Province of China","value":"Taiwan, Province of China","default":false},{"label":"Tanzania, United Republic of","value":"Tanzania, United Republic of","default":false},{"label":"Ukraine","value":"Ukraine","default":false},{"label":"Uganda","value":"Uganda","default":false},{"label":"United Arab Emirates","value":"United Arab Emirates","default":false},{"label":"United States Minor Outlying Islands","value":"United States Minor Outlying Islands","default":false},{"label":"United States","value":"United States","default":false},{"label":"Uruguay","value":"Uruguay","default":false},{"label":"Uzbekistan","value":"Uzbekistan","default":false},{"label":"Holy See (Vatican City State)","value":"Holy See (Vatican City State)","default":false},{"label":"Saint Vincent and the Grenadines","value":"Saint Vincent and the Grenadines","default":false},{"label":"Venezuela, Bolivarian Republic of","value":"Venezuela, Bolivarian Republic of","default":false},{"label":"Virgin Islands, British","value":"Virgin Islands, British","default":false},{"label":"Virgin Islands, U.S.","value":"Virgin Islands, U.S.","default":false},{"label":"Viet Nam","value":"Viet Nam","default":false},{"label":"Vanuatu","value":"Vanuatu","default":false},{"label":"Wallis and Futuna","value":"Wallis and Futuna","default":false},{"label":"Samoa","value":"Samoa","default":false},{"label":"Kosovo","value":"Kosovo","default":false},{"label":"Yemen","value":"Yemen","default":false},{"label":"Mayotte","value":"Mayotte","default":false},{"label":"South Africa","value":"South Africa","default":false},{"label":"Zambia","value":"Zambia","default":false},{"label":"Zimbabwe","value":"Zimbabwe","default":false}],"range-start":0,"range-end":100,"range-step":5},{"slug":"would_like_digital_event","visibility":"PUBLIC","label":"would like digital event","required":false,"public-description":null,"validation-expression":null,"input-type":"checkbox","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"would_like_in_person_event","visibility":"PUBLIC","label":"would like in-person event","required":false,"public-description":null,"validation-expression":null,"input-type":"checkbox","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"would-like-deeptech-newsletter","visibility":"PUBLIC","label":"AI & Deeptech Newsletter","required":false,"public-description":"","validation-expression":null,"input-type":"checkbox","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"would-like-event-newsletter","visibility":"PUBLIC","label":"Sifted Updates","required":false,"public-description":null,"validation-expression":null,"input-type":"checkbox","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"would-like-fintech-newsletter","visibility":"PUBLIC","label":"Fintech Newsletter","required":false,"public-description":null,"validation-expression":null,"input-type":"checkbox","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"would-like-futureproof-newsletter","visibility":"PUBLIC","label":"Up Round Newsletter","required":false,"public-description":null,"validation-expression":null,"input-type":"checkbox","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"would-like-member-newsletter","visibility":"PUBLIC","label":"Sifted Members","required":false,"public-description":null,"validation-expression":null,"input-type":"checkbox","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"would-like-scoop-newsletter","visibility":"PUBLIC","label":"The Scoop","required":false,"public-description":"","validation-expression":null,"input-type":"checkbox","select-options":null,"range-start":0,"range-end":100,"range-step":5}
80838,{"slug":"would-like-startup-life-newsletter","visibility":"PUBLIC","label":"Startup Life Newsletter","required":false,"public-description":null,"validation-expression":null,"input-type":"checkbox","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"would-like-sustainability-newsletter","visibility":"PUBLIC","label":"Climate Tech Newsletter","required":false,"public-description":null,"validation-expression":null,"input-type":"checkbox","select-options":null,"range-start":0,"range-end":100,"range-step":5},{"slug":"wp_username","visibility":"PUBLIC","label":"wp_username","required":false,"public-description":null,"validation-expression":null,"input-type":"text","select-options":null,"range-start":0,"range-end":100,"range-step":5}],"siteStyles":"{\"color\":{\"text\":{\"main\":\"#000000\",\"tinted\":\"#333333\"},\"background\":{\"main\":\"#FFFFFF\",\"tinted\":\"#cccccc\"},\"accent\":{\"main\":\"#d81c5f\",\"tinted\":\"#e6417b\"},\"action\":{\"main\":\"#2322ff\",\"tinted\":\"#0000ee\"},\"warning\":{\"main\":\"#D90B00\",\"tinted\":\"#ff190d\"}},\"typography\":{\"title\":{\"font\":\"Roboto\",\"fallbackFont\":\"sans-serif\"},\"body\":{\"font\":\"Roboto\",\"fallbackFont\":\"sans-serif\"}},\"button\":{\"fontWeight\":\"normal\",\"fontSize\":\"16\",\"borderWidth\":\"0\",\"borderRadius\":\"9\",\"height\":\"50\"},\"input\":{\"borderColor\":\"#333333\",\"borderWidth\":\"1\",\"borderRadius\":\"5\",\"height\":\"50\"}}","twoFactorEmailAuthenticationEnabled":false,"requireEmailVerfication":true,"hideConfirmPasswordOnRegForm":false,"passwordStrengthRequirements":{"minLength":8,"requireUppercase":false,"requireNumbers":false,"requireSpecialCharacters":false},"ruleAnalyticsEnabled":true,"paymentProvider":"stripe","braintreeSandboxEnv":true,"braintreeMobilePaymentConfig":null,"stripeMobilePaymentConfig":"{\"apple\":{\"countryCode\":\"GB\"},\"google\":{\"countryCode\":\"GB\"}}","stripeAutomaticTaxEnabled":false,"dataLayerName":"ZephrDataLayer","trackFormDataLayerEvents":false,"recaptchaV2Enabled":false,"recaptchaV2SiteKey":null}}));
80839                                </script>
80839<script type="text/javascript">
80840        if (!window.Zephr) window.Zephr = {};
80841        if (!window.Zephr.outcomes) window.Zephr.outcomes = {};
80842        window.Zephr.outcomes["checkout-registration-form"] = {
80843            featureLabel: "Checkout registration form",
80844            outcomeId: "transformation/1",
80845            outcomeLabel: "Show checkout registration form"
80846        };
80847    </script>
80847</div></div></div></div></div></div></div><div class="overflow-x-hidden"><div class="flex h-[60px] w-full items-center border-b border-black-rock bg-[#F4F4F6] md:hidden"><div class="flex w-full items-center justify-between px-5"><div class="flex items-center gap-[10px]"><div class="h-[24px] w-[24px] animate-pulse rounded bg-gray-200"></div><div class="flex h-[40px] w-auto items-center"><a aria-label="Go to Homepage" class="ga-nav-logo m-0 flex focus:outline-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-cerise focus-visible:ring-offset-4 focus-visible:ring-offset-[#F6F6F6]" href="/"><span class="text-black-rock"><svg width="135" height="36" viewBox="0 0 135 36" fill="none" xmlns="http://www.w3.org/2000/svg" class="h-full w-full"><path d="M0 0L13.7259 36H16.2535L2.5276 0H0Z" fill="#DA145E"></path><path d="M29.2884 18.0037C30.1066 18.2756 30.8562 18.5533 31.5372 18.8369C32.1747 19.0957 32.7747 19.4382 33.3213 19.8552C33.8184 20.2372 34.2247 20.7239 34.511 21.2805C34.81 21.8984 34.9567 22.5784 34.9388 23.2641V23.3009C34.9813 24.1293 34.8345 24.9564 34.5093 25.72C34.1841 26.4837 33.6892 27.1637 33.0617 27.709C31.8098 28.7699 30.0564 29.3006 27.8014 29.3011C26.3818 29.2997 24.9732 29.0533 23.6379 28.573C22.263 28.0809 20.9718 27.382 19.8093 26.5005L19.7717 26.463L19.8093 26.4255L22.3369 22.4508L22.3745 22.4876C23.0834 23.2538 23.944 23.8655 24.9021 24.2839C25.8524 24.6928 26.8776 24.9007 27.9128 24.8944C29.3747 24.8944 30.1058 24.4264 30.1063 23.4904C30.1051 23.2723 30.0367 23.0598 29.9103 22.8816C29.784 22.7034 29.6057 22.5682 29.3997 22.4942C28.8578 22.2454 28.2988 22.0352 27.7269 21.8653C27.6135 21.8201 27.4948 21.7893 27.3737 21.7735C27.2524 21.7592 27.1337 21.728 27.0211 21.6809C26.2777 21.485 25.5342 21.2697 24.7907 21.0351C24.0774 20.8159 23.4008 20.4923 22.7831 20.0748C22.1879 19.6669 21.6874 19.1365 21.3154 18.5195C20.9034 17.7812 20.7041 16.944 20.7393 16.1001V16.0267C20.7292 15.2133 20.8939 14.4072 21.2224 13.6624C21.5403 12.9542 22.0098 12.3238 22.598 11.8154C23.2298 11.2773 23.9626 10.8695 24.7539 10.6157C25.6536 10.3231 26.5954 10.1794 27.5418 10.1903C28.7635 10.1951 29.9781 10.376 31.1477 10.7273C32.3482 11.0795 33.4885 11.6101 34.5302 12.301V12.3745L32.2629 16.4844L32.226 16.4477C31.6202 15.8572 30.8989 15.397 30.107 15.0958C29.2549 14.7611 28.3464 14.5916 27.4305 14.5962C27.2318 14.5978 27.0333 14.6103 26.836 14.6337C26.6215 14.6554 26.4131 14.718 26.2223 14.8181C26.0413 14.9131 25.8829 15.0456 25.7577 15.2068C25.6215 15.4086 25.5562 15.6496 25.5718 15.8922C25.5747 16.0091 25.6026 16.124 25.6534 16.2294C25.7043 16.3348 25.777 16.4282 25.8668 16.5035C26.0962 16.7096 26.3525 16.8838 26.6287 17.0215C26.967 17.1951 27.3147 17.3498 27.6702 17.485C28.0537 17.632 28.4316 17.7677 28.8038 17.8921C28.8855 17.8933 28.9666 17.9057 29.045 17.9288C29.132 17.9538 29.2124 17.9788 29.2869 18.0023" fill="#DA145E"></path><path d="M36.7967 10.487H41.7383V29.0013H36.7967V10.487ZM36.7967 3.0813H41.7383V7.41599H36.7967V3.0813Z" fill="#DA145E"></path><path d="M51.8141 13.6712H57.2786V17.7796H54.0821L51.8141 13.6712ZM57.2786 3.08061V7.4153H53.2265C52.9359 7.40203 52.6467 7.46305 52.3864 7.59255C52.1262 7.72204 51.9035 7.91571 51.7396 8.15514C51.3609 8.76492 51.1794 9.47582 51.2196 10.1917V28.9999H46.278V17.7796H43.5992V13.6712H46.2758V9.96836C46.2712 9.05239 46.4544 8.14513 46.8142 7.30216C47.5164 5.6397 48.8441 4.31716 50.513 3.61767C51.3715 3.25693 52.2948 3.07419 53.2265 3.08061H57.2786Z" fill="#DA145E"></path><path d="M72.0733 12.4164V16.5262H69.3229L67.0181 12.4164H72.0733ZM66.386 22.6698C66.3813 22.9397 66.4335 23.2077 66.5392 23.4564C66.6449 23.705 66.8018 23.9289 66.9996 24.1134C67.192 24.3051 67.421 24.4563 67.6731 24.5582C67.9252 24.66 68.1953 24.7104 68.4674 24.7063H72.0733V29.0013H68.4674C67.5307 29.0069 66.6026 28.8242 65.7384 28.4643C64.9031 28.1214 64.1438 27.6181 63.5036 26.9831C62.8681 26.3485 62.3575 25.6009 61.9983 24.7791C61.6236 23.9272 61.4336 23.0061 61.4407 22.0761V16.5218H58.7656V12.4164H61.4422V5.71008H66.3838L66.386 22.6698Z" fill="#DA145E"></path><path d="M82.2958 10.1901C83.5744 10.1833 84.8404 10.442 86.0131 10.9498C88.3102 11.9295 90.1405 13.7525 91.1243 16.0405C91.6361 17.2211 91.8956 18.4949 91.8862 19.7808C91.8886 20.4779 91.8144 21.1732 91.665 21.8541L91.6273 21.9276H82.1866L79.8036 18.1513H86.8664C86.5453 17.1533 85.9457 16.2671 85.1376 15.596C84.3414 14.933 83.3319 14.5782 82.2943 14.5968C81.6401 14.5935 80.993 14.7321 80.3981 15.0031C79.8182 15.263 79.2944 15.6326 78.8558 16.
808470912C78.4123 16.5611 78.0651 17.1126 77.8336 17.7149C77.5819 18.3681 77.4568 19.0629 77.4648 19.7625C77.471 20.3617 77.5844 20.9551 77.7996 21.5147C78.0207 22.1151 78.348 22.6712 78.7658 23.1567C79.196 23.6556 79.712 24.0741 80.2896 24.3925C80.904 24.7295 81.596 24.9011 82.2973 24.8906C82.9229 24.8979 83.5456 24.8041 84.1412 24.6129C84.7803 24.3657 85.3306 23.9335 85.721 23.372L85.7579 23.3353L85.8316 23.372L90.1434 25.2639L90.0696 25.3373C89.192 26.5704 88.0243 27.5704 86.6688 28.2496C85.3177 28.9411 83.8199 29.2999 82.3009 29.2959C81.0059 29.3042 79.7225 29.0521 78.5276 28.5545C77.3814 28.0821 76.3395 27.3902 75.4609 26.518C74.586 25.6452 73.8852 24.6151 73.3957 23.4822C72.886 22.3141 72.6265 21.053 72.6338 19.7794C72.6242 18.4934 72.8837 17.2196 73.3957 16.039C74.3795 13.7446 76.2184 11.9198 78.5254 10.9483C79.7172 10.439 81.0019 10.1804 82.2987 10.1887" fill="#DA145E"></path><path d="M113.744 3.08057V29.0006H108.762L108.8 19.7067C108.803 19.0293 108.657 18.3596 108.372 17.7443C108.1 17.1456 107.722 16.6002 107.257 16.1339C106.789 15.6709 106.233 15.3054 105.622 15.059C104.979 14.798 104.29 14.666 103.596 14.6704C102.907 14.6647 102.224 14.7969 101.588 15.059C100.981 15.3106 100.431 15.6823 99.9713 16.1515C99.5101 16.6244 99.1385 17.1764 98.8746 17.7811C98.605 18.4134 98.466 19.0935 98.466 19.7805C98.466 20.4676 98.605 21.1476 98.8746 21.78C99.3986 22.9936 100.37 23.9609 101.588 24.4829C102.221 24.7579 102.905 24.8969 103.596 24.8907C103.944 24.8911 104.292 24.8665 104.636 24.8172C104.972 24.7721 105.299 24.6729 105.603 24.5233H105.676L107.498 27.8559L107.46 27.8926C106.178 28.8538 104.604 29.3504 103 29.3003C101.738 29.3079 100.487 29.0663 99.3194 28.5895C98.1518 28.1127 97.0907 27.4102 96.1973 26.5224C95.3224 25.6497 94.6216 24.6196 94.1321 23.4867C93.6294 22.3164 93.3702 21.0567 93.3702 19.7838C93.3702 18.5109 93.6294 17.2513 94.1321 16.081C94.6218 14.948 95.3226 13.9177 96.1973 13.0445C97.0906 12.1567 98.1517 11.4542 99.3194 10.9775C100.487 10.5008 101.738 10.2594 103 10.2673C104.126 10.2101 105.249 10.4382 106.263 10.9303C107.277 11.4223 108.15 12.1623 108.799 13.0812V3.08057H113.744Z" fill="#DA145E"></path><path d="M132.472 0L118.747 36H121.274L135 0H132.472Z" fill="#DA145E"></path></svg></span></a></div></div><div class="flex items-center"><div class="flex items-center gap-3"><div class="h-[24px] w-[24px] animate-pulse rounded bg-gray-200"></div><div class="bg-black-rock/20 h-4 w-[2px]"></div><div class="flex flex-shrink-0 items-center"><div class="flex"><div class="hidden md:flex"><div class="h-[30px] w-[80px] animate-pulse rounded bg-gray-200"></div></div><div class="ml-[10px] hidden md:flex"><div class="h-[30px] w-[60px] animate-pulse rounded bg-gray-200"></div></div><div class="flex md:hidden"><div class="h-[30px] w-[60px] animate-pulse rounded bg-gray-200"></div></div></div></div></div></div></div></div><div class="hidden h-[100px] w-full flex-col border-b border-black-rock bg-[#F4F4F6] md:flex lg:hidden"><div class="relative flex h-[60px] items-center justify-between px-5"><div class="flex flex-shrink-0 items-center gap-2"><div class="h-[24px] w-[24px] animate-pulse rounded bg-gray-200"></div><div class="h-[24px] w-[24px] animate-pulse rounded bg-gray-200"></div></div><div class="absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 pt-2"><a aria-label="Go to Homepage" class="ga-nav-logo m-0 flex focus:outline-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-cerise focus-visible:ring-offset-4 focus-visible:ring-offset-[#F6F6F6]" href="/"><span class="text-black-rock"><svg width="150" height="40" viewBox="0 0 150 40" fill="none" xmlns="http://www.w3.org/2000/svg" class="h-full w-full"><path d="M0 0L15.251 40H18.0595L2.80845 0H0Z" fill="#DA145E"></path><path d="M32.5426 20.004C33.4517 20.3061 34.2846 20.6147 35.0413 20.9298C35.7497 21.2173 36.4164 21.5978 37.0237 22.0612C37.576 22.4857 38.0274 23.0264 38.3455 23.6449C38.6778 24.3314 38.8407 25.087 38.8208 25.8489V25.8898C38.8681 26.8102 38.7049 27.7293 38.3436 28.5777C37.9824 29.4262 37.4324 30.1818 36.7352 30.7877C35.3442 31.9665 33.396 32.5562 30.8905 32.5567C29.3131 32.5551 27.748 32.2814 26.2644 31.7477C24.7366 31.2009 23.302 30.4243 22.0103 29.4449L21.9685 29.4032L22.0103 29.3616L24.8188 24.9453L24.8605 24.9861C25.6482 25.8375 26.6045 26.5171 27.669 26.982C28.7249 27.4363 29.864 27.6673 31.0142 27.
808476604C32.6385 27.6604 33.4509 27.1404 33.4514 26.1004C33.4501 25.858 33.3741 25.6219 33.2337 25.4239C33.0933 25.2259 32.8952 25.0757 32.6664 24.9934C32.0642 24.717 31.4431 24.4835 30.8077 24.2947C30.6816 24.2445 30.5498 24.2102 30.4152 24.1926C30.2804 24.1768 30.1485 24.1421 30.0234 24.0898C29.1974 23.8721 28.3713 23.6329 27.5453 23.3722C26.7527 23.1287 26.0009 22.7691 25.3146 22.3053C24.6532 21.852 24.0971 21.2627 23.6837 20.5771C23.226 19.7568 23.0045 18.8266 23.0437 17.8889V17.8073C23.0324 16.9035 23.2154 16.0078 23.5805 15.1804C23.9336 14.3935 24.4553 13.693 25.1089 13.1281C25.8109 12.5302 26.6251 12.0771 27.5043 11.7951C28.504 11.47 29.5504 11.3103 30.602 11.3224C31.9594 11.3278 33.3089 11.5288 34.6086 11.9191C35.9425 12.3105 37.2095 12.9 38.3668 13.6677V13.7494L35.8477 18.3159L35.8067 18.2751C35.1335 17.619 34.3321 17.1077 33.4523 16.773C32.5054 16.4011 31.496 16.2127 30.4783 16.2179C30.2575 16.2196 30.037 16.2335 29.8177 16.2596C29.5794 16.2837 29.3479 16.3532 29.1359 16.4645C28.9348 16.57 28.7588 16.7172 28.6196 16.8963C28.4683 17.1205 28.3957 17.3883 28.4131 17.6579C28.4164 17.7878 28.4473 17.9155 28.5038 18.0326C28.5603 18.1497 28.6411 18.2535 28.7409 18.3371C28.9957 18.5661 29.2805 18.7597 29.5875 18.9126C29.9633 19.1055 30.3496 19.2775 30.7446 19.4277C31.1707 19.591 31.5906 19.7417 32.0042 19.88C32.095 19.8813 32.1851 19.8951 32.2722 19.9208C32.3689 19.9485 32.4582 19.9763 32.541 20.0024" fill="#DA145E"></path><path d="M40.8852 11.6523H46.3759V32.2237H40.8852V11.6523ZM40.8852 3.42371H46.3759V8.24003H40.8852V3.42371Z" fill="#DA145E"></path><path d="M57.5712 15.1903H63.6429V19.7552H60.0912L57.5712 15.1903ZM63.6429 3.42291V8.23924H59.1406C58.8177 8.22449 58.4963 8.29229 58.2072 8.43618C57.918 8.58006 57.6706 8.79525 57.4884 9.06128C57.0677 9.73881 56.866 10.5287 56.9107 11.3241V32.2221H51.42V19.7552H48.4435V15.1903H51.4175V11.076C51.4125 10.0582 51.616 9.05015 52.0158 8.11352C52.796 6.26635 54.2712 4.79686 56.1256 4.01965C57.0795 3.61882 58.1053 3.41578 59.1406 3.42291H63.6429Z" fill="#DA145E"></path><path d="M80.0814 13.7959V18.3624H77.0255L74.4645 13.7959H80.0814ZM73.7622 25.1886C73.757 25.4886 73.815 25.7863 73.9324 26.0626C74.0499 26.3389 74.2241 26.5876 74.444 26.7926C74.6577 27.0056 74.9122 27.1737 75.1923 27.2868C75.4725 27.4 75.7726 27.456 76.0748 27.4514H80.0814V32.2237H76.0748C75.0341 32.2298 74.0028 32.0268 73.0427 31.6269C72.1146 31.246 71.2708 30.6868 70.5596 29.9812C69.8534 29.276 69.2861 28.4454 68.8869 27.5322C68.4707 26.5857 68.2596 25.5623 68.2674 24.529V18.3575H65.295V13.7959H68.269V6.34448H73.7597L73.7622 25.1886Z" fill="#DA145E"></path><path d="M91.4397 11.3224C92.8604 11.3148 94.2671 11.6022 95.5701 12.1665C98.1224 13.255 100.156 15.2805 101.249 17.8228C101.818 19.1346 102.106 20.5499 102.096 21.9787C102.098 22.7533 102.016 23.5257 101.85 24.2824L101.808 24.364H91.3185L88.6706 20.1681H96.5182C96.1614 19.0593 95.4952 18.0745 94.5973 17.3289C93.7127 16.5922 92.591 16.198 91.4381 16.2187C90.7112 16.215 89.9922 16.369 89.3311 16.6702C88.6868 16.959 88.1049 17.3695 87.6176 17.8791C87.1248 18.4012 86.739 19.014 86.4817 19.6832C86.2021 20.409 86.0631 21.181 86.072 21.9583C86.0788 22.6242 86.2048 23.2835 86.444 23.9053C86.6897 24.5724 87.0533 25.1903 87.5176 25.7297C87.9955 26.284 88.5689 26.749 89.2107 27.1028C89.8934 27.4772 90.6622 27.668 91.4414 27.6563C92.1366 27.6643 92.8284 27.5601 93.4901 27.3477C94.2004 27.073 94.8117 26.5928 95.2455 25.9689L95.2865 25.9281L95.3685 25.9689L100.159 28.071L100.077 28.1526C99.1023 29.5227 97.8048 30.6338 96.2986 31.3885C94.7974 32.1568 93.1332 32.5555 91.4455 32.551C90.0065 32.5602 88.5805 32.2801 87.2529 31.7273C85.9793 31.2024 84.8216 30.4336 83.8454 29.4644C82.8733 28.4947 82.0947 27.3501 81.5508 26.0914C80.9844 24.7935 80.6961 23.3922 80.7042 21.9771C80.6935 20.5483 80.9818 19.1329 81.5508 17.8212C82.6439 15.2718 84.6871 13.2442 87.2504 12.1649C88.5747 11.5989 90.002 11.3116 91.443 11.3208" fill="#DA145E"></path><path d="M126.382 3.42285V32.2228H120.847L120.889 21.8963C120.892 21.1437 120.73 20.3995 120.413 19.7159C120.111 19.0507 119.691 18.4447 119.174 17.9265C118.654 17.4121 118.037 17.0061 117.358 16.7322C116.643 16.4423 115.878 16.2955 115.106 16.3004C114.341 16.2941 113.583 16.4409 112.876 16.7322C112.201 17.0118 111.59 17.4247 111.079 17.9461C110.567 18.4715 110.154 19.0849 109.861 19.7567C109.561 20.4594 109.407 21.215 109.407 21.9784C109.407 22.7418 109.561 23.4973 109.861 24.2C110.443 25.5484 111.522 26.6232 112.876 27.2033C113.579 27.5088 114.339 27.6632 115.106 27.6563C115.493 27.6567 115.88 27.6294 116.263 27.5747C116.636 27.5246 116.999 27.4143 11
808477.336 27.2482H117.418L119.442 30.951L119.401 30.9918C117.975 32.0598 116.227 32.6115 114.444 32.5559C113.042 32.5643 111.652 32.2959 110.355 31.7661C109.058 31.2364 107.879 30.4557 106.886 29.4694C105.914 28.4996 105.135 27.3551 104.591 26.0963C104.033 24.796 103.745 23.3964 103.745 21.982C103.745 20.5677 104.033 19.1681 104.591 17.8677C105.135 16.6089 105.914 15.4641 106.886 14.4939C107.878 13.5074 109.058 12.7268 110.355 12.1972C111.652 11.6675 113.042 11.3994 114.444 11.4082C115.696 11.3446 116.943 11.598 118.07 12.1447C119.197 12.6915 120.167 13.5137 120.888 14.5347V3.42285H126.382Z" fill="#DA145E"></path><path d="M147.191 0L131.941 40H134.749L150 0H147.191Z" fill="#DA145E"></path></svg></span></a></div><div class="flex flex-shrink-0 items-center gap-4"><div class="flex flex-shrink-0 items-center"><div class="flex"><div class="hidden md:flex"><div class="h-[30px] w-[80px] animate-pulse rounded bg-gray-200"></div></div><div class="ml-[10px] hidden md:flex"><div class="h-[30px] w-[60px] animate-pulse rounded bg-gray-200"></div></div><div class="flex md:hidden"><div class="h-[30px] w-[60px] animate-pulse rounded bg-gray-200"></div></div></div></div></div></div><div class="flex h-[40px] items-center justify-center"><div class="flex justify-center space-x-6"><div class="h-4 w-16 animate-pulse rounded bg-gray-200"></div><div class="h-4 w-16 animate-pulse rounded bg-gray-200"></div><div class="h-4 w-16 animate-pulse rounded bg-gray-200"></div><div class="h-4 w-16 animate-pulse rounded bg-gray-200"></div><div class="h-4 w-16 animate-pulse rounded bg-gray-200"></div><div class="h-4 w-16 animate-pulse rounded bg-gray-200"></div><div class="h-4 w-16 animate-pulse rounded bg-gray-200"></div><div class="h-4 w-16 animate-pulse rounded bg-gray-200"></div></div></div></div><div class="hidden w-full border-b border-black-rock bg-[#F4F6F6] lg:block"><div class="container relative z-10 m-auto flex h-[106px] w-full max-w-full flex-col px-5 lg:max-w-[1260px]"><div class="flex w-full items-center justify-between pt-4"><div class="flex items-center gap-[10px]"><div class="h-[24px] w-[24px] animate-pulse rounded bg-gray-200"></div><div class="h-[24px] w-[24px] animate-pulse rounded bg-gray-200"></div></div><div class="absolute left-1/2 top-[10px] -translate-x-1/2"><a aria-label="Go to Homepage" class="ga-nav-logo m-0 flex focus:outline-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-cerise focus-visible:ring-offset-4 focus-visible:ring-offset-[#F6F6F6]" href="/"><span class="text-black-rock"><svg width="180" height="48" viewBox="0 0 180 48" fill="none" xmlns="http://www.w3.org/2000/svg" class="h-full w-full"><path d="M0 0L18.3012 48H21.6714L3.37014 0H0Z" fill="#DA145E"></path><path d="M39.0511 24.0049C40.1421 24.3674 41.1415 24.7376 42.0496 25.1158C42.8996 25.4609 43.6997 25.9175 44.4284 26.4735C45.0912 26.9828 45.6329 27.6318 46.0147 28.3739C46.4133 29.1977 46.6089 30.1045 46.585 31.0188V31.0678C46.6417 32.1723 46.4459 33.2752 46.0124 34.2933C45.5789 35.3115 44.9189 36.2183 44.0823 36.9453C42.4131 38.3598 40.0752 39.0674 37.0686 39.0681C35.1758 39.0661 33.2976 38.7377 31.5173 38.0973C29.684 37.4412 27.9624 36.5092 26.4124 35.3339L26.3622 35.2839L26.4124 35.234L29.7825 29.9344L29.8327 29.9834C30.7779 31.005 31.9254 31.8206 33.2028 32.3785C34.4699 32.9236 35.8369 33.2008 37.2171 33.1925C39.1662 33.1925 40.1411 32.5685 40.1417 31.3205C40.1401 31.0296 40.0489 30.7463 39.8804 30.5087C39.712 30.2712 39.4743 30.0909 39.1996 29.9922C38.477 29.6604 37.7317 29.3802 36.9693 29.1536C36.818 29.0934 36.6597 29.0523 36.4982 29.0312C36.3365 29.0122 36.1783 28.9706 36.0282 28.9078C35.0369 28.6465 34.0456 28.3595 33.0543 28.0467C32.1033 27.7545 31.2011 27.323 30.3775 26.7664C29.5838 26.2224 28.9165 25.5152 28.4205 24.6926C27.8713 23.7082 27.6055 22.592 27.6525 21.4668V21.3688C27.6389 20.2843 27.8585 19.2095 28.2966 18.2165C28.7204 17.2722 29.3464 16.4317 30.1307 15.7538C30.9731 15.0363 31.9501 14.4925 33.0052 14.1541C34.2048 13.7641 35.4606 13.5725 36.7224 13.5869C38.3513 13.5934 39.9707 13.8346 41.5303 14.303C43.131 14.7726 44.6514 15.48 46.0402 16.4013V16.4993L43.0172 21.9791L42.9681 21.9301C42.1602 21.1428 41.1985 20.5293 40.1427 20.1277C39.0065 19.6814 37.7953 19.4553 36.5739 19.4616C36.309 19.4636 36.0444 19.4803 35.7813 19.5115C35.4953 19.5405 35.2175 19.6239 34.9631 19.7574C34.7218 19.884 34.5105 20.0607 34.3436 20.2756C34.162 20.5447 34.0749 20.866 34.0958 21.1896C34.0997 21.3454 34.1367 21.4986 34.2046 21.6391C34.2724 21.7797 34.3694 21.9042 34.4891 22.0046C34.7949 22.2794 35.1366 22.5117 35.505 22.6952C35.956 22.9267 36.4196 23.133 36.8935 23.3133C37.4049 23.5092 37.9088 23.6901 38.4051 23.856C38.514 23.8577 38.6222 23.8741 38.7266 23.905C38.8427 23.9383 38.9499 23.9716 39.0492 24.0029" fill="#DA145E"></path><path d="M49.0622 13.9827H55.6511V38.6684H49.0622V13.9827ZM49.0622 4.10843H55.6511V9.88802H49.0622V4.10843Z" fill="#DA145E"></path><path d="M69.0854 18.2282H76.3715V23.7061H72.1094L69.0854 18.2282ZM76.3715 4.10743V9.88703H70.9686C70.5812 9.86933 70.1956 9.95069 69.8486 10.1234C69.5015 10.296 69.2046 10.5542 68.9861 10.8735C68.4812 11.6865 68.2392 12.6344 68.2928 13.5889V38.6665H61.704V23.7061H58.1322V18.2282H61.701V13.2911C61.6949 12.0698 61.9392 10.8601 62.4189 9.73617C63.3552 7.51956 65.1254 5.75617 67.3507 4.82352C68.4953 4.34253 69.7264 4.09888 70.9686 4.10743H76.3715Z" fill="#DA145E"></path><path d="M96.0977 16.5551V22.0349H92.4306L89.3574 16.5551H96.0977ZM88.5146 30.2263C88.5084 30.5863 88.578 30.9436 88.7189 31.2751C88.8599 31.6066 89.069 31.9051 89.3328 32.1512C89.5893 32.4067 89.8946 32.6084 90.2308 32.7442C90.567 32.88 90.9271 32.9472 91.2898 32.9417H96.0977V38.6684H91.2898C90.041 38.6758 88.8034 38.4322 87.6512 37.9523C86.5375 37.4952 85.525 36.8241 84.6715 35.9775C83.8241 35.1313 83.1434 34.1345 82.6643 33.0387C82.1648 31.9028 81.9115 30.6748 81.9209 29.4348V22.0291H78.3541V16.5551H81.9229V7.61338H88.5117L88.5146 30.2263Z" fill="#DA145E"></path><path d="M109.728 13.5869C111.433 13.5778 113.121 13.9227 114.684 14.5998C117.747 15.9061 120.187 18.3367 121.499 21.3874C122.181 22.9616 122.527 24.6599 122.515 26.3745C122.518 27.304 122.419 28.2309 122.22 29.1389L122.17 29.23
8084769H109.582L106.405 24.2018H115.822C115.394 22.8712 114.594 21.6895 113.517 20.7948C112.455 19.9107 111.109 19.4377 109.726 19.4625C108.853 19.458 107.991 19.6429 107.197 20.0042C106.424 20.3508 105.726 20.8435 105.141 21.455C104.55 22.0815 104.087 22.8168 103.778 23.6199C103.443 24.4908 103.276 25.4172 103.286 26.35C103.295 27.1491 103.446 27.9402 103.733 28.6864C104.028 29.4869 104.464 30.2284 105.021 30.8757C105.595 31.5409 106.283 32.0989 107.053 32.5234C107.872 32.9727 108.795 33.2016 109.73 33.1876C110.564 33.1972 111.394 33.0722 112.188 32.8173C113.04 32.4877 113.774 31.9114 114.295 31.1628L114.344 31.1138L114.442 31.1628L120.191 33.6852L120.093 33.7832C118.923 35.4273 117.366 36.7606 115.558 37.6663C113.757 38.5883 111.76 39.0666 109.735 39.0612C108.008 39.0723 106.297 38.7362 104.703 38.0728C103.175 37.4429 101.786 36.5204 100.614 35.3574C99.448 34.1937 98.5137 32.8202 97.8609 31.3097C97.1813 29.7523 96.8353 28.0707 96.8451 26.3726C96.8323 24.658 97.1782 22.9595 97.8609 21.3855C99.1727 18.3263 101.625 15.8931 104.701 14.5979C106.29 13.9188 108.002 13.5739 109.732 13.585" fill="#DA145E"></path><path d="M151.658 4.10742V38.6674H145.016L145.067 26.2756C145.07 25.3724 144.875 24.4794 144.496 23.6591C144.133 22.8608 143.629 22.1336 143.009 21.5118C142.385 20.8945 141.644 20.4073 140.829 20.0787C139.971 19.7307 139.053 19.5546 138.128 19.5605C137.209 19.5529 136.299 19.7291 135.451 20.0787C134.641 20.4141 133.907 20.9097 133.295 21.5353C132.68 22.1658 132.185 22.9019 131.833 23.7081C131.473 24.5513 131.288 25.458 131.288 26.374C131.288 27.2901 131.473 28.1968 131.833 29.04C132.532 30.6581 133.826 31.9479 135.451 32.6439C136.295 33.0106 137.207 33.1958 138.128 33.1876C138.592 33.1881 139.056 33.1553 139.515 33.0896C139.963 33.0295 140.398 32.8971 140.803 32.6978H140.902L143.331 37.1412L143.281 37.1902C141.57 38.4718 139.472 39.1338 137.333 39.0671C135.65 39.0772 133.983 38.7551 132.426 38.1194C130.869 37.4836 129.454 36.5469 128.263 35.3633C127.097 34.1996 126.162 32.8261 125.509 31.3156C124.839 29.7552 124.494 28.0756 124.494 26.3784C124.494 24.6812 124.839 23.0017 125.509 21.4413C126.162 19.9306 127.097 18.5569 128.263 17.3926C129.454 16.2089 130.869 15.2722 132.426 14.6366C133.983 14.001 135.651 13.6792 137.333 13.6898C138.835 13.6135 140.332 13.9176 141.684 14.5737C143.037 15.2298 144.2 16.2165 145.066 17.4416V4.10742H151.658Z" fill="#DA145E"></path><path d="M176.629 0L158.329 48H161.699L180 0H176.629Z" fill="#DA145E"></path></svg></span></a></div><div class="flex items-center"><div class="flex flex-shrink-0 items-center"><div class="flex"><div class="hidden md:flex"><div class="h-[30px] w-[80px] animate-pulse rounded bg-gray-200"></div></div><div class="ml-[10px] hidden md:flex"><div class="h-[30px] w-[60px] animate-pulse rounded bg-gray-200"></div></div><div class="flex md:hidden"><div class="h-[30px] w-[60px] animate-pulse rounded bg-gray-200"></div></div></div></div></div></div><div class="flex flex-1 items-end justify-center pb-1"><div class="flex justify-center space-x-6"><div class="h-4 w-16 animate-pulse rounded bg-gray-200"></div><div class="h-4 w-16 animate-pulse rounded bg-gray-200"></div><div class="h-4 w-16 animate-pulse rounded bg-gray-200"></div><div class="h-4 w-16 animate-pulse rounded bg-gray-200"></div><div class="h-4 w-16 animate-pulse rounded bg-gray-200"></div><div class="h-4 w-16 animate-pulse rounded bg-gray-200"></div><div class="h-4 w-16 animate-pulse rounded bg-gray-200"></div><div class="h-4 w-16 animate-pulse rounded bg-gray-200"></div></div></div></div></div><main class="w-100 overflow-x-hidden bg-mono-05 pt-[65px] text-black-rock"><section data-homepage-section="topBanner"></section><section data-homepage-section="hero" class="pb-16"><section class="w-full bg-mono-05 px-5 pt-10"><div class="mx-auto flex w-full max-w-content-mobile flex-wrap gap-4 md:max-w-content md:gap-4 lg:max-w-container mdDesktop:max-w-container"><div class="order-1 w-full md:order-2 md:w-[calc(50%-8px)] md:flex-none lg:w-auto lg:min-w-[316px] lg:flex-1 lg:basis-0 mdDesktop:w-auto mdDesktop:min-w-[316px] mdDesktop:flex-1 mdDesktop:basis-0"><article class="group flex w-full flex-col items-center gap-4 text-center"><div class="flex w-full flex-col items-center gap-2"><div class="flex flex-wrap items-center justify-center gap-1"><div class="flex items-center justify-center bg-pro-blue py-1 rounded-[12px] px-2 h-[20px] w-[36px]" data-testid="pro-tag"><p class="text-white font-bold text-[12px] leading-[1.3]">Pro</p></div><a class="pointer-events-auto text-brand-neutral underline decoration-current underline-offset-2 transition-colors font-emphasis-14 hover:bg-mono-10 hover:underline shrink-0 whitespace-nowrap" href="https://sifted.eu/sector/fintech/">Fintech</a><span class="min-w-0 flex-1 overflow-hidden text-ellipsis whitespace-nowrap text-brand-neutral font-emphasis-14">Exclusive</span></div><a aria-label="Exclusive: Revolut customers hit by fresh security breach" class="flex w-full flex-col items-center gap-4" href="https://sifted.eu/articles/exclusive-revolut-customers-fresh-hack/"><div><div class="transition-colors group-hover:bg-pro-10"><h1 class="font-recklessBold text-accent-26 leading-tight text-brand-neutral transition-colors text-center">Exclusive: Revolut customers hit by fresh security breach</h1></div><p class="mt-2 text-center text-regular-16 leading-[1.3] text-black-rock">The broker the fintech uses to trade US stocks suffered a security incident, emails seen by Sifted show</p></div><div class="relative aspect-[4/3] w-full overflow-hidden bg-gray-200"><img alt="revolut hack" fetchpriority="high" width="400" height="300" decoding="async" data-nimg="1" class="h-full w-full object-cover transition-opacity group-hover:opacity-90" style="color:transparent;background-size:cover;background-position:50% 50%;background-repeat:no-repeat;background-image:url(&quot;data:image/svg+xml;charset=utf-8,%3Csvg xmlns=&#x27;http://www.w3.org/2000/svg&#x27; viewBox=&#x27;0 0 400 300&#x27;%3E%3Cfilter id=&#x27;b&#x27; color-interpolation-filters=&#x27;
80847sRGB&#x27;%3E%3CfeGaussianBlur stdDeviation=&#x27;20&#x27;/%3E%3CfeColorMatrix values=&#x27;1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1&#x27; result=&#x27;s&#x27;/%3E%3CfeFlood x=&#x27;0&#x27; y=&#x27;0&#x27; width=&#x27;100%25&#x27; height=&#x27;100%25&#x27;/%3E%3CfeComposite operator=&#x27;out&#x27; in=&#x27;s&#x27;/%3E%3CfeComposite in2=&#x27;SourceGraphic&#x27;/%3E%3CfeGaussianBlur stdDeviation=&#x27;20&#x27;/%3E%3C/filter%3E%3Cimage width=&#x27;100%25&#x27; height=&#x27;100%25&#x27; x=&#x27;0&#x27; y=&#x27;0&#x27; preserveAspectRatio=&#x27;none&#x27; style=&#x27;filter: url(%23b);&#x27; href=&#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII&#x27;/%3E%3C/svg%3E&quot;)" sizes="(max-width: 768px) 100vw, (max-width: 1200px) 50vw, 33vw" srcSet="https://images.sifted.eu/cdn-cgi/image/width=256,quality=75,fit=cover,format=auto,gravity=auto/wp-content/uploads/2026/09/14213130/revolut-hack-scaled.png 256w, https://images.sifted.eu/cdn-cgi/image/width=384,quality=75,fit=cover,format=auto,gravity=auto/wp-content/uploads/2026/09/14213130/revolut-hack-scaled.png 384w, https://images.sifted.eu/cdn-cgi/image/width=640,quality=75,fit=cover,format=auto,gravity=auto/wp-content/uploads/2026/09/14213130/revolut-hack-scaled.png 640w, https://images.sifted.eu/cdn-cgi/image/width=750,quality=75,fit=cover,format=auto,gravity=auto/wp-content/uploads/2026/09/14213130/revolut-hack-scaled.png 750w, https://images.sifted.eu/cdn-cgi/image/width=828,quality=75,fit=cover,format=auto,gravity=auto/wp-content/uploads/2026/09/14213130/revolut-hack-scaled.png 828w, https://images.sifted.eu/cdn-cgi/image/width=1080,quality=75,fit=cover,format=auto,gravity=auto/wp-content/uploads/2026/09/14213130/revolut-hack-scaled.png 1080w, https://images.sifted.eu/cdn-cgi/image/width=1200,quality=75,fit=cover,format=auto,gravity=auto/wp-content/uploads/2026/09/14213130/revolut-hack-scaled.png 1200w, https://images.sifted.eu/cdn-cgi/image/width=1920,quality=75,fit=cover,format=auto,gravity=auto/wp-content/uploads/2026/09/14213130/revolut-hack-scaled.png 1920w, https://images.sifted.eu/cdn-cgi/image/width=2048,quality=75,fit=cover,format=auto,gravity=auto/wp-content/uploads/2026/09/14213130/revolut-hack-scaled.png 2048w, https://images.sifted.eu/cdn-cgi/image/width=3840,quality=75,fit=cover,format=auto,gravity=auto/wp-content/uploads/2026/09/14213130/revolut-hack-scaled.png 3840w" src="https://images.sifted.eu/cdn-cgi/image/width=3840,quality=75,fit=cover,format=auto,gravity=auto/wp-content/uploads/2026/09/14213130/revolut-hack-scaled.png"/></div></a></div></article></div><div class="order-2 w-full md:order-1 md:w-[calc(50%-8px)] md:flex-none lg:w-auto lg:min-w-[316px] lg:flex-1 lg:basis-0 mdDesktop:w-auto mdDesktop:min-w-[316px] mdDesktop:flex-1 mdDesktop:basis-0"><div class="flex w-full flex-col gap-2"><article class="group"><div class="flex flex-col gap-2 border-l-[1px] border-sifted h-[152px] p-4 transition-colors"><div class="flex flex-wrap items-center gap-1"><a class="pointer-events-auto text-brand-neutral underline decoration-current underline-offset-2 transition-colors font-emphasis-14 hover:bg-mono-10 hover:underline shrink-0 whitespace-nowrap" href="https://sifted.eu/sector/venture-capital/">Venture capital</a><span class="min-w-0 flex-1 overflow-hidden text-ellipsis whitespace-nowrap text-brand-neutral font-emphasis-14">Podcast</span></div><a aria-label="Is New York warming to European tech?" class="flex flex-col gap-2" href="https://sifted.eu/articles/new-york-podcast/"><div class="transition-colors group-hover:bg-sifted-10"><h3 class="font-recklessBold text-accent-16 leading-tight text-brand-neutral transition-colors">Is New York warming to European tech?</h3></div><p class="line-clamp-2 text-regular-16 text-brand-neutral">Anne Sraders joins host Freya Pratty on this week&#x27;s Sifted podcast</p></a></div></article><article class="group"><div class="flex flex-col gap-2 border-l-[1px] border-pro h-[152px] p-4 transition-colors"><div class="flex flex-wrap items-center gap-1"><div class="flex items-center justify-center bg-pro-blue py-1 rounded-[12px] px-2 h-[20px] w-[36px]" data-testid="pro-tag"><p class="text-white font-bold text-[12px] leading-[1.3]">Pro</p></div><a class="pointer-events-auto text-brand-neutral underline decoration-current underline-offset-2 transition-colors font-emphasis-14 hover:bg-mono-10 hover:underline shrink-0 whitespace-nowrap" href="https://sifted.eu/sector/venture-capital/">Venture capital</a><span class="min-w-0 flex-1 overflow-hidden text-ellipsis whitespace-nowrap text-brand-neutral font-emphasis-14">Interview</span></div><a aria-label="Northern Gritstone CEO: Exiting to US acquirers isn’t a failure" class="flex flex-col gap-2" href="https://sifted.eu/articles/northern-gritstone-ceo-exiting-to-us-acquirers-isnt-a-failure/"><div class="transition-colors group-hover:bg-pro-10"><h3 class="font-recklessBold text-accent-16 leading-tight text-brand-neutral transition-colors">Northern Gritstone CEO: Exiting to US acquirers isn’t a failure</h3></div><p class="line-clamp-2 text-regular-16 text-brand-neutral">Duncan Johnson talks scaling the north of England tech ecosystem, Gritstone’s new San Francisco office and why portfolio exits are coming</p></a></div></article><div class="flex flex-col gap-2 border-l p-4 border-sifted bg-sifted-10 h-[152px] justify-center" data-testid="callout"><h3 class="font-recklessBold text-accent-16 leading-tight text-brand-neutral">Meet DACH &amp; CEE’s top 100</h3><p class="line-clamp-2 text-regular-16 text-brand-neutral">Explore the 100 fastest-growing startups scaling across DACH and Central &amp; Eastern Europe.</p><a href="https://sifted.eu/intelligence/reports/sifted-100-dach-cee-2026" class="inline-flex items-center gap-1 font-emphasis-14 text-sifted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sifted transition-colors" aria-label="See the ranking"><span class="inline-flex items-center gap-1 px-1 py-0.5 underline transition-colors hover:bg-sifted-opacity-10 active:bg-sifted-20 hover:underline"><span>See the ranking</span></span></a></div></div></div><div class="order-3 flex w-full flex-col justify-between gap-4 md:flex-row lg:w-auto lg:min-w-[316px] lg:flex-1 lg:basis-0 lg:flex-col mdDesktop:w-auto mdDesktop:min-w-[316px] mdDesktop:flex-1 mdDesktop:basis-0 mdDesktop:flex-col"><div class="order-2 w-full md:order-1 md:w-auto md:flex-1 lg:w-full mdDesktop:w-full"><div class="flex w-full flex-col gap-2"><a class="group block" href="https://sifted.eu/articles/browse-sifteds-company-coverage/"><div class="flex flex-col gap-1 border-l-[1px] border-pro pl-[8px] transition-colors"><div class="transition-colors group-hover:bg-pro-10"><h3 class="font-recklessBold text-accent-16 leading-tight text-brand-neutral transition-colors flex-1">Browse Sifted&#x27;
80847s company coverage</h3></div></div></a><a class="group block" href="https://sifted.eu/articles/dtcp-first-close-defence-fund-invest-europe-growth/"><div class="flex flex-col gap-1 border-l-[1px] border-sifted pl-[8px] transition-colors"><div class="transition-colors group-hover:bg-sifted-10"><h3 class="font-recklessBold text-accent-16 leading-tight text-brand-neutral transition-colors flex-1">Growth investor DTCP raises €455m first close for defence fund, plots future funds</h3></div></div></a><a class="group block" href="https://sifted.eu/articles/simon-kohl-latent-labs-deepmind-founders-factory/"><div class="flex flex-col gap-1 border-l-[1px] border-pro pl-[8px] transition-colors"><div class="transition-colors group-hover:bg-pro-10"><h3 class="font-recklessBold text-accent-16 leading-tight text-brand-neutral transition-colors flex-1">‘Pushing the frontier is best done outside’: DeepMind alum Simon Kohl on leaving Big Tech</h3></div></div></a><a class="group block" href="https://sifted.eu/articles/claude-founder-house-london/"><div class="flex flex-col gap-1 border-l-[1px] border-sifted pl-[8px] transition-colors"><div class="transition-colors group-hover:bg-sifted-10"><h3 class="font-recklessBold text-accent-16 leading-tight text-brand-neutral transition-colors flex-1">Anthropic: We&#x27;re not trying to eat startups&#x27; lunch</h3></div></div></a></div></div><div class="relative order-1 mx-auto flex w-fit max-w-full shrink-0 flex-col items-center justify-end gap-0 p-2 md:order-2 md:mx-0 lg:mx-auto lg:w-full lg:max-w-[316px] mdDesktop:mx-auto mdDesktop:w-full mdDesktop:max-w-[316px]"><div class="flex items-center justify-center"></div></div></div></div></section></section><section data-homepage-section="pro"><section class="w-full bg-mono-05 px-5 pb-16 pt-0 md:px-5 lg:px-0 mdDesktop:px-5"><div class="mx-auto w-full max-w-content-mobile md:max-w-content lg:max-w-container mdDesktop:max-w-container"><div class="flex flex-col items-center justify-start border-b pb-4 border-brand-pro mb-4"><div class="flex w-full flex-row flex-wrap items-center justify-between gap-4"><h3 class="font-emphasis-18 text-brand-pro">Sifted Pro</h3><div>
80847<a href="/sifted-pro" class="inline-flex items-center gap-1 font-emphasis-14 text-pro focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-pro transition-colors ga-briefing-pro-link w-fit" aria-label="Find out more"><span class="inline-flex items-center gap-1 px-1 py-0.5 underline transition-colors hover:bg-pro-opacity-10 active:bg-pro-20 hover:underline"><span>Find out more</span></span></a></div></div></div><div class="-mx-5 flex snap-x snap-mandatory gap-4 overflow-x-auto px-5 scrollbar-hide md:mx-0 md:grid md:snap-none md:grid-cols-2 md:overflow-visible md:px-0 mdDesktop:grid-cols-4 lg:grid-cols-4"><div class="flex-shrink-0 snap-start w-[calc(100vw-80px)] md:w-auto md:flex-shrink h-full"><div class="flex flex-col items-start justify-between gap-4 bg-[radial-gradient(50%_50%_at_50%_50%,rgba(189,189,255,0.95)_0%,rgba(244,244,246,0.95)_100%)] p-4 h-full" data-testid="pro-card-0"><div class="flex w-full flex-col gap-[14px]"><h3 class="font-recklessBold text-accent-18 text-brand-neutral">Intelligence Briefings</h3><p class="text-regular-16 text-brand-neutral">Access investment grade research on Europe’s most exciting tech sectors and high-growth startups.</p></div><div class="flex w-full flex-col gap-4"><div class="relative aspect-[2/1] w-full overflow-hidden rounded-lg"><img alt="Intelligence Briefings" loading="lazy" decoding="async" data-nimg="fill" class="object-cover" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent;background-size:cover;background-position:50% 50%;background-repeat:no-repeat;background-image:url(&quot;data:image/svg+xml;charset=utf-8,%3Csvg xmlns=&#x27;http://www.w3.org/2000/svg&#x27; %3E%3Cfilter id=&#x27;b&#x27; color-interpolation-filters=&#x27;sRGB&#x27;%3E%3CfeGaussianBlur stdDeviation=&#x27;20&#x27;/%3E%3CfeColorMatrix values=&#x27;1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1&#x27; result=&#x27;s&#x27;/%3E%3CfeFlood x=&#x27;0&#x27; y=&#x27;0&#x27; width=&#x27;100%25&#x27; height=&#x27;100%25&#x27;/%3E%3CfeComposite operator=&#x27;out&#x27; in=&#x27;s&#x27;/%3E%3CfeComposite in2=&#x27;SourceGraphic&#x27;/%3E%3CfeGaussianBlur stdDeviation=&#x27;20&#x27;/%3E%3C/filter%3E%3Cimage width=&#x27;100%25&#x27; height=&#x27;100%25&#x27; x=&#x27;0&#x27; y=&#x27;0&#x27; preserveAspectRatio=&#x27;none&#x27; style=&#x27;filter: url(%23b);&#x27; href=&#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAMCAYAAAB4MH11AAACDUlEQVR42k2T227cMAxERUq+bNC3/v/39bEJ2mZ3bUvsGclO1sBAlkzOcEi5xB5pB4/HM93vj/QAz21PrUVyL2me57Qut7SsYPGUc+pPrYk8YQM7+4NT5RgxGXgy81QiOA77QhOadQEliKi2xH6Qmtht7K+zWkecnsEXHe7tEhAyQQ5sJFEQBZxVDdhJrPXbwYBEFGum2NSddgck3IDXmoHn4/C87+bHoTrjdIIngznlKKWbcOVAnLetryZBqg5pe45G9RWxkIOfCoYiI1IgLyRlJSmlViSikd4qsRWBOJ2oCCe2SEjv6kp3bNSDZcWVl176Wb0EQJj6WIqImyi1rdOUqC4FOQ1SxRtAwDJnEzETxBl+x4FdM7DRJi8ETgjMz2dTRek4usB2jT/CK/3tc1QbKYrVWa0wv4X2rWBGpACXwA1IfSFgJQnEsu9NZwyrUmN9Zm+Z3mrwiKS9D6YJjhuaTo+Rhy9mSl4hZ7VcCJQtCS0krNyGG1WfApqBuwZWCkFHaAYbyXewyyEkEzOn6rxBfOD2GGta1CoJfAIJtPiaB1Ot9KI22lEfCP7h/R3B33z/GMTjug7kdN4yteUHLt7OVhUJ/DoFVvLe+Mi1jVneAa2IT/Yi/xg/0De53oeA9TvPYA/F8uU9nY8Enif+QSAwk5h0pXGku/SX9/36IV8fs1cn+itb/82vcz3/AW4k8Mu9XQ3WAAAAAElFTkSuQmCC&#x27;/%3E%3C/svg%3E&quot;)" sizes="(max-width: 640px) calc(100vw - 40px), (max-width: 768px) calc(50vw - 20px), (max-width: 1024px) calc(33.33vw - 16px), calc(25vw - 8px)" srcSet="https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=16,height=8/60124/1776343929-briefings-1.png 16w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=32,height=16/60124/1776343929-briefings-1.png 32w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=48,height=24/60124/1776343929-briefings-1.png 48w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=64,height=32/60124/1776343929-briefings-1.png 64w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=96,height=48/60124/1776343929-briefings-1.png 96w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=128,height=64/60124/1776343929-briefings-1.png 128w, https://images-datocm
80847s.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=256,height=128/60124/1776343929-briefings-1.png 256w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=384,height=192/60124/1776343929-briefings-1.png 384w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=640,height=320/60124/1776343929-briefings-1.png 640w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=750,height=375/60124/1776343929-briefings-1.png 750w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=828,height=414/60124/1776343929-briefings-1.png 828w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=1080,height=540/60124/1776343929-briefings-1.png 1080w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=1200,height=600/60124/1776343929-briefings-1.png 1200w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=1920,height=960/60124/1776343929-briefings-1.png 1920w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=2048,height=1024/60124/1776343929-briefings-1.png 2048w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=3840,height=1920/60124/1776343929-briefings-1.png 3840w" src="https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=3840,height=1920/60124/1776343929-briefings-1.png"/></div><a href="https://sifted.eu/pro/briefings" class="inline-flex items-center gap-1 font-emphasis-14 text-black-rock focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-black-rock transition-colors" aria-label="Explore sector research"><span class="inline-flex items-center gap-1 px-1 py-0.5 underline transition-colors hover:bg-black-rock-opacity-10 active:bg-mono-20 hover:underline"><span>Explore sector research</span></span></a></div></div></div><div class="flex-shrink-0 snap-start w-[calc(100vw-80px)] md:w-auto md:flex-shrink h-full"><div class="flex flex-col items-start justify-between gap-4 bg-[radial-gradient(50%_50%_at_50%_50%,rgba(189,189,255,0.95)_0%,rgba(244,244,246,0.95)_100%)] p-4 h-full" data-testid="pro-card-1"><div class="flex w-full flex-col gap-[14px]"><h3 class="font-recklessBold text-accent-18 text-brand-neutral">Deals Tracker</h3><p class="text-regular-16 text-brand-neutral">Track Europe’s dealmaking in real-time to identify investment opportunities and potential clients.</p></div><div class="flex w-full flex-col gap-4"><div class="relative aspect-[2/1] w-full overflow-hidden rounded-lg"><img alt="Deals Tracker" loading="lazy" decoding="async" data-nimg="fill" class="object-cover" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent;background-size:cover;background-position:50% 50%;background-repeat:no-repeat;background-image:url(&quot;data:image/svg+xml;charset=utf-8,%3Csvg xmlns=&#x27;http://www.w3.org/2000/svg&#x27; %3E%3Cfilter id=&#x27;b&#x27; color-interpolation-filters=&#x27;sRGB&#x27;%3E%3CfeGaussianBlur stdDeviation=&#x27;20&#x27;/%3E%3CfeColorMatrix values=&#x27;1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1&#x27; result=&#x27;s&#x27;/%3E%3CfeFlood x=&#x27;0&#x27; y=&#x27;0&#x27; width=&#x27;100%25&#x27; height=&#x27;100%25&#x27;/%3E%3CfeComposite operator=&#x27;out&#x27; in=&#x27;s&#x27;/%3E%3CfeComposite in2=&#x27;SourceGraphic&#x27;/%3E%3CfeGaussianBlur stdDeviation=&#x27;20&#x27;/%3E%3C/filter%3E%3Cimage width=&#x27;100%25&#x27; height=&#x27;100%25&#x27; x=&#x27;0&#x27; y=&#x27;0&#x27; preserveAspectRatio=&#x27;none&#x27; style=&#x27;filter: url(%23b);&#x27; href=&#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAMCAMAAABP7o1HAAAC4lBMVEWvq/Svq/WwrPSwrPexrfmxrfqyrvqyrvuzrvWzr/uzr/y0sPO0sPS0sP21sfO1sfa2svi2svm2sv63s/W3s/q3s/u3s/+4tPq4tPu4tP+5tfq5tfy6tve7t/28uP+9ufK9ufO9uf29uf++uvK+uvW+uvq/u/jAvPPAvPfAvPjAvPnAvP/BvfjBvfnBvfnBvfrBvf3Bvf/Dv/XDv/vEwPzEwP/GwvjGwv7Gwv/Hw/7JxfHJxfHJxfLKxvTKxvvLx/LLx/XLx/bLx/fLx/fMyPfMyPjNyPjNyfjNyf3OyvTOyvnOyv/QzPvRzfbSzvzTz/3U0O/U0PnV0e/V0fHW0vLW0vTW0vXX0vDX0/TX0/XX0/XX0/vY1PbY1PbY1PbY1PfY1PfZ1PzZ1fLa1vfc2PTc2Pne2vrf2u/f2+7f2/Df2/ff2/vg3O/g3PHg3PLg3PPh3fPh3fPh3fTi3vTi3vXi3vnj3+7j3/Hj3/Xj3/rk4O7k4O/k4PXl4e7l4fDm4e/m4u7m4u7m4vDm4vPm4vfn4+/n4/Dn4/Hn4/Lo5O7o5O/o5O/o5PLo5PPo5PTo5Pnp5fDp5fDp5fHp5fLp5fPp5fTp5fXp5fnq5e/q5u7q5u/q5u/q5u/q5vDq5vDq5vDq5vDq5vHq5vLq5vLq5vTq5vXq5vbr5vDr5+/r5+/r5/Dr5/Dr5/Hr5/Hr5/Lr5/Lr5/Pr5/Tr5/Xr5/js5/Hs5/Hs6PDs6PDs6PHs6PHs6PLs6PPs6PPs6PPs6PTs6PTs6PTs6Pnt6PLt6fLt6fLt6fPt6fPt6fPt6fTt6fTt6fTt6fXt6fXt6fbu6fDu6fLu6fPu6vHu6vHu6vLu6vTu6vTu6vTu6vXv6vfv6/Tv6/Xv6/jw7PLw7PPw7PTw7PTw7PXx7Pfx7fPx
808477fXx7fny7vXy7vby7vby7vfy7vrz7vnz7/Xz7/Xz7/bz7/j08Pj08Pr18ff18fn28vf28vj38/gOfrPgAAAA9nRSTlMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIyMAACMjACMiIiMjACIhIiIAACAgHgAeHQAcLzAwMBwuLy8uLy8vLS4aLCsZKiooJx0nHB0cGRkbGxgZJhYZGhkaJRgVFhMSBAMDExECAgAAAAEAAAARAAAAEAAAAAAAAAABAAAAAAAAAAkACAAAAAAABwAAAAAAAAoUFBUWAAYHFRUABwAAABMTJAokBxYAEwAAAAARFBUjBSIWAAgRAAgOAAATIAAPFwkKDQkLABEKHRUhBAAZGwAACgAADxUDEAoAHxQAFAIOAAAADB0CAAwACgsbCRmjN+qLAAAA8ElEQVR42g2OP0/DMBDF784Xp22atgIJECA2xMTAt+D7jzDCQIegJm2MY9+d8fae9P78+C2FJcRkSEgOFQyAfMOOW25mcl7RITNoUQDPVPW1Bt/PIlVWX0TAsUdHfJPWIiEjomMHZgY1QrVyJ3OyOVtd8lRMpbBrCRt+n76Gy0YKcT0UMC3k1qtuxa/p5edzCIhNj4dTiRlg+/TY1SPnaPsxYt9fcSmX07nA/UO3arnye94j7bqNL5OhYCUoGlk162h/FUW2JR5/k4FcnjctW04xDhOe590E0zEt5iTy7Z6XnEIYkzTjdDhFiZpZ8ZuWf+gzgmshlcapAAAAAElFTkSuQmCC&#x27;/%3E%3C/svg%3E&quot;)" sizes="(max-width: 640px) calc(100vw - 40px), (max-width: 768px) calc(50vw - 20px), (max-width: 1024px) calc(33.33vw - 16px), calc(25vw - 8px)" srcSet="https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=16,height=8/60124/1776343990-deals.png 16w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=32,height=16/60124/1776343990-deals.png 32w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=48,height=24/60124/1776343990-deals.png 48w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=64,height=32/60124/1776343990-deals.png 64w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=96,height=48/60124/1776343990-deals.png 96w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=128,height=64/60124/1776343990-deals.png 128w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=256,height=128/60124/1776343990-deals.png 256w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=384,height=192/60124/1776343990-deals.png 384w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=640,height=320/60124/1776343990-deals.png 640w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=750,height=375/60124/1776343990-deals.png 750w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=828,height=414/60124/1776343990-deals.png 828w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=1080,height=540/60124/1776343990-deals.png 1080w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=1200,height=600/60124/1776343990-deals.png 1200w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=1920,height=960/60124/1776343990-deals.png 1920w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=2048,height=1024/60124/1776343990-deals.png 2048w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=3840,height=1920/60124/1776343990-deals.png 3840w" src="https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=3840,height=1920/60124/1776343990-deals.png"/></div><a href="https://sifted.eu/deals-tracker" class="inline-flex items-center gap-1 font-emphasis-14 text-black-rock focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-black-rock transition-colors" aria-label="Track the latest deals"><span class="inline-flex items-center gap-1 px-1 py-0.5 underline transition-colors hover:bg-black-rock-opacity-10 active:bg-mono-20 hover:underline"><span>Track the latest deals</span></span></a></div></div></div><div class="flex-shrink-0 snap-start w-[calc(100vw-80px)] md:w-auto md:flex-shrink h-full"><div class="flex flex-col items-start justify-between gap-4 bg-[radial-gradient(50%_50%_at_50%_50%,rgba(189,189,255,0.95)_0%,rgba(244,244,246,0.95)_100%)] p-4 h-full" data-testid="pro-card-2"><div class="flex w-full flex-col gap-[14px]"><h3 class="font-recklessBold text-accent-18 text-brand-neutral">Investor rankings</h3><p class="text-regular-16 text-brand-neutral">Benchmark investor activity and identify active investors for relationship-building.</p></div><div class="flex w-full flex-col gap-4"><div class="relative aspect-[2/1] w-full overflow-hidden rounded-lg"><img alt="Investor rankings" loading="lazy" decoding="async" data-nimg="fill" class="object-cover" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent;background-size:cover;background-position:50% 50%;background-repeat:no-repeat;background-image:url(&quot;data:image/svg+xml;charset=utf-8,%3Csvg xmlns=&#x27;http://www.w3.org/2000/svg&#x27; %3E%3Cfilter id=&#x27;b&#x27; color-interpolation-filters=&#x27;
80847sRGB&#x27;%3E%3CfeGaussianBlur stdDeviation=&#x27;20&#x27;/%3E%3CfeColorMatrix values=&#x27;1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1&#x27; result=&#x27;s&#x27;/%3E%3CfeFlood x=&#x27;0&#x27; y=&#x27;0&#x27; width=&#x27;100%25&#x27; height=&#x27;100%25&#x27;/%3E%3CfeComposite operator=&#x27;out&#x27; in=&#x27;s&#x27;/%3E%3CfeComposite in2=&#x27;SourceGraphic&#x27;/%3E%3CfeGaussianBlur stdDeviation=&#x27;20&#x27;/%3E%3C/filter%3E%3Cimage width=&#x27;100%25&#x27; height=&#x27;100%25&#x27; x=&#x27;0&#x27; y=&#x27;0&#x27; preserveAspectRatio=&#x27;none&#x27; style=&#x27;filter: url(%23b);&#x27; href=&#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAMCAMAAABP7o1HAAACf1BMVEWxrfCxrfGyrvKyrvOzr/Czr/Ozr/S0sPO1sfG1sfO3s/C3s/G3s/K3s/O3s/S4tPO4tPS5tPG5tfO6tvO6tva7t/K8uPS8uPa+uvS+uvm/u/a/u/nBvfHBvfLBvfPCvffCvvPCvvTCvvvCvvzDv/LDv/nDv/zEv/PFwfPFwfTFwfnFwf/Hw/zIxPXIxPbIxPvIxP/Jxf3Kxv/Lxv/MyPjNyfPNyfTNyf/OyvPOyvTOyvXPy/PPy/rPy//QzPvRzfTSzfzSzvTTz/3U0PXU0P7V0fbX0v/X0/jY1PnY1P/a1fTa1vPa1vTa1vXa1vbb1/Tb1/vc2PTc2PXe2vbe2v3f2/Xf2/7f2//h3Pbh3fbh3fji3vji3vni3vvi3v/j3/Tj3/Xj3/bj3/jj3/vj3/zj3//k3/bk4PPk4Pbk4Pfk4Pnk4Prk4Pvl4fTl4fbl4fvl4fzm4fzm4vbm4vjm4vrm4vvn4vfn4/Xn4/nn4/vn4/zn4/3o5PXo5Pfo5Prp5fPp5fTp5fXp5frp5fvp5fzp5f7q5vTq5vbq5vjq5vrq5v7q5v/r5vjr5/Tr5/Xr5/br5/fr5/jr5/nr5/vr5//s5/rs6PXs6Pfs6Pjs6Pns6Prs6P7s6P/t6Pjt6fTt6fft6fnt6fzt6f/u6vXu6vbu6vju6vvu6v3u6v/v6vjv6/nv6/rv6//w6/vw7Pbw7P3w7P7w7P/x7Pnx7fjx7frx7fzx7f7x7f/y7vny7v/z7/jz7/vz7/3z7/707//08Pz08P308P/18fv18f/28vz28v328v/38/v38//49P/59f759f/69v/79v/79/779//8+P/9+f/++v//+////P8tiwk+AAAA1XRSTlMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGUGwwAAAA4UlEQVR42hXPWU5DMQyFYTtxpobhVoInYBNsgv3vASHUQWpvxVUSJzHu86dfR4c+J5eNG8+JMEQEiEKkQJSbRfNnnMAEmSqBbMjO0MOYbUs8KyBoAhLJaWLovZaWeu8DVWSItZ5sJEtf2+/xp/UGYjURBQz7ZUn0Md4ux+9rKxCsAnjKry9LdJQmOZ8PK6LHdJfnXc7JGjKgY3kPiNFrAs7F4JGQROaYW6nsB0eFGtA6bJZG72U9nZjJeKcgYffEKRriUW/H86ob0SHqc+eu7TF5GlzKebtVMQ3DfTwxHrD5f1E/cwRyA1rkAAAAAElFTkSuQmCC&#x27;/%3E%3C/svg%3E&quot;)" sizes="(max-width: 640px) calc(100vw - 40px), (max-width: 768px) calc(50vw - 20px), (max-width: 1024px) calc(33.33vw - 16px), calc(25vw - 8px)" srcSet="https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=16,height=8/60124/1776344024-ranmkings.png 16w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=32,height=16/60124/1776344024-ranmkings.png 32w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=48,height=24/60124/1776344024-ranmkings.png 48w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=64,height=32/60124/1776344024-ranmkings.png 64w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=96,height=48/60124/1776344024-ranmkings.png 96w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=128,height=64/60124/1776344024-ranmkings.png 128w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=256,height=128/60124/1776344024-ranmkings.png 256w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=384,height=192/60124/1776344024-ranmkings.png 384w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=640,height=320/60124/1776344024-ranmkings.png 640w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=750,height=375/60124/1776344024-ranmkings.png 750w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=828,height=414/60124/1776344024-ranmkings.png 828w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=1080,height=540/60124/1776344024-ranmkings.png 1080w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=1200,height=600/60124/1776344024-ranmkings.png 1200w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=1920,height=960/60124/1776344024-ranmkings.png 1920w, https://images-datocm
80847s.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=2048,height=1024/60124/1776344024-ranmkings.png 2048w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=3840,height=1920/60124/1776344024-ranmkings.png 3840w" src="https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=3840,height=1920/60124/1776344024-ranmkings.png"/></div><a href="https://sifted.eu/rankings" class="inline-flex items-center gap-1 font-emphasis-14 text-black-rock focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-black-rock transition-colors" aria-label="Find active investors"><span class="inline-flex items-center gap-1 px-1 py-0.5 underline transition-colors hover:bg-black-rock-opacity-10 active:bg-mono-20 hover:underline"><span>Find active investors</span></span></a></div></div></div><div class="flex-shrink-0 snap-start w-[calc(100vw-80px)] md:w-auto md:flex-shrink h-full"><div class="flex flex-col items-start justify-between gap-4 bg-[radial-gradient(50%_50%_at_50%_50%,rgba(189,189,255,0.95)_0%,rgba(244,244,246,0.95)_100%)] p-4 h-full" data-testid="pro-card-3"><div class="flex w-full flex-col gap-[14px]"><h3 class="font-recklessBold text-accent-18 text-brand-neutral">Market maps</h3><p class="text-regular-16 text-brand-neutral"> Understand sector landscapes, key players and competitive dynamics to uncover market opportunities &amp; risks.</p></div><div class="flex w-full flex-col gap-4"><div class="relative aspect-[2/1] w-full overflow-hidden rounded-lg"><img alt="Market maps" loading="lazy" decoding="async" data-nimg="fill" class="object-cover" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent;background-size:cover;background-position:50% 50%;background-repeat:no-repeat;background-image:url(&quot;data:image/svg+xml;charset=utf-8,%3Csvg xmlns=&#x27;http://www.w3.org/2000/svg&#x27; %3E%3Cfilter id=&#x27;b&#x27; color-interpolation-filters=&#x27;sRGB&#x27;%3E%3CfeGaussianBlur stdDeviation=&#x27;20&#x27;/%3E%3CfeColorMatrix values=&#x27;1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1&#x27; result=&#x27;s&#x27;/%3E%3CfeFlood x=&#x27;0&#x27; y=&#x27;0&#x27; width=&#x27;100%25&#x27; height=&#x27;100%25&#x27;/%3E%3CfeComposite operator=&#x27;out&#x27; in=&#x27;s&#x27;/%3E%3CfeComposite in2=&#x27;SourceGraphic&#x27;/%3E%3CfeGaussianBlur stdDeviation=&#x27;20&#x27;/%3E%3C/filter%3E%3Cimage width=&#x27;100%25&#x27; height=&#x27;100%25&#x27; x=&#x27;0&#x27; y=&#x27;0&#x27; preserveAspectRatio=&#x27;none&#x27; style=&#x27;filter: url(%23b);&#x27; href=&#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAMCAMAAABP7o1HAAACN1BMVEXW0unX0+nX0+rY1OrZ1erZ1eva1uva1uzb1uvb1+zc2Ovc2O3d2ezd2e3e2e3e2uze2u3e2u7f2+zf2+3f2+7g3Ovg3Ozg3O/h3evh3ezh3e3h3e7i3fDi3uvi3vDj3+rj3+vj3+3j3+7j3+/j3/Dj3/Hk3+nk3+rk4Ojk4Onk4Ovk4O3k4PHl4erl4evl4ezl4e3l4e/l4fDl4fHl4fLm4enm4unm4urm4vDm4vPn4+zn4+/n4/Ho5Ovo5Ozo5O7o5PPo5PTp5PTp5evp5e/p5fTq5vLq5vPq5vXr5+7r5/Pr5/Ts6O3s6O7s6O/s6PDs6PHs6PLs6PXt6e3t6fTt6fbu6ffu6vHu6vbu6vfv6/Hv6/Tv6/bv6/fw7PXw7Pfx7e/x7fDx7fHx7fPx7fTx7fjy7u/y7vDy7vfz7/Tz7/jz7/nz7/r08Pf08Pn08Pr18Pr18fP18fj18fr28fL28vL28vP28vT28vX28vf28vr38/L38/r49Pb49Pr49Pv49P359P359fr59fv59f369vT69vX69vb69vr69v379/X79/b79/j79/n79/v79/z8+PX8+Pz8+P/9+PT9+fj9+fz9+f39+f/++vj++vz++v3++v//+/b/+/f/+/j/+/r/+/v/+/z/+/3/+/7/+////Pf//Pz//P3//P7//P///fb//fr//f3//f7//f///vf//vj//vn//v3//v7//v////j///n///r///v///z///3///7////QMF8fAAAAvXRSTlMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC+3qL3AAAAyUlEQVR42jXN3W7CMAwFYLukHbsoaBrS3v8p9kqgaRK0JPFvvBR1vvTn45O+AyLfrj+/93WB+Xi+XD6+PieEBBgADgiACHTEfSBhIKioiBZ/rYYRpxcAyOrKZs64B4Z/sEKuZdXRbAfADpTZVOrDvNVZhHWr2BKS87PmwuwHFm+mTO8dgKuJcllYmg/Lid0sb0BC1GqtxNYOQuz9Sh5nSKKmpUl/ZBGDapn5OY33twSqHmbUqwOakzdVW06QFCDcQzz6NGdXa24Sf48LrfT1SbRyAAAAAElFTkSuQmCC&#x27;/%3E%3C/svg%3E&quot;)" sizes="(max-width: 640px) calc(100vw - 40px), (max-width: 768px) calc(50vw - 20px), (max-width: 1024px) calc(33.33vw - 16px), calc(25vw - 8px)" srcSet="https://images-datocm
80847s.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=16,height=8/60124/1776344084-maps.png 16w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=32,height=16/60124/1776344084-maps.png 32w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=48,height=24/60124/1776344084-maps.png 48w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=64,height=32/60124/1776344084-maps.png 64w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=96,height=48/60124/1776344084-maps.png 96w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=128,height=64/60124/1776344084-maps.png 128w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=256,height=128/60124/1776344084-maps.png 256w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=384,height=192/60124/1776344084-maps.png 384w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=640,height=320/60124/1776344084-maps.png 640w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=750,height=375/60124/1776344084-maps.png 750w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=828,height=414/60124/1776344084-maps.png 828w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=1080,height=540/60124/1776344084-maps.png 1080w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=1200,height=600/60124/1776344084-maps.png 1200w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=1920,height=960/60124/1776344084-maps.png 1920w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=2048,height=1024/60124/1776344084-maps.png 2048w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=3840,height=1920/60124/1776344084-maps.png 3840w" src="https://images-datocms.sifted.eu/cdn-cgi/image/fit=cover,format=auto,width=3840,height=1920/60124/1776344084-maps.png"/></div><a href="https://sifted.eu/categories/market-map" class="inline-flex items-center gap-1 font-emphasis-14 text-black-rock focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-black-rock transition-colors" aria-label="Browse market maps"><span class="inline-flex items-center gap-1 px-1 py-0.5 underline transition-colors hover:bg-black-rock-opacity-10 active:bg-mono-20 hover:underline"><span>Browse market maps</span></span></a></div></div></div></div></div></section></section><section data-homepage-section="feedsAndPodcast" class="pb-16"><div class="mx-auto w-full max-w-content-mobile px-5 md:max-w-content lg:max-w-container lg:px-0 mdDesktop:max-w-container mdDesktop:px-5"><div class="flex flex-col gap-6 lg:flex-row mdDesktop:flex-row"><div class="h-full w-full lg:w-1/2 mdDesktop:w-1/2"><div class="w-full pb-0 pt-0"><div class="w-full md:mx-auto md:max-w-[800px]"><div class="no-scrollbar relative h-[53px] w-full overflow-x-auto overflow-y-hidden" role="tablist" aria-label="Article feed tabs"><div class="mx-auto flex h-[51px] w-max min-w-max items-center justify-center gap-[11px] lg:w-full mdDesktop:w-full"><button id="tab-popular" type="button" role="tab" aria-selected="true" aria-controls="panel-popular" class="relative flex h-[51px] shrink-0 items-center justify-center px-[16px] py-[11px] text-center transition-colors duration-200 cursor-default font-bold text-brand-neutral font-emphasis-18"><span class="whitespace-nowrap lg:truncate mdDesktop:truncate">Popular</span><div class="absolute -bottom-px left-0 right-0 h-[3px] bg-brand-neutral" aria-hidden="true"></div></button><button id="tab-free" type="button" role="tab" aria-selected="false" aria-controls="panel-free" class="relative flex h-[51px] shrink-0 items-center justify-center px-[16px] py-[11px] text-center transition-colors duration-200 cursor-pointer text-[18px] font-normal text-brand-neutral hover:text-brand-neutral"><span class="whitespace-nowrap lg:truncate mdDesktop:truncate">Free to read</span></button><button id="tab-collaborations" type="button" role="tab" aria-selected="false" aria-controls="panel-collaborations" class="relative flex h-[51px] shrink-0 items-center justify-center px-[16px] py-[11px] text-center transition-colors duration-200 cursor-pointer text-[18px] font-normal text-brand-neutral hover:text-brand-neutral"><span class="whitespace-nowrap lg:truncate mdDesktop:truncate">Collaborations</span></button></div><div class="absolute bottom-0 left-0 right-0 h-[1px] bg-brand-neutral" aria-hidden="true"></div></div><div class="w-full"><div role="tabpanel" id="panel-popular" aria-labelledby="tab-popular" class="flex flex-col"><div class="
80848        group flex w-full flex-col gap-2
80849        border-b-[1px] border-pro
80850        px-0 py-4
80851        transition-colors
80852      " data-article-id="140710"><div class="flex h-5 items-center gap-1 overflow-x-auto"><div class="flex items-center justify-center bg-pro-blue py-1 rounded-[12px] px-2 h-[20px] w-[36px]" data-testid="pro-tag"><p class="text-white font-bold text-[12px] leading-[1.3]">Pro</p></div><a class="pointer-events-auto text-brand-neutral underline decoration-current underline-offset-2 transition-colors font-emphasis-14 hover:bg-mono-10 hover:underline shrink-0 whitespace-nowrap" href="https://sifted.eu/sector/venture-capital/">Venture capital</a><span class="min-w-0 flex-1 overflow-hidden text-ellipsis whitespace-nowrap text-brand-neutral font-emphasis-14">Interview</span></div><a aria-label="A16z wants to back more European startups — but won’t reopen European office anytime soon" class="flex flex-col gap-2" href="https://sifted.eu/articles/a16z-andreessen-horowitz-euro
80852pe-ai-investing-consumer/"><div class="transition-colors group-hover:bg-pro-10"><h3 class="font-recklessBold text-accent-16 leading-tight text-brand-neutral transition-colors md:line-clamp-2 md:[overflow-wrap:anywhere]">A16z wants to back more European startups — but won’t reopen European office anytime soon</h3></div></a></div><div class="
80853        group flex w-full flex-col gap-2
80854        border-b-[1px] border-pro
80855        px-0 py-4
80856        transition-colors
80857      " data-article-id="140290"><div class="flex h-5 items-center gap-1 overflow-x-auto"><div class="flex items-center justify-center bg-pro-blue py-1 rounded-[12px] px-2 h-[20px] w-[36px]" data-testid="pro-tag"><p class="text-white font-bold text-[12px] leading-[1.3]">Pro</p></div><a class="pointer-events-auto text-brand-neutral underline decoration-current underline-offset-2 transition-colors font-emphasis-14 hover:bg-mono-10 hover:underline shrink-0 whitespace-nowrap" href="https://sifted.eu/sector/venture-capital/">Venture capital</a><span class="min-w-0 flex-1 overflow-hidden text-ellipsis whitespace-nowrap text-brand-neutral font-emphasis-14">Interview</span></div><a aria-label="US VC FirstMark: ‘Europe is underrated’ right now among American investors" class="flex flex-col gap-2" href="https://sifted.eu/articles/europe-underrated-us-vc-firstmark-capital/"><div class="transition-colors group-hover:bg-pro-10"><h3 class="font-recklessBold text-accent-16 leading-tight text-brand-neutral transition-colors md:line-clamp-2 md:[overflow-wrap:anywhere]">US VC FirstMark: ‘Europe is underrated’ right now among American investors</h3></div></a></div><div class="
80858        group flex w-full flex-col gap-2
80859        border-b-[1px] border-pro
80860        px-0 py-4
80861        transition-colors
80862      " data-article-id="140425"><div class="flex h-5 items-center gap-1 overflow-x-auto"><div class="flex items-center justify-center bg-pro-blue py-1 rounded-[12px] px-2 h-[20px] w-[36px]" data-testid="pro-tag"><p class="text-white font-bold text-[12px] leading-[1.3]">Pro</p></div><a class="pointer-events-auto text-brand-neutral underline decoration-current underline-offset-2 transition-colors font-emphasis-14 hover:bg-mono-10 hover:underline shrink-0 whitespace-nowrap" href="https://sifted.eu/sector/venture-capital/">Venture capital</a><span class="min-w-0 flex-1 overflow-hidden text-ellipsis whitespace-nowrap text-brand-neutral font-emphasis-14">Leaderboard</span></div><a aria-label="The top 10 investors across DACH &amp; CEE" class="flex flex-col gap-2" href="https://sifted.eu/articles/the-top-10-investors-across-dach-cee/"><div class="transition-colors group-hover:bg-pro-10"><h3 class="font-recklessBold text-accent-16 leading-tight text-brand-neutral transition-colors md:line-clamp-2 md:[overflow-wrap:anywhere]">The top 10 investors across DACH &amp; CEE</h3></div></a></div><div class="
80863        group flex w-full flex-col gap-2
80864        border-b-[1px] border-brand-sifted
80865        px-0 py-4
80866        transition-colors
80867      " data-article-id="140419"><div class="flex h-5 items-center gap-1 overflow-x-auto"><a class="pointer-events-auto text-brand-neutral underline decoration-current underline-offset-2 transition-colors font-emphasis-14 hover:bg-mono-10 hover:underline shrink-0 whitespace-nowrap" href="https://sifted.eu/sector/deeptech/">Deeptech</a><span class="min-w-0 flex-1 overflow-hidden text-ellipsis whitespace-nowrap text-brand-neutral font-emphasis-14">News</span></div><a aria-label="ETH Zurich students build ‘first Swiss humanoid’, eye fundraising" class="flex flex-col gap-2" href="https://sifted.eu/articles/eth-zurich-students-humanoid-xalun/"><div class="transition-colors group-hover:bg-sifted-10"><h3 class="font-recklessBold text-accent-16 leading-tight text-brand-neutral transition-colors md:line-clamp-2 md:[overflow-wrap:anywhere]">ETH Zurich students build ‘first Swiss humanoid’, eye fundraising</h3></div></a></div><div class="
80868        group flex w-full flex-col gap-2
80869        border-b-[1px] border-pro
80870        px-0 py-4
80871        transition-colors
80872      " data-article-id="140609"><div class="flex h-5 items-center gap-1 overflow-x-auto"><div class="flex items-center justify-center bg-pro-blue py-1 rounded-[12px] px-2 h-[20px] w-[36px]" data-testid="pro-tag"><p class="text-white font-bold text-[12px] leading-[1.3]">Pro</p></div><a class="pointer-events-auto text-brand-neutral underline decoration-current underline-offset-2 transition-colors font-emphasis-14 hover:bg-mono-10 hover:underline shrink-0 whitespace-nowrap" href="https://sifted.eu/sector/ai-agents/">AI agents</a><span class="min-w-0 flex-1 overflow-hidden text-ellipsis whitespace-nowrap text-brand-neutral font-emphasis-14">Interview</span></div><a aria-label="Inside London&#x27;
80872s weirdest neolab" class="flex flex-col gap-2" href="https://sifted.eu/articles/inside-londons-weirdest-neolab/"><div class="transition-colors group-hover:bg-pro-10"><h3 class="font-recklessBold text-accent-16 leading-tight text-brand-neutral transition-colors md:line-clamp-2 md:[overflow-wrap:anywhere]">Inside London&#x27;s weirdest neolab</h3></div></a></div><div class="
80873        group flex w-full flex-col gap-2
80874        border-b-[1px] border-pro
80875        px-0 py-4
80876        transition-colors
80877      " data-article-id="140540"><div class="flex h-5 items-center gap-1 overflow-x-auto"><div class="flex items-center justify-center bg-pro-blue py-1 rounded-[12px] px-2 h-[20px] w-[36px]" data-testid="pro-tag"><p class="text-white font-bold text-[12px] leading-[1.3]">Pro</p></div><span class="min-w-0 flex-1 overflow-hidden text-ellipsis whitespace-nowrap text-brand-neutral font-emphasis-14">Interview</span></div><a aria-label="Why Polish startups are growing faster than ever" class="flex flex-col gap-2" href="https://sifted.eu/articles/why-polish-startups-are-growing-faster-than-ever/"><div class="transition-colors group-hover:bg-pro-10"><h3 class="font-recklessBold text-accent-16 leading-tight text-brand-neutral transition-colors md:line-clamp-2 md:[overflow-wrap:anywhere]">Why Polish startups are growing faster than ever</h3></div></a></div></div><div class="mt-4 flex w-full justify-start"><a class="relative inline-flex items-center justify-center rounded-full text-center font-bold font-neutral leading-[1.3] focus:outline-none focus-visible:outline-none transition-all duration-150 disabled:cursor-not-allowed disabled:opacity-50 bg-mono-00 [font-size:16px] h-9 px-5 py-2 min-w-[96px] text-brand-neutral shadow-[inset_0_0_0_2px_rgb(2,2,49)] hover:bg-brand-neutral-10 active:bg-brand-neutral-20 focus-visible:bg-brand-neutral-20 focus-visible:shadow-[inset_0_0_0_2px_rgb(2,2,49)]" href="https://sifted.eu/latest">Read more</a></div></div></div></div></div><div class="w-full lg:w-1/2 mdDesktop:w-1/2"><div class="flex w-full flex-col gap-10" data-testid="podcast-episodes-section"><div class="flex w-full flex-col gap-4"><div class="flex flex-col items-center justify-start border-b pb-4 border-black-rock h-[53px] justify-center pb-0 pt-4"><div class="flex w-full flex-row flex-wrap items-center justify-between gap-4"><h3 class="font-emphasis-18 text-black-rock">Podcast</h3><div><a href="https://sifted.eu/categories/podcast " class="inline-flex items-center gap-1 font-emphasis-14 text-black-rock focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-black-rock transition-colors ga-briefing-pro-link w-fit" aria-label="See all podcast episodes"><span class="inline-flex items-center gap-1 px-1 py-0.5 underline transition-colors hover:bg-black-rock-opacity-10 active:bg-mono-20 hover:underline"><span>See all podcast episodes</span></span></a></div></div></div><div class="grid grid-cols-1 gap-x-4 gap-y-8 md:grid-cols-2 md:gap-y-4 mdDesktop:grid-cols-2 mdDesktop:gap-y-4"><div class="flex flex-col gap-4" data-testid="podcast-column-latest"><div class="flex items-center justify-between"><h2 class="text-brand-neutral font-emphasis-18">Latest episodes</h2></div><div class="flex flex-col gap-4"><div class="flex w-full flex-col bg-mono-05" data-testid="podcast-card-I7zCK-eoQOWEVBGWsqEeNA"><h3 class="line-clamp-2 font-recklessBold text-accent-16">What the Anthropic shutdown means for Europe</h3><div class="mt-auto flex items-center gap-[0.2rem]"><span class="whitespace-nowrap text-assist-14">15:47</span><div class="ml-1 h-1 w-1 shrink-0 rounded-full bg-mono-30"></div><div class="flex items-center"><a target="_blank" rel="noopener noreferrer" class="inline-flex h-11 w-11 items-center justify-center transition-opacity duration-200 hover:opacity-80" aria-label="Listen on Podcast platform" href="https://podcasts.apple.com/gb/podcast/what-the-anthropic-shutdown-means-for-europe/id1592525862?i=1000772960763"><img src="https://www.datocms-assets.com/60124/1776344514-applepodcasts-logo-svg.svg" alt="Listen on Podcast platform" class="h-6 w-6" width="24" height="24" data-testid="podcast-icon-Podcast platform"/></a><a target="_blank" rel="noopener noreferrer" class="inline-flex h-11 w-11 items-center justify-center transition-opacity duration-200 hover:opacity-80" aria-label="Listen on Podcast platform" href="https://open.spotify.com/episode/1OhJW71yYA89unX9XR4u3J?si=6CQhYjmrS5S6N4WNawKctg"><img src="https://www.datocms-assets.com/60124/1776344533-spotify-logo.svg" alt="Listen on Podcast platform" class="h-6 w-6" width="24" height="24" data-testid="podcast-icon-Podcast platform"/></a></div></div></div><div class="flex w-full flex-col bg-mono-05" data-testid="podcast-card-UsbiPdkCTdm-c36MB7sXAw"><h3 class="line-clamp-2 font-recklessBold text-accent-16">Newton Venture Program CEO Anu Adebajo on Europe’s ‘zombie funds’</h3><div class="mt-auto flex items-center gap-[0.2rem]"><span class="whitespace-nowrap text-assist-14">44:51</span><div class="ml-1 h-1 w-1 shrink-0 rounded-full bg-mono-30"></div><div class="flex items-center"><a target="_blank" rel="noopener noreferrer" class="inline-flex h-11 w-11 items-center justify-center transition-opacity duration-200 hover:opacity-80" aria-label="Listen on Podcast platform" href="https://podcasts.apple.com/gb/podcast/newton-venture-program-ceo-anu-adebajo-on-europes-zombie/id1592525862?i=1000772227073"><img src="https://www.datocms-assets.com/60124/1776344514-applepodcasts-logo-svg.svg" alt="Listen on Podcast platform" class="h-6 w-6" width="24" height="24" data-testid="podcast-icon-Podcast platform"/></a><a target="_blank" rel="noopener noreferrer" class="inline-flex h-11 w-11 items-center justify-center transition-opacity duration-200 hover:opacity-80" aria-label="Listen on Podcast platform" href="https://open.spotify.com/episode/0LKIayura2LZP21w3gXSXO?si=QOUJyHbFQMCKPr9xRNsNnQ"><img src="https://www.datocms-assets.com/60124/1776344533-spotify-logo.svg" alt="Listen on Podcast platform" class="h-6 w-6" width="24" height="24" data-testid="podcast-icon-Podcast platform"/></a><a target="_blank" rel="noopener noreferrer" class="inline-flex h-11 w-11 items-center justify-center transition-opacity duration-200 hover:opacity-80" aria-label="Listen on Podcast platform" href="https://www.youtube.com/watch?v=wsyx0gzD7TU"><img src="https://www.datocms-assets.com/60124/1776344548-youtube-logo.svg" alt="Listen on Podcast platform" class="h-6 w-6" width="24" height="24" data-testid="podcast-icon-Podcast platform"/></a></div></div></div></div></div><div class="flex flex-col gap-4" data-testid="podcast-column-top"><div class="flex items-center justify-between"><h2 class="text-brand-neutral font-emphasis-18">Top episodes</h2></div><div class="flex flex-col gap-4"><div class="flex w-full flex-col bg-mono-05" data-testid="podcast-card-WB1V4z86QemMK2zOycCZxQ"><h3 class="line-clamp-2 font-recklessBold text-accent-16">Judith Dada, general partner at Visionaries Club: &#x27;I&#x27;m deeply troubled by what lies ahead for Europe&#x27;</h3><div class="mt-auto flex items-center gap-[0.2rem]"><span class="whitespace-nowrap text-assist-14">53:32</span><div class="ml-1 h-1 w-1 shrink-0 rounded-full bg-mono-30"></div><div class="flex items-center"><a target="_blank" rel="noopener noreferrer" class="inline-flex h-11 w-11 items-center justify-center transition-opacity duration-200 hover:opacity-80" aria-label="Listen on Podcast platform" href="https://podcasts.apple.com/gb/podcast/judith-dada-general-partner-at-visionaries-fund-im/id1592525862?i=1000750506499"><img src="https://www.datocms-assets.com/60124/1776344514-applepodcasts-logo-svg.svg" alt="Listen on Podcast platform" class="h-6 w-6" width="24" height="24" data-testid="podcast-icon-Podcast platform"/></a><a target="_blank" rel="noopener noreferrer" class="inline-flex h-11 w-11 items-center justify-center transition-opacity duration-200 hover:opacity-80" aria-label="Listen on Podcast platform" href="https://open.spotify.com/episode/4wTjaJfyOJWuw04GpCNSp0?si=5v4RGH79Qd-Wm5Gu-8KYMw"><img src="https://www.datocms-assets.com/60124/1776344533-spotify-logo.svg" alt="Listen on Podcast platform" class="h-6 w-6" width="24" height="24" data-testid="podcast-icon-Podcast platform"/></a></div></div></div><div class="flex w-full flex-col bg-mono-05" data-testid="podcast-card-V_zQ-NtsRCSrdnNiP06Qxg"><h3 class="line-clamp-2 font-recklessBold text-accent-16">James Wise on why the Sovereign AI Unit criticism is wrong – and the one company he wishes he’d backed</h3><div class="mt-auto flex items-center gap-[0.2rem]"><span class="whitespace-nowrap text-assist-14">39:27</span><div class="ml-1 h-1 w-1 shrink-0 rounded-full bg-mono-30"></div><div class="flex items-center"><a target="_blank" rel="noopener noreferrer" class="inline-flex h-11 w-11 items-center justify-center transition-opacity duration-200 hover:opacity-80" aria-label="Listen on Podcast platform" href="https://podcasts.apple.com/gb/podcast/james-wise-on-why-the-sovereign-ai-unit-criticism-is/id1592525862?i=1000767985683"><img src="https://www.datocms-assets.com/60124/1776344514-applepodcasts-logo-svg.svg" alt="Listen on Podcast platform" class="h-6 w-6" width="24" height="24" data-testid="podcast-icon-Podcast platform"/></a><a target="_blank" rel="noopener noreferrer" class="inline-flex h-11 w-11 items-center justify-center transition-opacity duration-200 hover:opacity-80" aria-label="Listen on Podcast platform" href="https://open.spotify.com/episode/17o78DKIRirs2sPnHD63KE?si=7b7b382f6259457b"><img src="https://www.datocms-assets.com/60124/1776344533-spotify-logo.svg" alt="Listen on Podcast platform" class="h-6 w-6" width="24" height="24" data-testid="podcast-icon-Podcast platform"/></a></div></div></div></div></div></div></div><div class="flex flex-col gap-2 border-l p-4 border-pro bg-pro-10" data-testid="callout"><h3 class="font-recklessBold text-accent-26 leading-tight text-brand-neutral">Be the first to see exclusive leaderboard data</h3><div class="text-regular-16 text-brand-neutral [&amp;_li]:leading-tight [&amp;_ul]:ml-6 [&amp;_ul]:list-inside [&amp;_ul]:list-disc"><p class="markdown_container__3rlf4">The Nordics&#x27; top 100 is live. Unlock the full dataset behind the ranking – funding and revenue data, plus in-depth reporting and market intelligence showing where momentum is building. Get complete access to Sifted Pro from as little as £4.79/day.</p></div>
80877<a href="https://sifted.eu/sifted-pro" class="inline-flex items-center gap-1 font-emphasis-14 text-pro focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-pro transition-colors mt-2" aria-label="Explore Pro"><span class="inline-flex items-center gap-1 px-1 py-0.5 underline transition-colors hover:bg-pro-opacity-10 active:bg-pro-20 hover:underline"><span>Explore Pro</span></span></a></div></div></div></div></div></section><section data-homepage-section="newsletters" class="pb-16"><div class="flex h-auto flex-col items-center bg-gray-100"><div class="mx-auto w-full max-w-content-mobile px-5 md:max-w-content lg:max-w-container lg:px-0 mdDesktop:max-w-container mdDesktop:px-5"><div class="flex flex-col items-center justify-start border-b pb-4 border-black-rock mb-4"><div class="flex w-full flex-row flex-wrap items-center justify-between gap-4"><h3 class="font-emphasis-18 text-black-rock">Sign up to Sifted Newsletters</h3><div><a href="/newsletters" class="inline-flex items-center gap-1 font-emphasis-14 text-black-rock focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-black-rock transition-colors inline-flex items-center border-r-brand-neutral font-bold text-brand-neutral" aria-label="Explore more newsletters"><span class="inline-flex items-center gap-1 px-1 py-0.5 underline transition-colors hover:bg-black-rock-opacity-10 active:bg-mono-20 hover:underline"><span>Explore more newsletters</span></span></a></div></div></div></div></div></section><section data-homepage-section="latest"></section><section data-homepage-section="siftedInsights"><section class="bg-mono-05 pb-16 pt-0"><div class="mx-auto w-full max-w-content-mobile px-5 md:max-w-content lg:max-w-container lg:px-0 mdDesktop:max-w-container mdDesktop:px-5"><div class="mb-4 flex flex-col gap-4"><h2 class="text-black-rock font-emphasis-18">Intelligence</h2><div class="h-[1px] w-full bg-mono-20"></div></div><div class="grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3 mdDesktop:grid-cols-[1fr_1fr_258px]"><div class="h-[435px] md:h-[405px]"><article class="group relative block h-full w-full overflow-hidden text-left bg-mono-15 focus-visible:outline-none" data-testid="insights-feature-card"><div class="absolute inset-0 h-full w-full bg-mono-00"><img alt="" loading="lazy" width="595" height="841" decoding="async" data-nimg="1" class="pointer-events-none h-100 w-100 object-cover will-change-[filter] [transition:filter_0.25s]" style="color:transparent;background-size:cover;background-position:50% 50%;background-repeat:no-repeat;background-image:url(&quot;data:image/svg+xml;charset=utf-8,%3Csvg xmlns=&#x27;http://www.w3.org/2000/svg&#x27; viewBox=&#x27;0 0 595 841&#x27;%3E%3Cfilter id=&#x27;b&#x27; color-interpolation-filters=&#x27;sRGB&#x27;%3E%3CfeGaussianBlur stdDeviation=&#x27;20&#x27;/%3E%3CfeColorMatrix values=&#x27;1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1&#x27; result=&#x27;s&#x27;/%3E%3CfeFlood x=&#x27;0&#x27; y=&#x27;0&#x27; width=&#x27;100%25&#x27; height=&#x27;100%25&#x27;/%3E%3CfeComposite operator=&#x27;out&#x27; in=&#x27;s&#x27;/%3E%3CfeComposite in2=&#x27;SourceGraphic&#x27;/%3E%3CfeGaussianBlur stdDeviation=&#x27;20&#x27;/%3E%3C/filter%3E%3Cimage width=&#x27;100%25&#x27; height=&#x27;100%25&#x27; x=&#x27;0&#x27; y=&#x27;0&#x27; preserveAspectRatio=&#x27;none&#x27; style=&#x27;filter: url(%23b);&#x27; href=&#x27;data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAoHBwgHBgoICAgLDQoVDhgVDg0NGhsaDQ0VFx8ZGBYVFiEmHysjGh0oHRUiJDUlKC0vMjIyGSI4PTcwPCsxMi8BCgsLDg0OFxAQHC8cFhwvLy8vLy81Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL//AABEIABkAEQMBIgACEQEDEQH/xAAYAAACAwAAAAAAAAAAAAAAAAAEBQABBv/EACQQAAEDAgQHAAAAAAAAAAAAAAACBAUBAxJBUWERFCElNDVS/8QAGAEAAwEBAAAAAAAAAAAAAAAAAQQFAgD/xAAZEQACAwEAAAAAAAAAAAAAAAAAAQIREiH/2gAMAwEAAhEDEQA/AEsG2RZYjKSX2ZVKUyA4q9bWyGL263TDqxaFZSVCLbswWNWhYXzDXYsG0d0OhHjdLLqoMkndi7FqpRWRlonwQ5x65RO26HHFWKuNn6IBEM7YcI//2Q==&#x27;/%3E%3C/svg%3E&quot;)" sizes="290px" srcSet="https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=16,quality=75/60124/1781881381-the-rise-of-ai-agents.jpg 16w, https://images-datocm
80877s.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=32,quality=75/60124/1781881381-the-rise-of-ai-agents.jpg 32w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=48,quality=75/60124/1781881381-the-rise-of-ai-agents.jpg 48w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=64,quality=75/60124/1781881381-the-rise-of-ai-agents.jpg 64w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=96,quality=75/60124/1781881381-the-rise-of-ai-agents.jpg 96w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=128,quality=75/60124/1781881381-the-rise-of-ai-agents.jpg 128w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=256,quality=75/60124/1781881381-the-rise-of-ai-agents.jpg 256w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=384,quality=75/60124/1781881381-the-rise-of-ai-agents.jpg 384w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=640,quality=75/60124/1781881381-the-rise-of-ai-agents.jpg 640w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=750,quality=75/60124/1781881381-the-rise-of-ai-agents.jpg 750w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=828,quality=75/60124/1781881381-the-rise-of-ai-agents.jpg 828w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=1080,quality=75/60124/1781881381-the-rise-of-ai-agents.jpg 1080w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=1200,quality=75/60124/1781881381-the-rise-of-ai-agents.jpg 1200w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=1920,quality=75/60124/1781881381-the-rise-of-ai-agents.jpg 1920w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=2048,quality=75/60124/1781881381-the-rise-of-ai-agents.jpg 2048w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=3840,quality=75/60124/1781881381-the-rise-of-ai-agents.jpg 3840w" src="https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=3840,quality=75/60124/1781881381-the-rise-of-ai-agents.jpg"/></div><div class="relative flex h-full p-3 items-end"><div class="flex w-full flex-col bg-mono-00 gap-[6px] p-[14px]"><div class="flex min-h-[18px] w-full items-start justify-between gap-3" data-testid="insights-feature-card__topMeta"><div class="text-assist-14 text-mono-40">2026-06-25</div><div class="text-assist-14 text-sifted"></div></div><div class="flex flex-col gap-[14px]"><a class="w-fit focus-visible:outline-none" href="https://sifted.eu/intelligence/reports/the-rise-of-ai-agents-2026"><p class="font-recklessBold text-accent-22 text-black-rock">The rise of AI agents</p></a><p class="text-regular-16 text-mono-70 line-clamp-3">The age of agentic work has arrived. How should companies navigate it?</p><div class="w-full pt-[2px]"><a class="relative inline-flex items-center justify-center rounded-full text-center font-bold font-neutral leading-[1.3] focus:outline-none focus-visible:outline-none transition-all duration-150 disabled:cursor-not-allowed disabled:opacity-50 text-mono-00 [font-size:16px] h-9 px-4 py-2 min-w-[96px] bg-sifted hover:bg-sifted-hover active:bg-sifted-active focus-visible:shadow-[inset_0_0_0_2px_rgb(255,255,255)] w-full" href="https://sifted.eu/intelligence/reports/the-rise-of-ai-agents-2026">Read the report</a></div></div></div></div><div data-testid="insights-feature-card__interactiveBorder" class="pointer-events-none absolute inset-0 z-10 border-[3px] border-solid opacity-0 transition-opacity group-hover:opacity-100 group-focus-visible:opacity-100 border-sifted"></div></article></div><div class="h-[435px] md:h-[405px]"><article class="group relative block h-full w-full overflow-hidden text-left bg-mono-15 focus-visible:outline-none" data-testid="insights-feature-card"><div class="absolute inset-0 h-full w-full bg-mono-00"><img alt="" loading="lazy" width="870" height="1305" decoding="async" data-nimg="1" class="pointer-events-none h-100 w-100 object-cover will-change-[filter] [transition:filter_0.25s]" style="color:transparent;background-size:cover;background-position:50% 50%;background-repeat:no-repeat;background-image:url(&quot;data:image/svg+xml;charset=utf-8,%3Csvg xmlns=&#x27;http://www.w3.org/2000/svg&#x27; viewBox=&#x27;0 0 870 1305&#x27;%3E%3Cfilter id=&#x27;b&#x27; color-interpolation-filters=&#x27;
80877sRGB&#x27;%3E%3CfeGaussianBlur stdDeviation=&#x27;20&#x27;/%3E%3CfeColorMatrix values=&#x27;1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1&#x27; result=&#x27;s&#x27;/%3E%3CfeFlood x=&#x27;0&#x27; y=&#x27;0&#x27; width=&#x27;100%25&#x27; height=&#x27;100%25&#x27;/%3E%3CfeComposite operator=&#x27;out&#x27; in=&#x27;s&#x27;/%3E%3CfeComposite in2=&#x27;SourceGraphic&#x27;/%3E%3CfeGaussianBlur stdDeviation=&#x27;20&#x27;/%3E%3C/filter%3E%3Cimage width=&#x27;100%25&#x27; height=&#x27;100%25&#x27; x=&#x27;0&#x27; y=&#x27;0&#x27; preserveAspectRatio=&#x27;none&#x27; style=&#x27;filter: url(%23b);&#x27; href=&#x27;data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAoHBwgHBgoICAgLCgoLDhgZFRUNFRsVDg4NFxYeGBYfIhUaHyslHR0oHRUiJDUlKC0vMjIyGSI4PTcwPCsxMi8BCgsLDg0OFQ0OHC8cFhwvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL//AABEIABgAEAMBIgACEQEDEQH/xAAXAAADAQAAAAAAAAAAAAAAAAAABAUG/8QAGxAAAwEBAQEBAAAAAAAAAAAAAQIEAAMSFBH/xAAWAQEBAQAAAAAAAAAAAAAAAAADAgH/xAAaEQACAgMAAAAAAAAAAAAAAAAAQiEiAQIS/9oADAMBAAIRAxEAPwCHSIzQAc008g5Arl6PjoqBTXOaQc5195FM7kz3FpJ39NnTTNUv4pxjXtiobH//2Q==&#x27;/%3E%3C/svg%3E&quot;)" sizes="290px" srcSet="https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=16,quality=75/60124/1721888609-advanced-materials-2024.png 16w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=32,quality=75/60124/1721888609-advanced-materials-2024.png 32w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=48,quality=75/60124/1721888609-advanced-materials-2024.png 48w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=64,quality=75/60124/1721888609-advanced-materials-2024.png 64w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=96,quality=75/60124/1721888609-advanced-materials-2024.png 96w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=128,quality=75/60124/1721888609-advanced-materials-2024.png 128w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=256,quality=75/60124/1721888609-advanced-materials-2024.png 256w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=384,quality=75/60124/1721888609-advanced-materials-2024.png 384w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=640,quality=75/60124/1721888609-advanced-materials-2024.png 640w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=750,quality=75/60124/1721888609-advanced-materials-2024.png 750w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=828,quality=75/60124/1721888609-advanced-materials-2024.png 828w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=1080,quality=75/60124/1721888609-advanced-materials-2024.png 1080w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=1200,quality=75/60124/1721888609-advanced-materials-2024.png 1200w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=1920,quality=75/60124/1721888609-advanced-materials-2024.png 1920w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=2048,quality=75/60124/1721888609-advanced-materials-2024.png 2048w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=3840,quality=75/60124/1721888609-advanced-materials-2024.png 3840w" src="https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=3840,quality=75/60124/1721888609-advanced-materials-2024.png"/></div><div class="relative flex h-full p-3 items-end"><div class="flex w-full flex-col bg-mono-00 gap-[6px] p-[14px]"><div class="flex min-h-[18px] w-full items-start justify-between gap-3" data-testid="insights-feature-card__topMeta"><div class="text-assist-14 text-mono-40">2026-07-06</div><div class="text-assist-14 text-pro"></div></div><div class="flex flex-col gap-[14px]"><a class="w-fit focus-visible:outline-none" href="https://sifted.eu/pro/briefings/advanced-materials-2026"><p class="font-recklessBold text-accent-22 text-black-rock">Advanced materials</p></a><p class="text-regular-16 text-mono-70 line-clamp-3">
80877Will AI unearth the next breakthrough material?</p><div class="w-full pt-[2px]"><a class="relative inline-flex items-center justify-center rounded-full text-center font-bold font-neutral leading-[1.3] focus:outline-none focus-visible:outline-none transition-all duration-150 disabled:cursor-not-allowed disabled:opacity-50 text-mono-00 [font-size:16px] h-9 px-4 py-2 min-w-[96px] bg-pro hover:bg-pro-hover active:bg-pro-active focus-visible:shadow-[inset_0_0_0_2px_rgb(255,255,255)] w-full" href="https://sifted.eu/pro/briefings/advanced-materials-2026">Explore our latest sector research</a></div></div></div></div><div data-testid="insights-feature-card__interactiveBorder" class="pointer-events-none absolute inset-0 z-10 border-[3px] border-solid opacity-0 transition-opacity group-hover:opacity-100 group-focus-visible:opacity-100 border-pro"></div></article></div><div class="hidden lg:block mdDesktop:block"><div><div class="flex flex-col"><div class="
80878        group flex w-full flex-col gap-2
80879        border-b-[1px] border-pro
80880        px-0 py-4
80881        transition-colors
80882      " data-article-id="138073"><div class="flex h-5 items-center gap-1 overflow-x-auto"><div class="flex items-center justify-center bg-pro-blue py-1 rounded-[12px] px-2 h-[20px] w-[36px]" data-testid="pro-tag"><p class="text-white font-bold text-[12px] leading-[1.3]">Pro</p></div><a class="pointer-events-auto text-brand-neutral underline decoration-current underline-offset-2 transition-colors font-emphasis-14 hover:bg-mono-10 hover:underline shrink-0 whitespace-nowrap" href="https://sifted.eu/sector/startup-life/">Startup life</a><span class="min-w-0 flex-1 overflow-hidden text-ellipsis whitespace-nowrap text-brand-neutral font-emphasis-14">Fastest-growing startups</span></div><a aria-label="The 50 fastest-growing European startup teams in H1 2026" class="flex flex-col gap-2" href="https://sifted.eu/articles/the-50-fastest-growing-european-startup-teams-in-h1-2026/"><div class="transition-colors group-hover:bg-pro-10"><h3 class="font-recklessBold text-accent-16 leading-tight text-brand-neutral transition-colors md:line-clamp-2 md:[overflow-wrap:anywhere]">The 50 fastest-growing European startup teams in H1 2026</h3></div></a></div><div class="
80883        group flex w-full flex-col gap-2
80884        border-b-[1px] border-pro
80885        px-0 py-4
80886        transition-colors
80887      " data-article-id="138075"><div class="flex h-5 items-center gap-1 overflow-x-auto"><div class="flex items-center justify-center bg-pro-blue py-1 rounded-[12px] px-2 h-[20px] w-[36px]" data-testid="pro-tag"><p class="text-white font-bold text-[12px] leading-[1.3]">Pro</p></div><a class="pointer-events-auto text-brand-neutral underline decoration-current underline-offset-2 transition-colors font-emphasis-14 hover:bg-mono-10 hover:underline shrink-0 whitespace-nowrap" href="https://sifted.eu/sector/venture-capital/">Venture capital</a><span class="min-w-0 flex-1 overflow-hidden text-ellipsis whitespace-nowrap text-brand-neutral font-emphasis-14">List</span></div><a aria-label="Europe’s biggest new funds in H1 2026" class="flex flex-col gap-2" href="https://sifted.eu/articles/europes-biggest-new-funds-in-h1-2026/"><div class="transition-colors group-hover:bg-pro-10"><h3 class="font-recklessBold text-accent-16 leading-tight text-brand-neutral transition-colors md:line-clamp-2 md:[overflow-wrap:anywhere]">Europe’s biggest new funds in H1 2026</h3></div></a></div><div class="
80888        group flex w-full flex-col gap-2
80889        border-b-[1px] border-pro
80890        px-0 py-4
80891        transition-colors
80892      " data-article-id="138087"><div class="flex h-5 items-center gap-1 overflow-x-auto"><div class="flex items-center justify-center bg-pro-blue py-1 rounded-[12px] px-2 h-[20px] w-[36px]" data-testid="pro-tag"><p class="text-white font-bold text-[12px] leading-[1.3]">Pro</p></div><a class="pointer-events-auto text-brand-neutral underline decoration-current underline-offset-2 transition-colors font-emphasis-14 hover:bg-mono-10 hover:underline shrink-0 whitespace-nowrap" href="https://sifted.eu/sector/startup-life/">Startup life</a><span class="min-w-0 flex-1 overflow-hidden text-ellipsis whitespace-nowrap text-brand-neutral font-emphasis-14">Stealth founders</span></div><a aria-label="8 stealth founders using AI to take on the industries they used to work in" class="flex flex-col gap-2" href="https://sifted.eu/articles/8-stealth-founders-using-ai-to-take-on-the-industries-they-u
80892sed-to-work-in/"><div class="transition-colors group-hover:bg-pro-10"><h3 class="font-recklessBold text-accent-16 leading-tight text-brand-neutral transition-colors md:line-clamp-2 md:[overflow-wrap:anywhere]">8 stealth founders using AI to take on the industries they used to work in</h3></div></a></div><div class="
80893        group flex w-full flex-col gap-2
80894        border-b-[1px] border-pro
80895        px-0 py-4
80896        transition-colors
80897      " data-article-id="138026"><div class="flex h-5 items-center gap-1 overflow-x-auto"><div class="flex items-center justify-center bg-pro-blue py-1 rounded-[12px] px-2 h-[20px] w-[36px]" data-testid="pro-tag"><p class="text-white font-bold text-[12px] leading-[1.3]">Pro</p></div><span class="min-w-0 flex-1 overflow-hidden text-ellipsis whitespace-nowrap text-brand-neutral font-emphasis-14">Sifted data</span></div><a aria-label="The 25 companies Europe’s startup insiders watched most closely in H1" class="flex flex-col gap-2" href="https://sifted.eu/articles/the-25-companies-most-watched-insiders-h1-2026/"><div class="transition-colors group-hover:bg-pro-10"><h3 class="font-recklessBold text-accent-16 leading-tight text-brand-neutral transition-colors md:line-clamp-2 md:[overflow-wrap:anywhere]">The 25 companies Europe’s startup insiders watched most closely in H1</h3></div></a></div></div></div></div></div><div class="w-full md:mx-auto md:max-w-[800px] lg:hidden mdDesktop:hidden"><div><div class="flex flex-col"><div class="
80898        group flex w-full flex-col gap-2
80899        border-b-[1px] border-pro
80900        px-0 py-4
80901        transition-colors
80902      " data-article-id="138073"><div class="flex h-5 items-center gap-1 overflow-x-auto"><div class="flex items-center justify-center bg-pro-blue py-1 rounded-[12px] px-2 h-[20px] w-[36px]" data-testid="pro-tag"><p class="text-white font-bold text-[12px] leading-[1.3]">Pro</p></div><a class="pointer-events-auto text-brand-neutral underline decoration-current underline-offset-2 transition-colors font-emphasis-14 hover:bg-mono-10 hover:underline shrink-0 whitespace-nowrap" href="https://sifted.eu/sector/startup-life/">Startup life</a><span class="min-w-0 flex-1 overflow-hidden text-ellipsis whitespace-nowrap text-brand-neutral font-emphasis-14">Fastest-growing startups</span></div><a aria-label="The 50 fastest-growing European startup teams in H1 2026" class="flex flex-col gap-2" href="https://sifted.eu/articles/the-50-fastest-growing-european-startup-teams-in-h1-2026/"><div class="transition-colors group-hover:bg-pro-10"><h3 class="font-recklessBold text-accent-16 leading-tight text-brand-neutral transition-colors md:line-clamp-2 md:[overflow-wrap:anywhere]">The 50 fastest-growing European startup teams in H1 2026</h3></div></a></div><div class="
80903        group flex w-full flex-col gap-2
80904        border-b-[1px] border-pro
80905        px-0 py-4
80906        transition-colors
80907      " data-article-id="138075"><div class="flex h-5 items-center gap-1 overflow-x-auto"><div class="flex items-center justify-center bg-pro-blue py-1 rounded-[12px] px-2 h-[20px] w-[36px]" data-testid="pro-tag"><p class="text-white font-bold text-[12px] leading-[1.3]">Pro</p></div><a class="pointer-events-auto text-brand-neutral underline decoration-current underline-offset-2 transition-colors font-emphasis-14 hover:bg-mono-10 hover:underline shrink-0 whitespace-nowrap" href="https://sifted.eu/sector/venture-capital/">Venture capital</a><span class="min-w-0 flex-1 overflow-hidden text-ellipsis whitespace-nowrap text-brand-neutral font-emphasis-14">List</span></div><a aria-label="Europe’s biggest new funds in H1 2026" class="flex flex-col gap-2" href="https://sifted.eu/articles/europes-biggest-new-funds-in-h1-2026/"><div class="transition-colors group-hover:bg-pro-10"><h3 class="font-recklessBold text-accent-16 leading-tight text-brand-neutral transition-colors md:line-clamp-2 md:[overflow-wrap:anywhere]">Europe’s biggest new funds in H1 2026</h3></div></a></div><div class="
80908        group flex w-full flex-col gap-2
80909        border-b-[1px] border-pro
80910        px-0 py-4
80911        transition-colors
80912      " data-article-id="138087"><div class="flex h-5 items-center gap-1 overflow-x-auto"><div class="flex items-center justify-center bg-pro-blue py-1 rounded-[12px] px-2 h-[20px] w-[36px]" data-testid="pro-tag"><p class="text-white font-bold text-[12px] leading-[1.3]">Pro</p></div><a class="pointer-events-auto text-brand-neutral underline decoration-current underline-offset-2 transition-colors font-emphasis-14 hover:bg-mono-10 hover:underline shrink-0 whitespace-nowrap" href="https://sifted.eu/sector/startup-life/">Startup life</a><span class="min-w-0 flex-1 overflow-hidden text-ellipsis whitespace-nowrap text-brand-neutral font-emphasis-14">Stealth founders</span></div><a aria-label="8 stealth founders using AI to take on the industries they used to work in" class="flex flex-col gap-2" href="https://sifted.eu/articles/8-stealth-founders-using-ai-to-take-on-the-industries-they-u
80912sed-to-work-in/"><div class="transition-colors group-hover:bg-pro-10"><h3 class="font-recklessBold text-accent-16 leading-tight text-brand-neutral transition-colors md:line-clamp-2 md:[overflow-wrap:anywhere]">8 stealth founders using AI to take on the industries they used to work in</h3></div></a></div><div class="
80913        group flex w-full flex-col gap-2
80914        border-b-[1px] border-pro
80915        px-0 py-4
80916        transition-colors
80917      " data-article-id="138026"><div class="flex h-5 items-center gap-1 overflow-x-auto"><div class="flex items-center justify-center bg-pro-blue py-1 rounded-[12px] px-2 h-[20px] w-[36px]" data-testid="pro-tag"><p class="text-white font-bold text-[12px] leading-[1.3]">Pro</p></div><span class="min-w-0 flex-1 overflow-hidden text-ellipsis whitespace-nowrap text-brand-neutral font-emphasis-14">Sifted data</span></div><a aria-label="The 25 companies Europe’s startup insiders watched most closely in H1" class="flex flex-col gap-2" href="https://sifted.eu/articles/the-25-companies-most-watched-insiders-h1-2026/"><div class="transition-colors group-hover:bg-pro-10"><h3 class="font-recklessBold text-accent-16 leading-tight text-brand-neutral transition-colors md:line-clamp-2 md:[overflow-wrap:anywhere]">The 25 companies Europe’s startup insiders watched most closely in H1</h3></div></a></div></div></div></div></div></section></section><section data-homepage-section="events"><div class="mx-auto w-full max-w-content-mobile px-5 md:max-w-content lg:max-w-container lg:px-0 mdDesktop:max-w-container mdDesktop:px-5"></div></section><section data-homepage-section="talks"><div class="mx-auto w-full max-w-content-mobile px-5 md:max-w-content lg:max-w-container lg:px-0 mdDesktop:max-w-container mdDesktop:px-5"><section class="w-full pb-16"><div class="w-full"><div class="flex flex-col items-center justify-start border-b pb-4 border-black-rock mb-4"><div class="flex w-full flex-row flex-wrap items-center justify-between gap-4"><h3 class="font-emphasis-18 text-black-rock">Upcoming Talks</h3><div><a href="https://sifted.eu/talks" class="inline-flex items-center gap-1 font-emphasis-14 text-black-rock focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-black-rock transition-colors ga-briefing-pro-link w-fit" aria-label="Explore more"><span class="inline-flex items-center gap-1 px-1 py-0.5 underline transition-colors hover:bg-black-rock-opacity-10 active:bg-mono-20 hover:underline"><span>Explore more</span></span></a></div></div></div><div data-testid="event-card" class="relative bg-white" data-variant="talk"><div data-testid="event-card__container" class="flex justify-between gap-x-6 p-4 lg:min-h-[324px]"><div class="flex flex-col hidden lg:block"><a class="block outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-black-rock" href="/talks/autonomous-but-accountable-how-to-deploy-agents-safely"><div class="pointer-events-none"><div class="w-[210px]"><img alt="Box" loading="lazy" width="2160" height="2160" decoding="async" data-nimg="1" class="h-[210px] w-full object-cover will-change-[filter] [transition:filter_0.25s]" style="color:transparent;background-size:cover;background-position:50% 50%;background-repeat:no-repeat;background-image:url(&quot;data:image/svg+xml;charset=utf-8,%3Csvg xmlns=&#x27;http://www.w3.org/2000/svg&#x27; viewBox=&#x27;0 0 2160 2160&#x27;%3E%3Cfilter id=&#x27;b&#x27; color-interpolation-filters=&#x27;sRGB&#x27;%3E%3CfeGaussianBlur stdDeviation=&#x27;20&#x27;/%3E%3CfeColorMatrix values=&#x27;1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1&#x27; result=&#x27;s&#x27;/%3E%3CfeFlood x=&#x27;0&#x27; y=&#x27;0&#x27; width=&#x27;100%25&#x27; height=&#x27;100%25&#x27;/%3E%3CfeComposite operator=&#x27;out&#x27; in=&#x27;s&#x27;/%3E%3CfeComposite in2=&#x27;SourceGraphic&#x27;/%3E%3CfeGaussianBlur stdDeviation=&#x27;20&#x27;/%3E%3C/filter%3E%3Cimage width=&#x27;100%25&#x27; height=&#x27;100%25&#x27; x=&#x27;0&#x27; y=&#x27;0&#x27; preserveAspectRatio=&#x27;none&#x27; style=&#x27;filter: url(%23b);&#x27; href=&#x27;data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAoHBwgHBhQICA8XERUKFxMNFQ0VDiYV
80917DxUYFxogGBcVFhUmHysvGh0oHRUWMDUlKC0vMjIyGSI4PTcwPCsxMi8BCgsLDg0OHBAQHDsoIig7OzU7Oy81Oy8vOy87Oy81LzU1Ly87LzUvNS81NS8vLy8vLy8vLy81LzUvNTUvLy8vL//AABEIABgAGAMBIgACEQEDEQH/xAAZAAEAAwEBAAAAAAAAAAAAAAAAAwQFBwH/xAAcEAABBQEBAQAAAAAAAAAAAAAAAQIDBBEFIRT/xAAWAQEBAQAAAAAAAAAAAAAAAAADAgH/xAAZEQACAwEAAAAAAAAAAAAAAAABAgADEQT/2gAMAwEAAhEDEQA/AOp0akD49QmWhXV+EXGVFreE+J9QddYyLbYwaU73NgRmgvXmtdB6AHqGx0uIWY/G6MSRYhpNtROl0AupjkroRd2e2rMbmYAAmY7MVRk//9k=&#x27;/%3E%3C/svg%3E&quot;)" sizes="min(400px, 100vw)" srcSet="https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=640,quality=75/60124/1787583684-hero-image-generic-talks-1080x1080px-4.png 640w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=750,quality=75/60124/1787583684-hero-image-generic-talks-1080x1080px-4.png 750w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=828,quality=75/60124/1787583684-hero-image-generic-talks-1080x1080px-4.png 828w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=1080,quality=75/60124/1787583684-hero-image-generic-talks-1080x1080px-4.png 1080w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=1200,quality=75/60124/1787583684-hero-image-generic-talks-1080x1080px-4.png 1200w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=1920,quality=75/60124/1787583684-hero-image-generic-talks-1080x1080px-4.png 1920w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=2048,quality=75/60124/1787583684-hero-image-generic-talks-1080x1080px-4.png 2048w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=3840,quality=75/60124/1787583684-hero-image-generic-talks-1080x1080px-4.png 3840w" src="https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=3840,quality=75/60124/1787583684-hero-image-generic-talks-1080x1080px-4.png"/></div><div data-testid="sponsorLogoAndText" class="flex flex-row items-center justify-between md:flex-col lg:mb-[14px] lg:mt-[30px] lg:flex-row"><p class="inline-flex items-center font-bold text-[14px] leading-[130%] text-mono-40 md:mb-[9px] lg:mb-0">Sponsored by</p><div class="h-[42px] w-[105px]"><img alt="Sponsor logo" loading="lazy" width="1200" height="644" decoding="async" data-nimg="1" class="h-full w-full object-contain self-end will-change-[filter] [transition:filter_0.25s]" style="color:transparent;background-size:cover;background-position:50% 50%;background-repeat:no-repeat;background-image:url(&quot;data:image/svg+xml;charset=utf-8,%3Csvg xmlns=&#x27;http://www.w3.org/2000/svg&#x27; viewBox=&#x27;0 0 1200 644&#x27;%3E%3Cfilter id=&#x27;b&#x27; color-interpolation-filters=&#x27;sRGB&#x27;%3E%3CfeGaussianBlur stdDeviation=&#x27;20&#x27;/%3E%3CfeColorMatrix values=&#x27;1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1&#x27; result=&#x27;s&#x27;/%3E%3CfeFlood x=&#x27;0&#x27; y=&#x27;0&#x27; width=&#x27;100%25&#x27; height=&#x27;100%25&#x27;/%3E%3CfeComposite operator=&#x27;out&#x27; in=&#x27;s&#x27;/%3E%3CfeComposite in2=&#x27;SourceGraphic&#x27;/%3E%3CfeGaussianBlur stdDeviation=&#x27;20&#x27;/%3E%3C/filter%3E%3Cimage width=&#x27;100%25&#x27; height=&#x27;100%25&#x27; x=&#x27;0&#x27; y=&#x27;0&#x27; preserveAspectRatio=&#x27;none&#x27; style=&#x27;filter: url(%23b);&#x27; href=&#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII&#x27;/%3E%3C/svg%3E&quot;)" sizes="50vw" srcSet="https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=384,quality=100/60124/1742315382-box-logo.png 384w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=640,quality=100/60124/1742315382-box-logo.png 640w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=750,quality=100/60124/1742315382-box-logo.png 750w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=828,quality=100/60124/1742315382-box-logo.png 828w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=1080,quality=100/60124/1742315382-box-logo.png 1080w, https://images-datocm
80917s.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=1200,quality=100/60124/1742315382-box-logo.png 1200w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=1920,quality=100/60124/1742315382-box-logo.png 1920w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=2048,quality=100/60124/1742315382-box-logo.png 2048w, https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=3840,quality=100/60124/1742315382-box-logo.png 3840w" src="https://images-datocms.sifted.eu/cdn-cgi/image/fit=scale-down,format=auto,width=3840,quality=100/60124/1742315382-box-logo.png"/></div></div></div></a></div><div class="flex h-auto flex-auto flex-col justify-between"><div><div class="mb-2 flex items-start justify-between gap-4"><div class="min-w-0 flex-1"><div class="flex items-center"><p class="font-bold text-[16px] text-cerise">Startup Life</p><div class="hidden items-center md:flex"><div class="mx-2 text-mono-30">•</div><p data-testid="event-time" class="font-bold text-[16px] text-mono-40">Wed 28 Oct 2026 / 12:00 (GMT)</p></div></div></div><div class="hidden shrink-0 md:block"><div class="text-secondary-cta [&amp;&gt;span]:ml-md space-x-2xl flex items-center"><span><a href="https://outlook.live.com/owa/?rru=addevent&amp;startdt=20261028T120000Z&amp;enddt=20261028T130000Z&amp;location=Zoom%20virtual%20event&amp;subject=Autonomous%2C%20but%20accountable%3A%20How%20to%20deploy%20agents%20safely&amp;body=Thank%20you%20for%20registering%20for%20our%20upcoming%20Sifted%20Talks%2C%20Autonomous%2C%20but%20accountable%3A%20How%20to%20deploy%20agents%20safely.%0A%0ADate%3A%20Wednesday%2C%2028%20October%202026%0ATime%3A%2012%3A00%E2%86%9213%3A00%20GMT%20%2F%2013%3A00%E2%86%9214%3A00%20CET%0A%0AAI%20agents%20take%20on%20real%20work%20inside%20businesses%20but%20handing%20over%20more%20responsibility%20also%20raises%20some%20questions%3A%20what%20should%20an%20agent%20be%20allowed%20to%20access%3F%20Who%20is%20accountable%20when%20something%20is%20wrong%3F%20And%20how%20do%20you%20know%20what%20it%20has%20done%3F%0AFor%20growing%20businesses%2C%20scattered%20content%20infrastructure%2C%20legacy%20systems%20and%20unclear%20permissions%20can%20quickly%20become%20a%20blocker.%20Simultaneously%2C%20locking%20everything%20down%20can%20make%20AI%20too%20cumbersome%20to%20be%20useful.%20This%20Sifted%20Talks%20will%20look%20at%20how%20companies%20can%20find%20the%20balance%3A%20putting%20practical%20guardrails%20around%20AI%20agents%20without%20slowing%20teams%20down.%0A%0A%0AUse%20the%20link%20below%20to%20join%20the%20discussion.%0Ahttps%3A%2F%2Fsifted.eu%2Ftalks%2Fautonomous-but-accountable-how-to-deploy-agents-safely%0A%0AHave%20any%20questions%20for%20our%20panellists%3F%20You%20can%20submit%20these%20ahead%20of%20time%20by%20emailing%20talks%40sifted.eu.%0A%0AWe%20look%20forward%20to%20seeing%20you%20for%20this%20Sifted%20Talks.%0A&amp;allday=false&amp;path=/calendar/view/Month" target="_blank" rel="noreferrer" data-testid="outlookCalendarLink"><svg width="22" height="22" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"><title>Add to Outlook Calendar</title><path d="M8.67188 3.15625H13.2031C13.2865 3.15625 13.3802 3.20833 13.4844 3.3125C13.6094 3.41667 13.6719 3.54167 13.6719 3.6875L9.70312 6.34375C9.66146 6.34375 9.61979 6.34375 9.57812 6.34375L8.67188 5.78125V3.15625ZM8.67188 6.75L9.51562 7.3125C9.55729 7.33333 9.59896 7.34375 9.64062 7.34375C9.68229 7.34375 9.71354 7.34375 9.73438 7.34375L9.76562 7.3125C9.72396 7.33333 10.026 7.13542 10.6719 6.71875C11.3177 6.28125 11.9844 5.84375 12.6719 5.40625L13.6719 4.75V9.53125C13.6719 9.78125 13.599 9.96875 13.4531 10.0938C13.3281 10.2188 13.1615 10.2812 12.9531 10.2812H8.67188V6.75ZM4.32812 5.53125C4.59896 5.53125 4.80729 5.66667 4.95312 5.9375C5.11979 6.1875 5.20312 6.54167 5.20312 7C5.20312 7.45833 5.11979 7.8125 4.95312 8.0625C4.80729 8.3125 4.58854 8.4375 4.29688 8.4375C4.02604 8.4375 3.80729 8.3125 3.64062 8.0625C3.47396 7.79167 3.39062 7.4375 3.39062 7C3.39062 6.5625 3.47396 6.20833 3.64062 5.9375C3.80729 5.66667 4.03646 5.53125 4.32812 5.53125ZM0.328125 1.84375L8.17188 0.34375V13.6562L0.328125 12.0312V1.84375ZM4.29688 9.3125C4.81771 9.3125 5.24479 9.09375 5.57812 8.65625C5.91146 8.21875 6.07812 7.65625 6.07812 6.96875C6.07812 6.28125 5.91146 5.72917 5.57812 5.3125C5.26562 4.875 4.84896 4.65625 4.32812 4.65625C3.78646 4.65625 3.34896 4.875 3.01562 5.3125C2.68229 5.75 2.51562 6.33333 2.51562 7.
809170625C2.51562 7.72917 2.68229 8.27083 3.01562 8.6875C3.34896 9.10417 3.77604 9.3125 4.29688 9.3125Z" fill="currentColor"></path></svg></a></span><span><a href="https://calendar.google.com/calendar/render?action=TEMPLATE&amp;dates=20261028T120000Z/20261028T130000Z&amp;location=Zoom%20virtual%20event&amp;text=Autonomous%2C%20but%20accountable%3A%20How%20to%20deploy%20agents%20safely&amp;details=Thank%20you%20for%20registering%20for%20our%20upcoming%20Sifted%20Talks%2C%20Autonomous%2C%20but%20accountable%3A%20How%20to%20deploy%20agents%20safely.%0A%0ADate%3A%20Wednesday%2C%2028%20October%202026%0ATime%3A%2012%3A00%E2%86%9213%3A00%20GMT%20%2F%2013%3A00%E2%86%9214%3A00%20CET%0A%0AAI%20agents%20take%20on%20real%20work%20inside%20businesses%20but%20handing%20over%20more%20responsibility%20also%20raises%20some%20questions%3A%20what%20should%20an%20agent%20be%20allowed%20to%20access%3F%20Who%20is%20accountable%20when%20something%20is%20wrong%3F%20And%20how%20do%20you%20know%20what%20it%20has%20done%3F%0AFor%20growing%20businesses%2C%20scattered%20content%20infrastructure%2C%20legacy%20systems%20and%20unclear%20permissions%20can%20quickly%20become%20a%20blocker.%20Simultaneously%2C%20locking%20everything%20down%20can%20make%20AI%20too%20cumbersome%20to%20be%20useful.%20This%20Sifted%20Talks%20will%20look%20at%20how%20companies%20can%20find%20the%20balance%3A%20putting%20practical%20guardrails%20around%20AI%20agents%20without%20slowing%20teams%20down.%0A%0A%0AUse%20the%20link%20below%20to%20join%20the%20discussion.%0Ahttps%3A%2F%2Fsifted.eu%2Ftalks%2Fautonomous-but-accountable-how-to-deploy-agents-safely%0A%0AHave%20any%20questions%20for%20our%20panellists%3F%20You%20can%20submit%20these%20ahead%20of%20time%20by%20emailing%20talks%40sifted.eu.%0A%0AWe%20look%20forward%20to%20seeing%20you%20for%20this%20Sifted%20Talks.%0A" target="_blank" rel="noreferrer" data-testid="googleCalendarLink"><svg width="22" height="22" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"><title>Add to Google Calendar</title><path d="M7.15625 6.0625V6.03125H13.4375C13.5 6.28125 13.5312 6.65625 13.5312 7.15625C13.5312 9.09375 12.9375 10.6667 11.75 11.875C10.5833 13.0625 9.04167 13.6562 7.125 13.6562C5.29167 13.6562 3.71875 13.0104 2.40625 11.7188C1.11458 10.4271 0.46875 8.85417 0.46875 7C0.46875 5.14583 1.11458 3.57292 2.40625 2.28125C3.69792 0.989583 5.27083 0.34375 7.125 0.34375C8.9375 0.34375 10.4375 0.9375 11.625 2.125L9.84375 3.875C9.15625 3.1875 8.26042 2.84375 7.15625 2.84375C6.03125 2.84375 5.0625 3.26042 4.25 4.09375C3.45833 4.90625 3.0625 5.89583 3.0625 7.0625C3.0625 8.20833 3.45833 9.1875 4.25 10C5.0625 10.8125 6.03125 11.2188 7.15625 11.2188C7.80208 11.2188 8.375 11.125 8.875 10.9375C9.375 10.7292 9.76042 10.4688 10.0312 10.1562C10.3229 9.84375 10.5417 9.54167 10.6875 9.25C10.8333 8.9375 10.9375 8.64583 11 8.375H7.15625V6.0625Z" fill="currentColor"></path></svg></a></span></div></div></div><a class="group relative block outline-none pr-[34px] focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-black-rock [&amp;_.chevron]:group-hover:right-0 [&amp;_.chevron]:group-focus-visible:right-0" href="/talks/autonomous-but-accountable-how-to-deploy-agents-safely"><h3 class="mb-2 font-bold text-[22px] leading-[130%]">Autonomous, but accountable: How to deploy agents safely</h3><div class="pointer-events-none inline-block lg:grid lg:grid-cols-3 lg:gap-y-2"><div class="hidden gap-x-[10px] lg:flex" data-testid="person"><div class="text-[14px]"><p><span class="font-bold">Mick McNeil</span>, Founder &amp; CEO</p><p class="">@ <!-- -->Deliverance AI</p></div></div><span class="text-[14px] text-mono-70 lg:hidden"><span class="font-bold">Mick McNeil</span><span class="hidden md:inline">, <!-- -->Founder &amp; CEO</span> @ Deliverance AI<!-- -->  |<!-- --> </span><div class="hidden gap-x-[10px] lg:flex" data-testid="person"><div class="text-[14px]"><p><span class="font-bold">Eléonore Hébrard</span>, Staff Solutions Engineer</p><p class="">@ <!-- -->Box</p></div></div><span class="text-[14px] text-mono-70 lg:hidden"><span class="font-bold">Eléonore Hébrard</span><span class="hidden md:inline">, <!-- -->Staff Solutions Engineer</span> @ Box<!-- --> </span></div><div data-testid="event-card__chevron" class="pointer-events-none absolute right-0 top-0 flex h-full w-[34px] items-center justify-end text-[28px]"><span class="chevron relative right-[10px] text-black-rock transition-[right]"></span></div></a><div class="mt-3 flex items-center justify-between gap-4 md:hidden"><p data-testid="event-time" class="font-bold text-[16px] text-mono-40">Wed 28 Oct 2026 / 12:00 (GMT)</p><div class="shrink-0"><div class="text-secondary-cta [&amp;&gt;span]:ml-md space-x-2xl flex items-center"><span><a href="https://outlook.live.com/owa/?rru=addevent&amp;startdt=20261028T120000Z&amp;enddt=20261028T130000Z&amp;location=Zoom%20virtual%20event&amp;subject=Autonomous%2C%20but%20accountable%3A%20How%20to%20deploy%20agents%20safely&amp;body=Thank%20you%20for%20registering%20for%20our%20upcoming%20Sifted%20Talks%2C%20Autonomous%2C%20but%20accountable%3A%20How%20to%20deploy%20agents%20safely.%0A%0ADate%3A%20Wednesday%2C%2028%20October%202026%0ATime%3A%2012%3A00%E2%86%9213%3A00%20GMT%20%2F%2013%3A00%E2%86%9214%3A00%20CET%0A%0AAI%20agents%20take%20on%20real%20work%20inside%20businesses%20but%20handing%20over%20more%20responsibility%20also%20raises%20some%20questions%3A%20what%20should%20an%20
80917agent%20be%20allowed%20to%20access%3F%20Who%20is%20accountable%20when%20something%20is%20wrong%3F%20And%20how%20do%20you%20know%20what%20it%20has%20done%3F%0AFor%20growing%20businesses%2C%20scattered%20content%20infrastructure%2C%20legacy%20systems%20and%20unclear%20permissions%20can%20quickly%20become%20a%20blocker.%20Simultaneously%2C%20locking%20everything%20down%20can%20make%20AI%20too%20cumbersome%20to%20be%20useful.%20This%20Sifted%20Talks%20will%20look%20at%20how%20companies%20can%20find%20the%20balance%3A%20putting%20practical%20guardrails%20around%20AI%20agents%20without%20slowing%20teams%20down.%0A%0A%0AUse%20the%20link%20below%20to%20join%20the%20discussion.%0Ahttps%3A%2F%2Fsifted.eu%2Ftalks%2Fautonomous-but-accountable-how-to-deploy-agents-safely%0A%0AHave%20any%20questions%20for%20our%20panellists%3F%20You%20can%20submit%20these%20ahead%20of%20time%20by%20emailing%20talks%40sifted.eu.%0A%0AWe%20look%20forward%20to%20seeing%20you%20for%20this%20Sifted%20Talks.%0A&amp;allday=false&amp;path=/calendar/view/Month" target="_blank" rel="noreferrer" data-testid="outlookCalendarLink"><svg width="22" height="22" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"><title>Add to Outlook Calendar</title><path d="M8.67188 3.15625H13.2031C13.2865 3.15625 13.3802 3.20833 13.4844 3.3125C13.6094 3.41667 13.6719 3.54167 13.6719 3.6875L9.70312 6.34375C9.66146 6.34375 9.61979 6.34375 9.57812 6.34375L8.67188 5.78125V3.15625ZM8.67188 6.75L9.51562 7.3125C9.55729 7.33333 9.59896 7.34375 9.64062 7.34375C9.68229 7.34375 9.71354 7.34375 9.73438 7.34375L9.76562 7.3125C9.72396 7.33333 10.026 7.13542 10.6719 6.71875C11.3177 6.28125 11.9844 5.84375 12.6719 5.40625L13.6719 4.75V9.53125C13.6719 9.78125 13.599 9.96875 13.4531 10.0938C13.3281 10.2188 13.1615 10.2812 12.9531 10.2812H8.67188V6.75ZM4.32812 5.53125C4.59896 5.53125 4.80729 5.66667 4.95312 5.9375C5.11979 6.1875 5.20312 6.54167 5.20312 7C5.20312 7.45833 5.11979 7.8125 4.95312 8.0625C4.80729 8.3125 4.58854 8.4375 4.29688 8.4375C4.02604 8.4375 3.80729 8.3125 3.64062 8.0625C3.47396 7.79167 3.39062 7.4375 3.39062 7C3.39062 6.5625 3.47396 6.20833 3.64062 5.9375C3.80729 5.66667 4.03646 5.53125 4.32812 5.53125ZM0.328125 1.84375L8.17188 0.34375V13.6562L0.328125 12.0312V1.84375ZM4.29688 9.3125C4.81771 9.3125 5.24479 9.09375 5.57812 8.65625C5.91146 8.21875 6.07812 7.65625 6.07812 6.96875C6.07812 6.28125 5.91146 5.72917 5.57812 5.3125C5.26562 4.875 4.84896 4.65625 4.32812 4.65625C3.78646 4.65625 3.34896 4.875 3.01562 5.3125C2.68229 5.75 2.51562 6.33333 2.51562 7.0625C2.51562 7.72917 2.68229 8.27083 3.01562 8.6875C3.34896 9.10417 3.77604 9.3125 4.29688 9.3125Z" fill="currentColor"></path></svg></a></span><span><a href="https://calendar.google.com/calendar/render?action=TEMPLATE&amp;dates=20261028T120000Z/20261028T130000Z&amp;location=Zoom%20virtual%20event&amp;text=Autonomous%2C%20but%20accountable%3A%20How%20to%20deploy%20agents%20safely&amp;details=Thank%20you%20for%20registering%20for%20our%20upcoming%20Sifted%20Talks%2C%20Autonomous%2C%20but%20accountable%3A%20How%20to%20deploy%20agents%20safely.%0A%0ADate%3A%20Wednesday%2C%2028%20October%202026%0ATime%3A%2012%3A00%E2%86%9213%3A00%20GMT%20%2F%2013%3A00%E2%86%9214%3A00%20CET%0A%0AAI%20agents%20take%20on%20real%20work%20inside%20businesses%20but%20handing%20over%20more%20responsibility%20also%20raises%20some%20questions%3A%20what%20should%20an%20agent%20be%20allowed%20to%20access%3F%20Who%20is%20accountable%20when%20something%20is%20wrong%3F%20And%20how%20do%20you%20know%20what%20it%20has%20done%3F%0AFor%20growing%20businesses%2C%20scattered%20content%20infrastructure%2C%20legacy%20systems%20and%20unclear%20permissions%20can%20quickly%20become%20a%20blocker.%20Simultaneously%2C%20locking%20everything%20down%20can%20make%20AI%20too%20cumbersome%20to%20be%20useful.%20This%20Sifted%20Talks%20will%20look%20at%20how%20companies%20can%20find%20the%20balance%3A%20putting%20practical%20guardrails%20around%20AI%20agents%20without%20slowing%20teams%20down.%0A%0A%0AUse%20the%20link%20below%20to%20join%20the%20discussion.%0Ahttps%3A%2F%2Fsifted.eu%2Ftalks%2Fautonomous-but-accountable-how-to-deploy-agents-safely%0A%0AHave%20any%20questions%20for%20our%20panellists%3F%20You%20can%20submit%20these%20ahead%20of%20time%20by%20emailing%20talks%40sifted.eu.%0A%0AWe%20look%20forward%20to%20seeing%20you%20for%20this%20Sifted%20Talks.%0A" target="_blank" rel="noreferrer" data-testid="googleCalendarLink"><svg width="22" height="22" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"><title>Add to Google Calendar</title><path d="M7.15625 6.0625V6.03125H13.4375C13.5 6.28125 13.5312 6.65625 13.5312 7.15625C13.5312 9.09375 12.9375 10.6667 11.75 11.875C10.5833 13.0625 9.04167 13.6562 7.125 13.6562C5.29167 13.6562 3.71875 13.0104 2.40625 11.7188C1.11458 10.4271 0.46875 8.85417 0.46875 7C0.46875 5.14583 1.11458 3.57292 2.40625 2.28125C3.69792 0.989583 5.27083 0.34375 7.125 0.34375C8.9375 0.34375 10.4375 0.9375 11.625 2.125L9.84375 3.875C9.15625 3.1875 8.26042 2.84375 7.15625 2.84375C6.03125 2.84375 5.0625 3.26042 4.25 4.09375C3.45833 4.90625 3.0625 5.89583 3.0625 7.0625C3.0625 8.20833 3.45833 9.1875 4.25 10C5.0625 10.8125 6.03125 11.2188 7.15625 11.2188C7.80208 11.2188 8.375 11.125 8.875 10.9375C9.375 10.7292 9.76042 10.4688 10.0312 10.1562C10.3229 9.84375 10.5417 9.54167 10.6875 9.25C10.8333 8.9375 10.9375 8.64583 11 8.375H7.15625V6.0625Z" fill="currentColor"></path></svg></a></span></div></div></div></div><div class="flex w-full justify-end self-end"></div></div></div></div></div></section></div></section></main><footer class="group w-full bg-[#C8C8CC] py-[50px] text-black-rock js-footer-gap"><div class="container m-auto w-full px-5 md:px-[40px] lg:px-0 max-w-[1220px] [.isMobileView_&amp;]:px-5"><div class="flex flex-col justify-between lg:flex-row [.isMobileView_&amp;]:flex-col" data-testid="footer-main-layout"><div class="mb-6 flex w-full flex-col items-start py-[10px] md:mb-[50px] lg:mb-0 lg:w-[394px] lg:py-0 [@media_(orientation:landscape)_and_(max-width:735px)]:py-0 [.isMobileView_&amp;]:mb-6 [.isMobileView_&amp;]:w-full [.isMobileView_&amp;]:py-[10px]"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 226 49" class="h-[32px] w-auto shrink-0 md:h-[49px] [.isMobileView_&amp;]:h-[32px] [@media_(orientation:landscape)_and_(max-width:735px)]:h-[49px]"><g clip-path="url(#footerLogoClip)"><path d="M0 0L19.0585 49H22.568L3.50958 0H0Z" fill="currentColor"></path><path d="M40.6668 24.5047C41.8029 24.8747 42.8437 25.2527 43.7893 25.6387C44.6746 25.991 45.5077 26.4571 46.2666 27.0247C46.9568 27.5447 47.5209 28.2072 47.9185 28.9647C48.3336 29.8058 48.5373 30.7314 48.5124 31.6647V31.7147C48.5715 32.8423 48.3676 33.9681 47.9161 35.0075C47.4646 36.0469 46.7773 36.9725 45.9061 37.7147C44.1679 39.1587 41.7333 39.8811 38.6022 39.8817C36.6311 39.8797 34.6752 39.5445 32.8212 38.8907C30.9121 38.2209 29.1193 37.2696 27.5051 36.0697L27.4529 36.0187L27.5051 35.9677L31.0147 30.5577L31.0669 30.6077C32.0513 31.6507 33.2462 32.4832 34.5765 33.0527C35.896 33.6093 37.3195 33.8923 38.7569 33.8837C40.7866 33.8837 41.8019 33.2467 41.8025 31.9727C41.8009 31.6758 41.7059 31.3866 41.5304 31.1441C41.355 30.9015 41.1075 30.7175 40.8215 30.6167C40.069 30.2781 39.2928 29.9921 38.4988 29.7607C38.3413 29.6993 38.1765 29.6573 38.0083 29.6357C37.8399 29.6163 37.6751 29.5739 37.5187 29.5097C36.4865 29.2431 35.4542 28.9501 34.4219 28.6307C33.4315 28.3324 32.492 27.8919 31.6343 27.3237C30.8078 26.7684 30.1128 26.0465 29.5963 25.2067C29.0243 24.2019 28.7476 23.0624 28.7965 21.9137V21.8137C28.7824 20.7066 29.0111 19.6094 29.4673 18.5957C29.9086 17.6318 30.5605 16.7737 31.3772 16.0817C32.2545 15.3493 33.272 14.7942 34.3707 14.4487C35.62 14.0505 36.9277 13.855 38.2418 13.8697C39.9381 13.8764 41.6245 14.1226 43.2486 14.6007C44.9155 15.0801 46.4988 15.8022 47.9451 16.7427V16.8427L44.797 22.4367L44.7458 22.3867C43.9045 21.583 42.9031 20.9567 41.8036 20.5467C40.6204 20.0912 39.359 19.8604 38.0871 19.8667C37.8112 19.8688 37.5357 19.8858 37.2617 19.9177C36.9638 19.9473 36.6746 20.0325 36.4096 20.1687C36.1583 20.298 35.9383 20.4784 35.7645 20.6977C35.5754 20.9724 35.4847 21.3005 35.5064 21.6307C35.5105 21.7898 35.5491 21.9463 35.6197 22.0897C35.6903 22.2331 35.7913 22.3603 35.916 22.4627C36.2345 22.7433 36.5903 22.9804 36.9739 23.1677C37.4436 23.404 37.9264 23.6147 38.42 23.7987C38.9525 23.9987 39.4772 24.1834 39.994 24.3527C40.1074 24.3544 40.2201 24.3713 40.3289 24.4027C40.4497 24.4367 40.5613 24.4707 40.6648 24.5027" fill="currentColor"></path><path d="M51.09 14.2743H57.9514V39.4743H51.09V14.2743ZM51.09 4.19434H57.9514V10.0943H51.09V4.19434Z" fill="currentColor"></path><path d="M71.9462 18.6096H79.5337V24.2016H75.0953L71.9462 18.6096ZM79.5337 4.19456V10.0946H73.9073C73.5038 10.0765 73.1023 10.1595 72.7409 10.3358C72.3795 10.5121 72.0703 10.7757 71.8428 11.1016C71.317 11.9315 71.065 12.8992 71.1208 13.8736V39.4736H64.2593V24.2016H60.5398V18.6096H64.2562V13.5696C64.2499 12.3228 64.5043 11.0879 65.0038 9.94056C65.9789 7.67777 67.8224 5.87764 70.1397 4.92556C71.3317 4.43455 72.6137 4.18582 73.9073 4.19456H79.5337Z" fill="currentColor"></path><path d="M100.076 16.8997V22.4937H96.2568L93.0565 16.8997H100.076ZM92.1789 30.8557C92.1724 31.2232 92.2449 31.5879 92.3916 31.9264C92.5384 32.2649 92.7562 32.5695 93.0309 32.8207C93.298 33.0816 93.616 33.2875 93.9661 33.4261C94.3161 33.5647 94.6912 33.6333 95.0689 33.6277H100.076V39.4737H95.0689C93.7684 39.4812 92.4796 39.2326 91.2797 38.7427C90.1199 38.276 89.0656 37.591 88.1767 36.7267C87.2943 35.8629 86.5854 34.8454 86.0865 33.7267C85.5663 32.5672 85.3025 31.3136 85.3123 30.0477V22.4877H81.5979V16.8997H85.3143V7.77173H92.1758L92.1789 30.8557Z" fill="currentColor"></path>
80917<path d="M114.266 13.868C116.042 13.8587 117.8 14.2108 119.428 14.902C122.617 16.2355 125.159 18.7168 126.525 21.831C127.235 23.438 127.596 25.1717 127.583 26.922C127.586 27.8708 127.483 28.8171 127.275 29.744L127.223 29.844H114.115L110.806 24.704H120.613C120.167 23.3457 119.334 22.1394 118.212 21.226C117.107 20.3236 115.705 19.8407 114.264 19.866C113.356 19.8614 112.457 20.0502 111.631 20.419C110.826 20.7728 110.099 21.2758 109.49 21.9C108.874 22.5396 108.392 23.2902 108.07 24.11C107.721 24.9991 107.547 25.9448 107.558 26.897C107.567 27.7127 107.724 28.5203 108.023 29.282C108.33 30.0993 108.785 30.8562 109.365 31.517C109.962 32.196 110.679 32.7656 111.481 33.199C112.334 33.6577 113.295 33.8914 114.268 33.877C115.137 33.8869 116.002 33.7592 116.829 33.499C117.716 33.1626 118.48 32.5743 119.022 31.81L119.073 31.76L119.176 31.81L125.163 34.385L125.06 34.485C123.842 36.1634 122.22 37.5245 120.338 38.449C118.462 39.3902 116.382 39.8785 114.273 39.873C112.475 39.8844 110.693 39.5412 109.034 38.864C107.443 38.221 105.996 37.2792 104.776 36.092C103.561 34.9041 102.588 33.502 101.908 31.96C101.201 30.3702 100.84 28.6536 100.851 26.92C100.837 25.1697 101.198 23.4359 101.908 21.829C103.275 18.7061 105.828 16.2223 109.031 14.9C110.686 14.2068 112.47 13.8548 114.27 13.866" fill="currentColor"></path><path d="M157.934 4.19434V39.4743H151.017L151.069 26.8243C151.073 25.9024 150.87 24.9908 150.475 24.1533C150.097 23.3384 149.573 22.5961 148.927 21.9613C148.277 21.3311 147.505 20.8338 146.656 20.4983C145.763 20.1431 144.807 19.9634 143.843 19.9693C142.887 19.9616 141.939 20.1415 141.056 20.4983C140.212 20.8408 
80917139.448 21.3466 138.811 21.9853C138.17 22.6289 137.654 23.3804 137.288 24.2033C136.914 25.0641 136.721 25.9897 136.721 26.9248C136.721 27.86 136.914 28.7856 137.288 29.6463C138.016 31.2982 139.364 32.6148 141.056 33.3253C141.935 33.6996 142.884 33.8888 143.843 33.8803C144.327 33.8808 144.81 33.8474 145.288 33.7803C145.755 33.7189 146.208 33.5838 146.63 33.3803H146.732L149.262 37.9163L149.209 37.9663C147.428 39.2746 145.243 39.9505 143.016 39.8823C141.264 39.8927 139.527 39.5638 137.906 38.9148C136.284 38.2659 134.811 37.3096 133.57 36.1013C132.356 34.9134 131.383 33.5113 130.703 31.9693C130.005 30.3765 129.645 28.6619 129.645 26.9293C129.645 25.1968 130.005 23.4822 130.703 21.8893C131.383 20.3472 132.356 18.9448 133.57 17.7563C134.811 16.548 136.284 15.5917 137.906 14.9429C139.527 14.2941 141.264 13.9656 143.016 13.9763C144.58 13.8985 146.139 14.2089 147.547 14.8787C148.955 15.5484 150.167 16.5556 151.068 17.8063V4.19434H157.934Z" fill="currentColor"></path><path d="M183.939 6.10352e-05L164.881 49.0001H168.391L187.449 6.10352e-05H183.939Z" fill="currentColor"></path></g><defs><clipPath id="footerLogoClip"><rect width="226" height="49" fill="white"></rect></clipPath></defs></svg></div><div class="grid w-full max-w-full grid-cols-2 gap-x-0 gap-y-[30px] pr-1 md:w-fit md:grid-cols-[max-content_max-content_max-content_max-content] md:gap-x-[clamp(48px,7vw,80px)] lg:flex lg:w-auto lg:justify-end lg:gap-x-[80px] [@media_(min-width:420px)_and_(max-width:735px)]:w-fit [@media_(min-width:420px)_and_(max-width:735px)]:grid-cols-[max-content_max-content] [@media_(min-width:420px)_and_(max-width:735px)]:gap-x-[80px] [.isMobileView_&amp;]:flex [.isMobileView_&amp;]:flex-row [.isMobileView_&amp;]:flex-wrap [.isMobileView_&amp;]:justify-start [.isMobileView_&amp;]:gap-x-0 [.isMobileView_&amp;]:gap-y-[30px]" data-testid="footer-link-columns"><div class="flex min-w-0 flex-col text-black-rock lg:w-auto [.isMobileView_&amp;]:w-[50%]" data-testid="footer-link-column"><h3 class="mb-3 font-bold text-[16px] leading-[130%]">Company</h3><ul class="flex flex-col gap-[20px] md:gap-[11px] [.isMobileView_&amp;]:gap-[20px]"><li class="inline-flex"><a href="/about" class="ga-footer-link text-[16px] leading-[130%] transition-[color] hover:text-cerise focus:outline-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring focus-visible:ring-cerise">About</a></li><li class="inline-flex"><a href="/careers" class="ga-footer-link text-[16px] leading-[130%] transition-[color] hover:text-cerise focus:outline-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring focus-visible:ring-cerise">Careers</a></li><li class="inline-flex"><a href="/advertising" class="ga-footer-link text-[16px] leading-[130%] transition-[color] hover:text-cerise focus:outline-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring focus-visible:ring-cerise">Advertising</a></li><li class="inline-flex"><a href="/cookie-policy" class="ga-footer-link text-[16px] leading-[130%] transition-[color] hover:text-cerise focus:outline-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring focus-visible:ring-cerise">Cookie Policy</a></li><li class="inline-flex"><a href="/privacy-policy" class="ga-footer-link text-[16px] leading-[130%] transition-[color] hover:text-cerise focus:outline-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring focus-visible:ring-cerise">Privacy Policy</a></li><li class="inline-flex"><a href="/ai-code-of-conduct" class="ga-footer-link text-[16px] leading-[130%] transition-[color] hover:text-cerise focus:outline-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring focus-visible:ring-cerise">AI Code of Conduct</a></li><li class="inline-flex"><a href="/terms-of-use" class="ga-footer-link text-[16px] leading-[130%] transition-[color] hover:text-cerise focus:outline-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring focus-visible:ring-cerise">Terms of Use</a></li><li class="inline-flex"><a href="/contact-us" class="ga-footer-link text-[16px] leading-[130%] transition-[color] hover:text-cerise focus:outline-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring focus-visible:ring-cerise">Contact Us</a></li></ul></div><div class="flex min-w-0 flex-col text-black-rock lg:w-auto [.isMobileView_&amp;]:w-[50%]" data-testid="footer-link-column"><h3 class="mb-3 font-bold text-[16px] leading-[130%]">Sifted Pro</h3><ul class="flex flex-col gap-[20px] md:gap-[11px] [.isMobileView_&amp;]:gap-[20px]"><li class="inline-flex"><a href="/subscribe" class="ga-footer-link text-[16px] leading-[130%] transition-[color] hover:text-cerise focus:outline-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring focus-visible:ring-cerise">Subscribe</a></li><li class="inline-flex"><a href="/pro/briefings/about" class="ga-footer-link text-[16px] leading-[130%] transition-[color] hover:text-cerise focus:outline-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring focus-visible:ring-cerise">Briefings</a></li><li class="inline-flex"><a href="https://info.sifted.eu/pro-deals-newsletter" class="ga-footer-link text-[16px] leading-[130%] transition-[color] hover:text-cerise focus:outline-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring focus-visible:ring-cerise">Deals Newsletter</a></li></ul></div><div class="flex min-w-0 flex-col text-black-rock lg:w-auto [.isMobileView_&amp;]:w-[50%]" data-testid="footer-link-column"><h3 class="mb-3 font-bold text-[16px] leading-[130%]">Products</h3><ul class="flex flex-col gap-[20px] md:gap-[11px] [.isMobileView_&amp;]:gap-[20px]"><li class="inline-flex"><a href="/newsletters" class="ga-footer-link text-[16px] leading-[130%] transition-[color] hover:text-cerise focus:outline-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring focus-visible:ring-cerise">Newsletters</a></li><li class="inline-flex"><a href="/rankings" class="ga-footer-link text-[16px] leading-[130%] transition-[color] hover:text-cerise focus:outline-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring focus-visible:ring-cerise">Rankings</a></li><li class="inline-flex"><a href="/intelligence/reports" class="ga-footer-link text-[16px] leading-[130%] transition-[color] hover:text-cerise focus:outline-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring focus-visible:ring-cerise">Reports</a></li><li class="inline-flex"><a href="/leaderboards" class="ga-footer-link text-[16px] leading-[130%] transition-[color] hover:text-cerise focus:outline-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring focus-visible:ring-cerise">Leaderboards</a></li><li class="inline-flex"><a href="/deals-tracker" class="ga-footer-link text-[16px] leading-[130%] transition-[color] hover:text-cerise focus:outline-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring focus-visible:ring-cerise">Deals Tracker</a></li><li class="inline-flex"><a href="/investor-tracker" class="ga-footer-link text-[16px] leading-[130%] transition-[color] hover:text-cerise focus:outline-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring focus-visible:ring-cerise">Investor Tracker</a></li><li class="inline-flex"><a href="/market-tracker" class="ga-footer-link text-[16px] leading-[130%] transition-[color] hover:text-cerise focus:outline-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring focus-visible:ring-cerise">Market Tracker</a></li><li class="inline-flex"><a href="/ma-tracker" class="ga-footer-link text-[16px] leading-[130%] transition-[color] hover:text-cerise focus:outline-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring focus-visible:ring-cerise">M&amp;A Tracker </a></li></ul></div><div class="flex min-w-0 flex-col text-black-rock lg:w-auto [.isMobileView_&amp;]:w-[50%]" data-testid="footer-link-column"><h3 class="mb-3 font-bold text-[16px] leading-[130%]">Community</h3><ul class="flex flex-col gap-[20px] md:gap-[11px] [.isMobileView_&amp;]:gap-[20px]"><li class="inline-flex"><a href="/talks" class="ga-footer-link text-[16px] leading-[130%] transition-[color] hover:text-cerise focus:outline-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring focus-visible:ring-cerise">Talks</a></li><li class="inline-flex"><a href="/podcasts" class="ga-footer-link text-[16px] leading-[130%] transition-[color] hover:text-cerise focus:outline-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring focus-visible:ring-cerise">Podcasts</a></li><li class="inline-flex"><a href="https://summit.sifted.eu/" class="ga-footer-link text-[16px] leading-[130%] transition-[color] hover:text-cerise focus:outline-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring focus-visible:ring-cerise">Sifted Summit</a></li></ul></div></div></div></div><div class="mt-[24px] border-t border-[#AAAAB2] pt-[24px]"><div class="container m-auto w-full px-5 md:px-[40px] lg:px-0 max-w-[1220px] [.isMobileView_&amp;]:px-5"><div class="flex flex-col items-start justify-between gap-[14px] md:flex-row md:items-end md:gap-[24px] [.isMobileView_&amp;]:flex-col [.isMobileView_&amp;]:items-start [.isMobileView_&amp;]:gap-[14px]"><ul class="flex gap-5"><li class="flex"><a href="https://www.linkedin.com/company/siftedeu/" referrerPolicy="str
80917ict-origin-when-cross-origin" class="relative inline-flex items-center justify-center leading-[100%] duration-200 ease-in-out transition-[background-color,box-shadow,color,border-color] after:pointer-events-none after:bg-black-rock after:absolute after:bottom-0 after:left-0 after:right-0 after:top-0 after:opacity-0 after:duration-200 after:ease-in-out after:transition-opacity after:content-[&#x27;&#x27;] disabled:pointer-events-none disabled:text-mono-20 disabled:user-select-none focus:outline-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring focus-visible:ring-inset rounded-none bg-transparent focus-visible:ring-black text-black-rock hover:after:opacity-[10%] active:after:opacity-[15%] focus-visible:ring-black w-[36px] h-[36px] p-[6px] ga-footer-link-social" aria-label="LinkedIn" target="_blank" rel="external noopener"><div class="inline-flex h-[24px] w-[24px] items-center justify-center"><img src="https://www.datocms-assets.com/60124/1689076682-linkedin.svg" alt="LinkedIn Logo" title="LinkedIn Logo" class="h-[24] w-[24]" loading="lazy"/></div></a></li><li class="flex"><a href="https://whatsapp.com/channel/0029VbD54jc4SpkF4lq81j41" referrerPolicy="strict-origin-when-cross-origin" class="relative inline-flex items-center justify-center leading-[100%] duration-200 ease-in-out transition-[background-color,box-shadow,color,border-color] after:pointer-events-none after:bg-black-rock after:absolute after:bottom-0 after:left-0 after:right-0 after:top-0 after:opacity-0 after:duration-200 after:ease-in-out after:transition-opacity after:content-[&#x27;&#x27;] disabled:pointer-events-none disabled:text-mono-20 disabled:user-select-none focus:outline-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring focus-visible:ring-inset rounded-none bg-transparent focus-visible:ring-black text-black-rock hover:after:opacity-[10%] active:after:opacity-[15%] focus-visible:ring-black w-[36px] h-[36px] p-[6px] ga-footer-link-social" aria-label="Whatsapp" target="_blank" rel="external noopener"><div class="inline-flex h-[24px] w-[24px] items-center justify-center"><img src="https://www.datocms-assets.com/60124/1781185911-whatsapp.svg" class="h-[24] w-[24]" loading="lazy"/></div></a></li><li class="flex"><a href="https://www.instagram.com/siftedeu/" referrerPolicy="strict-origin-when-cross-origin" class="relative inline-flex items-center justify-center leading-[100%] duration-200 ease-in-out transition-[background-color,box-shadow,color,border-color] after:pointer-events-none after:bg-black-rock after:absolute after:bottom-0 after:left-0 after:right-0 after:top-0 after:opacity-0 after:duration-200 after:ease-in-out after:transition-opacity after:content-[&#x27;&#x27;] disabled:pointer-events-none disabled:text-mono-20 disabled:user-select-none focus:outline-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring focus-visible:ring-inset rounded-none bg-transparent focus-visible:ring-black text-black-rock hover:after:opacity-[10%] active:after:opacity-[15%] focus-visible:ring-black w-[36px] h-[36px] p-[6px] ga-footer-link-social" aria-label="Instagram" target="_blank" rel="external noopener"><div class="inline-flex h-[24px] w-[24px] items-center justify-center"><img src="https://www.datocms-assets.com/60124/1729688606-instagram.svg" class="h-[24] w-[24]" loading="lazy"/></div></a></li><li class="flex"><a href="https://www.facebook.com/siftedeu" referrerPolicy="strict-origin-when-cross-origin" class="relative inline-flex items-center justify-center leading-[100%] duration-200 ease-in-out transition-[background-color,box-shadow,color,border-color] after:pointer-events-none after:bg-black-rock after:absolute after:bottom-0 after:left-0 after:right-0 after:top-0 after:opacity-0 after:duration-200 after:ease-in-out after:transition-opacity after:content-[&#x27;&#x27;] disabled:pointer-events-none disabled:text-mono-20 disabled:user-select-none focus:outline-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring focus-visible:ring-inset rounded-none bg-transparent focus-visible:ring-black text-black-rock hover:after:opacity-[10%] active:after:opacity-[15%] focus-visible:ring-black w-[36px] h-[36px] p-[6px] ga-footer-link-social" aria-label="Facebook" target="_blank" rel="external noopener"><div class="inline-flex h-[24px] w-[24px] items-center justify-center"><img src="https://www.datocms-assets.com/60124/1689076874-facebook.svg" alt="Facebook Logo" title="Facebook Logo" class="h-[24] w-[24]" loading="lazy"/></div></a></li><li class="flex"><a href="https://sifted.eu/feed/?post_type=article" referrerPolicy="str
80917ict-origin-when-cross-origin" class="relative inline-flex items-center justify-center leading-[100%] duration-200 ease-in-out transition-[background-color,box-shadow,color,border-color] after:pointer-events-none after:bg-black-rock after:absolute after:bottom-0 after:left-0 after:right-0 after:top-0 after:opacity-0 after:duration-200 after:ease-in-out after:transition-opacity after:content-[&#x27;&#x27;] disabled:pointer-events-none disabled:text-mono-20 disabled:user-select-none focus:outline-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring focus-visible:ring-inset rounded-none bg-transparent focus-visible:ring-black text-black-rock hover:after:opacity-[10%] active:after:opacity-[15%] focus-visible:ring-black w-[36px] h-[36px] p-[6px] ga-footer-link-social" aria-label="Feed" target="_blank" rel="external noopener"><div class="inline-flex h-[24px] w-[24px] items-center justify-center"><img src="https://www.datocms-assets.com/60124/1689076939-rss-feed.svg" alt="RSS Feed Logo" title="RSS Feed Logo" class="h-[24] w-[24]" loading="lazy"/></div></a></li></ul><div><p class="markdown_container__3rlf4 text-[14px] leading-[130%] text-mono-70">© 2026 Sifted EU Ltd. All Rights Reserved.</p></div></div></div></div></footer></div><div>
80917<script type="text/javascript">
80918        if (!window.Zephr) window.Zephr = {};
80919        if (!window.Zephr.outcomes) window.Zephr.outcomes = {};
80920        window.Zephr.outcomes["display-banner"] = {
80921            featureLabel: "Banner",
80922            outcomeId: "transformation/2#1",
80923            outcomeLabel: "Remove"
80924        };
80925    </script>
80925</div><div><div class="zephr-feature show-bottom-banner-alt"></div></div></div></div>
80925<script type="text/javascript">
80926        if (!window.Zephr) window.Zephr = {};
80927        if (!window.Zephr.outcomes) window.Zephr.outcomes = {};
80928        window.Zephr.outcomes["sifted-user"] = {
80929            featureLabel: "window.Sifted.user",
80930            outcomeId: "transformation/1",
80931            outcomeLabel: "Anonymous"
80932        };
80933    </script>
80933<script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"__initialState":{"homepage":{"sectors":[],"latestNews":[],"latest":[{"id":140908,"url":"https://sifted.eu/articles/browse-sifteds-company-coverage/","slug":"browse-sifteds-company-coverage","title":"Browse Sifted's company coverage","excerpt":"Search our article directory of Europe's startups and scaleups — growing every week as we cover more.","comments":{"count":"0","enabled":false},"publishTimestamp":1790260898000,"author":{"name":"Jonathan Sinclair","url":"https://sifted.eu/author/jonathansinclair/"},"authors":[{"id":8734,"type":"wpuser","name":"Jonathan Sinclair","twitter":"","bio":"Jonathan Sinclair is head of research at Sifted. Find him on \u003ca href=\"https://www.linkedin.com/in/jonathan-sinclair-98a019137/\"\u003e LinkedIn \u003c/a\u003e","niceName":"jonathansinclair","image":false}],"isSponsored":false,"sponsorshipType":null,"isMemberContent":false,"isProContent":true,"isNonFree":true,"contentSubscriptionLevel":"is_pro","articleFormat":"standard","layout":"long_form","sector":{"name":"Venture capital","slug":"venture-capital","url":"https://sifted.eu/sector/venture-capital/"},"category":{"name":"List","slug":"list","url":"https://sifted.eu/categories/list/"},"taxonomies":{"categories":{"primary":null,"all":[{"id":41674,"name":"List","slug":"list","url":"https://sifted.eu/categories/list/"}]},"sectors":{"primary":{"id":11532,"name":"Venture capital","slug":"venture-capital","url":"https://sifted.eu/sector/venture-capital/"},"all":[{"id":11532,"name":"Venture capital","slug":"venture-capital","url":"https://sifted.eu/sector/venture-capital/"}]},"themes":{"primary":null,"all":[]},"topics":{"primary":null,"all":[]},"practices":{"primary":null,"all":[]},"countries":{"primary":null,"all":[]},"tags":{"primary":null,"all":[{"id":43560,"name":"Company coverage","slug":"company-coverage","url":"https://sifted.eu/tag/company-coverage/"}]}},"tagList":[{"name":"Venture capital","link":"https://sifted.eu/sector/venture-capital/"},{"name":"Company coverage","link":"https://sifted.eu/tag/company-coverage/"}],"image":{"base":"https://images.sifted.eu/cdn-cgi/image/width=2048,quality=75,fit=cover,format=auto/wp-content/uploads/2025/10/10165112/sifted2.jpg","full":"https://images.sifted.eu/cdn-cgi/image/width=2048,quality=75,fit=cover,format=auto/wp-content/uploads/2025/10/10165112/sifted2.jpg","fullWidth":2048,"fullHeight":1365,"header-image":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2025/10/10165112/sifted2.jpg","header-image-labeled":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2025/10/10165112/sifted2.jpg","list-image":"https://images.sifted.eu/cdn-cgi/image/width=240,quality=75,fit=cover,format=auto/wp-content/uploads/2025/10/10165112/sifted2.jpg","caption":"The Sifted Summit 2025 team ","placeholder":false,"alt":"The Sifted Summit 2025 team"},"cardImage":{"caption":"The Sifted Summit 2025 team ","alt":"The Sifted Summit 2025 team","base":"https://images.sifted.eu/cdn-cgi/image/width=2048,quality=75,fit=cover,format=auto/wp-content/uploads/2025/10/10165112/sifted2.jpg","fullWidth":2048,"fullHeight":1365,"placeholder":false},"longFormMobileImage":{"caption":"The Sifted Summit 2025 team ","base":"https://images.sifted.eu/cdn-cgi/image/width=2048,quality=75,fit=cover,format=auto/wp-content/uploads/2025/10/10165112/sifted2.jpg","fullWidth":2048,"fullHeight":1365,"placeholder":false}},{"id":140872,"url":"https://sifted.eu/articles/new-york-podcast/","slug":"new-york-podcast","title":"Is New York warming to European tech?","excerpt":"Anne Sraders joins host Freya Pratty on this week's Sifted podcast","comments":{"count":"0","enabled":false},"publishTimestamp":1790255114000,"author":{"name":"Anne Sraders","url":"https://sifted.eu/author/anne-sraders/"},"authors":[{"id":9088,"type":"wpuser","name":"Anne Sraders","twitter":"https://x.com/AnneSraders","bio":"Anne Sraders is a senior reporter at Sifted, based in Berlin. She covers the VC industry and deeptech startups. She also writes Sifted's weekly VC newsletter \u003ca href=\"https://sifted.eu/newsletters\"\u003e Up Round\u003c/a\u003e. Follow her on \u003ca href=\"https://x.com/AnneSraders\"\u003e X\u003c/a\u003e and \u003ca href=\"https://www.linkedin.com/in/anne-sraders-54222b95//\"\u003e LinkedIn\u003c/a\u003e","niceN
80933ame":"anne-sraders","image":false},{"id":8525,"type":"wpuser","name":"Freya Pratty","twitter":"FPratty","bio":"Freya Pratty is Sifted's associate editor. She covers UK tech and leads Sifted's investigations. Follow her on \u003ca href=\"https://twitter.com/FPratty\"\u003e X \u003c/a\u003e, \u003ca href=\"https://www.linkedin.com/in/freyapratty111/\"\u003e LinkedIn \u003c/a\u003e and \u003ca href=\"https://bsky.app/profile/freyapratty.bsky.social\"\u003e Bluesky\u003c/a\u003e","niceName":"freya-williams","image":false}],"isSponsored":false,"sponsorshipType":null,"isMemberContent":false,"isProContent":false,"isNonFree":false,"contentSubscriptionLevel":"is_free","articleFormat":"standard","layout":"short_form","sector":{"name":"Venture capital","slug":"venture-capital","url":"https://sifted.eu/sector/venture-capital/"},"category":{"name":"Podcast","slug":"podcast","url":"https://sifted.eu/categories/podcast/"},"taxonomies":{"categories":{"primary":null,"all":[{"id":40118,"name":"Podcast","slug":"podcast","url":"https://sifted.eu/categories/podcast/"}]},"sectors":{"primary":{"id":11532,"name":"Venture capital","slug":"venture-capital","url":"https://sifted.eu/sector/venture-capital/"},"all":[{"id":11532,"name":"Venture capital","slug":"venture-capital","url":"https://sifted.eu/sector/venture-capital/"}]},"themes":{"primary":null,"all":[]},"topics":{"primary":{"id":1928,"name":"Entrepreneurship","slug":"entrepreneurship","url":"https://sifted.eu/topic/entrepreneurship/"},"all":[{"id":1928,"name":"Entrepreneurship","slug":"entrepreneurship","url":"https://sifted.eu/topic/entrepreneurship/"},{"id":1929,"name":"Innovation","slug":"innovation","url":"https://sifted.eu/topic/innovation/"},{"id":1927,"name":"Startups","slug":"startups","url":"https://sifted.eu/topic/startups/"},{"id":1926,"name":"Technology","slug":"technology","url":"https://sifted.eu/topic/technology/"}]},"practices":{"primary":null,"all":[]},"countries":{"primary":null,"all":[]},"tags":{"primary":null,"all":[{"id":43145,"name":"Podcast","slug":"podcast","url":"https://sifted.eu/tag/podcast/"},{"id":43159,"name":"Venture capital","slug":"venture-capital","url":"https://sifted.eu/tag/venture-capital/"}]}},"tagList":[{"name":"Venture capital","link":"https://sifted.eu/sector/venture-capital/"},{"name":"Podcast","link":"https://sifted.eu/tag/podcast/"},{"name":"Venture capital","link":"https://sifted.eu/tag/venture-capital/"}],"image":{"base":"https://images.sifted.eu/cdn-cgi/image/width=1280,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23225328/Freya-Anne-image.png","full":"https://images.sifted.eu/cdn-cgi/image/width=1280,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23225328/Freya-Anne-image.png","fullWidth":1280,"fullHeight":720,"header-image":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23225328/Freya-Anne-image.png","header-image-labeled":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23225328/Freya-Anne-image.png","list-image":"https://images.sifted.eu/cdn-cgi/image/width=240,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23225328/Freya-Anne-image.png","caption":"","placeholder":false,"alt":""},"cardImage":{"fullWidth":1080,"fullHeight":1080,"caption":"","base":"https://images.sifted.eu/cdn-cgi/image/width=1080,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23224230/Freya-Anne-image-square.png","alt":"","placeholder":false},"longFormMobileImage":{"caption":"","base":"https://images.sifted.eu/cdn-cgi/image/width=1280,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23225328/Freya-Anne-image.png","fullWidth":1280,"fullHeight":720,"placeholder":false}},{"id":140887,"url":"https://sifted.eu/articles/exclusive-revolut-customers-fresh-hack/","slug":"exclusive-revolut-customers-fresh-hack","title":"Exclusive: Revolut customers hit by fresh security breach","excerpt":"The broker the fintech uses to trade US stocks suffered a security incident, emails seen by Sifted show","comments":{"count":"0","enabled":false},"publishTimestamp":1790249139000,"author":{"name":"Maya Dharampal-Hornby","url":"https://sifted.eu/author/maya-dharampal-hornby/"},"authors":[{"id":9171,"type":"wpuser","name":"Maya Dharampal-Hornby","twitter":"","bio":"Maya Dharampal-Hornby is a reporter, 
80933covering UK tech for Sifted, based in London. She's also the producer of \u003ca href=\"https://podcast.sifted.eu/\"\u003e Startup Europe — The Sifted Podcast \u003c/a\u003e.","niceName":"maya-dharampal-hornby","image":false}],"isSponsored":false,"sponsorshipType":null,"isMemberContent":false,"isProContent":true,"isNonFree":true,"contentSubscriptionLevel":"is_pro","articleFormat":"standard","layout":"short_form","sector":{"name":"Fintech","slug":"fintech","url":"https://sifted.eu/sector/fintech/"},"category":{"name":"Exclusive","slug":"exclusive","url":"https://sifted.eu/categories/exclusive/"},"taxonomies":{"categories":{"primary":null,"all":[{"id":41679,"name":"Exclusive","slug":"exclusive","url":"https://sifted.eu/categories/exclusive/"},{"id":4497,"name":"News","slug":"news","url":"https://sifted.eu/categories/news/"}]},"sectors":{"primary":{"id":11535,"name":"Fintech","slug":"fintech","url":"https://sifted.eu/sector/fintech/"},"all":[{"id":11535,"name":"Fintech","slug":"fintech","url":"https://sifted.eu/sector/fintech/"}]},"themes":{"primary":null,"all":[]},"topics":{"primary":null,"all":[]},"practices":{"primary":null,"all":[]},"countries":{"primary":null,"all":[]},"tags":{"primary":null,"all":[{"id":40969,"name":"Revolut","slug":"revolut","url":"https://sifted.eu/tag/revolut/"}]}},"tagList":[{"name":"Fintech","link":"https://sifted.eu/sector/fintech/"},{"name":"Revolut","link":"https://sifted.eu/tag/revolut/"}],"image":{"base":"https://images.sifted.eu/cdn-cgi/image/width=2048,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/14213130/revolut-hack-scaled.png","full":"https://images.sifted.eu/cdn-cgi/image/width=2048,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/14213130/revolut-hack-scaled.png","fullWidth":2048,"fullHeight":672,"header-image":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/14213130/revolut-hack-scaled.png","header-image-labeled":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/14213130/revolut-hack-scaled.png","list-image":"https://images.sifted.eu/cdn-cgi/image/width=240,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/14213130/revolut-hack-scaled.png","caption":"Passports and driving licences, birth dates, addresses and more were exposed in the breach. ","placeholder":false,"alt":"revolut hack"},"cardImage":{"caption":"Passports and driving licences, birth dates, addresses and more were exposed in the breach. ","alt":"revolut hack","base":"https://images.sifted.eu/cdn-cgi/image/width=2048,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/14213130/revolut-hack-scaled.png","fullWidth":2048,"fullHeight":672,"placeholder":false},"longFormMobileImage":{"caption":"Passports and driving licences, birth dates, addresses and more were exposed in the breach. ","base":"https://images.sifted.eu/cdn-cgi/image/width=2048,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/14213130/revolut-hack-scaled.png","fullWidth":2048,"fullHeight":672,"placeholder":false}},{"id":140407,"url":"https://sifted.eu/articles/uk-startup-building-ais-next-enterprise-category-brnd/","slug":"uk-startup-building-ais-next-enterprise-category-brnd","title":"Inside the UK startup building AI’s next enterprise category","excerpt":"Backed by investors including LocalGlobe, Cherry Ventures and Octopus Ventures, Resolutiion is betting that Risk-to-Resolution will be the next breakout wave in enterprise AI","comments":{"count":"0","enabled":false},"publishTimestamp":1790240400000,"author":{"name":"techUK","url":"https://sifted.eu/author/techuk/"},"authors":[{"id":9283,"type":"wpuser","name":"techUK","twitter":"","bio":"","niceName":"techuk","image":false}],"isSponsored":true,"sponsorshipType":"Paid for and produced by","sponsorDetails":{"logo":"https://images.sifted.eu/cdn-cgi/image/format=auto/wp-content/uploads/2026/09/17113959/unnamed.png","logoWidth":438,"logoHeight":137,"name":"TechUK","description":"","url":"","urlLabel":"Learn more"},"isMemberContent":false,"isProContent":false,"isNonFree":false,"contentSubscriptionLevel":"is_free","articleFormat":"sponsored","layout":"","sector":{"name":"Startup life","slug":"startup-life","url":"https://sifted.eu/sector/startup-life/"},"category":{"name":"Paid for and produced by","slug":"paid-for-and-produced-by","url":"https://sifted.eu/categories/paid-for-and-produced-by/"},"taxonomies":{"categories":{"primary":null,"all":[{"id":41697,"name":"Paid for and produced by","slug":"paid-for-and-produced-by","url":"https://sifted.eu/categories/paid-for-and-produced-by/"},{"id":41677,"name":"Branded content","slug":"branded-content","url":"https://sifted.eu/categories/branded-content/"}]},"sectors":{"primary":{"id":11531,"name":"Startup life","slug":"startup-life","url":"https://sifted.eu/sector/startup-life/"},"all":[{"id":290,"name":"Artificial intelligence","slug":"artificial-intelligence","url":"https://sifted.eu/sector/artificial-intelligence/"},{"id":327,"name":"Deeptech","slug":"deeptech","url":"https://sifted.eu/sector/deeptech/"},{"id":11531,"name":"Startup life","slug":"startup-life","url":"https://sifted.eu/sector/startup-life/"}]},"themes":{"primary":{"id":1714,"name":"Startups","slug":"startups","url":"https://sifted.eu/themes/startups/"},"all":[{"id":1714,"name":"Startups","slug":"startups","url":"https://sifted.eu/themes/startups/"}]}
80933,"topics":{"primary":{"id":1927,"name":"Startups","slug":"startups","url":"https://sifted.eu/topic/startups/"},"all":[{"id":1927,"name":"Startups","slug":"startups","url":"https://sifted.eu/topic/startups/"}]},"practices":{"primary":{"id":314,"name":"Tech","slug":"tech","url":"https://sifted.eu/practice/tech/"},"all":[{"id":314,"name":"Tech","slug":"tech","url":"https://sifted.eu/practice/tech/"}]},"countries":{"primary":null,"all":[]},"tags":{"primary":null,"all":[]}},"tagList":[{"name":"Artificial intelligence","link":"https://sifted.eu/sector/artificial-intelligence/"},{"name":"Deeptech","link":"https://sifted.eu/sector/deeptech/"},{"name":"Startup life","link":"https://sifted.eu/sector/startup-life/"}],"image":{"base":"https://images.sifted.eu/cdn-cgi/image/width=2048,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/22125705/Sifted-scaled.png","full":"https://images.sifted.eu/cdn-cgi/image/width=2048,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/22125705/Sifted-scaled.png","fullWidth":2048,"fullHeight":1280,"header-image":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/22125705/Sifted-scaled.png","header-image-labeled":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/22125705/Sifted-scaled.png","list-image":"https://images.sifted.eu/cdn-cgi/image/width=240,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/22125705/Sifted-scaled.png","caption":"","placeholder":false,"alt":""},"cardImage":{"caption":"","alt":"","base":"https://images.sifted.eu/cdn-cgi/image/width=2048,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/22125705/Sifted-scaled.png","fullWidth":2048,"fullHeight":1280,"placeholder":false},"longFormMobileImage":{"caption":"","base":"https://images.sifted.eu/cdn-cgi/image/width=2048,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/22125705/Sifted-scaled.png","fullWidth":2048,"fullHeight":1280,"placeholder":false}},{"id":140819,"url":"https://sifted.eu/articles/dtcp-first-close-defence-fund-invest-europe-growth/","slug":"dtcp-first-close-defence-fund-invest-europe-growth","title":"Growth investor DTCP raises €455m first close for defence fund, plots future funds","excerpt":"The firm launched the fund in January and has already made two investments","comments":{"count":"0","enabled":false},"publishTimestamp":1790233236000,"author":{"name":"Anne Sraders","url":"https://sifted.eu/author/anne-sraders/"},"authors":[{"id":9088,"type":"wpuser","name":"Anne Sraders","twitter":"https://x.com/AnneSraders","bio":"Anne Sraders is a senior reporter at Sifted, based in Berlin. She covers the VC industry and deeptech startups. She also writes Sifted's weekly VC newsletter \u003ca href=\"https://sifted.eu/newsletters\"\u003e Up Round\u003c/a\u003e. Follow her on \u003ca href=\"https://x.com/AnneSraders\"\u003e X\u003c/a\u003e and \u003ca href=\"https://www.linkedin.com/in/anne-sraders-54222b95//\"\u003e LinkedIn\u003c/a\u003e","niceName":"anne-sraders","image":false}],"isSponsored":false,"sponsorshipType":null,"isMemberContent":false,"isProContent":false,"isNonFree":false,"contentSubscriptionLevel":"is_free","articleFormat":"standard","layout":"short_form","sector":{"name":"Venture capital","slug":"venture-capital","url":"https://sifted.eu/sector/venture-capital/"},"category":{"name":"News","slug":"news","url":"https://sifted.eu/categories/news/"},"taxonomies":{"categories":{"primary":null,"all":[{"id":4497,"name":"News","slug":"news","url":"https://sifted.eu/categories/news/"}]},"sectors":{"primary":{"id":11532,"name":"Venture capital","slug":"venture-capital","url":"https://sifted.eu/sector/venture-capital/"},"all":[{"id":41484,"name":"Defence tech","slug":"defence-tech","url":"https://sifted.eu/sector/defence-tech/"},{"id":327,"name":"Deeptech","slug":"deeptech","url":"https://sifted.eu/sector/deeptech/"},{"id":11541,"name":"LP","slug":"lp","url":"https://sifted.eu/sector/lp/"},{"id":11532,"name":"Venture capital","slug":"venture-capital","url":"https://sifted.eu/sector/venture-capital/"}]},"themes":{"primary":{"id":1711,"name":"Venture Capital","slug":"venture-capital","url":"https://sifted.eu/themes/venture-capital/"},"all":[{"id":1711,"name":"Venture Capital","slug":"venture-capital","url":"https://sifted.eu/themes/venture-capital/"}]},"topics":{"primary":{"id":1950,"name":"Venture Capital","slug":"venture-capital","url":"https://sifted.eu/topic/venture-capital/"},"all":[{"id":1950,"name":"Venture Capital","slug":"venture-capital","url":"https://sifted.eu/topic/venture-capital/"}]},"practices":{"primary":{"id":311,"name":"Funding","slug":"funding","url":"https://sifted.eu/practice/funding/"},"all":[{"id":311,"name":"Funding","slug":"funding","url":"https://sifted.eu/practice/funding/"}]},"countries":{"primary":{"id":256,"name":"Germany","slug":"germany","url":"https://sifted.eu/countries/germany/"},"all":[{"id":256,"name":"Germany","slug":"germany","url":"https://sifted.eu/countries/germany/"}]},"tags":{"primary":null,"all":[{"id":42079,"name":"DTCP","slug":"dtcp","url":"https://sifted.eu/tag/dtcp/"}]}},"tagList":[{"name":"Defence tech","link":"https://sifted.eu/sector/defence-tech/"},{"name":"Deeptech","link":"https://sifted.eu/sector/deeptech/"},{"name":"LP","link":"https://sifted.eu/sector/lp/"},{"name":"Venture capital","link":"https://sifted.eu/sector/venture-capital/"}],"image":{"base":"https://images.sifted.eu/cdn-cgi/image/width=1333,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23163715/Thomas-Preus_DTCP-Capital-scaled-e1790177896849.jpeg","full":"https://images.sifted.eu/cdn-cgi/image/width=1333,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23163715/Thomas-Preus_DTCP-Capital-scaled-e1790177896849.jpeg","fullWidth":1333,"fullHeight":1428,"header-image":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23163715/Thomas-Preus_DTCP-Capital-scaled-e1790177896849.jpeg","header-image-labeled":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23163715/Thomas-Preus_DTCP-Capital-scaled-e1790177896849.jpeg","list-image":"https://images.sifted.eu/cdn-cgi/image/width=240,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23163715/Thomas-Preus_DTCP-Capital-scaled-e1790177896849.jpeg","caption":"Thomas Preuß of DTCP. Courtesy of DTCP","placeholder":false,"alt":"Thomas Preuß of DTCP"},"cardImage":{"caption":"Thomas Preuß of DTCP. Courtesy of DTCP","alt":"Thomas Preuß of DTCP","base":"https://images.sifted.eu/cdn-cgi/image/width=1333,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23163715/Thomas-Preus_DTCP-Capital-scaled-e1790177896849.jpeg","fullWidth":1333,"fullHeight":1428,"placeholder":false},"longFormMobileImage":{"caption":"Thomas Preuß of DTCP. Courtesy of DTCP","base":"https://images.sifted.eu/cdn-cgi/image/width=1333,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23163715/Thomas-Preus_DTCP-Capital-scaled-e1790177896849.jpeg","fullWidth":1333,"fullHeight":1428,"placeholder":false}},{"id":140826,"url":"https://sifted.eu/articles/simon-kohl-latent-labs-deepmind-founders-factory/","slug":"simon-kohl-latent-labs-deepmind-founders-factory","title":"‘Pushing the frontier is best done outside’: DeepMind alum Simon Kohl on leaving Big Tech","excerpt":"Kohl left DeepMind three years ago to launch Latent Labs, an AI lab dedicated to drug design and discovery","comments":{"count":"0","enabled":false},"publishTimestamp":1790226027000,"author":{"name":"Daphné Leprince-Ringuet","url":"https://sifted.eu/author/daphne-leprince-ringuet/"},"authors":[{"id":9041,"type":"wpuser","name":"Daphné Leprince-Ringuet","t
80933witter":"daphneleprince","bio":"Daphné Leprince-Ringuet is a senior reporter for Sifted, based in Paris. She covers French tech and writes Sifted's \u003ca href=\"https://sifted.eu/newsletters\"\u003e AI and Deeptech newsletter \u003c/a\u003e. You can find her on \u003ca href=\"https://twitter.com/daphneleprince\"\u003eX\u003c/a\u003e and \u003ca href=\"https://www.linkedin.com/in/daphne-leprince-ringuet/\"\u003eLinkedIn\u003c/a\u003e","niceName":"daphne-leprince-ringuet","image":false}],"isSponsored":false,"sponsorshipType":null,"isMemberContent":false,"isProContent":true,"isNonFree":true,"contentSubscriptionLevel":"is_pro","articleFormat":"standard","layout":"portrait","sector":{"name":"Artificial intelligence","slug":"artificial-intelligence","url":"https://sifted.eu/sector/artificial-intelligence/"},"category":{"name":"Interview","slug":"interview","url":"https://sifted.eu/categories/interview/"},"taxonomies":{"categories":{"primary":null,"all":[{"id":4498,"name":"Interview","slug":"interview","url":"https://sifted.eu/categories/interview/"},{"id":41675,"name":"Features","slug":"features","url":"https://sifted.eu/categories/features/"}]},"sectors":{"primary":{"id":290,"name":"Artificial intelligence","slug":"artificial-intelligence","url":"https://sifted.eu/sector/artificial-intelligence/"},"all":[{"id":290,"name":"Artificial intelligence","slug":"artificial-intelligence","url":"https://sifted.eu/sector/artificial-intelligence/"},{"id":327,"name":"Deeptech","slug":"deeptech","url":"https://sifted.eu/sector/deeptech/"},{"id":11545,"name":"Pharma","slug":"pharma","url":"https://sifted.eu/sector/pharma/"},{"id":11528,"name":"Healthtech","slug":"healthtech","url":"https://sifted.eu/sector/healthtech/"}]},"themes":{"primary":null,"all":[]},"topics":{"primary":null,"all":[]},"practices":{"primary":null,"all":[]},"countries":{"primary":{"id":70,"name":"United Kingdom","slug":"united-kingdom","url":"https://sifted.eu/countries/united-kingdom/"},"all":[{"id":70,"name":"United Kingdom","slug":"united-kingdom","url":"https://sifted.eu/countries/united-kingdom/"}]},"tags":{"primary":null,"all":[{"id":42377,"name":"Google DeepMind","slug":"google-deepmind","url":"https://sifted.eu/tag/google-deepmind/"},{"id":43030,"name":"Latent Labs","slug":"latent-labs","url":"https://sifted.eu/tag/latent-labs/"},{"id":43543,"name":"Simon Kohl","slug":"simon-kohl","url":"https://sifted.eu/tag/simon-kohl/"}]}},"tagList":[{"name":"Artificial intelligence","link":"https://sifted.eu/sector/artificial-intelligence/"},{"name":"Deeptech","link":"https://sifted.eu/sector/deeptech/"},{"name":"Pharma","link":"https://sifted.eu/sector/pharma/"},{"name":"Healthtech","link":"https://sifted.eu/sector/healthtech/"}],"image":{"base":"https://images.sifted.eu/cdn-cgi/image/width=1200,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23151411/Headshot-Dr-Simon-Kohl-CEO-and-Founder-of-Latent-Labs-1.jpg","full":"https://images.sifted.eu/cdn-cgi/image/width=1200,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23151411/Headshot-Dr-Simon-Kohl-CEO-and-Founder-of-Latent-Labs-1.jpg","fullWidth":1200,"fullHeight":800,"header-image":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23151411/Headshot-Dr-Simon-Kohl-CEO-and-Founder-of-Latent-Labs-1.jpg","header-image-labeled":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23151411/Headshot-Dr-Simon-Kohl-CEO-and-Founder-of-Latent-Labs-1.jpg","list-image":"https://images.sifted.eu/cdn-cgi/image/width=240,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23151411/Headshot-Dr-Simon-Kohl-CEO-and-Founder-of-Latent-Labs-1.jpg","caption":"","placeholder":false,"alt":"Simon Kohl"},"cardImage":{"caption":"","alt":"Simon Kohl","base":"https://images.sifted.eu/cdn-cgi/image/width=1200,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23151411/Headshot-Dr-Simon-Kohl-CEO-and-Founder-of-Latent-Labs-1.jpg","fullWidth":1200,"fullHeight":800,"placeholder":false},"longFormMobileImage":{"caption":"","base":"https://images.sifted.eu/cdn-cgi/image/width=1200,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23151411/Headshot-Dr-Simon-Kohl-CEO-and-Founder-of-Latent-Labs-1.jpg","fullWidth":1200,"fullHeight":800,"placeholder":false}},{"id":140845,"url":"https://sifted.eu/articles/claude-founder-house-london/","slug":"claude-founder-house-london","title":"Anthropic: We're not trying to eat startups' lunch","excerpt":"The frontier lab held an event for London's startups yesterday","comments":{"count":"0","enabled":false},"publishTimestamp":1790226025000,"author":{"name":"Maya Dharampal-Hornby","url":"https://sifted.eu/author/maya-dharampal-hornby/"},"authors":[{"id":9171,"type":"wpuser","name":"Maya Dharampal-Hornby","twitter":"","bio":"Maya Dharampal-Hornby is a reporter, 
80933covering UK tech for Sifted, based in London. She's also the producer of \u003ca href=\"https://podcast.sifted.eu/\"\u003e Startup Europe — The Sifted Podcast \u003c/a\u003e.","niceName":"maya-dharampal-hornby","image":false}],"isSponsored":false,"sponsorshipType":null,"isMemberContent":false,"isProContent":false,"isNonFree":false,"contentSubscriptionLevel":"is_free","articleFormat":"standard","layout":"short_form","sector":{"name":"Artificial intelligence","slug":"artificial-intelligence","url":"https://sifted.eu/sector/artificial-intelligence/"},"category":{"name":"News","slug":"news","url":"https://sifted.eu/categories/news/"},"taxonomies":{"categories":{"primary":null,"all":[{"id":4497,"name":"News","slug":"news","url":"https://sifted.eu/categories/news/"}]},"sectors":{"primary":{"id":290,"name":"Artificial intelligence","slug":"artificial-intelligence","url":"https://sifted.eu/sector/artificial-intelligence/"},"all":[{"id":290,"name":"Artificial intelligence","slug":"artificial-intelligence","url":"https://sifted.eu/sector/artificial-intelligence/"},{"id":327,"name":"Deeptech","slug":"deeptech","url":"https://sifted.eu/sector/deeptech/"},{"id":11532,"name":"Venture capital","slug":"venture-capital","url":"https://sifted.eu/sector/venture-capital/"}]},"themes":{"primary":null,"all":[]},"topics":{"primary":null,"all":[]},"practices":{"primary":null,"all":[]},"countries":{"primary":null,"all":[]},"tags":{"primary":null,"all":[{"id":41784,"name":"Anthropic","slug":"anthropic","url":"https://sifted.eu/tag/anthropic/"},{"id":43542,"name":"Index","slug":"index","url":"https://sifted.eu/tag/index/"}]}},"tagList":[{"name":"Artificial intelligence","link":"https://sifted.eu/sector/artificial-intelligence/"},{"name":"Deeptech","link":"https://sifted.eu/sector/deeptech/"},{"name":"Venture capital","link":"https://sifted.eu/sector/venture-capital/"},{"name":"Anthropic","link":"https://sifted.eu/tag/anthropic/"}],"image":{"base":"https://images.sifted.eu/cdn-cgi/image/width=1500,quality=75,fit=cover,format=auto/wp-content/uploads/2025/04/08094834/Siblings-recent-photo-2.jpg","full":"https://images.sifted.eu/cdn-cgi/image/width=1500,quality=75,fit=cover,format=auto/wp-content/uploads/2025/04/08094834/Siblings-recent-photo-2.jpg","fullWidth":1500,"fullHeight":1001,"header-image":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2025/04/08094834/Siblings-recent-photo-2.jpg","header-image-labeled":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2025/04/08094834/Siblings-recent-photo-2.jpg","list-image":"https://images.sifted.eu/cdn-cgi/image/width=240,quality=75,fit=cover,format=auto/wp-content/uploads/2025/04/08094834/Siblings-recent-photo-2.jpg","caption":"Anthropic cofounders Daniela and Dario Amodei","placeholder":false,"alt":"Anthropic cofounders Daniela and Dario Amodei next to each other"},"cardImage":{"caption":"Anthropic cofounders Daniela and Dario Amodei","alt":"Anthropic cofounders Daniela and Dario Amodei next to each other","base":"https://images.sifted.eu/cdn-cgi/image/width=1500,quality=75,fit=cover,format=auto/wp-content/uploads/2025/04/08094834/Siblings-recent-photo-2.jpg","fullWidth":1500,"fullHeight":1001,"placeholder":false},"longFormMobileImage":{"caption":"Anthropic cofounders Daniela and Dario Amodei","base":"https://images.sifted.eu/cdn-cgi/image/width=1500,quality=75,fit=cover,format=auto/wp-content/uploads/2025/04/08094834/Siblings-recent-photo-2.jpg","fullWidth":1500,"fullHeight":1001,"placeholder":false}},{"id":140832,"url":"https://sifted.eu/articles/northern-gritstone-ceo-exiting-to-us-acquirers-isnt-a-failure/","slug":"northern-gritstone-ceo-exiting-to-us-acquirers-isnt-a-failure","title":"Northern Gritstone CEO: Exiting to US acquirers isn’t a failure","excerpt":"Duncan Johnson talks scaling the north of England tech ecosystem, Gritstone’s new San Francisco office and why portfolio exits are coming","comments":{"count":"0","enabled":false},"publishTimestamp":1790226021000,"author":{"name":"Tom Nugent","url":"https://sifted.eu/author/tomnugentsifted-eu/"},"authors":[{"id":8850,"type":"wpuser","name":"Tom Nugent","twitter":"TJNugent92","bio":"Tom Nugent is Sifted’s managing editor. He covers robotics, chips and university spinouts. Follow him on \u003ca href=\"https://twitter.com/TJNugent92\"\u003e X \u003c/a\u003e and \u003ca href=\"https://www.linkedin.com/in/tnugent92/\"\u003e LinkedIn","niceName":"tomnugentsifted-eu","image":false}],"isSponsored":false,"sponsorshipType":null,"isMemberContent":false,"isProContent":true,"isNonFree":true,"contentSubscriptionLevel":"is_pro","articleFormat":"standard","layout":"portrait","sector":{"name":"Venture capital","slug":"venture-capital","url":"https://sifted.eu/sector/venture-capital/"},"category":{"name":"Interview","slug":"interview","url":"https://sifted.eu/categories/interview/"},"taxonomies":{"categories":{"primary":null,"all":[{"id":4498,"name":"Interview","slug":"interview","url":"https://sifted.eu/categories/interview/"},{"id":41675,"name":"Features","slug":"features","url":"https://sifted.eu/categories/features/"}]},"sectors":{"primary":{"id":11532,"name":"Venture capital","slug":"venture-capital","url":"https://sifted.eu/sector/venture-capital/"},"all":[{"id":327,"name":"Deeptech","slug":"deeptech","url":"https://sifted.eu/sector/deeptech/"},{"id":346,"name":"University spinouts","slug":"university-spinouts","url":"https://sifted.eu/sector/university-spinouts/"},{"id":11529,"name":"Public and academic","slug":"public-and-academic","url":"https://sifted.eu/sector/public-and-academic/"},{"id":11532,"name":"Venture capital","slug":"venture-capital","url":"https://sifted.eu/sector/venture-capital/"}]},"themes":{"primary":null,"all":[]},"topics":{"primary":null,"all":[]},"practices":{"primary":null,"all":[]},"countries":{"primary":{"id":70,"name":"United Kingdom","slug":"united-kingdom","url":"https://sifted.eu/countries/united-kingdom/"},"all":[{"id":70,"name":"United Kingdom","slug":"united-kingdom","url":"https://sifted.eu/countries/united-kingdom/"}]},"tags":{"primary":null,"all":[{"id":43539,"name":"Duncan Johnson","slug":"duncan-johnson","url":"https://sifted.eu/tag/duncan-johnson/"},{"id":42480,"name":"Northern Gritstone","slug":"northern-gritstone","url":"https://sifted.eu/tag/northern-gritstone/"},{"id":43540,"name":"UK Scaleup Fund","slug":"uk-scaleup-fund","url":"https://sifted.eu/tag/uk-scaleup-fund/"}]}},"tagList":[{"name":"Deeptech","link":"https://sifted.eu/sector/deeptech/"},{"name":"University spinouts","link":"https://sifted.eu/sector/university-spinouts/"},{"name":"Public and academic","link":"https://sifted.eu/sector/public-and-academic/"},{"name":"Venture capital","link":"https://sifted.eu/sector/venture-capital/"}],"image":{"base":"https://images.sifted.eu/cdn-cgi/image/width=1000,qual
80933ity=75,fit=cover,format=auto/wp-content/uploads/2026/09/23154022/1000-Duncan-3-1.jpg","full":"https://images.sifted.eu/cdn-cgi/image/width=1000,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23154022/1000-Duncan-3-1.jpg","fullWidth":1000,"fullHeight":667,"header-image":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23154022/1000-Duncan-3-1.jpg","header-image-labeled":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23154022/1000-Duncan-3-1.jpg","list-image":"https://images.sifted.eu/cdn-cgi/image/width=240,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23154022/1000-Duncan-3-1.jpg","caption":"","placeholder":false,"alt":"Duncan Johnson, CEO of Northern Gritstone"},"cardImage":{"caption":"","alt":"Duncan Johnson, CEO of Northern Gritstone","base":"https://images.sifted.eu/cdn-cgi/image/width=1000,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23154022/1000-Duncan-3-1.jpg","fullWidth":1000,"fullHeight":667,"placeholder":false},"longFormMobileImage":{"caption":"","base":"https://images.sifted.eu/cdn-cgi/image/width=1000,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23154022/1000-Duncan-3-1.jpg","fullWidth":1000,"fullHeight":667,"placeholder":false}},{"id":140850,"url":"https://sifted.eu/articles/ai-safety-startups-mapped-38-companies-building-europes-trust-layer/","slug":"ai-safety-startups-mapped-38-companies-building-europes-trust-layer","title":"AI safety startups mapped: 37 companies building Europe's trust layer","excerpt":"Amid growing alarm over the threats of a rapidly-developing technology, AI safety has become a catch-all term ","comments":{"count":"0","enabled":false},"publishTimestamp":1790226007000,"author":{"name":"Oshin Narang","url":"https://sifted.eu/author/oshin-narang/"},"authors":[{"id":9246,"type":"wpuser","name":"Oshin Narang","twitter":"","bio":"Oshin is Sifted's startup \u0026amp; VC analyst.","niceName":"oshin-narang","image":false}],"isSponsored":false,"sponsorshipType":null,"isMemberContent":false,"isProContent":true,"isNonFree":true,"contentSubscriptionLevel":"is_pro","articleFormat":"standard","layout":"short_form","sector":{"name":"Artificial intelligence","slug":"artificial-intelligence","url":"https://sifted.eu/sector/artificial-intelligence/"},"category":{"name":"Market map","slug":"market-map","url":"https://sifted.eu/categories/market-map/"},"taxonomies":{"categories":{"primary":null,"all":[{"id":42116,"name":"Market map","slug":"market-map","url":"https://sifted.eu/categories/market-map/"},{"id":41676,"name":"Data","slug":"data","url":"https://sifted.eu/categories/data/"}]},"sectors":{"primary":{"id":290,"name":"Artificial intelligence","slug":"artificial-intelligence","url":"https://sifted.eu/sector/artificial-intelligence/"},"all":[{"id":41718,"name":"AI agents","slug":"ai-agents","url":"https://sifted.eu/sector/ai-agents/"},{"id":327,"name":"Deeptech","slug":"deeptech","url":"https://sifted.eu/sector/deeptech/"},{"id":290,"name":"Artificial intelligence","slug":"artificial-intelligence","url":"https://sifted.eu/sector/artificial-intelligence/"}]},"themes":{"primary":null,"all":[]},"topics":{"primary":{"id":1926,"name":"Technology","slug":"technology","url":"https://sifted.eu/topic/technology/"},"all":[{"id":1929,"name":"Innovation","slug":"innovation","url":"https://sifted.eu/topic/innovation/"},{"id":1926,"name":"Technology","slug":"technology","url":"https://sifted.eu/topic/technology/"}]},"practices":{"primary":null,"all":[]},"countries":{"primary":null,"all":[]},"tags":{"primary":null,"all":[]}},"tagList":[{"name":"AI agents","link":"https://sifted.eu/sector/ai-agents/"},{"name":"Deeptech","link":"https://sifted.eu/sector/deeptech/"},{"name":"Artificial intelligence","link":"https://sifted.eu/sector/artificial-intelligence/"}],"image":{"base":"https://images.sifted.eu/cdn-cgi/image/width=1522,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23175602/Screenshot-2026-09-23-at-17.55.43.png","full":"https://images.sifted.eu/cdn-cgi/image/width=1522,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23175602/Screenshot-2026-09-23-at-17.55.43.png","fullWidth":1522,"fullHeight":804,"header-image":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23175602/Screenshot-2026-09-23-at-17.55.43.png","header-image-labeled":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23175602/Screenshot-2026-09-23-at-17.55.43.png","list-image":"https://images.sifted.eu/cdn-cgi/image/width=240,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23175602/Screenshot-2026-09-23-at-17.55.43.png","caption":"","placeholder":false,"alt":""},"cardImage":{"caption":"","alt":"","base":"https://images.sifted.eu/cdn-cgi/image/width=1522,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23175602/Screenshot-2026-09-23-at-17.55.43.png","fullWidth":1522,"fullHeight":804,"placeholder":false},"longFormMobileImage":{"caption":"","base":"https://images.sifted.eu/cdn-cgi/image/width=1522,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23175602/Screenshot-2026-09-23-at-17.55.43.png","fullWidth":1522,"fullHeight":804,"placeholder":false}},{"id":140808,"url":"https://sifted.eu/articles/revolut-facial-recognition-face-payments-pay-with-smile/","slug":"revolut-facial-recognition-face-payments-pay-with-smile","title":"Revolut unveils facial recognition payments in UK","excerpt":"The system will initially be available at Kiss the Hi
80933ppo coffee shops across London","comments":{"count":"0","enabled":false},"publishTimestamp":1790208117000,"author":{"name":"Martin Coulter","url":"https://sifted.eu/author/martin-coulter/"},"authors":[{"id":9167,"type":"wpuser","name":"Martin Coulter","twitter":"MartinJBCoulter","bio":"Martin Coulter is Sifted's news editor, based in London. You can follow him on \u003ca href=\"https://www.linkedin.com/in/martin-coulter-245056149/\"\u003e LinkedIn\u003c/a\u003e and \u003ca href=\"https://x.com/MartinJBCoulter\"\u003e X\u003c/a\u003e","niceName":"martin-coulter","image":false}],"isSponsored":false,"sponsorshipType":null,"isMemberContent":false,"isProContent":false,"isNonFree":false,"contentSubscriptionLevel":"is_free","articleFormat":"standard","layout":"short_form","sector":{"name":"Fintech","slug":"fintech","url":"https://sifted.eu/sector/fintech/"},"category":{"name":"News","slug":"news","url":"https://sifted.eu/categories/news/"},"taxonomies":{"categories":{"primary":null,"all":[{"id":4497,"name":"News","slug":"news","url":"https://sifted.eu/categories/news/"}]},"sectors":{"primary":{"id":11535,"name":"Fintech","slug":"fintech","url":"https://sifted.eu/sector/fintech/"},"all":[{"id":11535,"name":"Fintech","slug":"fintech","url":"https://sifted.eu/sector/fintech/"}]},"themes":{"primary":null,"all":[]},"topics":{"primary":null,"all":[]},"practices":{"primary":null,"all":[]},"countries":{"primary":null,"all":[]},"tags":{"primary":null,"all":[{"id":43253,"name":"Facial recognition","slug":"facial-recognition","url":"https://sifted.eu/tag/facial-recognition/"},{"id":41223,"name":"Fintech","slug":"fintech","url":"https://sifted.eu/tag/fintech/"},{"id":40969,"name":"Revolut","slug":"revolut","url":"https://sifted.eu/tag/revolut/"}]}},"tagList":[{"name":"Fintech","link":"https://sifted.eu/sector/fintech/"},{"name":"Facial recognition","link":"https://sifted.eu/tag/facial-recognition/"},{"name":"Fintech","link":"https://sifted.eu/tag/fintech/"},{"name":"Revolut","link":"https://sifted.eu/tag/revolut/"}],"image":{"base":"https://images.sifted.eu/cdn-cgi/image/width=946,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23133806/RevolutPay-PwS-PR-Register-01-e1790167115957.png","full":"https://images.sifted.eu/cdn-cgi/image/width=946,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23133806/RevolutPay-PwS-PR-Register-01-e1790167115957.png","fullWidth":946,"fullHeight":538,"header-image":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23133806/RevolutPay-PwS-PR-Register-01-e1790167115957.png","header-image-labeled":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23133806/RevolutPay-PwS-PR-Register-01-e1790167115957.png","list-image":"https://images.sifted.eu/cdn-cgi/image/width=240,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23133806/RevolutPay-PwS-PR-Register-01-e1790167115957.png","caption":"","placeholder":false,"alt":"Revolut Pay with Smile facial recognition"},"cardImage":{"caption":"","alt":"Revolut Pay with Smile facial recognition","base":"https://images.sifted.eu/cdn-cgi/image/width=946,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23133806/RevolutPay-PwS-PR-Register-01-e1790167115957.png","fullWidth":946,"fullHeight":538,"placeholder":false},"longFormMobileImage":{"caption":"","base":"https://images.sifted.eu/cdn-cgi/image/width=946,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23133806/RevolutPay-PwS-PR-Register-01-e1790167115957.png","fullWidth":946,"fullHeight":538,"placeholder":false}}],"analysis":[],"talks":[{"id":"GnPSxReRTyaJYm6Or2QakQ","slug":"autonomous-but-accountable-how-to-deploy-agents-safely","seo":null,"title":"Autonomous, but accountable: How to deploy agents safely","talkLink":"https://us02web.zoom.us/j/83990188806","marketLabel":"Startup Life","dateTime":"2026-10-28T12:00:00+00:00","duration":60,"image":{"url":"https://www.datocms-assets.com/60124/1787583684-hero-image-generic-talks-1080x1080px-4.png","blurUpThumb":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAoHBwgHBhQICA8XERUKFxMNFQ0VDiYV
80933DxUYFxogGBcVFhUmHysvGh0oHRUWMDUlKC0vMjIyGSI4PTcwPCsxMi8BCgsLDg0OHBAQHDsoIig7OzU7Oy81Oy8vOy87Oy81LzU1Ly87LzUvNS81NS8vLy8vLy8vLy81LzUvNTUvLy8vL//AABEIABgAGAMBIgACEQEDEQH/xAAZAAEAAwEBAAAAAAAAAAAAAAAAAwQFBwH/xAAcEAABBQEBAQAAAAAAAAAAAAAAAQIDBBEFIRT/xAAWAQEBAQAAAAAAAAAAAAAAAAADAgH/xAAZEQACAwEAAAAAAAAAAAAAAAABAgADEQT/2gAMAwEAAhEDEQA/AOp0akD49QmWhXV+EXGVFreE+J9QddYyLbYwaU73NgRmgvXmtdB6AHqGx0uIWY/G6MSRYhpNtROl0AupjkroRd2e2rMbmYAAmY7MVRk//9k=","width":2160,"height":2160,"alt":"Box"},"landingImage":{"url":"https://www.datocms-assets.com/60124/1787583684-hero-image-generic-talks-1080x1080px-4.png","blurUpThumb":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAoHBwgHBhQICA8XERUKFxMNFQ0VDiYVDxUYFxogGBcVFhUmHysvGh0oHRUWMDUlKC0vMjIyGSI4PTcwPCsxMi8BCgsLDg0OHBAQHDsoIig7OzU7Oy81Oy8vOy87Oy81LzU1Ly87LzUvNS81NS8vLy8vLy8vLy81LzUvNTUvLy8vL//AABEIABgAGAMBIgACEQEDEQH/xAAZAAEAAwEBAAAAAAAAAAAAAAAAAwQFBwH/xAAcEAABBQEBAQAAAAAAAAAAAAAAAQIDBBEFIRT/xAAWAQEBAQAAAAAAAAAAAAAAAAADAgH/xAAZEQACAwEAAAAAAAAAAAAAAAABAgADEQT/2gAMAwEAAhEDEQA/AOp0akD49QmWhXV+EXGVFreE+J9QddYyLbYwaU73NgRmgvXmtdB6AHqGx0uIWY/G6MSRYhpNtROl0AupjkroRd2e2rMbmYAAmY7MVRk//9k=","width":2160,"height":2160,"alt":"Box","title":"Box"},"hideMainLandingTitle":false,"summaryImage":null,"summaryArticleTitle":"","aboutTheEvent":"AI agents take on real work inside businesses but handing over more responsibility also raises some questions: what should an agent be allowed to access? Who is accountable when something is wrong? And how do you know what it has done?\nFor growing businesses, scattered content infrastru
80933cture, legacy systems and unclear permissions can quickly become a blocker. Simultaneously, locking everything down can make AI too cumbersome to be useful. This Sifted Talks will look at how companies can find the balance: putting practical guardrails around AI agents without slowing teams down.\n","eventRecordUrl":"","includeInPastEvents":false,"checkboxText":"By registering you agree to share your registration data with Sifted EU Ltd and the sponsor, `companyName`, and to give them the option to contact you. Sifted will not share your contact information with any parties apart from this event's sponsor.`*`","optionalCheckboxText":"","sponsorName":"Box","sponsorLogo":{"url":"https://www.datocms-assets.com/60124/1742315382-box-logo.png","blurUpThumb":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAANCAMAAACEsl7iAAAAolBMVEUAdPgAdPgAdPgAdPgAdPgAdPgAdPgAdPgAdPgAdPgAdPgAdPgAdPgAdPgAdPgAdPgAdPgAdPgAdPgAdPgAdPgAdPgAdPgAdPgAdPgAdPgAdPgAdPgAdPgAdPgAdPgAdPgAdPgAdPgAdPgAdPgAdPgAdPgAdPgAdPgAdPgAdPgAdPgAdPgAdPgAdPgAdPgAdPgAdPgAdPgAdPgAdPgAdPgAdPg4mpYBAAAANnRSTlMAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMlJikqKywuLzAzNDY4Pj9DRkpiEI/sAAAAnklEQVR42nWPzRLCQAiD+asdvXn0/R9RR9uyJLLTq+6J5SMhhPx58Rfc81M/wWPk67n9AFfWenu9d3S9hBtrZE5g5AW0S4mfAJVjFAJkEaIm5h6uQjOPYhzM3LZj0NpMYNIS9HS8K/f9SIgFgKlATRIb8sjR0ygrhbbzCayXgt1pZ7dT0ERi5XBfBqV3TiOlnncssBmjc7mZdr7+QpVf21B1uohsr+sAAAAASUVORK5CYII=","width":1200,"height":644},"people":[{"isSpeaker":false,"linkedinUrl":"https://www.linkedin.com/in/mickmcneil/","name":"Mick McNeil","company":"Deliverance AI","role":"Founder \u0026 CEO","twitterUrl":"","image":{"url":"https://www.datocms-assets.com/60124/1789893301-screenshot-2026-09-20-at-09-34-40.png","blurUpThumb":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAoHBwgHBgoICAgXExEUDhgNFRIQDRUNDQ8NIxcaGBYfGCEdHysjGh0oHRUWJDUlKC0vMjIyGSI4PTcwPCsxMi8BCgsLDg0OHA8PHDsdFhw7Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL//AABEIABkAFQMBIgACEQEDEQH/xAAbAAABBAMAAAAAAAAAAAAAAAAFAAEEBwIDBv/EACMQAAIBAwIHAQAAAAAAAAAAAAECAAMEBUFRBhQiMTI0YSH/xAAWAQEBAQAAAAAAAAAAAAAAAAACAwH/xAAZEQACAwEAAAAAAAAAAAAAAAAAAREhMQL/2gAMAwEAAhEDEQA/AKvxGMa4v1UnWF+I8Hy6K3yCcLkHo5JCd4c4ryTVrdADpA9Kc4cpyjaGKZUqrFf0xoyQ1uSt2rDeEMpUetSAkCl7Ik+78BNas3l0COoRTa3eKKASf//Z","width":508,"height":586}},{"isSpeaker":false,"linkedinUrl":"https://www.linkedin.com/in/eleonorehebrard/","name":"Eléonore Hébrard","company":"Box","role":"Staff Solutions Engineer","twitterUrl":"","image":{"url":"https://www.datocms-assets.com/60124/1789892726-elenore.jpeg","blurUpThumb":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAoHBwgHBgoIEQgLDRULDhgXDg0VDhUVDxURFxwaGCIVFhUdHyslGikoKSEWJDUlKC0vMjIyGSI4PTcwPCsxMi8BCgsLDg0OHA0NHC8cFhw1Ly8vLy81Ly8vLy8vNS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL//AABEIABgAGAMBIgACEQEDEQH/xAAZAAACAwEAAAAAAAAAAAAAAAAABQECBAb/xAAgEAABBAIBBQAAAAAAAAAAAAACAAEDBAURQRUhI2Fx/8QAFwEAAwEAAAAAAAAAAAAAAAAAAwQFAv/EABsRAAMAAwEBAAAAAAAAAAAAAAABAgMRIhIE/9oADAMBAAIRAxEAPwCwOI0dbW0GbpBF6XOPadqW00hviWDJt8KbEvQf58fJnx0gEZNvlCTY235z78qFly9gbxr0MIq7TYt3VoaztjDbaEKjEoYwPkTUoXjlL6oQhZcrYvbfo//Z","width":512,"height":512}}],"about":"AI agents take on real work inside businesses but handing over more responsibility also raises some questions: what should an agent be allowed to access? Who is accountable when something is wrong? And how do you know what it has done?\nFor growing businesses, scattered content infrastru
80933cture, legacy systems and unclear permissions can quickly become a blocker. Simultaneously, locking everything down can make AI too cumbersome to be useful. This Sifted Talks will look at how companies can find the balance: putting practical guardrails around AI agents without slowing teams down.\n","discussing":"1. What is stopping businesses from putting AI agents into real workflows?\n2. The right level of access: How can companies give agents enough freedom to be useful without opening the door to unnecessary risk?\n3. What does good oversight look like when agents are making decisions and taking actions on their own?\n4. How can businesses build security, compliance and trust into AI adoption without slowing teams down?","linkInfo":"Virtual workshop link will be available 5 minutes before first session","cost":"Free","isMemberOnly":false,"isInPerson":false,"location":"","isOversubscribed":false,"oversubscribedText":"If you want to join the waitlist send us an email on [email protected]"}],"feedsSectionData":{"popularArticles":[{"id":140710,"url":"https://sifted.eu/articles/a16z-andreessen-horowitz-europe-ai-investing-consumer/","slug":"a16z-andreessen-horowitz-europe-ai-investing-consumer","title":"A16z wants to back more European startups — but won’t reopen European office anytime soon","excerpt":"General partner Anish Acharya talks the hottest AI trends, the \"advantage\" European startups have over SF and the European consumer ","comments":{"count":"0","enabled":false},"publishTimestamp":1790053252000,"author":{"name":"Anne Sraders","url":"https://sifted.eu/author/anne-sraders/"},"authors":[{"id":9088,"type":"wpuser","name":"Anne Sraders","twitter":"https://x.com/AnneSraders","bio":"Anne Sraders is a senior reporter at Sifted, based in Berlin. She covers the VC industry and deeptech startups. She also writes Sifted's weekly VC newsletter \u003ca href=\"https://sifted.eu/newsletters\"\u003e Up Round\u003c/a\u003e. Follow her on \u003ca href=\"https://x.com/AnneSraders\"\u003e X\u003c/a\u003e and \u003ca href=\"https://www.linkedin.com/in/anne-sraders-54222b95//\"\u003e LinkedIn\u003c/a\u003e","niceName":"anne-sraders","image":false}],"isSponsored":false,"sponsorshipType":null,"isMemberContent":false,"isProContent":true,"isNonFree":true,"contentSubscriptionLevel":"is_pro","articleFormat":"standard","layout":"portrait","sector":{"name":"Venture capital","slug":"venture-capital","url":"https://sifted.eu/sector/venture-capital/"},"category":{"name":"Interview","slug":"interview","url":"https://sifted.eu/categories/interview/"},"taxonomies":{"categories":{"primary":null,"all":[{"id":4498,"name":"Interview","slug":"interview","url":"https://sifted.eu/categories/interview/"},{"id":41675,"name":"Features","slug":"features","url":"https://sifted.eu/categories/features/"}]},"sectors":{"primary":{"id":11532,"name":"Venture capital","slug":"venture-capital","url":"https://sifted.eu/sector/venture-capital/"},"all":[{"id":41718,"name":"AI agents","slug":"ai-agents","url":"https://sifted.eu/sector/ai-agents/"},{"id":327,"name":"Deeptech","slug":"deeptech","url":"https://sifted.eu/sector/deeptech/"},{"id":290,"name":"Artificial intelligence","slug":"artificial-intelligence","url":"https://sifted.eu/sector/artificial-intelligence/"},{"id":11530,"name":"Consumer","slug":"consumer","url":"https://sifted.eu/sector/consumer/"},{"id":41484,"name":"Defence tech","slug":"defence-tech","url":"https://sifted.eu/sector/defence-tech/"},{"id":11532,"name":"Venture capital","slug":"venture-capital","url":"https://sifted.eu/sector/venture-capital/"}]},"themes":{"primary":{"id":1729,"name":"European Tech","slug":"europe-tech","url":"https://sifted.eu/themes/europe-tech/"},"all":[{"id":1729,"name":"European Tech","slug":"europe-tech","url":"https://sifted.eu/themes/europe-tech/"},{"id":1714,"name":"Startups","slug":"startups","url":"https://sifted.eu/themes/startups/"},{"id":1711,"name":"Venture Capital","slug":"venture-capital","url":"https://sifted.eu/themes/venture-capital/"}]},"topics":{"primary":{"id":1950,"name":"Venture Capital","slug":"venture-capital","url":"https://sifted.eu/topic/venture-capital/"}
80933,"all":[{"id":1927,"name":"Startups","slug":"startups","url":"https://sifted.eu/topic/startups/"},{"id":1950,"name":"Venture Capital","slug":"venture-capital","url":"https://sifted.eu/topic/venture-capital/"}]},"practices":{"primary":{"id":314,"name":"Tech","slug":"tech","url":"https://sifted.eu/practice/tech/"},"all":[{"id":314,"name":"Tech","slug":"tech","url":"https://sifted.eu/practice/tech/"}]},"countries":{"primary":{"id":320,"name":"US","slug":"usa","url":"https://sifted.eu/countries/usa/"},"all":[{"id":320,"name":"US","slug":"usa","url":"https://sifted.eu/countries/usa/"}]},"tags":{"primary":null,"all":[{"id":42800,"name":"Andreessen Horowitz","slug":"andreessen-horowitz","url":"https://sifted.eu/tag/andreessen-horowitz/"},{"id":41247,"name":"consumer","slug":"consumer","url":"https://sifted.eu/tag/consumer/"}]}},"tagList":[{"name":"AI agents","link":"https://sifted.eu/sector/ai-agents/"},{"name":"Deeptech","link":"https://sifted.eu/sector/deeptech/"},{"name":"Artificial intelligence","link":"https://sifted.eu/sector/artificial-intelligence/"},{"name":"Consumer","link":"https://sifted.eu/sector/consumer/"}],"image":{"base":"https://images.sifted.eu/cdn-cgi/image/width=2000,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/21150948/Anish-Acharya-2560x2560-1-scaled-e1789999830526.jpg","full":"https://images.sifted.eu/cdn-cgi/image/width=2000,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/21150948/Anish-Acharya-2560x2560-1-scaled-e1789999830526.jpg","fullWidth":2000,"fullHeight":2000,"header-image":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/21150948/Anish-Acharya-2560x2560-1-scaled-e1789999830526.jpg","header-image-labeled":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/21150948/Anish-Acharya-2560x2560-1-scaled-e1789999830526.jpg","list-image":"https://images.sifted.eu/cdn-cgi/image/width=240,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/21150948/Anish-Acharya-2560x2560-1-scaled-e1789999830526.jpg","caption":"Anish Acharya of Andreessen Horowitz. Courtesy of a16z's. website ","placeholder":false,"alt":"Anish Acharya of Andreessen Horowitz"},"cardImage":{"caption":"Anish Acharya of Andreessen Horowitz. Courtesy of a16z's. website ","alt":"Anish Acharya of Andreessen Horowitz","base":"https://images.sifted.eu/cdn-cgi/image/width=2000,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/21150948/Anish-Acharya-2560x2560-1-scaled-e1789999830526.jpg","fullWidth":2000,"fullHeight":2000,"placeholder":false},"longFormMobileImage":{"caption":"Anish Acharya of Andreessen Horowitz. Courtesy of a16z's. website ","base":"https://images.sifted.eu/cdn-cgi/image/width=2000,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/21150948/Anish-Acharya-2560x2560-1-scaled-e1789999830526.jpg","fullWidth":2000,"fullHeight":2000,"placeholder":false}},{"id":140290,"url":"https://sifted.eu/articles/europe-underrated-us-vc-firstmark-capital/","slug":"europe-underrated-us-vc-firstmark-capital","title":"US VC FirstMark: ‘Europe is underrated’ right now among American investors","excerpt":"The New York firm has backed startups like Legora, Harmattan AI and Synthesia\r\n","comments":{"count":"0","enabled":false},"publishTimestamp":1789123531000,"author":{"name":"Anne Sraders","url":"https://sifted.eu/author/anne-sraders/"},"authors":[{"id":9088,"type":"wpuser","name":"Anne Sraders","twitter":"https://x.com/AnneSraders","bio":"Anne Sraders is a senior reporter at Sifted, based in Berlin. She covers the VC industry and deeptech startups. She also writes Sifted's weekly VC newsletter \u003ca href=\"https://sifted.eu/newsletters\"\u003e Up Round\u003c/a\u003e. Follow her on \u003ca href=\"https://x.com/AnneSraders\"\u003e X\u003c/a\u003e and \u003ca href=\"https://www.linkedin.com/in/anne-sraders-54222b95//\"\u003e LinkedIn\u003c/a\u003e","niceName":"anne-sraders","image":false}],"isSponsored":false,"sponsorshipType":null,"isMemberContent":false,"isProContent":true,"isNonFree":true,"contentSubscriptionLevel":"is_pro","articleFormat":"standard","layout":"portrait","sector":{"name":"Venture capital","slug":"venture-capital","url":"https://sifted.eu/sector/venture-capital/"},"category":{"name":"Interview","slug":"interview","url":"https://sifted.eu/categories/interview/"},"taxonomies":{"categories":{"primary":null,"all":[{"id":4498,"name":"Interview","slug":"interview","url":"https://sifted.eu/categories/interview/"},{"id":41675,"name":"Features","slug":"features","url":"https://sifted.eu/categories/features/"}]},"sectors":{"primary":{"id":11532,"name":"Venture capital","slug":"venture-capital","url":"https://sifted.eu/sector/venture-capital/"},"all":[{"id":41718,"name":"AI agents","slug":"ai-agents","url":"https://sifted.eu/sector/ai-agents/"},{"id":327,"name":"Deeptech","slug":"deeptech","url":"https://sifted.eu/sector/deeptech/"},{"id":41719,"name":"AI chips","slug":"ai-chips","url":"https://sifted.eu/sector/ai-chips/"},{"id":290,"name":"Artificial intelligence","slug":"artificial-intelligence","url":"https://sifted.eu/sector/artificial-intelligence/"},{"id":41484,"name":"Defence tech","slug":"defence-tech","url":"https://sifted.eu/sector/defence-tech/"},{"id":588,"name":"Drones","slug":"drones","url":"https://sifted.eu/sector/drones/"},{"id":11532,"name":"Venture capital","slug":"venture-capital","url":"https://sifted.eu/sector/venture-capital/"}]},"themes":{"primary":{"id":1711,"name":"Venture Capital","slug":"venture-capital","url":"https://sifted.eu/themes/venture-capital/"},"all":[{"id":1711,"name":"Venture Capital","slug":"venture-capital","url":"https://sifted.eu/themes/venture-capital/"}]},"topics":{"primary":{"id":1950,"name":"Venture Capital","slug":"venture-capital","url":"https://sifted.eu/topic/venture-capital/"},"all":[{"id":1950,"name":"Venture Capital","slug":"venture-capital","url":"https://sifted.eu/topic/venture-capital/"}]},"practices":{"primary":{"id":314,"name":"Tech","slug":"tech","url":"https://sifted.eu/practice/tech/"},"all":[{"id":314,"name":"Tech","slug":"tech","url":"https://sifted.eu/practice/tech/"}]},"countries":{"primary":{"id":320,"name":"US","slug":"usa","url":"https://sifted.eu/countries/usa/"},"all":[{"id":320,"name":"US","slug":"usa","url":"https://sifted.eu/countries/usa/"}]},"tags":{"primary":null,"all":[{"id":43097,"name":"FirstMark Capital","slug":"firstmark-capital","url":"https://sifted.eu/tag/firstmark-capital/"},{"id":41865,"name":"Harmattan AI","slug":"harmattan-ai","url":"https://sifted.eu/tag/harmattan-ai/"},{"id":41743,"name":"Legora","slug":"legora","url":"https://sifted.eu/tag/legora/"},{"id":41581,"name":"Lovable","slug":"lovable","url":"https://sifted.eu/tag/lovable/"},{"id":41281,"name":"Mistral","slug":"mistral","url":"https://sifted.eu/tag/mistral/"},{"id":41627,"name":"Synthesia","slug":"synthesia","url":"https://sifted.eu/tag/synthesia/"}]}},"tagList":[{"name":"AI agents","link":"https://sifted.eu/sector/ai-agents/"},{"name":"Deeptech","link":"https://sifted.eu/sector/deeptech/"},{"name":"AI chips","link":"https://sifted.eu/sector/ai-chips/"},{"name":"Artificial intelligence","link":"https://sifted.eu/sector/artificial-intelligence/"}],"image":{"base":"https://images.sifted.eu/cdn-cgi/image/width=2000,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/11041259/Matt-Turck-2023-scaled-e1789096388546.jpg","full":"https://images.sifted.eu/cdn-cgi/image/width=2000,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/11041259/Matt-Turck-2023-scaled-e1789096388546.jpg","fullWidth":2000,"fullHeight":1333,"header-image":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/11041259/Matt-Turck-2023-scaled-e1789096388546.jpg","header-image-labeled":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/11041259/Matt-Turck-2023-scaled-e1789096388546.jpg","list-image":"https://images.sifted.eu/cdn-cgi/image/width=240,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/11041259/Matt-Turck-2023-scaled-e1789096388546.jpg","caption":"Matt Turck of FirstMark. Courtesy of FirstMark","placeholder":false,"alt":"Matt Turck of FirstMark"},"cardImage":{"caption":"Matt Turck of FirstMark. Courtesy of FirstMark","alt":"Matt Turck of FirstMark","base":"https://images.sifted.eu/cdn-cgi/image/width=2000,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/11041259/Matt-Turck-2023-scaled-e1789096388546.jpg","fullWidth":2000,"fullHeight":1333,"placeholder":false},"longFormMobileImage":{"caption":"Matt Turck of FirstMark. Courtesy of FirstMark","base":"https://images.sifted.eu/cdn-cgi/image/width=2000,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/11041259/Matt-Turck-2023-scaled-e1789096388546.jpg","fullWidth":2000,"fullHeight":1333,"placeholder":false}},{"id":140425,"url":"https://sifted.eu/articles/the-top-10-investors-across-dach-cee/","
80933slug":"the-top-10-investors-across-dach-cee","title":"The top 10 investors across DACH \u0026 CEE","excerpt":"A look at the leading early- and growth-stage VCs active in the DACH \u0026 CEE regions, based on the number of companies they backed on Sifted’s 2026 DACH \u0026 CEE leaderboard","comments":{"count":"0","enabled":false},"publishTimestamp":1789448420000,"author":{"name":"Ruggero Di Spigna","url":"https://sifted.eu/author/ruggero/"},"authors":[{"id":8969,"type":"wpuser","name":"Ruggero Di Spigna","twitter":"","bio":"Ruggero Di Spigna is a Senior Insights \u0026amp; Product Associate at Sifted. Find him on \u003ca href=\"https://www.linkedin.com/in/ruggero-di-spigna-4882b6115\"\u003e LinkedIn \u003c/a\u003e","niceName":"ruggero","image":false}],"isSponsored":false,"sponsorshipType":null,"isMemberContent":false,"isProContent":true,"isNonFree":true,"contentSubscriptionLevel":"is_pro","articleFormat":"standard","layout":"long_form","sector":{"name":"Venture capital","slug":"venture-capital","url":"https://sifted.eu/sector/venture-capital/"},"category":{"name":"Leaderboard","slug":"leaderboard","url":"https://sifted.eu/categories/leaderboard/"},"taxonomies":{"categories":{"primary":null,"all":[{"id":41683,"name":"Leaderboard","slug":"leaderboard","url":"https://sifted.eu/categories/leaderboard/"},{"id":41674,"name":"List","slug":"list","url":"https://sifted.eu/categories/list/"}]},"sectors":{"primary":{"id":11532,"name":"Venture capital","slug":"venture-capital","url":"https://sifted.eu/sector/venture-capital/"},"all":[{"id":11532,"name":"Venture capital","slug":"venture-capital","url":"https://sifted.eu/sector/venture-capital/"}]},"themes":{"primary":{"id":1729,"name":"European Tech","slug":"europe-tech","url":"https://sifted.eu/themes/europe-tech/"},"all":[{"id":1729,"name":"European Tech","slug":"europe-tech","url":"https://sifted.eu/themes/europe-tech/"},{"id":1710,"name":"Funding","slug":"funding","url":"https://sifted.eu/themes/funding/"}]},"topics":{"primary":{"id":1950,"name":"Venture Capital","slug":"venture-capital","url":"https://sifted.eu/topic/venture-capital/"},"all":[{"id":1927,"name":"Startups","slug":"startups","url":"https://sifted.eu/topic/startups/"},{"id":1950,"name":"Venture Capital","slug":"venture-capital","url":"https://sifted.eu/topic/venture-capital/"}]},"practices":{"primary":{"id":311,"name":"Funding","slug":"funding","url":"https://sifted.eu/practice/funding/"},"all":[{"id":311,"name":"Funding","slug":"funding","url":"https://sifted.eu/practice/funding/"}]},"countries":{"primary":null,"all":[]},"tags":{"primary":null,"all":[{"id":43098,"name":"2026 Sifted 100: DACH \u0026amp; CEE Leaderboard","slug":"2026-sifted-100-dach-cee-leaderboard","url":"https://sifted.eu/tag/2026-sifted-100-dach-cee-leaderboard/"},{"id":43138,"name":"Alesco Ventures","slug":"alesco-ventures","url":"https://sifted.eu/tag/alesco-ventures/"},{"id":43137,"name":"Day One Capital","slug":"day-one-capital","url":"https://sifted.eu/tag/day-one-capital/"},{"id":42030,"name":"HV Capital","slug":"hv-capital","url":"https://sifted.eu/tag/hv-capital/"},{"id":41752,"name":"Index Ventures","slug":"index-ventures","url":"https://sifted.eu/tag/index-ventures/"},{"id":42408,"name":"Notion Capital","slug":"notion-capital","url":"https://sifted.eu/tag/notion-capital/"},{"id":43135,"name":"PFR Ventures","slug":"pfr-ventures","url":"https://sifted.eu/tag/pfr-ventures/"},{"id":43140,"name":"Possible Ventures","slug":"possible-ventures","url":"https://sifted.eu/tag/possible-ventures/"},{"id":43136,"name":"Specialist VC","slug":"specialist-vc","url":"https://sifted.eu/tag/specialist-vc/"},{"id":42173,"name":"Speedinvest","slug":"speedinvest","url":"https://sifted.eu/tag/speedinvest/"},{"id":43139,"name":"Tiny Supercomputer Investment Company","slug":"tiny-supercomputer-investment-company","url":"https://sifted.eu/tag/tiny-supercomputer-investment-company/"}]}},"tagList":[{"name":"Venture capital","link":"https://sifted.eu/sector/venture-capital/"},{"name":"2026 Sifted 100: DACH \u0026amp; CEE Leaderboard","link":"https://sifted.eu/tag/2026-sifted-100-dach-cee-leaderboard/"},{"name":"Alesco Ventures","link":"https://sifted.eu/tag/alesco-ventures/"},{"name":"Day One Capital","link":"https://sifted.eu/tag/day-one-capital/"}],"image":{"base":"https://images.sifted.eu/cdn-cgi/image/width=1200,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/10144439/1788782712-dach-cee2026.png","full":"https://images.sifted.eu/cdn-cgi/image/width=1200,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/10144439/1788782712-dach-cee2026.png","fullWidth":1200,"fullHeight":628,"header-image":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/10144439/1788782712-dach-cee2026.png","header-image-labeled":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/10144439/1788782712-dach-cee2026.png","list-image":"https://images.sifted.eu/cdn-cgi/image/width=240,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/10144439/1788782712-dach-cee2026.png","caption":"","placeholder":false,"alt":""},"cardImage":{"caption":"","alt":"","base":"https://images.sifted.eu/cdn-cgi/image/width=1200,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/10144439/1788782712-dach-cee2026.png","fullWidth":1200,"fullHeight":628,"placeholder":false},"longFormMobileImage":{"caption":"","base":"https://images.sifted.eu/cdn-cgi/image/width=1200,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/10144439/1788782712-dach-cee2026.png","fullWidth":1200,"fullHeight":628,"placeholder":false}},{"id":140419,"url":"https://sifted.eu/articles/eth-zurich-students-humanoid-xalun/","slug":"eth-zurich-students-humanoid-xalun","title":"ETH Zurich students build ‘first Swiss humanoid’, eye fundraising","excerpt":"ETH Robotics Club president Declan Shine wants his human-like bot to be a ‘lighter, friendlier and squishier’ home robot than rivals\r\n","comments":{"count":"0","enabled":false},"publishTimestamp":1789399814000,"author":{"name":"Éanna Kelly","url":"https://sifted.eu/author/eanna-kelly/"},"authors":[{"id":8686,"type":"wpuser","name":"Éanna Kelly","twitter":"EannaKelly1","bio":"Éanna Kelly is a contributing editor at Sifted, and writes \u003ca href=\"https://sifted.eu/newsletters\"\u003e Startup Life \u003c/a\u003e, a weekly newsletter on what it takes to build a startup. Follow him on \u003ca href=\"https://twitter.com/EannaKelly1\"\u003e X \u003c/a\u003e and \u003ca href=\"https://www.linkedin.com/in/eannakelly/\"\u003e LinkedIn \u003c/a\u003e","niceN
80933ame":"eanna-kelly","image":false}],"isSponsored":false,"sponsorshipType":null,"isMemberContent":false,"isProContent":false,"isNonFree":false,"contentSubscriptionLevel":"is_free","articleFormat":"standard","layout":"portrait","sector":{"name":"Deeptech","slug":"deeptech","url":"https://sifted.eu/sector/deeptech/"},"category":{"name":"News","slug":"news","url":"https://sifted.eu/categories/news/"},"taxonomies":{"categories":{"primary":null,"all":[{"id":4497,"name":"News","slug":"news","url":"https://sifted.eu/categories/news/"}]},"sectors":{"primary":{"id":327,"name":"Deeptech","slug":"deeptech","url":"https://sifted.eu/sector/deeptech/"},"all":[{"id":327,"name":"Deeptech","slug":"deeptech","url":"https://sifted.eu/sector/deeptech/"}]},"themes":{"primary":{"id":1714,"name":"Startups","slug":"startups","url":"https://sifted.eu/themes/startups/"},"all":[{"id":1714,"name":"Startups","slug":"startups","url":"https://sifted.eu/themes/startups/"}]},"topics":{"primary":{"id":1927,"name":"Startups","slug":"startups","url":"https://sifted.eu/topic/startups/"},"all":[{"id":1927,"name":"Startups","slug":"startups","url":"https://sifted.eu/topic/startups/"}]},"practices":{"primary":{"id":314,"name":"Tech","slug":"tech","url":"https://sifted.eu/practice/tech/"},"all":[{"id":314,"name":"Tech","slug":"tech","url":"https://sifted.eu/practice/tech/"}]},"countries":{"primary":{"id":286,"name":"Switzerland","slug":"switzerland","url":"https://sifted.eu/countries/switzerland/"},"all":[{"id":286,"name":"Switzerland","slug":"switzerland","url":"https://sifted.eu/countries/switzerland/"}]},"tags":{"primary":null,"all":[{"id":42467,"name":"ETH Zurich","slug":"eth-zurich","url":"https://sifted.eu/tag/eth-zurich/"}]}},"tagList":[{"name":"Deeptech","link":"https://sifted.eu/sector/deeptech/"},{"name":"Switzerland","link":"https://sifted.eu/countries/switzerland/"},{"name":"ETH Zurich","link":"https://sifted.eu/tag/eth-zurich/"}],"image":{"base":"https://images.sifted.eu/cdn-cgi/image/width=510,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/14152525/Screenshot-2026-09-14-at-16.25.06.png","full":"https://images.sifted.eu/cdn-cgi/image/width=510,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/14152525/Screenshot-2026-09-14-at-16.25.06.png","fullWidth":510,"fullHeight":400,"header-image":"https://images.sifted.eu/cdn-cgi/image/width=510,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/14152525/Screenshot-2026-09-14-at-16.25.06.png","header-image-labeled":"https://images.sifted.eu/cdn-cgi/image/width=510,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/14152525/Screenshot-2026-09-14-at-16.25.06.png","list-image":"https://images.sifted.eu/cdn-cgi/image/width=240,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/14152525/Screenshot-2026-09-14-at-16.25.06.png","caption":"","placeholder":false,"alt":""},"cardImage":{"caption":"","alt":"","base":"https://images.sifted.eu/cdn-cgi/image/width=510,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/14152525/Screenshot-2026-09-14-at-16.25.06.png","fullWidth":510,"fullHeight":400,"placeholder":false},"longFormMobileImage":{"caption":"","base":"https://images.sifted.eu/cdn-cgi/image/width=510,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/14152525/Screenshot-2026-09-14-at-16.25.06.png","fullWidth":510,"fullHeight":400,"placeholder":false}},{"id":140609,"url":"https://sifted.eu/articles/inside-londons-weirdest-neolab/","slug":"inside-londons-weirdest-neolab","t
80933itle":"Inside London's weirdest neolab","excerpt":"Inherent was founded by DeepMind alumni and has been backed with $50m from Index and Radical\r\n","comments":{"count":"0","enabled":false},"publishTimestamp":1789707631000,"author":{"name":"Maya Dharampal-Hornby","url":"https://sifted.eu/author/maya-dharampal-hornby/"},"authors":[{"id":9171,"type":"wpuser","name":"Maya Dharampal-Hornby","twitter":"","bio":"Maya Dharampal-Hornby is a reporter, covering UK tech for Sifted, based in London. She's also the producer of \u003ca href=\"https://podcast.sifted.eu/\"\u003e Startup Europe — The Sifted Podcast \u003c/a\u003e.","niceName":"maya-dharampal-hornby","image":false}],"isSponsored":false,"sponsorshipType":null,"isMemberContent":false,"isProContent":true,"isNonFree":true,"contentSubscriptionLevel":"is_pro","articleFormat":"standard","layout":"long_form","sector":{"name":"AI agents","slug":"ai-agents","url":"https://sifted.eu/sector/ai-agents/"},"category":{"name":"Interview","slug":"interview","url":"https://sifted.eu/categories/interview/"},"taxonomies":{"categories":{"primary":null,"all":[{"id":4498,"name":"Interview","slug":"interview","url":"https://sifted.eu/categories/interview/"},{"id":41675,"name":"Features","slug":"features","url":"https://sifted.eu/categories/features/"}]},"sectors":{"primary":{"id":41718,"name":"AI agents","slug":"ai-agents","url":"https://sifted.eu/sector/ai-agents/"},"all":[{"id":41718,"name":"AI agents","slug":"ai-agents","url":"https://sifted.eu/sector/ai-agents/"},{"id":327,"name":"Deeptech","slug":"deeptech","url":"https://sifted.eu/sector/deeptech/"},{"id":348,"name":"Future of work","slug":"future-of-work","url":"https://sifted.eu/sector/future-of-work/"},{"id":11531,"name":"Startup life","slug":"startup-life","url":"https://sifted.eu/sector/startup-life/"}]},"themes":{"primary":null,"all":[]},"topics":{"primary":null,"all":[]},"practices":{"primary":null,"all":[]},"countries":{"primary":null,"all":[]},"tags":{"primary":null,"all":[{"id":43162,"name":"Edward Hughes","slug":"edward-hughes","url":"https://sifted.eu/tag/edward-hughes/"},{"id":42377,"name":"Google DeepMind","slug":"google-deepmind","url":"https://sifted.eu/tag/google-deepmind/"},{"id":41752,"name":"Index Ventures","slug":"index-ventures","url":"https://sifted.eu/tag/index-ventures/"},{"id":42521,"name":"Inherent","slug":"inherent","url":"https://sifted.eu/tag/inherent/"},{"id":43164,"name":"Kaloyan Aleksiev","slug":"kaloyan-aleksiev","url":"https://sifted.eu/tag/kaloyan-aleksiev/"},{"id":43163,"name":"Louis Kirsch","slug":"louis-kirsch","url":"https://sifted.eu/tag/louis-kirsch/"},{"id":43154,"name":"neolab","slug":"neolab","url":"https://sifted.eu/tag/neolab/"},{"id":43165,"name":"Radical Ventures","slug":"radical-ventures","url":"https://sifted.eu/tag/radical-ventures/"},{"id":43161,"name":"Tantum Collins","slug":"tantum-collins","url":"https://sifted.eu/tag/tantum-collins/"}]}},"tagList":[{"name":"AI agents","link":"https://sifted.eu/sector/ai-agents/"},{"name":"Deeptech","link":"https://sifted.eu/sector/deeptech/"},{"name":"Future of work","link":"https://sifted.eu/sector/future-of-work/"},{"name":"Startup life","link":"https://sifted.eu/sector/startup-life/"}],"image":{"base":"https://images.sifted.eu/cdn-cgi/image/width=2048,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/17172518/inherent-scaled.png","full":"https://images.sifted.eu/cdn-cgi/image/width=2048,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/17172518/inherent-scaled.png","fullWidth":2048,"fullHeight":672,"header-image":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/17172518/inherent-scaled.png","header-image-labeled":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/17172518/inherent-scaled.png","list-image":"https://images.sifted.eu/cdn-cgi/image/width=240,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/17172518/inherent-scaled.png","caption":"Inherent cofounders (L-R): Louis Kirsch, Kaloyan Aleksiev, Tantum Collins, Edward Hughes. Image provided by Inherent. ","placeholder":false,"alt":"Inherent cofounders (L-R): Louis Kirsch, Kaloyan Aleksiev, Tantum Collins, Edward Hughes. Image provided by Inherent."},"cardImage":{"caption":"Inherent cofounders (L-R): Louis Kirsch, Kaloyan Aleksiev, Tantum Collins, Edward Hughes. Image provided by Inherent. ","alt":"Inherent cofounders (L-R): Louis Kirsch, Kaloyan Aleksiev, Tantum Collins, Edward Hughes. Image provided by Inherent.","base":"https://images.sifted.eu/cdn-cgi/image/width=2048,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/17172518/in
80933herent-scaled.png","fullWidth":2048,"fullHeight":672,"placeholder":false},"longFormMobileImage":{"caption":"Inherent cofounders (L-R): Louis Kirsch, Kaloyan Aleksiev, Tantum Collins, Edward Hughes. Image provided by Inherent. ","base":"https://images.sifted.eu/cdn-cgi/image/width=2048,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/17172518/inherent-scaled.png","fullWidth":2048,"fullHeight":672,"placeholder":false}},{"id":140540,"url":"https://sifted.eu/articles/why-polish-startups-are-growing-faster-than-ever/","slug":"why-polish-startups-are-growing-faster-than-ever","title":"Why Polish startups are growing faster than ever","excerpt":"Polish startups now hold 11 of the 100 fastest-growing spots in DACH \u0026 CEE, up from three. ","comments":{"count":"0","enabled":false},"publishTimestamp":1789621215000,"author":{"name":"Oshin Narang","url":"https://sifted.eu/author/oshin-narang/"},"authors":[{"id":9246,"type":"wpuser","name":"Oshin Narang","twitter":"","bio":"Oshin is Sifted's startup \u0026amp; VC analyst.","niceName":"oshin-narang","image":false}],"isSponsored":false,"sponsorshipType":null,"isMemberContent":false,"isProContent":true,"isNonFree":true,"contentSubscriptionLevel":"is_pro","articleFormat":"standard","layout":"short_form","sector":null,"category":{"name":"Interview","slug":"interview","url":"https://sifted.eu/categories/interview/"},"taxonomies":{"categories":{"primary":null,"all":[{"id":4498,"name":"Interview","slug":"interview","url":"https://sifted.eu/categories/interview/"},{"id":41675,"name":"Features","slug":"features","url":"https://sifted.eu/categories/features/"}]},"sectors":{"primary":null,"all":[]},"themes":{"primary":null,"all":[]},"topics":{"primary":null,"all":[]},"practices":{"primary":null,"all":[]},"countries":{"primary":null,"all":[]},"tags":{"primary":null,"all":[{"id":43098,"name":"2026 Sifted 100: DACH \u0026amp; CEE Leaderboard","slug":"2026-sifted-100-dach-cee-leaderboard","url":"https://sifted.eu/tag/2026-sifted-100-dach-cee-leaderboard/"},{"id":42753,"name":"Hard2Beat","slug":"hard2beat","url":"https://sifted.eu/tag/hard2beat/"},{"id":43135,"name":"PFR Ventures","slug":"pfr-ventures","url":"https://sifted.eu/tag/pfr-ventures/"},{"id":42423,"name":"Smok Ventures","slug":"smok-ventures","url":"https://sifted.eu/tag/smok-ventures/"}]}},"tagList":[{"name":"2026 Sifted 100: DACH \u0026amp; CEE Leaderboard","link":"https://sifted.eu/tag/2026-sifted-100-dach-cee-leaderboard/"},{"name":"Hard2Beat","link":"https://sifted.eu/tag/hard2beat/"},{"name":"PFR Ventures","link":"https://sifted.eu/tag/pfr-ventures/"},{"name":"Smok Ventures","link":"https://sifted.eu/tag/smok-ventures/"}],"image":{"base":"https://images.sifted.eu/cdn-cgi/image/width=1800,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/16161547/Infinity-Avestus-Real-Estate.jpg","full":"https://images.sifted.eu/cdn-cgi/image/width=1800,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/16161547/Infinity-Avestus-Real-Estate.jpg","fullWidth":1800,"fullHeight":1200,"header-image":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/16161547/Infinity-Avestus-Real-Estate.jpg","header-image-labeled":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/16161547/Infinity-Avestus-Real-Estate.jpg","list-image":"https://images.sifted.eu/cdn-cgi/image/width=240,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/16161547/Infinity-Avestus-Real-Estate.jpg","caption":"","placeholder":false,"alt":""},"cardImage":{"caption":"","alt":"","base":"https://images.sifted.eu/cdn-cgi/image/width=1800,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/16161547/Infinity-Avestus-Real-Estate.jpg","fullWidth":1800,"fullHeight":1200,"placeholder":false},"longFormMobileImage":{"caption":"","base":"https://images.sifted.eu/cdn-cgi/image/width=1800,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/16161547/Infinity-Avestus-Real-Estate.jpg","fullWidth":1800,"fullHeight":1200,"placeholder":false}}],"freeToReadArticles":[{"id":140872,"url":"https://sifted.eu/articles/new-yor
80933k-podcast/","slug":"new-york-podcast","title":"Is New York warming to European tech?","excerpt":"Anne Sraders joins host Freya Pratty on this week's Sifted podcast","comments":{"count":"0","enabled":false},"publishTimestamp":1790255114000,"author":{"name":"Anne Sraders","url":"https://sifted.eu/author/anne-sraders/"},"authors":[{"id":9088,"type":"wpuser","name":"Anne Sraders","twitter":"https://x.com/AnneSraders","bio":"Anne Sraders is a senior reporter at Sifted, based in Berlin. She covers the VC industry and deeptech startups. She also writes Sifted's weekly VC newsletter \u003ca href=\"https://sifted.eu/newsletters\"\u003e Up Round\u003c/a\u003e. Follow her on \u003ca href=\"https://x.com/AnneSraders\"\u003e X\u003c/a\u003e and \u003ca href=\"https://www.linkedin.com/in/anne-sraders-54222b95//\"\u003e LinkedIn\u003c/a\u003e","niceName":"anne-sraders","image":false},{"id":8525,"type":"wpuser","name":"Freya Pratty","twitter":"FPratty","bio":"Freya Pratty is Sifted's associate editor. She covers UK tech and leads Sifted's investigations. Follow her on \u003ca href=\"https://twitter.com/FPratty\"\u003e X \u003c/a\u003e, \u003ca href=\"https://www.linkedin.com/in/freyapratty111/\"\u003e LinkedIn \u003c/a\u003e and \u003ca href=\"https://bsky.app/profile/freyapratty.bsky.social\"\u003e Bluesky\u003c/a\u003e","niceName":"freya-williams","image":false}],"isSponsored":false,"sponsorshipType":null,"isMemberContent":false,"isProContent":false,"isNonFree":false,"contentSubscriptionLevel":"is_free","articleFormat":"standard","layout":"short_form","sector":{"name":"Venture capital","slug":"venture-capital","url":"https://sifted.eu/sector/venture-capital/"},"category":{"name":"Podcast","slug":"podcast","url":"https://sifted.eu/categories/podcast/"},"taxonomies":{"categories":{"primary":null,"all":[{"id":40118,"name":"Podcast","slug":"podcast","url":"https://sifted.eu/categories/podcast/"}]},"sectors":{"primary":{"id":11532,"name":"Venture capital","slug":"venture-capital","url":"https://sifted.eu/sector/venture-capital/"},"all":[{"id":11532,"name":"Venture capital","slug":"venture-capital","url":"https://sifted.eu/sector/venture-capital/"}]},"themes":{"primary":null,"all":[]},"topics":{"primary":{"id":1928,"name":"Entrepreneurship","slug":"entrepreneurship","url":"https://sifted.eu/topic/entrepreneurship/"},"all":[{"id":1928,"name":"Entrepreneurship","slug":"entrepreneurship","url":"https://sifted.eu/topic/entrepreneurship/"},{"id":1929,"name":"Innovation","slug":"innovation","url":"https://sifted.eu/topic/innovation/"},{"id":1927,"name":"Startups","slug":"startups","url":"https://sifted.eu/topic/startups/"},{"id":1926,"name":"Technology","slug":"technology","url":"https://sifted.eu/topic/technology/"}]},"practices":{"primary":null,"all":[]},"countries":{"primary":null,"all":[]},"tags":{"primary":null,"all":[{"id":43145,"name":"Podcast","slug":"podcast","url":"https://sifted.eu/tag/podcast/"},{"id":43159,"name":"Venture capital","slug":"venture-capital","url":"https://sifted.eu/tag/venture-capital/"}]}},"tagList":[{"name":"Venture capital","link":"https://sifted.eu/sector/venture-capital/"},{"name":"Podcast","link":"https://sifted.eu/tag/podcast/"},{"name":"Venture capital","link":"https://sifted.eu/tag/venture-capital/"}],"image":{"base":"https://images.sifted.eu/cdn-cgi/image/width=1280,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23225328/Freya-Anne-image.png","full":"https://images.sifted.eu/cdn-cgi/image/width=1280,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23225328/Freya-Anne-image.png","fullWidth":1280,"fullHeight":720,"header-image":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23225328/Freya-Anne-image.png","header-image-labeled":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23225328/Freya-Anne-image.png","list-image":"https://images.sifted.eu/cdn-cgi/image/width=240,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23225328/Freya-Anne-image.png","caption":"","placeholder":false,"alt":""},"cardImage":{"fullWidth":1080,"fullHeight":1080,"caption":"","base":"https://images.sifted.eu/cdn-cgi/image/width=1080,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23224230/Freya-Anne-image-square.png","alt":"","placeholder":false},"longFormMobileImage":{"caption":"","base":"https://images.sifted.eu/cdn-cgi/image/width=1280,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23225328/Freya-Anne-image.png","fullWidth":1280,"fullHeight":720,"placeholder":false}},{"id":140407,"url":"https://sifted.eu/articles/uk-startup-building-ais-next-enterprise-category-brnd/","slug":"uk-startup-building-ais-next-enterprise-category-brnd","title":"Inside the UK startup building AI’s next enterprise category","excerpt":"Backed by investors including LocalGlobe, Cherry Ventures and Octopus Ventures, Resolutiion is betting that Risk-to-Resolution will be the next breakout wave in enterprise AI","comments":{"count":"0","enabled":false},"publishTimestamp":1790240400000,"author":{"name":"techUK","url":"https://sifted.eu/author/techuk/"},"authors":[{"id":9283,"type":"wpuser","name":"techUK","twitter":"","bio":"","niceN
80933ame":"techuk","image":false}],"isSponsored":true,"sponsorshipType":"Paid for and produced by","sponsorDetails":{"logo":"https://images.sifted.eu/cdn-cgi/image/format=auto/wp-content/uploads/2026/09/17113959/unnamed.png","logoWidth":438,"logoHeight":137,"name":"TechUK","description":"","url":"","urlLabel":"Learn more"},"isMemberContent":false,"isProContent":false,"isNonFree":false,"contentSubscriptionLevel":"is_free","articleFormat":"sponsored","layout":"","sector":{"name":"Startup life","slug":"startup-life","url":"https://sifted.eu/sector/startup-life/"},"category":{"name":"Paid for and produced by","slug":"paid-for-and-produced-by","url":"https://sifted.eu/categories/paid-for-and-produced-by/"},"taxonomies":{"categories":{"primary":null,"all":[{"id":41697,"name":"Paid for and produced by","slug":"paid-for-and-produced-by","url":"https://sifted.eu/categories/paid-for-and-produced-by/"},{"id":41677,"name":"Branded content","slug":"branded-content","url":"https://sifted.eu/categories/branded-content/"}]},"sectors":{"primary":{"id":11531,"name":"Startup life","slug":"startup-life","url":"https://sifted.eu/sector/startup-life/"},"all":[{"id":290,"name":"Artificial intelligence","slug":"artificial-intelligence","url":"https://sifted.eu/sector/artificial-intelligence/"},{"id":327,"name":"Deeptech","slug":"deeptech","url":"https://sifted.eu/sector/deeptech/"},{"id":11531,"name":"Startup life","slug":"startup-life","url":"https://sifted.eu/sector/startup-life/"}]},"themes":{"primary":{"id":1714,"name":"Startups","slug":"startups","url":"https://sifted.eu/themes/startups/"},"all":[{"id":1714,"name":"Startups","slug":"startups","url":"https://sifted.eu/themes/startups/"}]},"topics":{"primary":{"id":1927,"name":"Startups","slug":"startups","url":"https://sifted.eu/topic/startups/"},"all":[{"id":1927,"name":"Startups","slug":"startups","url":"https://sifted.eu/topic/startups/"}]},"practices":{"primary":{"id":314,"name":"Tech","slug":"tech","url":"https://sifted.eu/practice/tech/"},"all":[{"id":314,"name":"Tech","slug":"tech","url":"https://sifted.eu/practice/tech/"}]},"countries":{"primary":null,"all":[]},"tags":{"primary":null,"all":[]}},"tagList":[{"name":"Artificial intelligence","link":"https://sifted.eu/sector/artificial-intelligence/"},{"name":"Deeptech","link":"https://sifted.eu/sector/deeptech/"},{"name":"Startup life","link":"https://sifted.eu/sector/startup-life/"}],"image":{"base":"https://images.sifted.eu/cdn-cgi/image/width=2048,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/22125705/Sifted-scaled.png","full":"https://images.sifted.eu/cdn-cgi/image/width=2048,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/22125705/Sifted-scaled.png","fullWidth":2048,"fullHeight":1280,"header-image":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/22125705/Sifted-scaled.png","header-image-labeled":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/22125705/Sifted-scaled.png","list-image":"https://images.sifted.eu/cdn-cgi/image/width=240,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/22125705/Sifted-scaled.png","caption":"","placeholder":false,"alt":""},"cardImage":{"caption":"","alt":"","base":"https://images.sifted.eu/cdn-cgi/image/width=2048,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/22125705/Sifted-scaled.png","fullWidth":2048,"fullHeight":1280,"placeholder":false},"longFormMobileImage":{"caption":"","base":"https://images.sifted.eu/cdn-cgi/image/width=2048,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/22125705/Sifted-scaled.png","fullWidth":2048,"fullHeight":1280,"placeholder":false}},{"id":140819,"url":"https://sifted.eu/articles/dtcp-first-close-defence-fund-invest-europe-growth/","slug":"dtcp-first-close-defence-fund-invest-europe-growth","title":"Growth investor DTCP raises €455m first close for defence fund, plots future funds","excerpt":"The firm launched the fund in January and has already made two investments","comments":{"count":"0","enabled":false},"publishTimestamp":1790233236000,"author":{"name":"Anne Sraders","url":"https://sifted.eu/author/anne-sraders/"},"authors":[{"id":9088,"type":"wpuser","name":"Anne Sraders","twitter":"https://x.com/AnneSraders","bio":"Anne Sraders is a senior reporter at Sifted, based in Berlin. She covers the VC industry and deeptech startups. She also writes Sifted's weekly VC newsletter \u003ca href=\"https://sifted.eu/newsletters\"\u003e Up Round\u003c/a\u003e. Follow her on \u003ca href=\"https://x.com/AnneSraders\"\u003e X\u003c/a\u003e and \u003ca href=\"https://www.linkedin.com/in/anne-sraders-54222b95//\"\u003e LinkedIn\u003c/a\u003e","niceN
80933ame":"anne-sraders","image":false}],"isSponsored":false,"sponsorshipType":null,"isMemberContent":false,"isProContent":false,"isNonFree":false,"contentSubscriptionLevel":"is_free","articleFormat":"standard","layout":"short_form","sector":{"name":"Venture capital","slug":"venture-capital","url":"https://sifted.eu/sector/venture-capital/"},"category":{"name":"News","slug":"news","url":"https://sifted.eu/categories/news/"},"taxonomies":{"categories":{"primary":null,"all":[{"id":4497,"name":"News","slug":"news","url":"https://sifted.eu/categories/news/"}]},"sectors":{"primary":{"id":11532,"name":"Venture capital","slug":"venture-capital","url":"https://sifted.eu/sector/venture-capital/"},"all":[{"id":41484,"name":"Defence tech","slug":"defence-tech","url":"https://sifted.eu/sector/defence-tech/"},{"id":327,"name":"Deeptech","slug":"deeptech","url":"https://sifted.eu/sector/deeptech/"},{"id":11541,"name":"LP","slug":"lp","url":"https://sifted.eu/sector/lp/"},{"id":11532,"name":"Venture capital","slug":"venture-capital","url":"https://sifted.eu/sector/venture-capital/"}]},"themes":{"primary":{"id":1711,"name":"Venture Capital","slug":"venture-capital","url":"https://sifted.eu/themes/venture-capital/"},"all":[{"id":1711,"name":"Venture Capital","slug":"venture-capital","url":"https://sifted.eu/themes/venture-capital/"}]},"topics":{"primary":{"id":1950,"name":"Venture Capital","slug":"venture-capital","url":"https://sifted.eu/topic/venture-capital/"},"all":[{"id":1950,"name":"Venture Capital","slug":"venture-capital","url":"https://sifted.eu/topic/venture-capital/"}]},"practices":{"primary":{"id":311,"name":"Funding","slug":"funding","url":"https://sifted.eu/practice/funding/"},"all":[{"id":311,"name":"Funding","slug":"funding","url":"https://sifted.eu/practice/funding/"}]},"countries":{"primary":{"id":256,"name":"Germany","slug":"germany","url":"https://sifted.eu/countries/germany/"},"all":[{"id":256,"name":"Germany","slug":"germany","url":"https://sifted.eu/countries/germany/"}]},"tags":{"primary":null,"all":[{"id":42079,"name":"DTCP","slug":"dtcp","url":"https://sifted.eu/tag/dtcp/"}]}},"tagList":[{"name":"Defence tech","link":"https://sifted.eu/sector/defence-tech/"},{"name":"Deeptech","link":"https://sifted.eu/sector/deeptech/"},{"name":"LP","link":"https://sifted.eu/sector/lp/"},{"name":"Venture capital","link":"https://sifted.eu/sector/venture-capital/"}],"image":{"base":"https://images.sifted.eu/cdn-cgi/image/width=1333,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23163715/Thomas-Preus_DTCP-Capital-scaled-e1790177896849.jpeg","full":"https://images.sifted.eu/cdn-cgi/image/width=1333,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23163715/Thomas-Preus_DTCP-Capital-scaled-e1790177896849.jpeg","fullWidth":1333,"fullHeight":1428,"header-image":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23163715/Thomas-Preus_DTCP-Capital-scaled-e1790177896849.jpeg","header-image-labeled":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23163715/Thomas-Preus_DTCP-Capital-scaled-e1790177896849.jpeg","list-image":"https://images.sifted.eu/cdn-cgi/image/width=240,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23163715/Thomas-Preus_DTCP-Capital-scaled-e1790177896849.jpeg","caption":"Thomas Preuß of DTCP. Courtesy of DTCP","placeholder":false,"alt":"Thomas Preuß of DTCP"},"cardImage":{"caption":"Thomas Preuß of DTCP. Courtesy of DTCP","alt":"Thomas Preuß of DTCP","base":"https://images.sifted.eu/cdn-cgi/image/width=1333,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23163715/Thomas-Preus_DTCP-Capital-scaled-e1790177896849.jpeg","fullWidth":1333,"fullHeight":1428,"placeholder":false},"longFormMobileImage":{"caption":"Thomas Preuß of DTCP. Courtesy of DTCP","base":"https://images.sifted.eu/cdn-cgi/image/width=1333,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23163715/Thomas-Preus_DTCP-Capital-scaled-e1790177896849.jpeg","fullWidth":1333,"fullHeight":1428,"placeholder":false}},{"id":140845,"url":"https://sifted.eu/articles/claude-founder-house-london/","slug":"claude-founder-house-london","title":"Anthropic: We're not trying to eat startups' lunch","excerpt":"The frontier lab held an event for London's startups yesterday","comments":{"count":"0","enabled":false},"publishTimestamp":1790226025000,"author":{"name":"Maya Dharampal-Hornby","url":"https://sifted.eu/author/maya-dharampal-hornby/"},"authors":[{"id":9171,"type":"wpuser","name":"Maya Dharampal-Hornby","twitter":"","bio":"Maya Dharampal-Hornby is a reporter, 
80933covering UK tech for Sifted, based in London. She's also the producer of \u003ca href=\"https://podcast.sifted.eu/\"\u003e Startup Europe — The Sifted Podcast \u003c/a\u003e.","niceName":"maya-dharampal-hornby","image":false}],"isSponsored":false,"sponsorshipType":null,"isMemberContent":false,"isProContent":false,"isNonFree":false,"contentSubscriptionLevel":"is_free","articleFormat":"standard","layout":"short_form","sector":{"name":"Artificial intelligence","slug":"artificial-intelligence","url":"https://sifted.eu/sector/artificial-intelligence/"},"category":{"name":"News","slug":"news","url":"https://sifted.eu/categories/news/"},"taxonomies":{"categories":{"primary":null,"all":[{"id":4497,"name":"News","slug":"news","url":"https://sifted.eu/categories/news/"}]},"sectors":{"primary":{"id":290,"name":"Artificial intelligence","slug":"artificial-intelligence","url":"https://sifted.eu/sector/artificial-intelligence/"},"all":[{"id":290,"name":"Artificial intelligence","slug":"artificial-intelligence","url":"https://sifted.eu/sector/artificial-intelligence/"},{"id":327,"name":"Deeptech","slug":"deeptech","url":"https://sifted.eu/sector/deeptech/"},{"id":11532,"name":"Venture capital","slug":"venture-capital","url":"https://sifted.eu/sector/venture-capital/"}]},"themes":{"primary":null,"all":[]},"topics":{"primary":null,"all":[]},"practices":{"primary":null,"all":[]},"countries":{"primary":null,"all":[]},"tags":{"primary":null,"all":[{"id":41784,"name":"Anthropic","slug":"anthropic","url":"https://sifted.eu/tag/anthropic/"},{"id":43542,"name":"Index","slug":"index","url":"https://sifted.eu/tag/index/"}]}},"tagList":[{"name":"Artificial intelligence","link":"https://sifted.eu/sector/artificial-intelligence/"},{"name":"Deeptech","link":"https://sifted.eu/sector/deeptech/"},{"name":"Venture capital","link":"https://sifted.eu/sector/venture-capital/"},{"name":"Anthropic","link":"https://sifted.eu/tag/anthropic/"}],"image":{"base":"https://images.sifted.eu/cdn-cgi/image/width=1500,quality=75,fit=cover,format=auto/wp-content/uploads/2025/04/08094834/Siblings-recent-photo-2.jpg","full":"https://images.sifted.eu/cdn-cgi/image/width=1500,quality=75,fit=cover,format=auto/wp-content/uploads/2025/04/08094834/Siblings-recent-photo-2.jpg","fullWidth":1500,"fullHeight":1001,"header-image":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2025/04/08094834/Siblings-recent-photo-2.jpg","header-image-labeled":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2025/04/08094834/Siblings-recent-photo-2.jpg","list-image":"https://images.sifted.eu/cdn-cgi/image/width=240,quality=75,fit=cover,format=auto/wp-content/uploads/2025/04/08094834/Siblings-recent-photo-2.jpg","caption":"Anthropic cofounders Daniela and Dario Amodei","placeholder":false,"alt":"Anthropic cofounders Daniela and Dario Amodei next to each other"},"cardImage":{"caption":"Anthropic cofounders Daniela and Dario Amodei","alt":"Anthropic cofounders Daniela and Dario Amodei next to each other","base":"https://images.sifted.eu/cdn-cgi/image/width=1500,quality=75,fit=cover,format=auto/wp-content/uploads/2025/04/08094834/Siblings-recent-photo-2.jpg","fullWidth":1500,"fullHeight":1001,"placeholder":false},"longFormMobileImage":{"caption":"Anthropic cofounders Daniela and Dario Amodei","base":"https://images.sifted.eu/cdn-cgi/image/width=1500,quality=75,fit=cover,format=auto/wp-content/uploads/2025/04/08094834/Siblings-recent-photo-2.jpg","fullWidth":1500,"fullHeight":1001,"placeholder":false}},{"id":140808,"url":"https://sifted.eu/articles/revolut-facial-recognition-face-payments-pay-with-smile/","slug":"revolut-facial-recognition-face-payments-pay-with-smile","title":"Revolut unveils facial recognition payments in UK","excerpt":"The system will initially be available at Kiss the Hippo coffee shops across London","comments":{"count":"0","enabled":false},"publishTimestamp":1790208117000,"author":{"name":"Martin Coulter","url":"https://sifted.eu/author/martin-coulter/"},"authors":[{"id":9167,"type":"wpuser","name":"Martin Coulter","twitter":"MartinJBCoulter","bio":"Martin Coulter is Sifted's news editor, based in London. You can follow him on \u003ca href=\"https://www.linkedin.com/in/martin-coulter-245056149/\"\u003e LinkedIn\u003c/a\u003e and \u003ca href=\"https://x.com/MartinJBCoulter\"\u003e X\u003c/a\u003e","niceN
80933ame":"martin-coulter","image":false}],"isSponsored":false,"sponsorshipType":null,"isMemberContent":false,"isProContent":false,"isNonFree":false,"contentSubscriptionLevel":"is_free","articleFormat":"standard","layout":"short_form","sector":{"name":"Fintech","slug":"fintech","url":"https://sifted.eu/sector/fintech/"},"category":{"name":"News","slug":"news","url":"https://sifted.eu/categories/news/"},"taxonomies":{"categories":{"primary":null,"all":[{"id":4497,"name":"News","slug":"news","url":"https://sifted.eu/categories/news/"}]},"sectors":{"primary":{"id":11535,"name":"Fintech","slug":"fintech","url":"https://sifted.eu/sector/fintech/"},"all":[{"id":11535,"name":"Fintech","slug":"fintech","url":"https://sifted.eu/sector/fintech/"}]},"themes":{"primary":null,"all":[]},"topics":{"primary":null,"all":[]},"practices":{"primary":null,"all":[]},"countries":{"primary":null,"all":[]},"tags":{"primary":null,"all":[{"id":43253,"name":"Facial recognition","slug":"facial-recognition","url":"https://sifted.eu/tag/facial-recognition/"},{"id":41223,"name":"Fintech","slug":"fintech","url":"https://sifted.eu/tag/fintech/"},{"id":40969,"name":"Revolut","slug":"revolut","url":"https://sifted.eu/tag/revolut/"}]}},"tagList":[{"name":"Fintech","link":"https://sifted.eu/sector/fintech/"},{"name":"Facial recognition","link":"https://sifted.eu/tag/facial-recognition/"},{"name":"Fintech","link":"https://sifted.eu/tag/fintech/"},{"name":"Revolut","link":"https://sifted.eu/tag/revolut/"}],"image":{"base":"https://images.sifted.eu/cdn-cgi/image/width=946,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23133806/RevolutPay-PwS-PR-Register-01-e1790167115957.png","full":"https://images.sifted.eu/cdn-cgi/image/width=946,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23133806/RevolutPay-PwS-PR-Register-01-e1790167115957.png","fullWidth":946,"fullHeight":538,"header-image":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23133806/RevolutPay-PwS-PR-Register-01-e1790167115957.png","header-image-labeled":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23133806/RevolutPay-PwS-PR-Register-01-e1790167115957.png","list-image":"https://images.sifted.eu/cdn-cgi/image/width=240,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23133806/RevolutPay-PwS-PR-Register-01-e1790167115957.png","caption":"","placeholder":false,"alt":"Revolut Pay with Smile facial recognition"},"cardImage":{"caption":"","alt":"Revolut Pay with Smile facial recognition","base":"https://images.sifted.eu/cdn-cgi/image/width=946,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23133806/RevolutPay-PwS-PR-Register-01-e1790167115957.png","fullWidth":946,"fullHeight":538,"placeholder":false},"longFormMobileImage":{"caption":"","base":"https://images.sifted.eu/cdn-cgi/image/width=946,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23133806/RevolutPay-PwS-PR-Register-01-e1790167115957.png","fullWidth":946,"fullHeight":538,"placeholder":false}},{"id":140846,"url":"https://sifted.eu/articles/nscale-nvidia-bytedance-tiktok/","slug":"nscale-nvidia-bytedance-tiktok","title":"Nscale helped ByteDance subsidiary access Nvidia chips, sidestepping US rules — reports","excerpt":"Deal allegedly enabled TikTok parent company access to chips it could not get in China due to US restrictions\r\n","comments":{"count":"0","enabled":false},"publishTimestamp":1790182773000,"author":{"name":"Martin Coulter","url":"https://sifted.eu/author/martin-coulter/"},"authors":[{"id":9167,"type":"wpuser","name":"Martin Coulter","twitter":"MartinJBCoulter","bio":"Martin Coulter is Sifted's news editor, based in London. You can follow him on \u003ca href=\"https://www.linkedin.com/in/martin-coulter-245056149/\"\u003e LinkedIn\u003c/a\u003e and \u003ca href=\"https://x.com/MartinJBCoulter\"\u003e X\u003c/a\u003e","niceName":"martin-coulter","image":false}],"isSponsored":false,"sponsorshipType":null,"isMemberContent":false,"isProContent":false,"isNonFree":false,"contentSubscriptionLevel":"is_free","articleFormat":"standard","layout":"short_form","sector":{"name":"Data centres","slug":"data-centres","url":"https://sifted.eu/sector/data-centres/"},"category":{"name":"News","slug":"news","url":"https://sifted.eu/categories/news/"},"taxonomies":{"categories":{"primary":null,"all":[{"id":4497,"name":"News","slug":"news","url":"https://sifted.eu/categories/news/"}]},"sectors":{"primary":{"id":41715,"name":"Data centres","slug":"data-centres","url":"https://sifted.eu/sector/data-centres/"},"all":[{"id":41715,"name":"Data centres","slug":"data-centres","url":"https://sifted.eu/sector/data-centres/"},{"id":327,"name":"Deeptech","slug":"deeptech","url":"https://sifted.eu/sector/deeptech/"}]},"themes":{"primary":null,"all":[]},"topics":{"primary":null,"all":[]},"practices":{"primary":null,"all":[]},"countries":{"primary":null,"all":[]},"tags":{"primary":null,"all":[{"id":43541,"name":"ByteDance","slug":"bytedance","url":"https://sifted.eu/tag/bytedance/"},{"id":41899,"name":"Nscale","slug":"nscale","url":"https://sifted.eu/tag/nscale/"},{"id":41776,"name":"Nvidia","slug":"nvidia","url":"https://sifted.eu/tag/nvidia/"}]}},"tagList":[{"name":"Data centres","link":"https://sifted.eu/sector/data-centres/"},{"name":"Deeptech","link":"https://sifted.eu/sector/deeptech/"},{"name":"ByteDance","link":"https://sifted.eu/tag/bytedance/"},{"name":"Nscale","link":"https://sifted.eu/tag/nscale/"}],"image":{"base":"https://content.sifted.eu/wp-content/uploads/2026/01/14164109/6751d9658fb3f94e50739cc8.webp","full":"https://content.sifted.eu/wp-content/uploads/2026/01/14164109/6751d9658fb3f94e50739cc8.webp","fullWidth":700,"fullHeight":525,"header-image":"https://content.sifted.eu/wp-content/uploads/2026/01/14164109/6751d9658fb3f94e50739cc8-530x355.webp","header-image-labeled":"https://content.sifted.eu/wp-content/uploads/2026/01/14164109/6751d9658fb3f94e50739cc8-530x355.webp","list-image":"https://content.sifted.eu/wp-content/uploads/2026/01/14164109/6751d9658fb3f94e50739cc8-240x130.webp","caption":"Josh Payne. Photo: Nscale","placeholder":false,"alt":"Josh Payne. Photo: Nscale"},"cardImage":{"caption":"Josh Payne. Photo: Nscale","alt":"Josh Payne. Photo: Nscale","base":"https://content.sifted.eu/wp-content/uploads/2026/01/14164109/6751d9658fb3f94e50739cc8.webp","fullWidth":700,"fullHeight":525,"placeholder":false},"longFormMobileImage":{"caption":"Josh Payne. Photo: Nscale","base":"https://content.sifted.eu/wp-content/uploads/2026/01/14164109/6751d9658fb3f94e50739cc8.webp","fullWidth":700,"fullHeight":525,"placeholder":false}}],"collaborationArticles":[{"id":140407,"url":"https://sifted.eu/articles/uk-startup-building-ais-next-enterprise-category-brnd/","slug":"uk-startup-building-ais-next-enterprise-category-brnd","title":"Inside the UK startup building AI’s next enterprise category","excerpt":"Backed by investors including LocalGlobe, Cherry Ventures and Octopus Ventures, Resolutiion is betting that Risk-to-Resolution will be the next breakout wave in enterprise AI","comments":{"count":"0","enabled":false},"publishTimestamp":1790240400000,"author":{"name":"techUK","url":"https://sifted.eu/author/techuk/"},"authors":[{"id":9283,"type":"wpuser","name":"techUK","twitter":"","bio":"","niceN
80933ame":"techuk","image":false}],"isSponsored":true,"sponsorshipType":"Paid for and produced by","sponsorDetails":{"logo":"https://images.sifted.eu/cdn-cgi/image/format=auto/wp-content/uploads/2026/09/17113959/unnamed.png","logoWidth":438,"logoHeight":137,"name":"TechUK","description":"","url":"","urlLabel":"Learn more"},"isMemberContent":false,"isProContent":false,"isNonFree":false,"contentSubscriptionLevel":"is_free","articleFormat":"sponsored","layout":"","sector":{"name":"Startup life","slug":"startup-life","url":"https://sifted.eu/sector/startup-life/"},"category":{"name":"Paid for and produced by","slug":"paid-for-and-produced-by","url":"https://sifted.eu/categories/paid-for-and-produced-by/"},"taxonomies":{"categories":{"primary":null,"all":[{"id":41697,"name":"Paid for and produced by","slug":"paid-for-and-produced-by","url":"https://sifted.eu/categories/paid-for-and-produced-by/"},{"id":41677,"name":"Branded content","slug":"branded-content","url":"https://sifted.eu/categories/branded-content/"}]},"sectors":{"primary":{"id":11531,"name":"Startup life","slug":"startup-life","url":"https://sifted.eu/sector/startup-life/"},"all":[{"id":290,"name":"Artificial intelligence","slug":"artificial-intelligence","url":"https://sifted.eu/sector/artificial-intelligence/"},{"id":327,"name":"Deeptech","slug":"deeptech","url":"https://sifted.eu/sector/deeptech/"},{"id":11531,"name":"Startup life","slug":"startup-life","url":"https://sifted.eu/sector/startup-life/"}]},"themes":{"primary":{"id":1714,"name":"Startups","slug":"startups","url":"https://sifted.eu/themes/startups/"},"all":[{"id":1714,"name":"Startups","slug":"startups","url":"https://sifted.eu/themes/startups/"}]},"topics":{"primary":{"id":1927,"name":"Startups","slug":"startups","url":"https://sifted.eu/topic/startups/"},"all":[{"id":1927,"name":"Startups","slug":"startups","url":"https://sifted.eu/topic/startups/"}]},"practices":{"primary":{"id":314,"name":"Tech","slug":"tech","url":"https://sifted.eu/practice/tech/"},"all":[{"id":314,"name":"Tech","slug":"tech","url":"https://sifted.eu/practice/tech/"}]},"countries":{"primary":null,"all":[]},"tags":{"primary":null,"all":[]}},"tagList":[{"name":"Artificial intelligence","link":"https://sifted.eu/sector/artificial-intelligence/"},{"name":"Deeptech","link":"https://sifted.eu/sector/deeptech/"},{"name":"Startup life","link":"https://sifted.eu/sector/startup-life/"}],"image":{"base":"https://images.sifted.eu/cdn-cgi/image/width=2048,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/22125705/Sifted-scaled.png","full":"https://images.sifted.eu/cdn-cgi/image/width=2048,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/22125705/Sifted-scaled.png","fullWidth":2048,"fullHeight":1280,"header-image":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/22125705/Sifted-scaled.png","header-image-labeled":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/22125705/Sifted-scaled.png","list-image":"https://images.sifted.eu/cdn-cgi/image/width=240,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/22125705/Sifted-scaled.png","caption":"","placeholder":false,"alt":""},"cardImage":{"caption":"","alt":"","base":"https://images.sifted.eu/cdn-cgi/image/width=2048,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/22125705/Sifted-scaled.png","fullWidth":2048,"fullHeight":1280,"placeholder":false},"longFormMobileImage":{"caption":"","base":"https://images.sifted.eu/cdn-cgi/image/width=2048,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/22125705/Sifted-scaled.png","fullWidth":2048,"fullHeight":1280,"placeholder":false}},{"id":140599,"url":"https://sifted.eu/articles/companies-finally-use-their-most-valuable-data-brnd/","slug":"companies-finally-use-their-most-valuable-data-brnd","title":"What if companies could finally use their most valuable data?","excerpt":"Some of Europe’s most valuable business data remains largely off limits to AI. New innovations in confidential computing could help change that","comments":{"count":"0","enabled":false},"publishTimestamp":1790154000000,"author":{"name":"Vast Data","url":"https://sifted.eu/author/vast-d
80933ata/"},"authors":[{"id":9282,"type":"wpuser","name":"Vast Data","twitter":"","bio":"","niceName":"vast-data","image":false}],"isSponsored":true,"sponsorshipType":"Paid for and produced by","sponsorDetails":{"logo":"https://images.sifted.eu/cdn-cgi/image/format=auto/wp-content/uploads/2026/09/17160315/VAST-Data-Master-Logo-Blue.png","logoWidth":1136,"logoHeight":786,"name":"Vast Data","description":"","url":"","urlLabel":""},"isMemberContent":false,"isProContent":false,"isNonFree":false,"contentSubscriptionLevel":"is_free","articleFormat":"sponsored","layout":"long_form","sector":{"name":"Artificial intelligence","slug":"artificial-intelligence","url":"https://sifted.eu/sector/artificial-intelligence/"},"category":{"name":"Paid for and produced by","slug":"paid-for-and-produced-by","url":"https://sifted.eu/categories/paid-for-and-produced-by/"},"taxonomies":{"categories":{"primary":null,"all":[{"id":41697,"name":"Paid for and produced by","slug":"paid-for-and-produced-by","url":"https://sifted.eu/categories/paid-for-and-produced-by/"},{"id":41677,"name":"Branded content","slug":"branded-content","url":"https://sifted.eu/categories/branded-content/"}]},"sectors":{"primary":{"id":290,"name":"Artificial intelligence","slug":"artificial-intelligence","url":"https://sifted.eu/sector/artificial-intelligence/"},"all":[{"id":290,"name":"Artificial intelligence","slug":"artificial-intelligence","url":"https://sifted.eu/sector/artificial-intelligence/"},{"id":327,"name":"Deeptech","slug":"deeptech","url":"https://sifted.eu/sector/deeptech/"}]},"themes":{"primary":null,"all":[]},"topics":{"primary":{"id":1927,"name":"Startups","slug":"startups","url":"https://sifted.eu/topic/startups/"},"all":[{"id":1927,"name":"Startups","slug":"startups","url":"https://sifted.eu/topic/startups/"}]},"practices":{"primary":{"id":314,"name":"Tech","slug":"tech","url":"https://sifted.eu/practice/tech/"},"all":[{"id":314,"name":"Tech","slug":"tech","url":"https://sifted.eu/practice/tech/"}]},"countries":{"primary":null,"all":[]},"tags":{"primary":null,"all":[]}},"tagList":[{"name":"Artificial intelligence","link":"https://sifted.eu/sector/artificial-intelligence/"},{"name":"Deeptech","link":"https://sifted.eu/sector/deeptech/"}],"image":{"base":"https://images.sifted.eu/cdn-cgi/image/width=2048,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/18091237/VAST20260225093746_10096-1-scaled.jpg","full":"https://images.sifted.eu/cdn-cgi/image/width=2048,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/18091237/VAST20260225093746_10096-1-scaled.jpg","fullWidth":2048,"fullHeight":1365,"header-image":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/18091237/VAST20260225093746_10096-1-scaled.jpg","header-image-labeled":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/18091237/VAST20260225093746_10096-1-scaled.jpg","list-image":"https://images.sifted.eu/cdn-cgi/image/width=240,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/18091237/VAST20260225093746_10096-1-scaled.jpg","caption":"Renen Hallak, founder and CEO of VAST Data\nPhoto: VAST Data","placeholder":false,"alt":""},"cardImage":{"caption":"Renen Hallak, founder and CEO of VAST Data\nPhoto: VAST Data","alt":"","base":"https://images.sifted.eu/cdn-cgi/image/width=2048,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/18091237/VAST20260225093746_10096-1-scaled.jpg","fullWidth":2048,"fullHeight":1365,"placeholder":false},"longFormMobileImage":{"caption":"Renen Hallak, founder and CEO of VAST Data\nPhoto: VAST Data","base":"https://images.sifted.eu/cdn-cgi/image/width=2048,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/18091237/VAST20260225093746_10096-1-scaled.jpg","fullWidth":2048,"fullHeight":1365,"placeholder":false}},{"id":140524,"url":"https://sifted.eu/articles/europes-ai-moment-is-moving-from-hype-to-execution-brnd/","slug":"europes-ai-moment-is-moving-from-hype-to-execution-brnd","title":"Europe's AI moment is moving from hype to execution","excerpt":"At the upcoming HumanX event, founders, investors and policymakers will gather to explore the realities and challenges of integrating AI into businesses ","comments":{"count":"0","enabled":false},"publishTimestamp":1789640864000,"author":{"name":"HumanX","url":"https://sifted.eu/author/humanx/"},"authors":[{"id":9280,"type":"wpuser","name":"HumanX","twitter":"","bio":"","niceN
80933ame":"humanx","image":false}],"isSponsored":true,"sponsorshipType":"Paid for and produced by","sponsorDetails":{"logo":"https://images.sifted.eu/cdn-cgi/image/format=auto/wp-content/uploads/2026/09/16151911/HXE26_logo_dates_black-scaled.png","logoWidth":2048,"logoHeight":288,"name":"HumanX","description":"","url":"","urlLabel":""},"isMemberContent":false,"isProContent":false,"isNonFree":false,"contentSubscriptionLevel":"is_free","articleFormat":"sponsored","layout":"long_form","sector":{"name":"Artificial intelligence","slug":"artificial-intelligence","url":"https://sifted.eu/sector/artificial-intelligence/"},"category":{"name":"Paid for and produced by","slug":"paid-for-and-produced-by","url":"https://sifted.eu/categories/paid-for-and-produced-by/"},"taxonomies":{"categories":{"primary":null,"all":[{"id":41697,"name":"Paid for and produced by","slug":"paid-for-and-produced-by","url":"https://sifted.eu/categories/paid-for-and-produced-by/"},{"id":41677,"name":"Branded content","slug":"branded-content","url":"https://sifted.eu/categories/branded-content/"}]},"sectors":{"primary":{"id":290,"name":"Artificial intelligence","slug":"artificial-intelligence","url":"https://sifted.eu/sector/artificial-intelligence/"},"all":[{"id":290,"name":"Artificial intelligence","slug":"artificial-intelligence","url":"https://sifted.eu/sector/artificial-intelligence/"},{"id":327,"name":"Deeptech","slug":"deeptech","url":"https://sifted.eu/sector/deeptech/"}]},"themes":{"primary":{"id":1713,"name":"Technology","slug":"technology","url":"https://sifted.eu/themes/technology/"},"all":[{"id":1713,"name":"Technology","slug":"technology","url":"https://sifted.eu/themes/technology/"}]},"topics":{"primary":{"id":1926,"name":"Technology","slug":"technology","url":"https://sifted.eu/topic/technology/"},"all":[{"id":1926,"name":"Technology","slug":"technology","url":"https://sifted.eu/topic/technology/"}]},"practices":{"primary":{"id":314,"name":"Tech","slug":"tech","url":"https://sifted.eu/practice/tech/"},"all":[{"id":314,"name":"Tech","slug":"tech","url":"https://sifted.eu/practice/tech/"}]},"countries":{"primary":null,"all":[]},"tags":{"primary":null,"all":[{"id":43150,"name":"HumanX","slug":"humanx","url":"https://sifted.eu/tag/humanx/"}]}},"tagList":[{"name":"Artificial intelligence","link":"https://sifted.eu/sector/artificial-intelligence/"},{"name":"Deeptech","link":"https://sifted.eu/sector/deeptech/"},{"name":"HumanX","link":"https://sifted.eu/tag/humanx/"}],"image":{"base":"https://images.sifted.eu/cdn-cgi/image/width=2048,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/16152455/R5M24889_HumanX2026_Day2-scaled-e1789568815666.jpg","full":"https://images.sifted.eu/cdn-cgi/image/width=2048,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/16152455/R5M24889_HumanX2026_Day2-scaled-e1789568815666.jpg","fullWidth":2048,"fullHeight":1270,"header-image":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/16152455/R5M24889_HumanX2026_Day2-scaled-e1789568815666.jpg","header-image-labeled":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/16152455/R5M24889_HumanX2026_Day2-scaled-e1789568815666.jpg","list-image":"https://images.sifted.eu/cdn-cgi/image/width=240,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/16152455/R5M24889_HumanX2026_Day2-scaled-e1789568815666.jpg","caption":"","placeholder":false,"alt":""},"cardImage":{"caption":"","alt":"","base":"https://images.sifted.eu/cdn-cgi/image/width=2048,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/16152455/R5M24889_HumanX2026_Day2-scaled-e1789568815666.jpg","fullWidth":2048,"fullHeight":1270,"placeholder":false},"longFormMobileImage":{"caption":"","base":"https://images.sifted.eu/cdn-cgi/image/width=2048,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/16152455/R5M24889_HumanX2026_Day2-scaled-e1789568815666.jpg","fullWidth":2048,"fullHeight":1270,"placeholder":false}},{"id":140514,"url":"https://sifted.eu/articles/a-founders-guide-to-early-ip-management-brnd/","slug":"a-founders-guide-to-early-ip-management-brnd","title":"A founder’s guide to early IP management: ‘You don't own it just because you invented it’","excerpt":"Flatfrog and Lightbringer cofounder Ola Wassvik shares the IP lessons and mistakes he made while building a 300-patent portfolio","comments":{"count":"0","enabled":false},"publishTimestamp":1789635656000,"author":{"name":"Lara Bryant","url":"https://sifted.eu/author/larasifted-eu/"},"authors":[{"id":9221,"type":"wpuser","name":"Lara Bryant","twitter":"","bio":"Lara is a content writer at Sifted, based in London. You can find her on \u003ca href=\"https://www.linkedin.com/in/lara-bryant-b26a212
809330a/\"\u003e LinkedIn \u003c/a\u003e","niceName":"larasifted-eu","image":false}],"isSponsored":true,"sponsorshipType":"Sponsored by","sponsorDetails":{"logo":"https://images.sifted.eu/cdn-cgi/image/format=auto/wp-content/uploads/2026/08/19142333/logo-black-png.png","logoWidth":2298,"logoHeight":401,"name":"Lightbringer","description":"The AI patent platform for deep tech founders","url":"https://www.lightbringer.com","urlLabel":"Learn more"},"isMemberContent":false,"isProContent":false,"isNonFree":false,"contentSubscriptionLevel":"is_free","articleFormat":"sponsored","layout":"portrait","sector":{"name":"Artificial intelligence","slug":"artificial-intelligence","url":"https://sifted.eu/sector/artificial-intelligence/"},"category":{"name":"Sponsored by","slug":"sponsored-by","url":"https://sifted.eu/categories/sponsored-by/"},"taxonomies":{"categories":{"primary":null,"all":[{"id":41695,"name":"Sponsored by","slug":"sponsored-by","url":"https://sifted.eu/categories/sponsored-by/"},{"id":41677,"name":"Branded content","slug":"branded-content","url":"https://sifted.eu/categories/branded-content/"}]},"sectors":{"primary":{"id":290,"name":"Artificial intelligence","slug":"artificial-intelligence","url":"https://sifted.eu/sector/artificial-intelligence/"},"all":[{"id":290,"name":"Artificial intelligence","slug":"artificial-intelligence","url":"https://sifted.eu/sector/artificial-intelligence/"},{"id":327,"name":"Deeptech","slug":"deeptech","url":"https://sifted.eu/sector/deeptech/"},{"id":11531,"name":"Startup life","slug":"startup-life","url":"https://sifted.eu/sector/startup-life/"}]},"themes":{"primary":null,"all":[]},"topics":{"primary":{"id":1927,"name":"Startups","slug":"startups","url":"https://sifted.eu/topic/startups/"},"all":[{"id":1929,"name":"Innovation","slug":"innovation","url":"https://sifted.eu/topic/innovation/"},{"id":1927,"name":"Startups","slug":"startups","url":"https://sifted.eu/topic/startups/"}]},"practices":{"primary":{"id":314,"name":"Tech","slug":"tech","url":"https://sifted.eu/practice/tech/"},"all":[{"id":314,"name":"Tech","slug":"tech","url":"https://sifted.eu/practice/tech/"}]},"countries":{"primary":null,"all":[]},"tags":{"primary":null,"all":[{"id":42947,"name":"Lightbringer","slug":"lightbringer","url":"https://sifted.eu/tag/lightbringer/"}]}},"tagList":[{"name":"Artificial intelligence","link":"https://sifted.eu/sector/artificial-intelligence/"},{"name":"Deeptech","link":"https://sifted.eu/sector/deeptech/"},{"name":"Startup life","link":"https://sifted.eu/sector/startup-life/"},{"name":"Lightbringer","link":"https://sifted.eu/tag/lightbringer/"}],"image":{"base":"https://images.sifted.eu/cdn-cgi/image/width=800,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/16142744/Ola-Wassvik-lightbringer.png","full":"https://images.sifted.eu/cdn-cgi/image/width=800,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/16142744/Ola-Wassvik-lightbringer.png","fullWidth":800,"fullHeight":800,"header-image":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/16142744/Ola-Wassvik-lightbringer.png","header-image-labeled":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/16142744/Ola-Wassvik-lightbringer.png","list-image":"https://images.sifted.eu/cdn-cgi/image/width=240,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/16142744/Ola-Wassvik-lightbringer.png","caption":"","placeholder":false,"alt":""},"cardImage":{"caption":"","alt":"","base":"https://images.sifted.eu/cdn-cgi/image/width=800,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/16142744/Ola-Wassvik-lightbringer.png","fullWidth":800,"fullHeight":800,"placeholder":false},"longFormMobileImage":{"caption":"","base":"https://images.sifted.eu/cdn-cgi/image/width=800,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/16142744/Ola-Wassvik-lightbringer.png","fullWidth":800,"fullHeight":800,"placeholder":false}},{"id":140467,"url":"https://sifted.eu/articles/new-impact-investing-playbook-brnd/","slug":"new-impact-investing-playbook-brnd","title":"The new impact investing playbook: Why climate investors are moving beyond carbon accounting","excerpt":"European impact investors are broadening their lens beyond carbon emissions to understand how companies interact with climate, resources, nature and human health","comments":{"count":"0","enabled":false},"publishTimestamp":1789548531000,"author":{"name":"Isabelle Laurencin","url":"https://sifted.eu/author/isabelle-laurencin/"},"authors":[{"id":9279,"type":"wpuser","name":"Isabelle Laurencin","twitter":"","bio":"","niceN
80933ame":"isabelle-laurencin","image":false}],"isSponsored":true,"sponsorshipType":"Paid for and produced by","sponsorDetails":{"logo":"https://images.sifted.eu/cdn-cgi/image/format=auto/wp-content/uploads/2026/04/15133511/Dark-10-Horizontal-Tagline.png","logoWidth":1600,"logoHeight":461,"name":"ECBF","description":"The Specialist VC for a Regenerative Economy","url":"https://ecbf.vc/ecbf-impact-insights-2025-climate-impact-to-systemic-value/","urlLabel":"Learn more"},"isMemberContent":false,"isProContent":false,"isNonFree":false,"contentSubscriptionLevel":"is_free","articleFormat":"sponsored","layout":"portrait","sector":{"name":"Climate tech","slug":"climate-tech","url":"https://sifted.eu/sector/climate-tech/"},"category":{"name":"Paid for and produced by","slug":"paid-for-and-produced-by","url":"https://sifted.eu/categories/paid-for-and-produced-by/"},"taxonomies":{"categories":{"primary":null,"all":[{"id":41697,"name":"Paid for and produced by","slug":"paid-for-and-produced-by","url":"https://sifted.eu/categories/paid-for-and-produced-by/"},{"id":41677,"name":"Branded content","slug":"branded-content","url":"https://sifted.eu/categories/branded-content/"}]},"sectors":{"primary":{"id":589,"name":"Climate tech","slug":"climate-tech","url":"https://sifted.eu/sector/climate-tech/"},"all":[{"id":589,"name":"Climate tech","slug":"climate-tech","url":"https://sifted.eu/sector/climate-tech/"}]},"themes":{"primary":{"id":1713,"name":"Technology","slug":"technology","url":"https://sifted.eu/themes/technology/"},"all":[{"id":1713,"name":"Technology","slug":"technology","url":"https://sifted.eu/themes/technology/"}]},"topics":{"primary":{"id":1926,"name":"Technology","slug":"technology","url":"https://sifted.eu/topic/technology/"},"all":[{"id":1926,"name":"Technology","slug":"technology","url":"https://sifted.eu/topic/technology/"}]},"practices":{"primary":{"id":314,"name":"Tech","slug":"tech","url":"https://sifted.eu/practice/tech/"},"all":[{"id":314,"name":"Tech","slug":"tech","url":"https://sifted.eu/practice/tech/"}]},"countries":{"primary":null,"all":[]},"tags":{"primary":null,"all":[{"id":43144,"name":"ECBF","slug":"ecbf","url":"https://sifted.eu/tag/ecbf/"}]}},"tagList":[{"name":"Climate tech","link":"https://sifted.eu/sector/climate-tech/"},{"name":"ECBF","link":"https://sifted.eu/tag/ecbf/"}],"image":{"base":"https://images.sifted.eu/cdn-cgi/image/width=800,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/15130501/1740650624523.jpeg","full":"https://images.sifted.eu/cdn-cgi/image/width=800,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/15130501/1740650624523.jpeg","fullWidth":800,"fullHeight":800,"header-image":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/15130501/1740650624523.jpeg","header-image-labeled":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/15130501/1740650624523.jpeg","list-image":"https://images.sifted.eu/cdn-cgi/image/width=240,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/15130501/1740650624523.jpeg","caption":"","placeholder":false,"alt":""},"cardImage":{"caption":"","alt":"","base":"https://images.sifted.eu/cdn-cgi/image/width=800,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/15130501/1740650624523.jpeg","fullWidth":800,"fullHeight":800,"placeholder":false},"longFormMobileImage":{"caption":"","base":"https://images.sifted.eu/cdn-cgi/image/width=800,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/15130501/1740650624523.jpeg","fullWidth":800,"fullHeight":800,"placeholder":false}},{"id":140279,"url":"https://sifted.eu/articles/ai-redefining-corporate-cyber-readiness-brnd/","slug":"ai-redefining-corporate-cyber-readiness-brnd","title":"How AI is redefining corporate cyber-readiness","excerpt":"Getting ready to fight AI cyber threats isn’t just about automating, it’s about human augmentation","comments":{"count":"0","enabled":false},"publishTimestamp":1789463022000,"author":{"name":"Tim Smith","url":"https://sifted.eu/author/tim-smith/"},"authors":[{"id":6490,"type":"wpuser","name":"Tim Smith","twitter":"timmpsmith","bio":"Tim Smith was news editor at Sifted. He covered deeptech and AI, and produced \u003ca href=\"https://podcast.sifted.eu/\"\u003e Startup Europe — The Sifted Podcast \u003c/a\u003e. Follow him on \u003ca href=\"https://twitter.com/timmpsmith\"\u003e X \u003c/a\u003e and \u003ca href=\"https://www.linkedin.com/in/tim-smith-317479a2/\"\u003e LinkedIn \u003c/a\u003e","niceN
80933ame":"tim-smith","image":false}],"isSponsored":true,"sponsorshipType":"Sponsored by","sponsorDetails":{"logo":"https://images.sifted.eu/cdn-cgi/image/format=auto/wp-content/uploads/2024/06/21161129/Logo_black-2.png","logoWidth":1200,"logoHeight":163,"name":"Endeavor Greece","description":"is the leading global community of, by, and for High-Impact Entrepreneurs","url":"https://www.endeavor.org.gr/","urlLabel":"Learn more"},"isMemberContent":false,"isProContent":false,"isNonFree":false,"contentSubscriptionLevel":"is_free","articleFormat":"sponsored","layout":"long_form","sector":{"name":"Artificial intelligence","slug":"artificial-intelligence","url":"https://sifted.eu/sector/artificial-intelligence/"},"category":{"name":"Sponsored by","slug":"sponsored-by","url":"https://sifted.eu/categories/sponsored-by/"},"taxonomies":{"categories":{"primary":null,"all":[{"id":41695,"name":"Sponsored by","slug":"sponsored-by","url":"https://sifted.eu/categories/sponsored-by/"},{"id":41677,"name":"Branded content","slug":"branded-content","url":"https://sifted.eu/categories/branded-content/"}]},"sectors":{"primary":{"id":290,"name":"Artificial intelligence","slug":"artificial-intelligence","url":"https://sifted.eu/sector/artificial-intelligence/"},"all":[{"id":290,"name":"Artificial intelligence","slug":"artificial-intelligence","url":"https://sifted.eu/sector/artificial-intelligence/"},{"id":327,"name":"Deeptech","slug":"deeptech","url":"https://sifted.eu/sector/deeptech/"}]},"themes":{"primary":{"id":1713,"name":"Technology","slug":"technology","url":"https://sifted.eu/themes/technology/"},"all":[{"id":1713,"name":"Technology","slug":"technology","url":"https://sifted.eu/themes/technology/"}]},"topics":{"primary":{"id":1926,"name":"Technology","slug":"technology","url":"https://sifted.eu/topic/technology/"},"all":[{"id":1926,"name":"Technology","slug":"technology","url":"https://sifted.eu/topic/technology/"}]},"practices":{"primary":{"id":314,"name":"Tech","slug":"tech","url":"https://sifted.eu/practice/tech/"},"all":[{"id":314,"name":"Tech","slug":"tech","url":"https://sifted.eu/practice/tech/"}]},"countries":{"primary":null,"all":[]},"tags":{"primary":null,"all":[{"id":43094,"name":"Endeavor Greece","slug":"endeavor-greece","url":"https://sifted.eu/tag/endeavor-greece/"},{"id":43096,"name":"Hack the Box","slug":"hack-the-box","url":"https://sifted.eu/tag/hack-the-box/"}]}},"tagList":[{"name":"Artificial intelligence","link":"https://sifted.eu/sector/artificial-intelligence/"},{"name":"Deeptech","link":"https://sifted.eu/sector/deeptech/"},{"name":"Endeavor Greece","link":"https://sifted.eu/tag/endeavor-greece/"},{"name":"Hack the Box","link":"https://sifted.eu/tag/hack-the-box/"}],"image":{"base":"https://images.sifted.eu/cdn-cgi/image/width=2048,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/11141427/v2-Article-Cover-How-AI-is-redefining-corporate-cyber-readiness-scaled.jpg","full":"https://images.sifted.eu/cdn-cgi/image/width=2048,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/11141427/v2-Article-Cover-How-AI-is-redefining-corporate-cyber-readiness-scaled.jpg","fullWidth":2048,"fullHeight":718,"header-image":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/11141427/v2-Article-Cover-How-AI-is-redefining-corporate-cyber-readiness-scaled.jpg","header-image-labeled":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/11141427/v2-Article-Cover-How-AI-is-redefining-corporate-cyber-readiness-scaled.jpg","list-image":"https://images.sifted.eu/cdn-cgi/image/width=240,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/11141427/v2-Article-Cover-How-AI-is-redefining-corporate-cyber-readiness-scaled.jpg","caption":"","placeholder":false,"alt":""},"cardImage":{"caption":"","alt":"","base":"https://images.sifted.eu/cdn-cgi/image/width=2048,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/11141427/v2-Article-Cover-How-AI-is-redefining-corporate-cyber-readiness-scaled.jpg","fullWidth":2048,"fullHeight":718,"placeholder":false},"longFormMobileImage":{"caption":"","base":"https://images.sifted.eu/cdn-cgi/image/width=2048,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/11141427/v2-Article-Cover-How-AI-is-redefining-corporate-cyber-readiness-scaled.jpg","fullWidth":2048,"fullHeight":718,"placeholder":false}}],"tabLabels":{"popular":"Popular","free":"Free to read","collaborations":"Collaborations"},"tabOrder":{"popular":1,"free":2,"collaborations":3},"ctaText":"Read more","ctaLink":"https://sifted.eu/latest","secondTabCta":{"text":"Read more","link":"https://sifted.eu/articles/free"},"thirdTabCta":{"text":"Read more","link":"https://sifted.eu/categories/branded-content"}},"dato":{"homepage":{"seo":{"description":"Sifted covers European tech, startups and venture capital with independent news, analysis, data and insights for founders, investors and operators.","title":"Sifted: European Tech News, Startups \u0026 Venture Capital","image":{"url":"https://www.datocms-assets.com/60124/1687337580-sifted-on-pink.png"}},"sectionsOrder":[{"text":"pro","id":"FOBVeRUMS12afkanVUbiQw"},{"text":"feedsAndPodcast","id":"fRo9FEG9TlWFol7w1l4_pQ"},{"text":"newsletters","id":"U7tsVVWCQa6UTTFHss0kcw"},{"text":"latest","id":"GVs2CqoAR62R7oTWb5p7sQ"},{"text":"siftedInsights","id":"HtdTMGaVSlmxHjr5jW6PAw"},{"text":"events","id":"B9KKAFXTQ16j3cTws_muFA"},{"text":"talks","id":"IzH86bkETOm_fFJDCY_4-Q"}],"popularArticles":[{"tabOrder":1,"tabName":"Popular","featuredArticle":[{"id":"MakCBcY3S4yrlDKXiU9ihA","title":"Anthropic Lovable ","articleId":"140710","articleSlug":""},{"id":"TxWv-mPrT6CFeYVDuwDDAA","title":"AI bubble","articleId":"140290","articleSlug":""},{"id":"Ntl94vh4TY6EatOljJdvzw","title":"Ick list","articleId":"140425","articleSlug":""},{"id":"elgOKo9BRH-wkD4uq9OfDQ","title":"Legora Jude Law","articleId":"140419","articleSlug":""},{"id":"a_HW4RxCRYKgGQ_KgGwA9w","title":"Recursive","articleId":"140609","articleSlug":""}
80933,{"id":"EOsnby_OQgK8ZWHk2xPUBQ","title":"11 AI operators","articleId":"140540","articleSlug":""}]}],"popularCta":{"url":"https://sifted.eu/latest","text":"Read more","id":"LmeJLLYySVq1gAb3geZObw"},"secondTab":{"id":"QpmXvp9VQKC3DDH4ewLCaQ","tabOrder":2,"tabName":"Free to read","tabCta":{"url":"https://sifted.eu/articles/free","text":"Read more","id":"K92Z7MYZT2eGqf5vEeuWDA"}},"thirdTab":{"id":"HNePRd8tR8W78oWd_9JX-A","tabOrder":3,"tabName":"Collaborations","tabCta":{"url":"https://sifted.eu/categories/branded-content","text":"Read more","id":"eDfRgWgWRgiyoYsxDMToZg"}},"events":{"id":"AAB3rx6CQsOmByevdjzcXA","mobileImage":{"id":"TEvMlop8SJijT73jqsT3kw","url":"https://www.datocms-assets.com/60124/1776346757-summit-mobile.png","alt":null,"title":null,"width":1440,"height":760,"size":1407086,"blurUpThumb":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAoHBwgHBgoICAgLCgoLDhgQFQ0YDikVHR0YHR8ZGCITIhUmHysjHR0oKSEWJDUlKC0vMjIyHiI4PTcwPCsxMi8BCgsLDg0OHA0QHDsoFig7Lzs7LzsvLy8vOzs7Ly81Ozs1LzsvLy8vOy8vLy8vLzsvLy8vNS8vLy8vLy8vLy8vL//AABEIAA0AGAMBIgACEQEDEQH/xAAZAAACAwEAAAAAAAAAAAAAAAAFBgEEBwD/xAAgEAABBAIBBQAAAAAAAAAAAAABAAIDEQQFEgYhMUJR/8QAFwEAAwEAAAAAAAAAAAAAAAAAAgMEAf/EABoRAAIDAQEAAAAAAAAAAAAAAAACAxExEgH/2gAMAwEAAhEDEQA/AMxMHDZNDuwtPNwHU8b9Uu7vGjizAWilage52JRJqkzxVK5EkvQLi4TJtm4DxalGen8WN+xdy+rlnKhqslaf/9k="},"desktopTabletImage":{"id":"YuobAijuQom_0OCDP3OJ5Q","url":"https://www.datocms-assets.com/60124/1776346757-summit-desktop.png","alt":null,"width":2440,"height":760,"blurUpThumb":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAoHBwgHBgoICAgLCgoLDh4QFw0NDhkVFhEYJR8qHRYlJR4dKCslJiItKRUWMDUmKC0vMjIyHSI4PTcwSCsxMi8BCgsLDg0OHBAQHDsoIhw7Ozs1Lzs7OzsvLzs7Ly8vOzs7Lzs7Ly8vOzsvOzsvOzsvLy87Oy8vLy87Ly8vLy8vL//AABEIAAgAGAMBIgACEQEDEQH/xAAYAAEAAwEAAAAAAAAAAAAAAAAABAUHAf/EACAQAAAFAwUAAAAAAAAAAAAAAAABAgQFERIxAwYUIWH/xAAWAQEBAQAAAAAAAAAAAAAAAAAEAwL/xAAYEQADAQEAAAAAAAAAAAAAAAAAAQIDEv/aAAwDAQACEQMRAD8AzlUY1VFlqEo7q5F1x2qdqWeAAqpQnaF0Q28E21YY117rkcABlpDs8Zco/9k="}},"eventsCta":{"id":"IeHTRif5SdqggkfoZpiJdg","text":"Get your tickets","url":"https://summit.sifted.eu/"},"header":{"title":"Sifted Summit","cta":{"url":"https://sifted.eu/tag/sifted-summit","text":"See Sifted Summit coverage","updatedAt":"2026-07-20T09:50:08+01:00","id":"cS66wOAcTWmdymL9EtVLgw"}},"descriptionTitle":"The annual gathering for Europe’s scaleup leaders","eventsDescription":"Sifted Summit is where Series A+ founders, operators and investors come together for honest conversations about what it really takes to scale — and leave clearer about the decisions that move companies from one stage of growth to the next.","podcastSectionHeader":{"id":"GN2NqxQ_Scq3yXziPcmJQQ","title":"Podcast","cta":{"text":"See all podcast episodes","url":"https://sifted.eu/categories/podcast "}},"talksSectionHeader":{"id":"I3RRNG2sSYSYteKdma2_dw","title":"Upcoming Talks","cta":{"text":"Explore more","url":"https://sifted.eu/talks"}},"latestEpisodes":[{"id":"I7zCK-eoQOWEVBGWsqEeNA","name":"What the Anthropic shutdown means for Europe","podcastLength":"15:47","podcastItem":{"id":"BhfK_F1lRguRTZhW4crZCA","links":[{"id":"fw3L1uDMTwerEAiTzbBgDw","url":"https://podcasts.apple.com/gb/podcast/what-the-anthropic-shutdown-means-for-europe/id1592525862?i=1000772960763","icon":{"url":"https://www.datocms-assets.com/60124/1776344514-applepodcasts-logo-svg.svg","alt":null,"title":null,"blurUpThumb":null}},{"id":"b59A6j-3Qn-AdJE7oiY9jA","url":"https://open.spotify.com/episode/1OhJW71yYA89unX9XR4u3J?si=6CQhYjmrS5S6N4WNawKctg","icon":{"url":"https://www.datocms-assets.com/60124/1776344533-spotify-logo.svg","alt":null,"title":null,"blurUpThumb":null}}]}},{"id":"UsbiPdkCTdm-c36MB7sXAw","name":"Newton Venture Program CEO Anu Adebajo on Europe’s ‘zombie funds’","podcastLength":"44:51","podcastItem":{"id":"W5g-l0BcQLuj7yJsU1W_bw","links":[{"id":"IdeM0xjkQcuL1VyOGSgT7w","url":"https://podcasts.apple.com/gb/podcast/newton-venture-program-ceo-anu-adebajo-on-europes-zombie/id1592525862?i=1000772227073","icon":{"url":"https://www.datocms-assets.com/60124/1776344514-applepodcasts-logo-svg.svg","alt":null,"title":null,"blurUpThumb":null}},{"id":"TgLTD7UQQ_eWb9pwlsCE-Q","url":"https://open.spotify.com/episode/0LKIayura2LZP21w3gXSXO?si=QOUJyHbFQMCKPr9xRNsNnQ","icon":{"url":"https://www.datocms-assets.com/60124/1776344533-spotify-logo.svg","alt":null,"title":null,"blurUpThumb":null}},{"id":"DbzXsx2kRrS3ew3THYtRbQ","url":"https://www.youtube.com/watch?v=wsyx0gzD7TU","icon":{"url":"https://www.datocms-assets.com/60124/1776344548-youtube-logo.svg","alt":null,"title":null,"blurUpThumb":null}}]}}],"topEpisodes":[{"id":"WB1V4z86QemMK2zOycCZxQ","name":"Judith Dada, general partner at Visionaries Club: 'I'm deeply troubled by what lies ahead for Europe'","podcastLength":"53:32","podcastItem":{"i
80933d":"PnZKaRBRQxSxCbm_sYdOlw","links":[{"id":"fSJjpydtQBiAQAojzZP96Q","url":"https://podcasts.apple.com/gb/podcast/judith-dada-general-partner-at-visionaries-fund-im/id1592525862?i=1000750506499","icon":{"url":"https://www.datocms-assets.com/60124/1776344514-applepodcasts-logo-svg.svg","alt":null,"title":null,"blurUpThumb":null}},{"id":"IjlkyMOGSeCTmZTkSpojfA","url":"https://open.spotify.com/episode/4wTjaJfyOJWuw04GpCNSp0?si=5v4RGH79Qd-Wm5Gu-8KYMw","icon":{"url":"https://www.datocms-assets.com/60124/1776344533-spotify-logo.svg","alt":null,"title":null,"blurUpThumb":null}}]}},{"id":"V_zQ-NtsRCSrdnNiP06Qxg","name":"James Wise on why the Sovereign AI Unit criticism is wrong – and the one company he wishes he’d backed","podcastLength":"39:27","podcastItem":{"id":"QZ0JIkcvSXSKvOcpkJTnvQ","links":[{"id":"TqV30i_QSoqzbNf0v801Rw","url":"https://podcasts.apple.com/gb/podcast/james-wise-on-why-the-sovereign-ai-unit-criticism-is/id1592525862?i=1000767985683","icon":{"url":"https://www.datocms-assets.com/60124/1776344514-applepodcasts-logo-svg.svg","alt":null,"title":null,"blurUpThumb":null}},{"id":"Cjum47UWQmWZWQRuPb19Cg","url":"https://open.spotify.com/episode/17o78DKIRirs2sPnHD63KE?si=7b7b382f6259457b","icon":{"url":"https://www.datocms-assets.com/60124/1776344533-spotify-logo.svg","alt":null,"title":null,"blurUpThumb":null}}]}}],"podcastCallout":{"id":"KIb98-dRQne2Eqzk8-OqrA","title":"Be the first to see exclusive leaderboard data","description":"The Nordics' top 100 is live. Unlock the full dataset behind the ranking – funding and revenue data, plus in-depth reporting and market intelligence showing where momentum is building. Get complete access to Sifted Pro from as little as £4.79/day.\n","buttonLabel":"Explore Pro","buttonCta":"https://sifted.eu/sifted-pro","accent":"pro","buttonVariant":"pro","createdAt":"2026-04-16T14:42:29+01:00","updatedAt":"2026-09-04T10:36:00+01:00"},"heroArticle":{"id":140887,"url":"https://sifted.eu/articles/exclusive-revolut-customers-fresh-hack/","slug":"exclusive-revolut-customers-fresh-hack","title":"Exclusive: Revolut customers hit by fresh security breach","excerpt":"The broker the fintech uses to trade US stocks suffered a security incident, emails seen by Sifted show","comments":{"count":"0","enabled":false},"publishTimestamp":1790249139000,"author":{"name":"Maya Dharampal-Hornby","url":"https://sifted.eu/author/maya-dharampal-hornby/"},"authors":[{"id":9171,"type":"wpuser","name":"Maya Dharampal-Hornby","twitter":"","bio":"Maya Dharampal-Hornby is a reporter, covering UK tech for Sifted, based in London. She's also the producer of \u003ca href=\"https://podcast.sifted.eu/\"\u003e Startup Europe — The Sifted Podcast \u003c/a\u003e.","niceN
80933ame":"maya-dharampal-hornby","image":false}],"isSponsored":false,"sponsorshipType":null,"isMemberContent":false,"isProContent":true,"isNonFree":true,"contentSubscriptionLevel":"is_pro","articleFormat":"standard","layout":"short_form","sector":{"name":"Fintech","slug":"fintech","url":"https://sifted.eu/sector/fintech/"},"category":{"name":"Exclusive","slug":"exclusive","url":"https://sifted.eu/categories/exclusive/"},"taxonomies":{"categories":{"primary":null,"all":[{"id":41679,"name":"Exclusive","slug":"exclusive","url":"https://sifted.eu/categories/exclusive/"},{"id":4497,"name":"News","slug":"news","url":"https://sifted.eu/categories/news/"}]},"sectors":{"primary":{"id":11535,"name":"Fintech","slug":"fintech","url":"https://sifted.eu/sector/fintech/"},"all":[{"id":11535,"name":"Fintech","slug":"fintech","url":"https://sifted.eu/sector/fintech/"}]},"themes":{"primary":null,"all":[]},"topics":{"primary":null,"all":[]},"practices":{"primary":null,"all":[]},"countries":{"primary":null,"all":[]},"tags":{"primary":null,"all":[{"id":40969,"name":"Revolut","slug":"revolut","url":"https://sifted.eu/tag/revolut/"}]}},"tagList":[{"name":"Fintech","link":"https://sifted.eu/sector/fintech/"},{"name":"Revolut","link":"https://sifted.eu/tag/revolut/"}],"image":{"base":"https://images.sifted.eu/cdn-cgi/image/width=2048,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/14213130/revolut-hack-scaled.png","full":"https://images.sifted.eu/cdn-cgi/image/width=2048,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/14213130/revolut-hack-scaled.png","fullWidth":2048,"fullHeight":672,"header-image":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/14213130/revolut-hack-scaled.png","header-image-labeled":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/14213130/revolut-hack-scaled.png","list-image":"https://images.sifted.eu/cdn-cgi/image/width=240,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/14213130/revolut-hack-scaled.png","caption":"Passports and driving licences, birth dates, addresses and more were exposed in the breach. ","placeholder":false,"alt":"revolut hack"},"cardImage":{"caption":"Passports and driving licences, birth dates, addresses and more were exposed in the breach. ","alt":"revolut hack","base":"https://images.sifted.eu/cdn-cgi/image/width=2048,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/14213130/revolut-hack-scaled.png","fullWidth":2048,"fullHeight":672,"placeholder":false},"longFormMobileImage":{"caption":"Passports and driving licences, birth dates, addresses and more were exposed in the breach. ","base":"https://images.sifted.eu/cdn-cgi/image/width=2048,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/14213130/revolut-hack-scaled.png","fullWidth":2048,"fullHeight":672,"placeholder":false}},"featuredHeroArticles":[{"id":140872,"url":"https://sifted.eu/articles/new-york-podcast/","slug":"new-york-podcast","title":"Is New York warming to European tech?","excerpt":"Anne Sraders joins host Freya Pratty on this week's Sifted podcast","comments":{"count":"0","enabled":false},"publishTimestamp":1790255114000,"author":{"name":"Anne Sraders","url":"https://sifted.eu/author/anne-sraders/"},"authors":[{"id":9088,"type":"wpuser","name":"Anne Sraders","twitter":"https://x.com/AnneSraders","bio":"Anne Sraders is a senior reporter at Sifted, based in Berlin. She covers the VC industry and deeptech startups. She also writes Sifted's weekly VC newsletter \u003ca href=\"https://sifted.eu/newsletters\"\u003e Up Round\u003c/a\u003e. Follow her on \u003ca href=\"https://x.com/AnneSraders\"\u003e X\u003c/a\u003e and \u003ca href=\"https://www.linkedin.com/in/anne-sraders-54222b95//\"\u003e LinkedIn\u003c/a\u003e","niceName":"anne-sraders","image":false},{"id":8525,"type":"wpuser","name":"Freya Pratty","twitter":"FPratty","bio":"Freya Pratty is Sifted's associate editor. She covers UK tech and leads Sifted's investigations. Follow her on \u003ca href=\"https://twitter.com/FPratty\"\u003e X \u003c/a\u003e, \u003ca href=\"https://www.linkedin.com/in/freyapratty111/\"\u003e LinkedIn \u003c/a\u003e and \u003ca href=\"https://bsky.app/profile/freyapratty.bsky.social\"\u003e Bluesky\u003c/a\u003e","niceN
80933ame":"freya-williams","image":false}],"isSponsored":false,"sponsorshipType":null,"isMemberContent":false,"isProContent":false,"isNonFree":false,"contentSubscriptionLevel":"is_free","articleFormat":"standard","layout":"short_form","sector":{"name":"Venture capital","slug":"venture-capital","url":"https://sifted.eu/sector/venture-capital/"},"category":{"name":"Podcast","slug":"podcast","url":"https://sifted.eu/categories/podcast/"},"taxonomies":{"categories":{"primary":null,"all":[{"id":40118,"name":"Podcast","slug":"podcast","url":"https://sifted.eu/categories/podcast/"}]},"sectors":{"primary":{"id":11532,"name":"Venture capital","slug":"venture-capital","url":"https://sifted.eu/sector/venture-capital/"},"all":[{"id":11532,"name":"Venture capital","slug":"venture-capital","url":"https://sifted.eu/sector/venture-capital/"}]},"themes":{"primary":null,"all":[]},"topics":{"primary":{"id":1928,"name":"Entrepreneurship","slug":"entrepreneurship","url":"https://sifted.eu/topic/entrepreneurship/"},"all":[{"id":1928,"name":"Entrepreneurship","slug":"entrepreneurship","url":"https://sifted.eu/topic/entrepreneurship/"},{"id":1929,"name":"Innovation","slug":"innovation","url":"https://sifted.eu/topic/innovation/"},{"id":1927,"name":"Startups","slug":"startups","url":"https://sifted.eu/topic/startups/"},{"id":1926,"name":"Technology","slug":"technology","url":"https://sifted.eu/topic/technology/"}]},"practices":{"primary":null,"all":[]},"countries":{"primary":null,"all":[]},"tags":{"primary":null,"all":[{"id":43145,"name":"Podcast","slug":"podcast","url":"https://sifted.eu/tag/podcast/"},{"id":43159,"name":"Venture capital","slug":"venture-capital","url":"https://sifted.eu/tag/venture-capital/"}]}},"tagList":[{"name":"Venture capital","link":"https://sifted.eu/sector/venture-capital/"},{"name":"Podcast","link":"https://sifted.eu/tag/podcast/"},{"name":"Venture capital","link":"https://sifted.eu/tag/venture-capital/"}],"image":{"base":"https://images.sifted.eu/cdn-cgi/image/width=1280,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23225328/Freya-Anne-image.png","full":"https://images.sifted.eu/cdn-cgi/image/width=1280,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23225328/Freya-Anne-image.png","fullWidth":1280,"fullHeight":720,"header-image":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23225328/Freya-Anne-image.png","header-image-labeled":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23225328/Freya-Anne-image.png","list-image":"https://images.sifted.eu/cdn-cgi/image/width=240,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23225328/Freya-Anne-image.png","caption":"","placeholder":false,"alt":""},"cardImage":{"fullWidth":1080,"fullHeight":1080,"caption":"","base":"https://images.sifted.eu/cdn-cgi/image/width=1080,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23224230/Freya-Anne-image-square.png","alt":"","placeholder":false},"longFormMobileImage":{"caption":"","base":"https://images.sifted.eu/cdn-cgi/image/width=1280,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23225328/Freya-Anne-image.png","fullWidth":1280,"fullHeight":720,"placeholder":false}},{"id":140832,"url":"https://sifted.eu/articles/northern-gritstone-ceo-exiting-to-us-acquirers-isnt-a-failure/","slug":"northern-gritstone-ceo-exiting-to-us-acquirers-isnt-a-failure","title":"Northern Gritstone CEO: Exiting to US acquirers isn’t a failure","excerpt":"Duncan Johnson talks scaling the north of England tech ecosystem, Gritstone’s new San Francisco office and why portfolio exits are coming","comments":{"count":"0","enabled":false},"publishTimestamp":1790226021000,"author":{"name":"Tom Nugent","url":"https://sifted.eu/author/tomnugentsifted-eu/"},"authors":[{"id":8850,"type":"wpuser","name":"Tom Nugent","twitter":"TJNugent92","bio":"Tom Nugent is Sifted’s managing editor. He covers robotics, chips and university spinouts. Follow him on \u003ca href=\"https://twitter.com/TJNugent92\"\u003e X \u003c/a\u003e and \u003ca href=\"https://www.linkedin.com/in/tnugent92/\"\u003e LinkedIn","niceName":"tomnugentsifted-eu","image":false}],"isSponsored":false,"sponsorshipType":null,"isMemberContent":false,"isProContent":true,"isNonFree":true,"contentSubscriptionLevel":"is_pro","articleFormat":"standard","layout":"portrait","sector":{"name":"Venture capital","slug":"venture-capital","url":"https://sifted.eu/sector/venture-capital/"},"category":{"name":"Interview","slug":"interview","url":"https://sifted.eu/categories/interview/"},"taxonomies":{"categories":{"primary":null,"all":[{"id":4498,"name":"Interview","slug":"interview","url":"https://sifted.eu/categories/interview/"},{"id":41675,"name":"Features","slug":"features","url":"https://sifted.eu/categories/features/"}]},"sectors":{"primary":{"id":11532,"name":"Venture capital","slug":"venture-capital","url":"https://sifted.eu/sector/venture-capital/"},"all":[{"id":327,"name":"Deeptech","slug":"deeptech","url":"https://sifted.eu/sector/deeptech/"},{"id":346,"name":"University spinouts","slug":"university-spinouts","url":"https://sifted.eu/sector/university-spinouts/"},{"id":11529,"name":"Public and academic","slug":"public-and-academic","url":"https://sifted.eu/sector/public-and-academic/"},{"id":11532,"name":"Venture capital","slug":"venture-capital","url":"https://sifted.eu/sector/venture-capital/"}]},"themes":{"primary":null,"all":[]},"topics":{"primary":null,"all":[]},"practices":{"primary":null,"all":[]},"countries":{"primary":{"id":70,"name":"United Kingdom","slug":"united-kingdom","url":"https://sifted.eu/countries/united-kingdom/"},"all":[{"id":70,"name":"United Kingdom","slug":"united-kingdom","url":"https://sifted.eu/countries/united-kingdom/"}]},"tags":{"primary":null,"all":[{"id":43539,"name":"Duncan Johnson","slug":"duncan-johnson","url":"https://sifted.eu/tag/duncan-johnson/"},{"id":42480,"name":"Northern Gritstone","slug":"northern-gritstone","url":"https://sifted.eu/tag/northern-gritstone/"},{"id":43540,"name":"UK Scaleup Fund","slug":"uk-scaleup-fund","url":"https://sifted.eu/tag/uk-scaleup-fund/"}]}},"tagList":[{"name":"Deeptech","link":"https://sifted.eu/sector/deeptech/"},{"name":"University spinouts","link":"https://sifted.eu/sector/university-spinouts/"},{"name":"Public and academic","link":"https://sifted.eu/sector/public-and-academic/"},{"name":"Venture capital","link":"https://sifted.eu/sector/venture-capital/"}],"image":{"base":"https://images.sifted.eu/cdn-cgi/image/width=1000,qual
80933ity=75,fit=cover,format=auto/wp-content/uploads/2026/09/23154022/1000-Duncan-3-1.jpg","full":"https://images.sifted.eu/cdn-cgi/image/width=1000,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23154022/1000-Duncan-3-1.jpg","fullWidth":1000,"fullHeight":667,"header-image":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23154022/1000-Duncan-3-1.jpg","header-image-labeled":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23154022/1000-Duncan-3-1.jpg","list-image":"https://images.sifted.eu/cdn-cgi/image/width=240,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23154022/1000-Duncan-3-1.jpg","caption":"","placeholder":false,"alt":"Duncan Johnson, CEO of Northern Gritstone"},"cardImage":{"caption":"","alt":"Duncan Johnson, CEO of Northern Gritstone","base":"https://images.sifted.eu/cdn-cgi/image/width=1000,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23154022/1000-Duncan-3-1.jpg","fullWidth":1000,"fullHeight":667,"placeholder":false},"longFormMobileImage":{"caption":"","base":"https://images.sifted.eu/cdn-cgi/image/width=1000,quality=75,fit=cover,format=auto/wp-content/uploads/2026/09/23154022/1000-Duncan-3-1.jpg","fullWidth":1000,"fullHeight":667,"placeholder":false}}],"latestArticlesCategoriesFilter":[{"id":"cFE71MJ6SFWjU9jr78s1cg","text":"Sponsored by"},{"id":"MkVQ7LN4S5S9lkJG2kx2lw","text":"In partnership with"},{"id":"Mfti4ibhS0O-i26txSPCPA","text":"Paid for and produced by"},{"id":"Xfhx1VXgQPiYflJG0MLzCQ","text":"Sifted Talks"}],"callout":{"id":"OWz57XxgSaaz4Aq_G-f1Tw","title":"Meet DACH \u0026 CEE’s top 100","description":"Explore the 100 fastest-growing startups scaling across DACH and Central \u0026 Eastern Europe.","buttonLabel":"See the ranking","buttonCta":"https://sifted.eu/intelligence/reports/sifted-100-dach-cee-2026","accent":"sifted","buttonVariant":"sifted","createdAt":"2026-04-16T14:42:28+01:00","updatedAt":"2026-09-09T09:43:25+01:00"},"proSectionTitle":"Sifted Pro","proSectionCtaText":"Find out more","proSectionCtaLink":"/sifted-pro","proCards":[{"headline":"Intelligence Briefings","description":"Access investment grade research on Europe’s most exciting tech sectors and high-growth startups.","cardImage":{"url":"https://www.datocms-assets.com/60124/1776343929-briefings-1.png","alt":null,"width":480,"height":240,"blurUpThumb":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAMCAYAAAB4MH11AAACDUlEQVR42k2T227cMAxERUq+bNC3/v/39bEJ2mZ3bUvsGclO1sBAlkzOcEi5xB5pB4/HM93vj/QAz21PrUVyL2me57Qut7SsYPGUc+pPrYk8YQM7+4NT5RgxGXgy81QiOA77QhOadQEliKi2xH6Qmtht7K+zWkecnsEXHe7tEhAyQQ5sJFEQBZxVDdhJrPXbwYBEFGum2NSddgck3IDXmoHn4/C87+bHoTrjdIIngznlKKWbcOVAnLetryZBqg5pe45G9RWxkIOfCoYiI1IgLyRlJSmlViSikd4qsRWBOJ2oCCe2SEjv6kp3bNSDZcWVl176Wb0EQJj6WIqImyi1rdOUqC4FOQ1SxRtAwDJnEzETxBl+x4FdM7DRJi8ETgjMz2dTRek4usB2jT/CK/3tc1QbKYrVWa0wv4X2rWBGpACXwA1IfSFgJQnEsu9NZwyrUmN9Zm+Z3mrwiKS9D6YJjhuaTo+Rhy9mSl4hZ7VcCJQtCS0krNyGG1WfApqBuwZWCkFHaAYbyXewyyEkEzOn6rxBfOD2GGta1CoJfAIJtPiaB1Ot9KI22lEfCP7h/R3B33z/GMTjug7kdN4yteUHLt7OVhUJ/DoFVvLe+Mi1jVneAa2IT/Yi/xg/0De53oeA9TvPYA/F8uU9nY8Enif+QSAwk5h0pXGku/SX9/36IV8fs1cn+itb/82vcz3/AW4k8Mu9XQ3WAAAAAElFTkSuQmCC"},"ctaButtonText":"Explore sector research","ctaButtonLink":"https://sifted.eu/pro/briefings"},{"headline":"Deals Tracker","description":"Track Europe’s dealmaking in real-time to identify investment opportunities and potential clients.","cardImage":{"url":"https://www.datocms-assets.com/60124/1776343990-deals.png","alt":null,"width":480,"height":240,"blurUpThumb":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAMCAMAAABP7o1HAAAC4lBMVEWvq/Svq/WwrPSwrPexrfmxrfqyrvqyrvuzrvWzr/uzr/y0sPO0sPS0sP21sfO1sfa2svi2svm2sv63s/W3s/q3s/u3s/+4tPq4tPu4tP+5tfq5tfy6tve7t/28uP+9ufK9ufO9uf29uf++uvK+uvW+uvq/u/jAvPPAvPfAvPjAvPnAvP/BvfjBvfnBvfnBvfrBvf3Bvf/Dv/XDv/vEwPzEwP/GwvjGwv7Gwv/Hw/7JxfHJxfHJxfLKxvTKxvvLx/LLx/XLx/bLx/fLx/fMyPfMyPjNyPjNyfjNyf3OyvTOyvnOyv/QzPvRzfbSzvzTz/3U0O/U0PnV0e/V0fHW0vLW0vTW0vXX0vDX0/TX0/XX0/XX0/vY1PbY1PbY1PbY1PfY1PfZ1PzZ1fLa1vfc2PTc2Pne2vrf2u/f2+7f2/Df2/ff2/vg3O/g3PHg3PLg3PPh3fPh3fPh3fTi3vTi3vXi3vnj3+7j3/Hj3/Xj3/rk4O7k4O/k4PXl4e7l4fDm4e/m4u7m4u7m4vDm4vPm4vfn4+/n4/Dn4/Hn4/Lo5O7o5O/o5O/o5PLo5PPo5PTo5Pnp5fDp5fDp5fHp5fLp5fPp5fTp5fXp5fnq5e/q5u7q5u/q5u/q5u/q5vDq5vDq5vDq5vDq5vHq5vLq5vLq5vTq5vXq5vbr5vDr5+/r5+/r5/Dr5/Dr5/Hr5/Hr5/Lr5/Lr5/Pr5/Tr5/Xr5/js5/Hs5/Hs6PDs6PDs6PHs6PHs6PLs6PPs6PPs6PPs6PTs6PTs6PTs6Pnt6PLt6fLt6fLt6fPt6fPt6fPt6fTt6fTt6fTt6fXt6fXt6fbu6fDu6fLu6fPu6vHu6vHu6vLu6vTu6vTu6vTu6vXv6vfv6/Tv6/Xv6/jw7PLw7PPw7PTw7PTw7PXx7Pfx7fPx
809337fXx7fny7vXy7vby7vby7vfy7vrz7vnz7/Xz7/Xz7/bz7/j08Pj08Pr18ff18fn28vf28vj38/gOfrPgAAAA9nRSTlMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIyMAACMjACMiIiMjACIhIiIAACAgHgAeHQAcLzAwMBwuLy8uLy8vLS4aLCsZKiooJx0nHB0cGRkbGxgZJhYZGhkaJRgVFhMSBAMDExECAgAAAAEAAAARAAAAEAAAAAAAAAABAAAAAAAAAAkACAAAAAAABwAAAAAAAAoUFBUWAAYHFRUABwAAABMTJAokBxYAEwAAAAARFBUjBSIWAAgRAAgOAAATIAAPFwkKDQkLABEKHRUhBAAZGwAACgAADxUDEAoAHxQAFAIOAAAADB0CAAwACgsbCRmjN+qLAAAA8ElEQVR42g2OP0/DMBDF784Xp22atgIJECA2xMTAt+D7jzDCQIegJm2MY9+d8fae9P78+C2FJcRkSEgOFQyAfMOOW25mcl7RITNoUQDPVPW1Bt/PIlVWX0TAsUdHfJPWIiEjomMHZgY1QrVyJ3OyOVtd8lRMpbBrCRt+n76Gy0YKcT0UMC3k1qtuxa/p5edzCIhNj4dTiRlg+/TY1SPnaPsxYt9fcSmX07nA/UO3arnye94j7bqNL5OhYCUoGlk162h/FUW2JR5/k4FcnjctW04xDhOe590E0zEt5iTy7Z6XnEIYkzTjdDhFiZpZ8ZuWf+gzgmshlcapAAAAAElFTkSuQmCC"},"ctaButtonText":"Track the latest deals","ctaButtonLink":"https://sifted.eu/deals-tracker"},{"headline":"Investor rankings","description":"Benchmark investor activity and identify active investors for relationship-building.","cardImage":{"url":"https://www.datocms-assets.com/60124/1776344024-ranmkings.png","alt":null,"width":480,"height":240,"blurUpThumb":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAMCAMAAABP7o1HAAACf1BMVEWxrfCxrfGyrvKyrvOzr/Czr/Ozr/S0sPO1sfG1sfO3s/C3s/G3s/K3s/O3s/S4tPO4tPS5tPG5tfO6tvO6tva7t/K8uPS8uPa+uvS+uvm/u/a/u/nBvfHBvfLBvfPCvffCvvPCvvTCvvvCvvzDv/LDv/nDv/zEv/PFwfPFwfTFwfnFwf/Hw/zIxPXIxPbIxPvIxP/Jxf3Kxv/Lxv/MyPjNyfPNyfTNyf/OyvPOyvTOyvXPy/PPy/rPy//QzPvRzfTSzfzSzvTTz/3U0PXU0P7V0fbX0v/X0/jY1PnY1P/a1fTa1vPa1vTa1vXa1vbb1/Tb1/vc2PTc2PXe2vbe2v3f2/Xf2/7f2//h3Pbh3fbh3fji3vji3vni3vvi3v/j3/Tj3/Xj3/bj3/jj3/vj3/zj3//k3/bk4PPk4Pbk4Pfk4Pnk4Prk4Pvl4fTl4fbl4fvl4fzm4fzm4vbm4vjm4vrm4vvn4vfn4/Xn4/nn4/vn4/zn4/3o5PXo5Pfo5Prp5fPp5fTp5fXp5frp5fvp5fzp5f7q5vTq5vbq5vjq5vrq5v7q5v/r5vjr5/Tr5/Xr5/br5/fr5/jr5/nr5/vr5//s5/rs6PXs6Pfs6Pjs6Pns6Prs6P7s6P/t6Pjt6fTt6fft6fnt6fzt6f/u6vXu6vbu6vju6vvu6v3u6v/v6vjv6/nv6/rv6//w6/vw7Pbw7P3w7P7w7P/x7Pnx7fjx7frx7fzx7f7x7f/y7vny7v/z7/jz7/vz7/3z7/707//08Pz08P308P/18fv18f/28vz28v328v/38/v38//49P/59f759f/69v/79v/79/779//8+P/9+f/++v//+////P8tiwk+AAAA1XRSTlMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGUGwwAAAA4UlEQVR42hXPWU5DMQyFYTtxpobhVoInYBNsgv3vASHUQWpvxVUSJzHu86dfR4c+J5eNG8+JMEQEiEKkQJSbRfNnnMAEmSqBbMjO0MOYbUs8KyBoAhLJaWLovZaWeu8DVWSItZ5sJEtf2+/xp/UGYjURBQz7ZUn0Md4ux+9rKxCsAnjKry9LdJQmOZ8PK6LHdJfnXc7JGjKgY3kPiNFrAs7F4JGQROaYW6nsB0eFGtA6bJZG72U9nZjJeKcgYffEKRriUW/H86ob0SHqc+eu7TF5GlzKebtVMQ3DfTwxHrD5f1E/cwRyA1rkAAAAAElFTkSuQmCC"},"ctaButtonText":"Find active investors","ctaButtonLink":"https://sifted.eu/rankings"},{"headline":"Market maps","description":" Understand sector landscapes, key players and competitive dynamics to uncover market opportunities \u0026 risks.","cardImage":{"url":"https://www.datocms-assets.com/60124/1776344084-maps.png","alt":null,"width":480,"height":240,"blurUpThumb":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAMCAMAAABP7o1HAAACN1BMVEXW0unX0+nX0+rY1OrZ1erZ1eva1uva1uzb1uvb1+zc2Ovc2O3d2ezd2e3e2e3e2uze2u3e2u7f2+zf2+3f2+7g3Ovg3Ozg3O/h3evh3ezh3e3h3e7i3fDi3uvi3vDj3+rj3+vj3+3j3+7j3+/j3/Dj3/Hk3+nk3+rk4Ojk4Onk4Ovk4O3k4PHl4erl4evl4ezl4e3l4e/l4fDl4fHl4fLm4enm4unm4urm4vDm4vPn4+zn4+/n4/Ho5Ovo5Ozo5O7o5PPo5PTp5PTp5evp5e/p5fTq5vLq5vPq5vXr5+7r5/Pr5/Ts6O3s6O7s6O/s6PDs6PHs6PLs6PXt6e3t6fTt6fbu6ffu6vHu6vbu6vfv6/Hv6/Tv6/bv6/fw7PXw7Pfx7e/x7fDx7fHx7fPx7fTx7fjy7u/y7vDy7vfz7/Tz7/jz7/nz7/r08Pf08Pn08Pr18Pr18fP18fj18fr28fL28vL28vP28vT28vX28vf28vr38/L38/r49Pb49Pr49Pv49P359P359fr59fv59f369vT69vX69vb69vr69v379/X79/b79/j79/n79/v79/z8+PX8+Pz8+P/9+PT9+fj9+fz9+f39+f/++vj++vz++v3++v//+/b/+/f/+/j/+/r/+/v/+/z/+/3/+/7/+////Pf//Pz//P3//P7//P///fb//fr//f3//f7//f///vf//vj//vn//v3//v7//v////j///n///r///v///z///3///7////QMF8fAAAAvXRSTlMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC+3qL3AAAAyUlEQVR42jXN3W7CMAwFYLukHbsoaBrS3v8p9kqgaRK0JPFvvBR1vvTn45O+AyLfrj+/93WB+Xi+XD6+PieEBBgADgiACHTEfSBhIKioiBZ/rYYRpxcAyOrKZs64B4Z/sEKuZdXRbAfADpTZVOrDvNVZhHWr2BKS87PmwuwHFm+mTO8dgKuJcllYmg/Lid0sb0BC1GqtxNYOQuz9Sh5nSKKmpUl/ZBGDapn5OY33twSqHmbUqwOakzdVW06QFCDcQzz6NGdXa24Sf48LrfT1SbRyAAAAAElFTkSuQmCC"},"ctaButtonText":"Browse market maps","ctaButtonLink":"https://sifted.eu/categories/market-map"}],"newsletterSectionHeading":"Newsletters","newsletterSubSectionHeading":"Sign up to Sifted Newsletters","newsletterCtaText":"Explore more newsletters","newsletterCtaUrl":"/newsletters","newslettersProSubscribeUrl":"/subscribe","siftedInsightsTitle":"Intelligence","featureCards":[{"id":"JT9NkhvFTqeXXIG7iIb7nQ","variant":"sifted","headline":"The rise of AI agents","description":"The age of agentic work has arrived. How should companies navigate it?","date":"2026-06-25","cardImage":{"url":"https://www.datocms-assets.com/60124/1781881381-the-rise-of-ai-agents.jpg","alt":null,"width":595,"height":841,"blurUpThumb":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAoHBwgHBgoICAgLDQoVDhgVDg0NGhsaDQ0VFx8ZGBYVFiEmHysjGh0oHRUiJDUlKC0vMjIyGSI4PTcwPCsxMi8BCgsLDg0OFxAQHC8cFhwvLy8vLy81Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL//AABEIABkAEQMBIgACEQEDEQH/xAAYAAACAwAAAAAAAAAAAAAAAAAEBQABBv/EACQQAAEDAgQHAAAAAAAAAAAAAAACBAUBAxJBUWERFCElNDVS/8QAGAEAAwEBAAAAAAAAAAAAAAAAAQQFAgD/xAAZEQACAwEAAAAAAAAAAAAAAAAAAQIREiH/2gAMAwEAAhEDEQA/AEsG2RZYjKSX2ZVKUyA4q9bWyGL263TDqxaFZSVCLbswWNWhYXzDXYsG0d0OhHjdLLqoMkndi7FqpRWRlonwQ5x65RO26HHFWKuNn6IBEM7YcI//2Q=="},"ctaButtonText":"Read the report","ctaButtonLink":"https://sifted.eu/intelligence/reports/the-rise-of-ai-agents-2026"},{"id":"Z0DppyntRTuZXCMcoeSefA","variant":"pro","headline":"Advanced materials","description":"Will AI unearth the next breakthrough material?","date":"2026-07-06","cardImage":{"url":"https://www.datocms-assets.com/60124/1721888609-advanced-materials-2024.png","alt":null,"width":870,"height":1305,"blurUpThumb":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAoHBwgHBgoICAgLCgoLDhgZFRUNFRsVDg4NFxYeGBYfIhUaHyslHR0oHRUiJDUlKC0vMjIyGSI4PTcwPCsxMi8BCgsLDg0OFQ0OHC8cFhwvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL//AABEIABgAEAMBIgACE
80933QEDEQH/xAAXAAADAQAAAAAAAAAAAAAAAAAABAUG/8QAGxAAAwEBAQEBAAAAAAAAAAAAAQIEAAMSFBH/xAAWAQEBAQAAAAAAAAAAAAAAAAADAgH/xAAaEQACAgMAAAAAAAAAAAAAAAAAQiEiAQIS/9oADAMBAAIRAxEAPwCHSIzQAc008g5Arl6PjoqBTXOaQc5195FM7kz3FpJ39NnTTNUv4pxjXtiobH//2Q=="},"ctaButtonText":"Explore our latest sector research","ctaButtonLink":"https://sifted.eu/pro/briefings/advanced-materials-2026"}],"insightsFeaturedArticles":[{"id":138073,"url":"https://sifted.eu/articles/the-50-fastest-growing-european-startup-teams-in-h1-2026/","slug":"the-50-fastest-growing-european-startup-teams-in-h1-2026","title":"The 50 fastest-growing European startup teams in H1 2026","excerpt":"Sifted ranks the top 50 fastest-growing startups by headcount growth across the first six months of 2026","comments":{"count":"0","enabled":false},"publishTimestamp":1783573200000,"author":{"name":"Jonathan Sinclair","url":"https://sifted.eu/author/jonathansinclair/"},"authors":[{"id":8734,"type":"wpuser","name":"Jonathan Sinclair","twitter":"","bio":"Jonathan Sinclair is head of research at Sifted. Find him on \u003ca href=\"https://www.linkedin.com/in/jonathan-sinclair-98a019137/\"\u003e LinkedIn \u003c/a\u003e","niceName":"jonathansinclair","image":false},{"id":9246,"type":"wpuser","name":"Oshin Narang","twitter":"","bio":"Oshin is Sifted's startup \u0026amp; VC analyst.","niceName":"oshin-narang","image":false}],"isSponsored":false,"sponsorshipType":null,"isMemberContent":false,"isProContent":true,"isNonFree":true,"contentSubscriptionLevel":"is_pro","articleFormat":"standard","layout":"long_form","sector":{"name":"Startup life","slug":"startup-life","url":"https://sifted.eu/sector/startup-life/"},"category":{"name":"Fastest-growing startups","slug":"fastest-growing-startups","url":"https://sifted.eu/categories/fastest-growing-startups/"},"taxonomies":{"categories":{"primary":null,"all":[{"id":41689,"name":"Fastest-growing startups","slug":"fastest-growing-startups","url":"https://sifted.eu/categories/fastest-growing-startups/"},{"id":41674,"name":"List","slug":"list","url":"https://sifted.eu/categories/list/"}]},"sectors":{"primary":{"id":11531,"name":"Startup life","slug":"startup-life","url":"https://sifted.eu/sector/startup-life/"},"all":[{"id":11531,"name":"Startup life","slug":"startup-life","url":"https://sifted.eu/sector/startup-life/"}]},"themes":{"primary":null,"all":[]},"topics":{"primary":null,"all":[]},"practices":{"primary":null,"all":[]},"countries":{"primary":null,"all":[]},"tags":{"primary":null,"all":[{"id":42547,"name":"Actithera","slug":"actithera","url":"https://sifted.eu/tag/actithera/"},{"id":42370,"name":"Alta Ares","slug":"alta-ares","url":"https://sifted.eu/tag/alta-ares/"},{"id":42536,"name":"askLio","slug":"asklio","url":"https://sifted.eu/tag/asklio/"},{"id":42560,"name":"Bankflip","slug":"bankflip","url":"https://sifted.eu/tag/bankflip/"},{"id":42562,"name":"Beglaubigt.de","slug":"beglaubigt-de","url":"https://sifted.eu/tag/beglaubigt-de/"},{"id":42535,"name":"Biorce","slug":"biorce","url":"https://sifted.eu/tag/biorce/"},{"id":42559,"name":"CertHub","slug":"certhub","url":"https://sifted.eu/tag/certhub/"},{"id":42563,"name":"Cloover","slug":"cloover","url":"https://sifted.eu/tag/cloover/"},{"id":42463,"name":"Conduct","slug":"conduct","url":"https://sifted.eu/tag/conduct/"},{"id":42532,"name":"Conveo","slug":"conveo","url":"https://sifted.eu/tag/conveo/"},{"id":42539,"name":"Covecta","slug":"covecta","url":"https://sifted.eu/tag/covecta/"},{"id":42004,"name":"CuspAI","slug":"cuspai","url":"https://sifted.eu/tag/cuspai/"},{"id":42216,"name":"Driveblocks","slug":"driveblocks","url":"https://sifted.eu/tag/driveblocks/"},{"id":42138,"name":"Flexion Robotics","slug":"flexion-robotics","url":"https://sifted.eu/tag/flexion-robotics/"},{"id":42533,"name":"Fonio","slug":"fonio","url":"https://sifted.eu/tag/fonio/"},{"id":42529,"name":"H1 2026 coverage","slug":"h1-2026","url":"https://sifted.eu/tag/h1-2026/"},{"id":41865,"name":"Harmattan AI","slug":"harmattan-ai","url":"https://sifted.eu/tag/harmattan-ai/"},{"id":42552,"name":"HeyDiga","slug":"heydiga","url":"https://sifted.eu/tag/heydiga/"},{"id":42201,"name":"Hypersonica","slug":"hypersonica","url":"https://sifted.eu/tag/hypers
80933onica/"},{"id":42554,"name":"Insutex","slug":"insutex","url":"https://sifted.eu/tag/insutex/"},{"id":41917,"name":"Isembard","slug":"isembard","url":"https://sifted.eu/tag/isembard/"},{"id":42558,"name":"Kreios Space","slug":"kreios-space","url":"https://sifted.eu/tag/kreios-space/"},{"id":42566,"name":"Laborai","slug":"laborai","url":"https://sifted.eu/tag/laborai/"},{"id":41743,"name":"Legora","slug":"legora","url":"https://sifted.eu/tag/legora/"},{"id":42256,"name":"Lexroom","slug":"lexroom","url":"https://sifted.eu/tag/lexroom/"},{"id":42553,"name":"Lua AI","slug":"lua-ai","url":"https://sifted.eu/tag/lua-ai/"},{"id":42534,"name":"Lumoo","slug":"lumoo","url":"https://sifted.eu/tag/lumoo/"},{"id":42561,"name":"Maurice \u0026amp; Nora","slug":"maurice-nora","url":"https://sifted.eu/tag/maurice-nora/"},{"id":41281,"name":"Mistral","slug":"mistral","url":"https://sifted.eu/tag/mistral/"},{"id":42543,"name":"Move AI","slug":"move-ai","url":"https://sifted.eu/tag/move-ai/"},{"id":42545,"name":"NestAI","slug":"nestai","url":"https://sifted.eu/tag/nestai/"},{"id":42541,"name":"Neutonic","slug":"neutonic","url":"https://sifted.eu/tag/neutonic/"},{"id":42555,"name":"Nordic Air Defence","slug":"nordic-air-defence","url":"https://sifted.eu/tag/nordic-air-defence/"},{"id":41899,"name":"Nscale","slug":"nscale","url":"https://sifted.eu/tag/nscale/"},{"id":42551,"name":"Olix","slug":"olix","url":"https://sifted.eu/tag/olix/"},{"id":42544,"name":"PeecAI","slug":"peecai","url":"https://sifted.eu/tag/peecai/"},{"id":42567,"name":"Rabbitt AI","slug":"rabbitt-ai","url":"https://sifted.eu/tag/rabbitt-ai/"},{"id":42549,"name":"Risiq","slug":"risiq","url":"https://sifted.eu/tag/risiq/"},{"id":42564,"name":"Runware","slug":"runware","url":"https://sifted.eu/tag/runware/"},{"id":42550,"name":"Six Robotics","slug":"six-robotics","url":"https://sifted.eu/tag/six-robotics/"},{"id":42542,"name":"Solidroad","slug":"solidroad","url":"https://sifted.eu/tag/solidroad/"},{"id":42258,"name":"Solve Intelligence","slug":"solve-intelligence","url":"https://sifted.eu/tag/solve-intelligence/"},{"id":42540,"name":"Spektr","slug":"spektr","url":"https://sifted.eu/tag/spektr/"},{"id":42556,"name":"Stored","slug":"stored","url":"https://sifted.eu/tag/stored/"},{"id":42565,"name":"SWARM Biotactics","slug":"swarm-biotactics","url":"https://sifted.eu/tag/swarm-biotactics/"},{"id":42548,"name":"Tequipy","slug":"tequipy","url":"https://sifted.eu/tag/tequipy/"},{"id":42537,"name":"Throxy","slug":"throxy","url":"https://sifted.eu/tag/throxy/"},{"id":42557,"name":"Tribbu","slug":"tribbu","url":"https://sifted.eu/tag/tribbu/"},{"id":41923,"name":"Tytan Technologies","slug":"tytan-technologies","url":"https://sifted.eu/tag/tytan-technologies/"},{"id":42538,"name":"Viktor","slug":"viktor","url":"https://sifted.eu/tag/viktor/"},{"id":42546,"name":"Vortex IQ","slug":"vortex-iq","url":"https://sifted.eu/tag/vortex-iq/"}]}},"tagList":[{"name":"Startup life","link":"https://sifted.eu/sector/startup-life/"},{"name":"Actithera","link":"https://sifted.eu/tag/actithera/"},{"name":"Alta Ares","link":"https://sifted.eu/tag/alta-ares/"},{"name":"askLio","link":"https://sifted.eu/tag/asklio/"}],"image":{"base":"https://content.sifted.eu/wp-content/uploads/2026/07/09000328/Conveo.webp","full":"https://content.sifted.eu/wp-content/uploads/2026/07/09000328/Conveo.webp","fullWidth":1200,"fullHeight":800,"header-image":"https://content.sifted.eu/wp-content/uploads/2026/07/09000328/Conveo-530x355.webp","header-image-labeled":"https://content.sifted.eu/wp-content/uploads/2026/07/09000328/Conveo-530x355.webp","list-image":"https://content.sifted.eu/wp-content/uploads/2026/07/09000328/Conveo-240x130.webp","caption":"Conveo team offsite (February 2026)","placeholder":false,"alt":"Conveo team offsite (February 2026)"},"cardImage":{"caption":"Conveo team offsite (February 2026)","alt":"Conveo team offsite (February 2026)","base":"https://content.sifted.eu/wp-content/uploads/2026/07/09000328/Conveo.webp","fullWidth":1200,"fullHeight":800,"placeholder":false},"longFormMobileImage":{"caption":"Conveo team offsite (February 2026)","base":"https://content.sifted.eu/wp-content/uploads/2026/07/09000328/Conveo.webp","fullWidth":1200,"fullHeight":800,"placeholder":false}},{"id":138075,"url":"https://sifted.eu/articles/europes-biggest-new-funds-in-h1-2026/","slug":"europes-biggest-new-funds-in-h1-2026","title":"Europe’s biggest new funds in H1 2026","excerpt":"Europe’s biggest funds turn to 
80933scaleups, AI and climate in a tougher fundraising landscape","comments":{"count":"0","enabled":false},"publishTimestamp":1783573256000,"author":{"name":"Ruggero Di Spigna","url":"https://sifted.eu/author/ruggero/"},"authors":[{"id":8969,"type":"wpuser","name":"Ruggero Di Spigna","twitter":"","bio":"Ruggero Di Spigna is a Senior Insights \u0026amp; Product Associate at Sifted. Find him on \u003ca href=\"https://www.linkedin.com/in/ruggero-di-spigna-4882b6115\"\u003e LinkedIn \u003c/a\u003e","niceName":"ruggero","image":false}],"isSponsored":false,"sponsorshipType":null,"isMemberContent":false,"isProContent":true,"isNonFree":true,"contentSubscriptionLevel":"is_pro","articleFormat":"standard","layout":"short_form","sector":{"name":"Venture capital","slug":"venture-capital","url":"https://sifted.eu/sector/venture-capital/"},"category":{"name":"List","slug":"list","url":"https://sifted.eu/categories/list/"},"taxonomies":{"categories":{"primary":null,"all":[{"id":41674,"name":"List","slug":"list","url":"https://sifted.eu/categories/list/"}]},"sectors":{"primary":{"id":11532,"name":"Venture capital","slug":"venture-capital","url":"https://sifted.eu/sector/venture-capital/"},"all":[{"id":11532,"name":"Venture capital","slug":"venture-capital","url":"https://sifted.eu/sector/venture-capital/"}]},"themes":{"primary":{"id":1710,"name":"Funding","slug":"funding","url":"https://sifted.eu/themes/funding/"},"all":[{"id":1710,"name":"Funding","slug":"funding","url":"https://sifted.eu/themes/funding/"}]},"topics":{"primary":{"id":1950,"name":"Venture Capital","slug":"venture-capital","url":"https://sifted.eu/topic/venture-capital/"},"all":[{"id":1950,"name":"Venture Capital","slug":"venture-capital","url":"https://sifted.eu/topic/venture-capital/"}]},"practices":{"primary":{"id":311,"name":"Funding","slug":"funding","url":"https://sifted.eu/practice/funding/"},"all":[{"id":311,"name":"Funding","slug":"funding","url":"https://sifted.eu/practice/funding/"}]},"countries":{"primary":null,"all":[]},"tags":{"primary":null,"all":[{"id":42529,"name":"H1 2026 coverage","slug":"h1-2026","url":"https://sifted.eu/tag/h1-2026/"}]}},"tagList":[{"name":"Venture capital","link":"https://sifted.eu/sector/venture-capital/"},{"name":"H1 2026 coverage","link":"https://sifted.eu/tag/h1-2026/"}],"image":{"base":"https://images.sifted.eu/cdn-cgi/image/width=2048,quality=75,fit=cover,format=auto/wp-content/uploads/2026/02/04165011/KEMBARA-scaled.jpg","full":"https://images.sifted.eu/cdn-cgi/image/width=2048,quality=75,fit=cover,format=auto/wp-content/uploads/2026/02/04165011/KEMBARA-scaled.jpg","fullWidth":2048,"fullHeight":1541,"header-image":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/02/04165011/KEMBARA-scaled.jpg","header-image-labeled":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/02/04165011/KEMBARA-scaled.jpg","list-image":"https://images.sifted.eu/cdn-cgi/image/width=240,quality=75,fit=cover,format=auto/wp-content/uploads/2026/02/04165011/KEMBARA-scaled.jpg","caption":"From left to right: Javier Santiso, Siraj Khaliq, Robert Trezona, Yann de Vries and Pierre Festal","placeholder":false,"alt":"Kembara"},"cardImage":{"caption":"From left to right: Javier Santiso, Siraj Khaliq, Robert Trezona, Yann de Vries and Pierre Festal","alt":"Kembara","base":"https://images.sifted.eu/cdn-cgi/image/width=2048,quality=75,fit=cover,format=auto/wp-content/uploads/2026/02/04165011/KEMBARA-scaled.jpg","fullWidth":2048,"fullHeight":1541,"placeholder":false},"longFormMobileImage":{"caption":"From left to right: Javier Santiso, Siraj Khaliq, Robert Trezona, Yann de Vries and Pierre Festal","base":"https://images.sifted.eu/cdn-cgi/image/width=2048,quality=75,fit=cover,format=auto/wp-content/uploads/2026/02/04165011/KEMBARA-scaled.jpg","fullWidth":2048,"fullHeight":1541,"placeholder":false}},{"id":138087,"url":"https://sifted.eu/articles/8-stealth-founders-using-ai-to-take-on-the-industries-they-used-to-work-in/","slug":"8-stealth-founders-using-ai-to-take-on-the-industries-they-u
80933sed-to-work-in","title":"8 stealth founders using AI to take on the industries they used to work in","excerpt":"They include a former Amazon supply chain operator and an ex-McKinsey consultant taking on the space sector","comments":{"count":"0","enabled":false},"publishTimestamp":1783573214000,"author":{"name":"Oshin Narang","url":"https://sifted.eu/author/oshin-narang/"},"authors":[{"id":9246,"type":"wpuser","name":"Oshin Narang","twitter":"","bio":"Oshin is Sifted's startup \u0026amp; VC analyst.","niceName":"oshin-narang","image":false}],"isSponsored":false,"sponsorshipType":null,"isMemberContent":false,"isProContent":true,"isNonFree":true,"contentSubscriptionLevel":"is_pro","articleFormat":"standard","layout":"short_form","sector":{"name":"Startup life","slug":"startup-life","url":"https://sifted.eu/sector/startup-life/"},"category":{"name":"Stealth founders","slug":"stealth-founders","url":"https://sifted.eu/categories/stealth-founders/"},"taxonomies":{"categories":{"primary":null,"all":[{"id":42531,"name":"Stealth founders","slug":"stealth-founders","url":"https://sifted.eu/categories/stealth-founders/"},{"id":41674,"name":"List","slug":"list","url":"https://sifted.eu/categories/list/"}]},"sectors":{"primary":{"id":11531,"name":"Startup life","slug":"startup-life","url":"https://sifted.eu/sector/startup-life/"},"all":[{"id":11531,"name":"Startup life","slug":"startup-life","url":"https://sifted.eu/sector/startup-life/"}]},"themes":{"primary":null,"all":[]},"topics":{"primary":{"id":1928,"name":"Entrepreneurship","slug":"entrepreneurship","url":"https://sifted.eu/topic/entrepreneurship/"},"all":[{"id":1928,"name":"Entrepreneurship","slug":"entrepreneurship","url":"https://sifted.eu/topic/entrepreneurship/"}]},"practices":{"primary":null,"all":[]},"countries":{"primary":null,"all":[]},"tags":{"primary":null,"all":[]}},"tagList":[{"name":"Startup life","link":"https://sifted.eu/sector/startup-life/"}],"image":{"base":"https://images.sifted.eu/cdn-cgi/image/width=1200,quality=75,fit=cover,format=auto/wp-content/uploads/2026/07/08184116/stealth.jpeg","full":"https://images.sifted.eu/cdn-cgi/image/width=1200,quality=75,fit=cover,format=auto/wp-content/uploads/2026/07/08184116/stealth.jpeg","fullWidth":1200,"fullHeight":1200,"header-image":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/07/08184116/stealth.jpeg","header-image-labeled":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/07/08184116/stealth.jpeg","list-image":"https://images.sifted.eu/cdn-cgi/image/width=240,quality=75,fit=cover,format=auto/wp-content/uploads/2026/07/08184116/stealth.jpeg","caption":"","placeholder":false,"alt":""},"cardImage":{"caption":"","alt":"","base":"https://images.sifted.eu/cdn-cgi/image/width=1200,quality=75,fit=cover,format=auto/wp-content/uploads/2026/07/08184116/stealth.jpeg","fullWidth":1200,"fullHeight":1200,"placeholder":false},"longFormMobileImage":{"caption":"","base":"https://images.sifted.eu/cdn-cgi/image/width=1200,quality=75,fit=cover,format=auto/wp-content/uploads/2026/07/08184116/stealth.jpeg","fullWidth":1200,"fullHeight":1200,"placeholder":false}},{"id":138026,"url":"https://sifted.eu/articles/the-25-companies-most-watched-insiders-h1-2026/","slug":"the-25-companies-most-watched-insiders-h1-2026","title":"The 25 companies Europe’s startup insiders watched most closely in H1","excerpt":"Sifted Pro readership data reveals which European startups and scaleups investors, corporates and advisers were monitoring most actively in H1","comments":{"count":"0","enabled":false},"publishTimestamp":1783486834000,"author":{"name":"Jonathan Sinclair","url":"https://sifted.eu/author/jonathansinclair/"},"authors":[{"id":8734,"type":"wpuser","name":"Jonathan Sinclair","twitter":"","bio":"Jonathan Sinclair is head of research at Sifted. Find him on \u003ca href=\"https://www.linkedin.com/in/jonathan-sinclair-98a019137/\"\u003e LinkedIn \u003c/a\u003e","niceName":"jonathansinclair","image":false}],"isSponsored":false,"sponsorshipType":null,"isMemberContent":false,"isProContent":true,"isNonFree":true,"contentSubscriptionLevel":"is_pro","articleFormat":"standard","layout":"long_form","sector":null,"category":{"name":"Sifted data","slug":"sifted-data","url":"https://sifted.eu/categories/sifted-data/"},"taxonomies":{"categories":{"primary":null,"all":[{"id":41693,"name":"Sifted data","slug":"sifted-data","url":"https://sifted.eu/categories/sifted-data/"},{"id":41676,"name":"Data","slug":"data","url":"https://sifted.eu/categories/data/"}]},"sectors":{"primary":null,"all":[]},"themes":{"primary":null,"all":[]},"topics":{"primary":null,"all":[]},"practices":{"primary":null,"all":[]},"countries":{"primary":null,"all":[]},"tags":{"primary":null,"all":[{"id":42375,"name":"Aikido Security","slug":"aikido-security","url":"https://sifted.eu/tag/aikido-security/"},{"id":42095,"name":"Alan","slug":"alan","url":"https://sifted.eu/tag/alan/"}
80933,{"id":41877,"name":"allica bank","slug":"allica-bank","url":"https://sifted.eu/tag/allica-bank/"},{"id":42050,"name":"AMI Labs","slug":"ami-labs","url":"https://sifted.eu/tag/ami-labs/"},{"id":41841,"name":"Cleo","slug":"cleo","url":"https://sifted.eu/tag/cleo/"},{"id":42526,"name":"Cognism","slug":"cognism","url":"https://sifted.eu/tag/cognism/"},{"id":42004,"name":"CuspAI","slug":"cuspai","url":"https://sifted.eu/tag/cuspai/"},{"id":42293,"name":"Dwelly","slug":"dwelly","url":"https://sifted.eu/tag/dwelly/"},{"id":41766,"name":"ElevenLabs","slug":"elevenlabs","url":"https://sifted.eu/tag/elevenlabs/"},{"id":42056,"name":"Faculty","slug":"faculty","url":"https://sifted.eu/tag/faculty/"},{"id":42249,"name":"Fractile","slug":"fractile","url":"https://sifted.eu/tag/fractile/"},{"id":42529,"name":"H1 2026 coverage","slug":"h1-2026","url":"https://sifted.eu/tag/h1-2026/"},{"id":42445,"name":"Ineffable Intelligence","slug":"ineffable-intelligence","url":"https://sifted.eu/tag/ineffable-intelligence/"},{"id":42122,"name":"IQM Quantum Computers","slug":"iqm-quantum-computers","url":"https://sifted.eu/tag/iqm-quantum-computers/"},{"id":41001,"name":"Klarna","slug":"klarna","url":"https://sifted.eu/tag/klarna/"},{"id":41743,"name":"Legora","slug":"legora","url":"https://sifted.eu/tag/legora/"},{"id":41581,"name":"Lovable","slug":"lovable","url":"https://sifted.eu/tag/lovable/"},{"id":41281,"name":"Mistral","slug":"mistral","url":"https://sifted.eu/tag/mistral/"},{"id":41899,"name":"Nscale","slug":"nscale","url":"https://sifted.eu/tag/nscale/"},{"id":42072,"name":"Peec AI","slug":"peec-ai","url":"https://sifted.eu/tag/peec-ai/"},{"id":42068,"name":"Photoncycle","slug":"photoncycle","url":"https://sifted.eu/tag/photoncycle/"},{"id":42518,"name":"Recursive Superintelligence","slug":"recursive-superintelligence","url":"https://sifted.eu/tag/recursive-superintelligence/"},{"id":40969,"name":"Revolut","slug":"revolut","url":"https://sifted.eu/tag/revolut/"},{"id":41828,"name":"Stark","slug":"stark","url":"https://sifted.eu/tag/stark/"},{"id":41627,"name":"Synthesia","slug":"synthesia","url":"https://sifted.eu/tag/synthesia/"},{"id":42171,"name":"Tandem Health","slug":"tandem-health","url":"https://sifted.eu/tag/tandem-health/"}]}},"tagList":[{"name":"Aikido Security","link":"https://sifted.eu/tag/aikido-security/"},{"name":"Alan","link":"https://sifted.eu/tag/alan/"},{"name":"allica bank","link":"https://sifted.eu/tag/allica-bank/"},{"name":"AMI Labs","link":"https://sifted.eu/tag/ami-labs/"}],"image":{"base":"https://images.sifted.eu/cdn-cgi/image/width=3200,quality=75,fit=cover,format=auto/wp-content/uploads/2026/05/28111139/mistral-infra.png","full":"https://images.sifted.eu/cdn-cgi/image/width=3200,quality=75,fit=cover,format=auto/wp-content/uploads/2026/05/28111139/mistral-infra.png","fullWidth":3200,"fullHeight":1050,"header-image":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/05/28111139/mistral-infra.png","header-image-labeled":"https://images.sifted.eu/cdn-cgi/image/width=530,quality=75,fit=cover,format=auto/wp-content/uploads/2026/05/28111139/mistral-infra.png","list-image":"https://images.sifted.eu/cdn-cgi/image/width=240,quality=75,fit=cover,format=auto/wp-content/uploads/2026/05/28111139/mistral-infra.png","caption":"","placeholder":false,"alt":"Mistral's cofounders"},"cardImage":{"caption":"","alt":"Mistral's cofounders","base":"https://images.sifted.eu/cdn-cgi/image/width=3200,quality=75,fit=cover,format=auto/wp-content/uploads/2026/05/28111139/mistral-infra.png","fullWidth":3200,"fullHeight":1050,"placeholder":false},"longFormMobileImage":{"caption":"","base":"https://images.sifted.eu/cdn-cgi/image/width=3200,quality=75,fit=cover,format=auto/wp-content/uploads/2026/05/28111139/mistral-infra.png","fullWidth":3200,"fullHeight":1050,"placeholder":false}}],"latestHeader":{"title":"Latest","id":"B8-cIYd7RO-BqkgJwyZgbQ","cta":null},"latestItems":[{"title":"Test","button":{"id":"OWRRk4GvTPuR8j7fndIA5w","text":"Test","url":"https://sifted.eu/latest"},"description":"Test","id":"Q2-uLnxlTCO3xbzhRYuEQw","image":{"alt":null,"blurUpThumb":null,"title":null,"url":"https://www.datocms-assets.com/60124/1776344548-youtube-logo.svg"}},{"title":"Test","button":{"id":"HQDHPNPDSNmWVYJmqTny-Q","text":"Test","url":"https://sifted.eu/latest"},"description":"Test","id":"ON5_fNBARBiTrH8nKsUnIA","image":{"alt":null,"blurUpThumb":null,"title":null,"url":"https://www.datocms-assets.com/60124/1776344548-youtube-logo.svg"}},{"title":"Test","button":{"id":"R23qYdb0RlK_L1eZ3PSlAw","text":"Test","url":"https://sifted.eu/latest"},"description":"Test","id":"U5DRm70HRgmKw1p2iHPkiw","image":{"alt":null,"blurUpThumb":null,"title":null,"url":"https://www.datocms-assets.com/60124/1776344548-youtube-logo.svg"}},{"title":"Test","button":{"id":"dlW8Afl4QeSzaaP5GgJfSA","text":"Test","url":"https://sifted.eu/latest"},"description":"Test","id":"N78JRLA4Sg6SVcGRwHlmJg","image":{"alt":null,"blurUpThumb":null,"title":null,"url":"https://www.datocms-assets.com/60124/1776344548-youtube-logo.svg"}},{"title":"Test","button":{"id":"ar4w3IlsTKep4ajkdJrPkg","text":"Test","url":"https://sifted.eu/latest"},"description":"Test","id":"GlTjPIgFRkK7pN6A5S19ag","image":{"alt":null,"blurUpThumb":null,"title":null,"url":"https://www.datocms-assets.com/60124/1776344548-youtube-logo.svg"}}],"topBannerSignInHeading":"Don't miss what Europe's startup insiders are reading","topB
80933annerSignInSubheading":"Join 120,000+ founders, investors, and operators who rely on Sifted to stay sharp.","topBannerSignInPrimaryButtonLabel":"Register for free","topBannerSignInPrimaryButtonUrl":"/members/login","topBannerSignInSecondaryButtonLabel":"Sign in","topBannerSignInSecondaryButtonUrl":"/members/login","topBannerSignInDaysUntilRedisplay":7,"topBannerProHeading":"Get intelligence you can act on","topBannerProSubheading":"Unlock verified data, expert insight and in-depth reporting on Europe’s startup ecosystem when you subscribe to Sifted Pro.","topBannerProPrimaryButtonLabel":"Explore Pro","topBannerProPrimaryButtonUrl":"https://sifted.eu/sifted-pro","topBannerProSecondaryButtonLabel":"Request a free trial","topBannerProSecondaryButtonUrl":"/request-trial","topBannerProDaysUntilRedisplay":7,"featuredBriefingsList":[{"id":"Im5wm4ZuQWO5VdBwYA47RA","url":"/pro/briefings/fintech-as-a-service","title":"Fintech-as-a-service (2026)","subtitle":"FaaS and furious: Europe’s big fintech software pivot","slug":"fintech-as-a-service","publishTimestamp":1789948800000,"isMemberContent":false,"isRegisteredContent":false,"isProContent":true,"isNonFree":true,"contentSubscriptionLevel":"is_pro","marketLabel":"Fintech","dato":true,"briefingImage":{"id":"67565090","height":1305,"width":870,"blurUpThumb":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAoHBwgHBgoICAgLDxUQFA8NDRUNDiINDg4NFxMZGBYfFhUmHysjGh0oKRUWJDUlKC0vMjIyGSI4PTcwPCsxMi8BCgsLDg0OFgUQHC8oFhwvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL//AABEIABgAEAMBIgACEQEDEQH/xAAZAAACAwEAAAAAAAAAAAAAAAABBAMFBgD/xAAfEAABBAICAwAAAAAAAAAAAAAFAAECEQMEFTEGEhP/xAAVAQEBAAAAAAAAAAAAAAAAAAAEA//EABgRAAIDAAAAAAAAAAAAAAAAAAABAhEx/9oADAMBAAIRAxEAPwCzLmNmJW6UIYts5TXSXOym288qS3jebLy7v6oCjTEuVo0hAPPPtPbIBQ3wIu9ILlR6Rjh//9k=","alt":"Fintech in 2023 briefing cover image","url":"https://www.datocms-assets.com/60124/1692887606-fintech-in-2023.png"}},{"id":"A3HABnRfQiegKzv-fKl1cg","url":"/pro/briefings/medtech-2026","title":"Medtech (2026)","subtitle":"Can these zany devices go all the way?","slug":"medtech-2026","publishTimestamp":1789344000000,"isMemberContent":false,"isRegisteredContent":false,"isProContent":true,"isNonFree":true,"contentSubscriptionLevel":"is_pro","marketLabel":"Healthtech","dato":true,"briefingImage":{"id":"67565098","height":1305,"width":870,"blurUpThumb":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAoHBwgHBhUIEAgNDQ0OGg0NDQ0KDRIJFhEYFx8ZGBYVFhUaHysjGh0oHRUWJDUlKC0vMjIyGSI4PTcwPCsxMi8BCgsLBQoOFQ4NFS8cFh0vLy8vLy8vLy8vLy8vNS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL//AABEIABgAEAMBIgACEQEDEQH/xAAZAAABBQAAAAAAAAAAAAAAAAACAAEEBQb/xAAcEAACAgIDAAAAAAAAAAAAAAAAAwIEASQFERL/xAAWAQADAAAAAAAAAAAAAAAAAAAAAwT/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwDKIRmVYZiZRQWVJWsBZj0ocgRK3I5hXAbf9rEIA//Z","alt":"Medtech briefing cover image","url":"https://www.datocms-assets.com/60124/1692887768-medtech.png"}}]}}},"sitewideOption":{"advertisementHeading":"Advertisement","footerCopyright":"© $CURRENT_YEAR Sifted EU Ltd. All Rights Reserved.","footerExtraList":[{"id":"188578871","label":"Newsletters","url":"/newsletters","description":""},{"id":"188578872","label":"Rankings","url":"/rankings","description":""},{"id":"188578873","label":"Reports","url":"/intelligence/reports","description":""},{"id":"aK7XNmU2QFyQt-1Tl4B1xg","label":"Leaderboards","url":"/leaderboards","description":""},{"id":"Fp0ynzISSRabEVk77g39_w","label":"Deals Tracker","url":"/deals-tracker","description":""},{"id":"Zgn7vkAQSrK0SSmOD4THNQ","label":"Investor Tracker","url":"/investor-tracker","description":""},{"id":"TSIKeJKdQ_yS5ssfCD_T6w","label":"Market Tracker","url":"/market-tracker","description":""},{"id":"LBpvEGCtTG6ATDH4X1wIrw","label":"M\u0026A Tracker ","url":"/ma-tracker","description":""}],"footerPrimaryList":[{"id":"174018092","label":"About","url":"/about","description":""},{"id":"174018094","label":"Careers","url":"/careers","description":""},{"id":"174018093","label":"Advertising","url":"/advertising","description":""},{"id":"aIlDE8VHRMmXD4iMAVtVqQ","label":"Cookie Policy","url":"/cookie-policy","description":""}
80933,{"id":"188578876","label":"Privacy Policy","url":"/privacy-policy","description":""},{"id":"188578877","label":"AI Code of Conduct","url":"/ai-code-of-conduct","description":""},{"id":"188578878","label":"Terms of Use","url":"/terms-of-use","description":""},{"id":"a-CfTjOrQdGhxdOxS7cVpg","label":"Contact Us","url":"/contact-us","description":""}],"footerSecondaryList":[{"id":"188578879","label":"Subscribe","url":"/subscribe","description":""},{"id":"188578880","label":"Briefings","url":"/pro/briefings/about","description":""},{"id":"Bsfy68bORcy0WnqQTH_-iA","label":"Deals Newsletter","url":"https://info.sifted.eu/pro-deals-newsletter","description":""}],"footerCommunityList":[{"id":"188578868","label":"Talks","url":"/talks","description":""},{"id":"188578869","label":"Podcasts","url":"/podcasts","description":""},{"id":"188578870","label":"Sifted Summit","url":"https://summit.sifted.eu/","description":""}],"footerExtraListColumnLabel":"Products","footerPrimaryListColumnLabel":"Company","footerSecondaryListColumnLabel":"Sifted Pro","footerCommunityListColumnLabel":"Community","footerSocials":[{"id":"174018103","image":{"alt":"LinkedIn Logo","id":"64620756","height":24,"title":"LinkedIn Logo","width":24,"url":"https://www.datocms-assets.com/60124/1689076682-linkedin.svg","blurUpThumb":null},"label":"LinkedIn","url":"https://www.linkedin.com/company/siftedeu/"},{"id":"Zmgb7LIhRGqHtsJTihx-_g","image":{"alt":null,"id":"EJm5bpctRUi1Rbu6NlJm6g","height":24,"title":null,"width":24,"url":"https://www.datocms-assets.com/60124/1781185911-whatsapp.svg","blurUpThumb":null},"label":"Whatsapp","url":"https://whatsapp.com/channel/0029VbD54jc4SpkF4lq81j41"},{"id":"aoD-2YcBTXCFTJndKx-YoQ","image":{"alt":null,"id":"Yged-0osSUWmatV0Tc67JA","height":24,"title":null,"width":24,"url":"https://www.datocms-assets.com/60124/1729688606-instagram.svg","blurUpThumb":null},"label":"Instagram","url":"https://www.instagram.com/siftedeu/"},{"id":"174018104","image":{"alt":"Facebook Logo","id":"64622056","height":24,"title":"Facebook Logo","width":24,"url":"https://www.datocms-assets.com/60124/1689076874-facebook.svg","blurUpThumb":null},"label":"Facebook","url":"https://www.facebook.com/siftedeu"},{"id":"174018105","image":{"alt":"RSS Feed Logo","id":"64622058","height":24,"title":"RSS Feed Logo","width":24,"url":"https://www.datocms-assets.com/60124/1689076939-rss-feed.svg","blurUpThumb":null},"label":"Feed","url":"https://sifted.eu/feed/?post_type=article"}],"logInUrl":"/members/login","logInLabel":"Log in","logoutLabel":"Log out","navbarPrimaryLinks":[{"description":"","id":"ApUbehw4SmqGbebSYHDELw","label":"Pro","url":"","list":[{"id":"ND237KXnTBqI3eSgWdjU8A","label":"Articles","url":"/articles/pro","description":"Exclusive journalism, analysis, interviews and lists — exclusive to Pro subscribers."},{"id":"YuQEIsLkSlanyjaKM9Dt8w","label":"Briefings","url":"/pro/briefings ","description":"Investment-grade research on emerging sectors, powered by proprietary Sifted research. "},{"id":"VgVaevhRSBKNtjDN6UWxVA","label":"Market maps","url":"https://sifted.eu/categories/market-map","description":"Discover market maps, scouted and structured by Sifted, mapping key players across each sector."},{"id":"SpjDHGCxTm-XpKgJM_uI-A","label":"Startups to watch","url":"https://sifted.eu/categories/investor-survey","description":"Discover which startups investors are actively monitoring."},{"id":"PhAam2MRQEi5dWgs7h9e-A","label":"Deals Tracker","url":"/deals-tracker","description":"Track the latest funding rounds across the European tech ecosystem."},{"id":"SXH12LVuSWSWO9k5L8DpGA","label":"Investor Tracker","url":"/investor-tracker","description":"Monitor investor activity since 2024 in real time across Europe's startup ecosystem."},{"id":"MBOe4avSRj2frjvlBS79bw","label":"Market Tracker","url":"/market-tracker","description":"Explore where capital is flowing across European tech with Sifted’s interactive data dashboard."},{"id":"eXVZOmalR-q1Av_oBS7Egw","label":"M\u0026A Tracker","url":"/ma-tracker","description":"Track startup acquisitions and acquirers across European tech."},{"id":"dytp-7YzQ4mmeMBuquJHWw","label":"Investor rankings","url":"/rankings","de
80933scription":"Europe's most active startup backers, ranked."},{"id":"HU7PlUsyTzmxSb9v024g1w","label":"Sifted View","url":"/categories/sifted-view ","description":"A weekly column from our cofounder and editorial director, John Thornhill."},{"id":"flef7OryTW-I8YV8UM8sPQ","label":"Company search","url":"/tag/company-coverage","description":"Browse Sifted's article coverage of Europe's leading startups and scaleups."},{"id":"Im4KiRwcRlWCh4PWgI8gUw","label":"Subscribe","url":"/sifted-pro ","description":"Find your next big opportunity in European tech."}]},{"description":"","id":"PNh2Zpc8TJuSABS0LYQS2g","label":"Latest","url":"","list":[{"id":"XQuj1kgMQt-hhj0Y5Y6xsg","label":"News","url":"/latest ","description":""},{"id":"FSs6Wiv8Ti6BCZiqf4ORPA","label":"Analysis","url":"/categories/analysis","description":""},{"id":"VbFPeqomQryfClTklupv8g","label":"Interviews","url":"/categories/interview","description":""},{"id":"Sr0QubAhTrGe4OnoakfIZA","label":"Opinion","url":"/categories/opinion","description":""},{"id":"D_5BqH3kTR-qm0Z64G6ZlQ","label":"Reports","url":"/intelligence/reports","description":""},{"id":"JYcSbZQBSeO3UbH1j2Qrfg","label":"Podcasts","url":"/podcasts","description":""},{"id":"G32kFJRqQ8K0ib6tUIFmLw","label":"Collaborations","url":"/studio","description":""},{"id":"YlXQZYnFQzutpGmolU2NMg","label":"Countries","url":"/countries","description":""}]},{"description":"","id":"DX9P1rcqQx-Cae_Fsw8lRQ","label":"Sectors","url":"","list":[{"id":"PJXSqBVBRWi5DbsCBYAMRw","label":"AI","url":"/sector/artificial-intelligence","description":""},{"id":"KhWnh5ljShmvZ17-gYCdGw","label":"Climate","url":"/sector/climate-tech","description":""},{"id":"BwYOwBdySIiuUJdJXwoDfA","label":"Deeptech","url":"/sector/deeptech ","description":""},{"id":"WJVpIcgAS8uzpLcZ4DgfcA","label":"Defence","url":"/sector/defence-tech ","description":""},{"id":"LPC3iXuTTJSlJInU5_bGrQ","label":"Fintech","url":"/sector/fintech ","description":""},{"id":"Kylc0mSKR6yH2-rTawJ5Nw","label":"Healthtech","url":"/sector/healthtech","description":""},{"id":"XxE5q1p9Qou_tGEYNnJQOA","label":"Consumer","url":"/sector/consumer","description":""},{"id":"KHEPG6yyRdCbrAL_5EnFPA","label":"All sectors","url":"/sectors","description":""}]},{"description":"","id":"XH9Mod_SR8eEp9RvoVPTPg","label":"Startups","url":"","list":[{"id":"M9MHqDQBTau9wt_P53e8FA","label":"Funding news","url":"/tag/startup-fundraise","description":"The latest funding news covering the companies raising in Europe."},{"id":"S1G9XXaeRGiaqWF8WMWqzA","label":"M\u0026A","url":"/tag/m-a","description":"The latest news on M\u0026A deals happening in European tech, as well as M\u0026A market trends and insights from companies on the lookout for acquisitions. "},{"id":"QGVGLWErT6O3m9-Sxr9Tqw","label":"Leaderboards","url":"/leaderboards","description":"Regional rankings of Europe's fastest-growing startups."},{"id":"YLc0RbImQEuEewxV6a9Jtg","label":"Rankings","url":"/rankings ","description":"Meet hundreds of rising stars and big beasts of startup ecosystems around Europe."},{"id":"OFPjXU66QxS-4fn4rQty_Q","label":"Startup life","url":"/sector/startup-life ","description":"Discover the latest news and analysis from Sifted covering what it's like to build a startup in Europe."},{"id":"QyRflmfySXaDsXXs0s3f-Q","label":"How to’s","url":"/categories/how-to","description":"Discover how (and how not) to launch and scale a startup, with advice from leading founders and operators."},{"id":"fzjyJ_esQvOF18tEuwqKiQ","label":"Sifted for Startups","url":"/sifted-for-startups","description":"Access Sifted's journalism with our free subscription for startups across Europe."}]},{"description":"","id":"aA0pGGiRSQKnAfGmZa2Ksg","label":"Investors","url":"","list":[{"id":"O6G1P0PrRpmyakSVrpPcfg","label":"VC news","url":"/tag/vc-news","description":"The latest news covering European VC, including who’s raising, new funds and people moves."},{"id":"X6Qb18b9QqOrl_4adGv__A","label":"VCs’ startups to watch","url":"/categories/investor-survey","description":"The latest investor surveys of startups to watch, according to VCs."},{"id":"Vmg5ZVKkTnmwyWTOXO47xA","label":"Investor rankings","url":"/rankings","de
80933scription":"Exclusive to Sifted Pro subscribers. Europe's most active startup backers, ranked."}]},{"description":"","id":"QQGcsnniRLagvjb4LGeAJg","label":"Events","url":"","list":[{"id":"Flk9SMzVQtaRBMetfcwGpA","label":"Summit","url":"https://summit.sifted.eu/","description":"Our flagship London event, taking place 30th September - 1st October, 2026."},{"id":"ftNMnt3JTlKw942Ac4j3_g","label":"Talks","url":"/talks","description":"Expert panellists. Free to attend. Live or on-demand."},{"id":"BDsb-wItRv-wJc4xJClceA","label":"Sifted Summit coverage","url":"https://sifted.eu/tag/sifted-summit","description":"Our journalists report on the top Sifted Summit highlights, from raw founder stories to the future of European tech."}]},{"description":"","id":"KY6l6x_dQQmB4l-P0J9izQ","label":"Leaderboards","url":"/leaderboards","list":[]},{"description":"","id":"MmbW6dPkRWmeXzCVus73bQ","label":"Onstage","url":"https://www.onstage.vc","list":[]}],"searchLabel":"Search","searchUrl":"/search","sidebarHeading":"The intelligence layer for European tech","sidebarPrimaryLinks":[{"id":"Z5Sx6p7HRHCCWx7y8RMtTw","label":"Pro","list":[{"description":" Exclusive journalism, analysis, interviews and lists — exclusive to Pro subscribers.","id":"NcdpKjFsRvCcFcdV5FW7Yw","label":"Articles","url":"/articles/pro"},{"description":"Investment-grade research on emerging sectors, powered by proprietary Sifted research.","id":"a1r7bK6IRgyE6JoixFQz0g","label":"Briefings","url":"/pro/briefings"},{"description":"Discover market maps, scouted and structured by Sifted, mapping key players across each sector.","id":"Kb_Mt6WaRUKUkP2J9F5KdA","label":"Market maps","url":"https://sifted.eu/categories/market-map"},{"description":"Track the latest funding rounds across the European tech ecosystem.","id":"NzOCSldXQtub5LHadKKohw","label":"Deals Tracker","url":"/deals-tracker"},{"description":"Monitor investor activity since 2024 in real time across Europe's startup ecosystem.","id":"HQZNNWWfRwyh9S6R4CxlvQ","label":"Investor Tracker","url":"/investor-tracker"},{"description":"Explore where capital is flowing across European tech with Sifted’s interactive data dashboard.","id":"S1suV51JSVWbS83scEIlEw","label":"Market Tracker","url":"/market-tracker"},{"description":"Track startup acquisitions and acquirers across European tech.","id":"Oy6HtmUeSmOvi3AYcyrzNA","label":"M\u0026A Tracker","url":"/ma-tracker"},{"description":"Europe's most active startup backers, ranked.","id":"R2AwuIFUQ8adodudVHFtxA","label":"Investor rankings","url":"/rankings"},{"description":"A weekly column from our cofounder and editorial director, John Thornhill.","id":"GjBp6mtERkOs25I4aJHo7A","label":"Sifted View","url":"/categories/sifted-view"},{"description":"Browse Sifted's article coverage of Europe's leading startups and scaleups.","id":"crkDNOMNTGm1sTWC4siD8Q","label":"Company search","url":"/tag/company-search"},{"description":"Find your next big opportunity in European tech.","id":"NTHiq9EXT6a3tZUMQt4pLA","label":"Subscribe","url":"/sifted-
80933pro"}],"url":"","description":""},{"id":"B-FrLLalS_OrasswiEQ9gw","label":"Latest","list":[{"description":"","id":"JCLCsRXDTkSzeT7ieoasIw","label":"News","url":"/latest"},{"description":"","id":"FFCIdK3ZTDybE98o7PqjvQ","label":"Analysis","url":"/categories/analysis"},{"description":"","id":"d5WTv8JlQF-dWoJuUlXQcw","label":"Interviews","url":"/categories/interview"},{"description":"","id":"YVfEev92REOAdwUJYIxBlQ","label":"Opinion","url":"/categories/opinion"},{"description":"","id":"HOzx3CqxTZ--gHWh5qMTzw","label":"Reports","url":"/intelligence/reports"},{"description":"","id":"eeOt8YC8Tqqqy8f5QItIhA","label":"Podcasts","url":"/podcasts"},{"description":"","id":"NUFTmDwqT6Sh4-decajYXA","label":"Collaborations","url":"/studio"},{"description":"","id":"f96xPjrWT2eFK7pAnY3FOQ","label":"Countries","url":"https://sifted.eu/countries"}],"url":"","description":""},{"id":"dFBM7fsmQvyttchN6v6TPA","label":"Sectors","list":[{"description":"","id":"Ysrb2dDLQeONnDZaeuQGqw","label":"AI","url":"/sector/artificial-intelligence"},{"description":"","id":"BlFmX_WhST2KBRmExuMVeg","label":"Climate","url":"/sector/climate-tech"},{"description":"","id":"eJv_lK2pSmq7YDiWlhrkKA","label":"Deeptech","url":"/sector/deeptech"},{"description":"","id":"Fk-Gx0DxQmWErhxZ7Ix-vQ","label":"Defence","url":"/sector/defence-tech"},{"description":"","id":"WX4suYJ4Q8SpwcRcLDedmw","label":"Fintech","url":"/sector/fintech"},{"description":"","id":"GlP4AetLTdmfL17Dvl8FNw","label":"Healthtech","url":"/sector/healthtech"},{"description":"","id":"ML7L1xqFQyye9XvTrDiHow","label":"Consumer","url":"/sector/consumer"},{"description":"","id":"aFwoBU0CRhOOySh63RxbXw","label":"All sectors","url":"/sectors"}],"url":"","description":""},{"id":"JHSfv5LMQHa3rKf9tQON_A","label":"Startups","list":[{"description":"The latest funding news covering the companies raising in Europe.","id":"SZIU_2G5SpegG_ZrJz5Rhw","label":"Funding news","url":"/tag/startup-fundraise"},{"description":"The latest news on M\u0026A deals happening in European tech, as well as M\u0026A market trends and insights from companies on the lookout for acquisitions. ","id":"BAxbai4fS6Ovvr70ukSgzw","label":"M\u0026A","url":"/tag/m-a"},{"description":"Regional rankings of Europe's fastest-growing startups.","id":"HjfUza3dRkmGbqlan2T6rA","label":"Leaderboards","url":"/leaderboards"},{"description":"Meet hundreds of rising stars and big beasts of startup ecosystems around Europe.","id":"O_Wq96T5S6yLyeqGurBhCA","label":"Rankings","url":"/rankings "},{"description":"Discover the latest news and analysis from Sifted covering what it's like to build a startup in Europe.","id":"AD88WLBUT42peQFOZeJn8Q","label":"Startup life","url":"/sector/startup-life "},{"description":"Discover how (and how not) to launch and scale a startup, with advice from leading founders and operators.","id":"GdL44RqtQCW0OgMfI8ZKPQ","label":"How to’s","url":"/categories/how-to"},{"description":"Access Sifted's journalism with our free subscription for startups across Europe.","id":"Ews07ZsAQEq5Qy2J6Zf8gg","label":"Sifted for Startups","url":"/sifted-for-startups"}],"url":"","description":""},{"id":"Sgll9sErRtuZnZi67q_e3Q","label":"Investors","list":[{"description":"The latest news covering European VC, including who’s raising, new funds and people moves.","id":"IFFUSfYPQfuMmKwJ3-7mbg","label":"VC news","url":"/tag/vc-news"},{"description":"The latest investor surveys of startups to watch, according to VCs.","id":"fDu1GfJcQfufTtYhPX_53g","label":"VCs’ startups to watch","url":"/tag/investor-survey"},{"description":"Exclusive to Sifted Pro subscribers. Europe's most active startup backers, ranked.","id":"CpIqHs9vSCGr9VuLG0rFew","label":"Investor rankings","url":"/rankings"}],"url":"/tag/investor-survey","description":"Description for this section, should be no more than a few lines"},{"id":"e1bmVsFARx-hXVdPo-3_7A","label":"Newsletters","list":[{"description":"Keep your finger on the pulse with the latest news and expert analysis on what's happening across startup Europe.","id":"XSR0AggPSougzGVxHDQ-Jg","label":"Sifted Daily","url":"/newsletters"},{"description":"Get weekly updates on the latest trends, analysis and industry gossip from across Europe’s fintech scene.","id":"EO2o7sGLRga2AkDuwKYq8A","label":"Fintech Newsletter","url":"/newsletters"},{"description":"Explore the inner workings of Europe’s hottest startups with practical resources and honest advice from leading operators.","id":"cdZk2EEpRLOIBXU-f9YxoQ","label":"Startup Life Newsletter","url":"/newsletters"},{"description":"Follow the money with a weekly snapshot of the latest trends, new funds and people moves across European VC.","id":"as4ZpHEMQcW_-6z4XxihGA","label":"Up Round Newsletter","url":"/newsletters"},{"description":"A weekly roundup of the latest dealmaking activity across Europe — exclusively for Pro subscribers.","id":"EZdC2raJQlOMA7kBxfzR5w","label":"Pro Deals Newsletter","url":"/newsletters"},{"description":"Your essential read covering the most-talked about sectors in Europe right now.","id":"dCsajOrNRTquqzbsHUDScQ","label":"AI \u0026 Deeptech Newsletter","url":"/newsletters"}],"url":"/newsletters","description":""},{"id":"VLFsRdjgTvaq4-AmhBcVCQ","label":"Events","list":[{"description":"Our flagship London event, taking place 30th September - 1st October, 2026.","id":"FfOa0FNGSzaHaYdoXpHDYg","label":"Summit","url":"https://summit.sifted.eu/"},{"description":"Expert panellists. Free to attend. Live or on-demand.","id":"E2hF7SG1TWm4qW21EawC5g","label":"Talks","url":"/talks"},{"description":"Our journalists report on the top Sifted Summit highlights, from raw founder stories to the future of European tech.","id":"SJRiQXtNSlqySwLSXmKoMA","label":"Sifted Summit coverage","url":"https://sifted.eu/tag/sifted-summit"}],"url":"","description":""},{"id":"EUbnnN4STRuoXsrI9zJ7YQ","label":"Leaderboards","list":[],"url":"/leaderboards","description":""},{"id":"f-LDjVZRTUuYXDtksSRSFA","label":"Onstage","list":[],"url":"https://www.onstage.vc","description":""}],"subscribeCtaLabel":"Subscribe","subscribeCtaLabelMobile":"Subscribe","subscribeCtaUrl":"/sifted-
80933pro","userProfileLabel":"My Sifted","userProfileUrl":"/my-sifted","logoOverwrite":null,"newslettersList":[{"id":"cEt3Cq18QmKi5rA6yzbj4Q","title":"Sifted Daily","description":"Essential European tech news and analysis, delivered daily.","frequency":"Mon - Fri","isFeatured":true,"accent":"sifted","buttonVariant":"sifted","newsletterType":"sifted","cardImage":{"url":"https://www.datocms-assets.com/60124/1757341374-sifted_daily.png","alt":null,"width":987,"height":575,"blurUpThumb":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAYAAAA1+Nx+AAACLUlEQVR42mVU0W7cQAgEdu27KlH7B/24fnJ/JFL70rO90BlY25GSaG7PNswwgK///vlLRrjs7rKNAxiy81pE3Ah8tCbaTFRV8s9DFPE6XAxoEbKEyorYhzVZEb/gbKbS/4HMSQhsn3CAZ4QIcvGhIMSJhJTgTcRoDDF87wCurtgAeN3CpP/1A0Qhhw/Z8H3jeQowXgw5qBjnpL8dAObTAZ6x+g0iK7AADdn9w3fEh+xoDdtzCwSEUQ0ry3qsnJwORrWopQBI8WRF3APFPCgIx82cAoe4cwaTPDEFrKyWF87AykEUucIJHfRLoMkT4euEsUV/KBBfBfZ0gG6w8qzeagYxHXgN2CDSpQRY/QuPHrNNbF0OeXwZ8igBJDkIOAOSqmtOhTM455AkuDzgzjlc5Efm4hmiu1fKBc+Oy0Rkc0gewTs6A0GeW+T1Hf9jxno2NJKc5XTu7sgVLBIPbk2uSgaYnIPWmRKpQVMkzipxXlACvQdvA/obVgvbjJZorlYH+yLcJIVtyCCBwIRLRFlISN1iizRXdAXpM4FB82XD2Sj03UCn3BrNAb2QsAkRtUkkxnCDJzvEAWf5mm92w71FOWBL4qf1xAqkgx+t54u2wwWJXwQStrgF3Cb5nFO+1qcAlisdgPyb9hJB9bzuxLv1uUWSDrgR7OXKVQXpmG26BSLdXALCt9jKgVJktih/iyDA3uV7qqd1y5McvHfkDKRadAlMBznkewarzlMKLPQ/1n6XsUOXbHMAAAAASUVORK5CYII="},"alreadySignedUpButtonLabel":"You're signed up!","buttonLabel":"Sign up for free"},{"id":"QMg8D8ClR-Gb-S_3smtDuQ","title":"AI \u0026 Deeptech","description":"The people, companies and trends shaping European AI and deeptech.","frequency":"Mon","isFeatured":false,"accent":"deeptech","buttonVariant":"sifted","newsletterType":"deeptech","cardImage":{"url":"https://www.datocms-assets.com/60124/1757341374-sifted_ai-and-deeptech.png","alt":null,"width":1972,"height":575,"blurUpThumb":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAHCAMAAAAlKX2EAAAB8lBMVEUvBV8vBWEwBl4wBmQxBmYxBmgxB2YyB2syCF4yCGczCWY0CG40CV80CmY0Cmw2Cl82C2Y3C2c3C3I3DG84CmY4C184C2Y5CGc5CWY5C185DnI6Cl46DXU7B2g7CF47EHQ8B148D3g9B189CGo9EHo+Bms+CHg+CHo/Bmk/Bm4/B2E/CXhAB2hACHJACW1ACXxAC3hBDHhCCGNCCn9CDXlDCWhDC3BDC3ZDDHlDDXlECntEC3pFCWZFDINGCnxGC2lGDXNGDXpHD4ZIC2lIC39IDGlID3ZID31JD3dJEH9KCodKDGtKEYlLCohLC4dLDIJLDWlLDWxLEotMCopMDIdMDWlNDodODGhODI5ODoZOD4hOD4lPC2hPDIpPDYlPDolQCmhRDIxRDpFREYlSCWhTDY9UCWpUEJRUEoxVE41WB39WCmxWD5NWEpdXCH1XCIJXE5hYCoZZCX1ZC25ZEZdbDIpcC31cDHFdD49dE5peDXNfDnRfEZJfFZ1gDX1gEpNhFp9jD35mEH5oEH5pCY9pCpJqCY1qC5ZqD31sC41sDn1sDpptDXxvDX1vEJ9wDY1xDH5xEqJyE6RzD410DYB3DoJ3EY56D4R6Eo58EIZ9EYd9E45/Eo6BEY2CEI2ED42HD46JEJCMEZKPEpSRE5WSFJZx5BvdAAAApnRSTlMAAAAACQsHDwAABhQABgAABwcYAAcABwYHAAAAHQYAAAAgAAYiACYnAAAAJQAAByolJQAsJgAHACQlIyMALyMACAAyACMACAAJAB4ANB0eJAAANR4fACEAHyUhIgAhISIAIiAmACMAIicoAAAkIwAAJAAAACYAAAAAJwAAACkAACoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFlDQNAAAAH9JREFUeNo9jDESAjEMAy+JHSAfoObxfImeRySXs2UbV0gzalaz9I5/zA1iXiq1VmiGe8ByNdEGwAmy3zBsdUBdp6wTRjRGr/SRfa293c3TA0lTZ74xnW6CS6WgoqQ+QaUHN3qFrjUFxcqhFqrlToNHp6dB94V8Hwi4oHUe3NsP1dZq3ktjDvgAAAAASUVORK5CYII="},"alreadySignedUpButtonLabel":"You're signed up!","buttonLabel":"Sign up for free"},{"id":"Dvnf7_-rTOyc0_DD4jJ51g","title":"Fintech","description":"From banking to crypto, Sifted delivers your weekly roundup of European fintech.","frequency":"Tue","isFeatured":false,"accent":"fintech","buttonVariant":"sifted","newsletterType":"fintech","cardImage":{"url":"https://www.datocms-assets.com/60124/1757341374-sifted_fintech.png","alt":null,"width":1224,"height":575,"blurUpThumb":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAMCAYAAAB4MH11AAACW0lEQVR42kWTUY7bMAxEh6RkJ9ntR3unnqWfvXrRLupYNskO5WAbgIgl2XycIdV+fP8JZEK8ImCRDKCnyAK9L2r3rrqqqELEPXMb6X+2cN/yxN90bBLYNXF0hTdDdAOaIk3R9vN8AWJClP+NgEjhro7QMBeFKQF8w5E7AT7CsROwEzAIGMx5gAAkQhLgM5KAj32vbMAExAXwUsCAnlTw0UWXTwXIcWTgGSe2qh6lIC8Aq/Zg5dGYz5hf0H49t/+A8wIYlfSYACyi2UR3KwEQBCscBFTlBXgS8NQCyLQoKrETQKswAaMUMNtZ4ay5AJdN7MOEdDWYyCegFOx8ek5A+Q+MJvycgKqe1qEgBfjtx6WAnoIGyAvSolQUgC9VD6QcugAnu1MKJmTak5f/wgZTDSqqD9WDjUpyLpJrNltpE5vGV5mcSl8qlP8FqPadVDCqcq4KMnjGmmkWz/ktZugqkks7bu1rRngeMphnkBzlhpVK9oKAhY9LDV7tswznej9Y+OB6cPMoexjBHmTXjm7v0u0hpkvL9/VbegF85NDBNESp43CBZ6e4RQihti6X8DlJNHJziSeHZqRxwLtZru2Gtb/J0t7Q24Oz3Zu+374UII5zoAC7HmjnJyAj10xZmbtfw12jnqV0pSGbWO6s1HXhrVraSsBd1v6Q3u4yAY/bynvjcpiEse11oVRdmivHtgkBEnJjYiqQu
80933j1sfU04sbyLNb3a9KQCkbU1AowAJUBgJo0uWTrf5JLfKPuh1fC6tvyVeKNFDJ7PwUO12mYIQca9pkzI495mMDm0nk3zHyHIl2kLe3KyAAAAAElFTkSuQmCC"},"alreadySignedUpButtonLabel":"You're signed up!","buttonLabel":"Sign up for free"},{"id":"WMhoUcyWQQO47Ehe5pguNA","title":"Startup Life","description":"Éanna Kelly brings you founder and operator advice on how (and how not) to run a startup.","frequency":"Wed","isFeatured":false,"accent":"startuplife","buttonVariant":"sifted","newsletterType":"startuplife","cardImage":{"url":"https://www.datocms-assets.com/60124/1757341374-sifted_startuplife.png","alt":null,"width":1833,"height":575,"blurUpThumb":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAICAMAAADUf89RAAACNFBMVEVSGzxSHD9SHUFTGjpTHUJTHkJTHkNUGz9UHEFVGjhVGj1XGjtXGz1XHEBXHUJYHDdYHkRZGjlZHkVaGjpaG0FaHUNbGj9cGzhcHjhdGT1dGzpfGjxgHThgIDlhHTpjGjxkHjtkIzplIDlmHDxnHjlnHztnIDxnID1nIT9nJTtoHjdoHjpoIDxoITxoIT5pHT1pHjhpIztpJjxqHjVrHTdsHz5sJTxtHzRtHz5tJj1uHjZxITVyHzZ0Hjx0Hz91HTl1IEJ1IzZ2HTd2ITd2IUR3IkV4IkV5HjZ5H0J5IUR5JDh5Jjd6HkB8HT58JTl8KDh9IDZ+Jjl+KTl/HT2BIzeCHj2FHz2FJjmHIzWHJDeHJTmHJTqHJjqIID2IIjOIIzaIJDiIKDqJIzSKIT6KIjGKKTuMIj6MIzKNIzCPJDKRJTGSJTKVJzKWKDOZKjOaKjSbITabIjmbIz2cLDSdITSdJUCdLDWeJkKeJzSeKDaeKTeeLTWfIjOfJjKfJzOfJ0SfKDWfKTefKTifLTagJTCgJ0ShJkOhJzGiJS6iJUGjI0CjJDOjJzClIz6lJi6mKC+nIj2nJzSoKC6qIzyqKjCrKjWsKi+tJDyuLDGvLDewJTywLTCwLTeyJj2yLjKzLjG0Jz21JTe1MDK1MDO2JDS2Jzu3JDK3MTS4KD65KkG6JTG7K0O8KkO9KkK+JzG+KUG/Jz/BJj3CKjLDJjzGJzvGLTPJJzvJLzTLMDXMKTzOKjzPKjy0cMFIAAAAvHRSTlMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANrYl1QAAACYSURBVHjaJY5RbsMwDEMjmfaS/OQSOcGu3/8eoHfY/4CtaGxL4jRUoH5I4VG4kR4MvuVWFEBRwZe7Wy6d4wonsR4tI9x9dMagSZoW1FI3lB14+Pg1Cw/xJRLH1mo7asGzj7B+0cU0cSwRIt/rhtOt9xg2RceS9W0D2p4dnz89cqbLlCX+SVDVuuK0mec+XypykfUD+VNF+QNhc3KKa8EBVgAAAABJRU5ErkJggg=="},"alreadySignedUpButtonLabel":"You're signed up!","buttonLabel":"Sign up for free"},{"id":"OnnqbFONSmqW6RQNGXID0Q","title":"Up Round","description":"What the moneymakers are up to. Anne Sraders delivers your weekly snapshot of European VC.","frequency":"Fri","isFeatured":false,"accent":"upround","buttonVariant":"sifted","newsletterType":"upround","cardImage":{"url":"https://www.datocms-assets.com/60124/1757341374-sifted_upround.png","alt":null,"width":1410,"height":575,"blurUpThumb":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAKCAMAAACZt25aAAACylBMVEUkEHIlDmwlEnclFHwmDWYmEHYmEnwmFX4nD3AnFYIoDGEoFoYoF4gpDmspEHEqDmsqEncqFHsqFX0rDV0rDWUrD2ctE4AtFYYtF4wuDWAuEnsuGZEvDlovEGQvG5UvHJgxD24xEHMxEngxE3cyDlwyD2kyEWIyE30zEFkzEGYzEn4zE4QzFYAzFYkzFoI0DmI0D2c0EGw0EXk0E3Q0F440GI80GZU1Dl41EWM1EnA1EnQ1EnY1E2E1E3M1FHo1Fn81F4o1GIM1GJI1HJs2EFo2FHU2GYU2GZQ2HqE3D1s3EW43Elg3EmI3E3M3FXI3FY43FpM3F4Y3GJk3IKU3Iac4FGE4FIk4Gp85EFk5E2E5FGE5FHE5FYU5FnE5G5k5HJ85HKI6EWk6Elg6E1c6F4M6F5c6GJ06GZQ6GqM6HaU6H6U7Elg7E1c7FnA7FoI7FpI7Hag7Ias8FnA8F448GY88Hqw8I688JLE9EGM9EWg9Emw9GIE9H68+EF8+EmU+E28+FHA+F4A+Gow/EFw/FFc/GIs/GX8/GYBAEVlAGX9AGn9BGYlBG4pCE1hCFVZDFGJDGYhDGohDG4lDG41EFFdEFlZEGIJEG4hEHIhEHZFEHpRFFlZGF3xIFmBJF3dMFGlMFG1MFXBMFnNMF3RNFGVNGV9OFWJOGHNQFmBQGl9RH5ZRIZxRIqBRI6JSGF9SHZBTGl5TGnBTG15UG15UHIpXHYVYHW5ZIp9ZJKVZJqlZJ6taIZlcGXdcGnpcHoFcIJNdGXRdGn1dG35dH21eGXFfGm5gII5hHG1hIH5hIW1jHmxkIWxkIYplIGxlIWxnInxqI4drHYNrHoZrHohrH4lsHYBsJXttHn1vIHtwJoVwJ3txIXlzJHlzJ3p0IIp0II10IY90IZB0Jnl0J3p1IId1KIR2IYR4I4N5KoN6JYJ8J4F8K4N9KYJ9K4IKziwCAAAA7nRSTlMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3vAnKAAAAMxJREFUeNoVj01OwzAQhRl7xg6pSpGLkGDJ/a/BIVhUAiFEu4CWJI1jj+1horf8nt4PfoiIM7Cq1TrFklMpAICjAjRgwUGuJaU5CvMKfqUIIhhrobY88hxbztYBrlFCxjhjJZZlOH+eLuojPAgrcETe5zR/v71fmcVo1OtSFpEu7Pr+Jh4PU4y5KkA8NXXIPOwetsB/TcsQwCp54iE16W7DXSDuwteFdKwuwZcYuYl3YU8WnqfHn/MVtrQB3CdemvQYnNMn5O/HCBtP8A+KgXm2gzbOngAAAABJRU5ErkJggg=="},"alreadySignedUpButtonLabel":"You're signed up!","buttonLabel":"Sign up for free"},{"id":"UHRAOW1iQEWx6JN67Z9wgQ","title":"Pro Deals","description":"A roundup of the latest dealmaking activity across Europe. ","frequency":"Mon","isFeatured":false,"accent":"pro","buttonVariant":"pro","newsletterType":"pro","cardImage":{"url":"https://www.datocms-assets.com/60124/1757341374-sifted_prodeals.png","alt":null,"width":1712,"height":576,"blurUpThumb":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAJCAMAAAAfIxz0AAABoVBMVEULBsgLB8cLB8gMCMQMCMUMCMUNCcINCcMNCcQOCsEOCsIPC74PC78PC78PC78PC8AQDL0QDL0QDL0RDbsRDbsRDbsSDrgSDrgSDrkSDrkSDroSDroTD7YTD7YTD7cTD7cTD7cTD7cTD7gTD7gUD7YUELQUELQUELQUELQUELUUELUUELUUELUUELUUELUUELUUELYUELYUELYUELYUELYVEbIVEbIVEbIVEbIVEbIVEbMVEbMVEbMVEbMVEbMVEbMVEbMVEbQVEbQVEbQVEbQVEbQVEbQWErAWErAWErAWErEWErEWErEWErEWErEWErEWErEWErIWErIWErIWErIWErIXE64XE64XE64XE64XE64XE68XE68XE68XE68XE68XE68XE68XE7AXE7AXE7AXE7AXE7AXE7AYE64YFKwYFKwYFKwYFK0YFK0YFK0YFK0YFK0YFK0YFK0YFK4YFK4YFK4ZFKwZFaoZFa
80933oZFasZFasZFasZFasZFasZFasZFasZFawZFawZFawZFawaFaoaFqgaFqkaFqkaFqoaFqobF6hT73rjAAAAi3RSTlMVIRoQDCsiGDQsOg8HMz0CGjY7JDU2CDAALwAsHiAAEycoAC8AABsmKQAXGBwgJikAHiEjLw4PFSEiAAQdICEkKgAaGx4oKgAEFwACEBUYGikAEhQcHwAKCw8dAAgNEBIVJAAEBhMXGAwADB0ABAgKExweABocCAANAAECAwQHCgAFChYAAAADAAEAZ9m0RQAAAMlJREFUeNoNzMtOg0AUANA7wx2GNhIesThGXPoz/r8JTZdtE2xtBWEmzItrd2d18BNi65vVquBA/sj+d7iSc8AR4tviXdhZn082nxQAXOs7ID4A77axxQoF8HVjvSqH6oQoba/62mQMSIAveB6TSvUfErvQ7qun24vQRSAGsJaT6it5xnH92pjDqxmev2sfiW9vyUlkj0pHcnN2nE3X6MWXY8rSPzR3Qk3oE2fG43aedHtmnnVpuheEgTukyBhbSLjBMp4OkvIL/QPQ9m7vxrF36gAAAABJRU5ErkJggg=="},"alreadySignedUpButtonLabel":"You're signed up!","buttonLabel":"Subscribe now"}],"logo":{"overwriteUrl":null,"alt":null,"width":null,"height":null},"calloutList":[{"id":"EwUc2RL1Qm6truN69Rwcng","title":"Sifted Daily newsletter","description":"Stay one step ahead with news and experts analysis on what’s happening across startup Europe.","frequency":"Weekdays","accent":"sifted","buttonVariant":"sifted","newsletterType":"sifted","cardImage":{"url":"https://www.datocms-assets.com/60124/1757341374-sifted_daily.png","alt":null,"width":987,"height":575,"blurUpThumb":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAOCAYAAAA1+Nx+AAACLUlEQVR42mVU0W7cQAgEdu27KlH7B/24fnJ/JFL70rO90BlY25GSaG7PNswwgK///vlLRrjs7rKNAxiy81pE3Ah8tCbaTFRV8s9DFPE6XAxoEbKEyorYhzVZEb/gbKbS/4HMSQhsn3CAZ4QIcvGhIMSJhJTgTcRoDDF87wCurtgAeN3CpP/1A0Qhhw/Z8H3jeQowXgw5qBjnpL8dAObTAZ6x+g0iK7AADdn9w3fEh+xoDdtzCwSEUQ0ry3qsnJwORrWopQBI8WRF3APFPCgIx82cAoe4cwaTPDEFrKyWF87AykEUucIJHfRLoMkT4euEsUV/KBBfBfZ0gG6w8qzeagYxHXgN2CDSpQRY/QuPHrNNbF0OeXwZ8igBJDkIOAOSqmtOhTM455AkuDzgzjlc5Efm4hmiu1fKBc+Oy0Rkc0gewTs6A0GeW+T1Hf9jxno2NJKc5XTu7sgVLBIPbk2uSgaYnIPWmRKpQVMkzipxXlACvQdvA/obVgvbjJZorlYH+yLcJIVtyCCBwIRLRFlISN1iizRXdAXpM4FB82XD2Sj03UCn3BrNAb2QsAkRtUkkxnCDJzvEAWf5mm92w71FOWBL4qf1xAqkgx+t54u2wwWJXwQStrgF3Cb5nFO+1qcAlisdgPyb9hJB9bzuxLv1uUWSDrgR7OXKVQXpmG26BSLdXALCt9jKgVJktih/iyDA3uV7qqd1y5McvHfkDKRadAlMBznkewarzlMKLPQ/1n6XsUOXbHMAAAAASUVORK5CYII="},"alreadySignedUpButtonLabel":"You're signed up!","buttonLabel":"Sign up for free"},{"id":"dBZXJGJ9SQaryvvZfoEBig","title":"Startup Life  newsletter","description":"Explore the inner workings of Europe’s hottest startups with insights, tips and tricks from leading operators.","frequency":"Wed","accent":"startuplife","buttonVariant":"sifted","newsletterType":"startuplife","cardImage":{"url":"https://www.datocms-assets.com/60124/1757341374-sifted_startuplife.png","alt":null,"width":1833,"height":575,"blurUpThumb":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAICAMAAADUf89RAAACNFBMVEVSGzxSHD9SHUFTGjpTHUJTHkJTHkNUGz9UHEFVGjhVGj1XGjtXGz1XHEBXHUJYHDdYHkRZGjlZHkVaGjpaG0FaHUNbGj9cGzhcHjhdGT1dGzpfGjxgHThgIDlhHTpjGjxkHjtkIzplIDlmHDxnHjlnHztnIDxnID1nIT9nJTtoHjdoHjpoIDxoITxoIT5pHT1pHjhpIztpJjxqHjVrHTdsHz5sJTxtHzRtHz5tJj1uHjZxITVyHzZ0Hjx0Hz91HTl1IEJ1IzZ2HTd2ITd2IUR3IkV4IkV5HjZ5H0J5IUR5JDh5Jjd6HkB8HT58JTl8KDh9IDZ+Jjl+KTl/HT2BIzeCHj2FHz2FJjmHIzWHJDeHJTmHJTqHJjqIID2IIjOIIzaIJDiIKDqJIzSKIT6KIjGKKTuMIj6MIzKNIzCPJDKRJTGSJTKVJzKWKDOZKjOaKjSbITabIjmbIz2cLDSdITSdJUCdLDWeJkKeJzSeKDaeKTeeLTWfIjOfJjKfJzOfJ0SfKDWfKTefKTifLTagJTCgJ0ShJkOhJzGiJS6iJUGjI0CjJDOjJzClIz6lJi6mKC+nIj2nJzSoKC6qIzyqKjCrKjWsKi+tJDyuLDGvLDewJTywLTCwLTeyJj2yLjKzLjG0Jz21JTe1MDK1MDO2JDS2Jzu3JDK3MTS4KD65KkG6JTG7K0O8KkO9KkK+JzG+KUG/Jz/BJj3CKjLDJjzGJzvGLTPJJzvJLzTLMDXMKTzOKjzPKjy0cMFIAAAAvHRSTlMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANrYl1QAAACYSURBVHjaJY5RbsMwDEMjmfaS/OQSOcGu3/8eoHfY/4CtaGxL4jRUoH5I4VG4kR4MvuVWFEBRwZe7Wy6d4wonsR4tI9x9dMagSZoW1FI3lB14+Pg1Cw/xJRLH1mo7asGzj7B+0cU0cSwRIt/rhtOt9xg2RceS9W0D2p4dnz89cqbLlCX+SVDVuuK0mec+XypykfUD+VNF+QNhc3KKa8EBVgAAAABJRU5ErkJggg=="},"alreadySignedUpButtonLabel":"You're signed up!","buttonLabel":"Sign up for free"},{"id":"RVoh3QwxRo28djOt3EdhBA","title":"Up Round  newsletter","description":"Your weekly snapshot of European VC, covering the latest funding trends, new VC funds, people moves and gossip.","frequency":"Fri","accent":"upround","buttonVariant":"sifted","newsletterType":"upround","cardImage":{"url":"https://www.datocms-assets.com/60124/1757341374-sifted_upround.png","alt":null,"width":1410,"height":575,"blurUpThumb":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAKCAMAAACZt25aAAACylBMVEUkEHIlDmwlEnclFHwmDWYmEHYmEnwmFX4nD3AnFYIoDGEoFoYoF4gpDmspEHEqDmsqEncqFHsqFX0rDV0rDWUrD2ctE4AtFYYtF4wuDWAuEnsuGZEvDlovEGQvG5UvHJgxD24xEHMxEngxE3cyDlwyD2kyEWIyE30zEFkzEGYzEn4zE4QzFYAzFYkzFoI0DmI0D2c0EGw0EXk0E3Q0F440GI80GZU1Dl41EWM1EnA1EnQ1EnY1E2E1E3M1FHo1Fn81F4o1GIM1GJI1HJs2EFo2FHU2GYU2GZQ2HqE3D1s3EW43Elg3EmI3E3M3FXI3FY43FpM3F4Y3GJk3IKU3Iac4FGE4FIk4Gp85EFk5E2E5FGE5FHE5FYU5FnE5G5k5HJ85HKI6EWk6Elg6E1c6F4M6F5c6GJ06GZQ6GqM6HaU6H6U7Elg7E1c7FnA7FoI7FpI7Hag7Ias8FnA8F448GY88Hqw8I688JLE9EGM9EWg9Emw9GIE9H68+EF8+EmU+E28+FHA+F4A+Gow/EFw/FFc/GIs/GX8/GYBAEVlAGX9AGn9BGYlBG4pCE1hCFVZDFGJDGYhDGohDG4lDG41EFFdEFlZEGIJEG4hEHIhEHZFEHpRFFlZGF3xIFmBJF3dMFGlMFG1MFXBMFnNMF3RNFGVNGV9OFWJOGHNQFmBQGl9RH5ZRIZxRIqBRI6JSGF9SHZBTGl5TGnBTG15UG15UHIpXHYVYHW5ZIp9ZJKVZJqlZJ6taIZlcGXdcGnpcHoFcIJNdGXRdGn1dG35dH21eGXFfGm5gII5hHG1hIH5hIW1jHmxkIWxkIYplIGxlIWxnInxqI4drHYNrHoZrHohrH4lsHYBsJXttHn1vIHtwJoVwJ3txIXlzJHlzJ3p0IIp0II10IY90IZB0Jnl0J3p1IId1KIR2IYR4I4N5KoN6JYJ8J4F8K4N9KYJ9K4IKziwCAAAA7nRSTlMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3vAnKAAAAMxJREFUeNoVj01OwzAQhRl7xg6pSpGLkGDJ/a/BIVhUAiFEu4CWJI1jj+1horf8nt4PfoiIM7Cq1TrFklMpAICjAjRgwUGuJaU5CvMKfqUIIhhrobY88hxbztYBrlFCxjhjJZZlOH+eLuojPAgrcETe5zR/v71fmcVo1OtSFpEu7Pr+Jh4PU4y5KkA8NXXIPOwetsB/TcsQwCp54iE16W7DXSDuwteFdKwuwZcYuYl3YU8WnqfHn/MVtrQB3CdemvQYnNMn5O/HCBtP8A+KgXm2gzbOngAAAABJRU5ErkJggg=="},"alreadySignedUpButtonLabel":"You're signed up!","buttonLabel":"Sign up for free"},{"id":"cIXrnhL2SzalYFIe13pVDw","title":"Fintech  newsletter","description":"Your weekly update on the latest trends across (neo)banking, buy n
80933ow pay later, payments and the fintech startup scene.","frequency":"Tue","accent":"fintech","buttonVariant":"sifted","newsletterType":"fintech","cardImage":{"url":"https://www.datocms-assets.com/60124/1757341374-sifted_fintech.png","alt":null,"width":1224,"height":575,"blurUpThumb":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAMCAYAAAB4MH11AAACW0lEQVR42kWTUY7bMAxEh6RkJ9ntR3unnqWfvXrRLupYNskO5WAbgIgl2XycIdV+fP8JZEK8ImCRDKCnyAK9L2r3rrqqqELEPXMb6X+2cN/yxN90bBLYNXF0hTdDdAOaIk3R9vN8AWJClP+NgEjhro7QMBeFKQF8w5E7AT7CsROwEzAIGMx5gAAkQhLgM5KAj32vbMAExAXwUsCAnlTw0UWXTwXIcWTgGSe2qh6lIC8Aq/Zg5dGYz5hf0H49t/+A8wIYlfSYACyi2UR3KwEQBCscBFTlBXgS8NQCyLQoKrETQKswAaMUMNtZ4ay5AJdN7MOEdDWYyCegFOx8ek5A+Q+MJvycgKqe1qEgBfjtx6WAnoIGyAvSolQUgC9VD6QcugAnu1MKJmTak5f/wgZTDSqqD9WDjUpyLpJrNltpE5vGV5mcSl8qlP8FqPadVDCqcq4KMnjGmmkWz/ktZugqkks7bu1rRngeMphnkBzlhpVK9oKAhY9LDV7tswznej9Y+OB6cPMoexjBHmTXjm7v0u0hpkvL9/VbegF85NDBNESp43CBZ6e4RQihti6X8DlJNHJziSeHZqRxwLtZru2Gtb/J0t7Q24Oz3Zu+374UII5zoAC7HmjnJyAj10xZmbtfw12jnqV0pSGbWO6s1HXhrVraSsBd1v6Q3u4yAY/bynvjcpiEse11oVRdmivHtgkBEnJjYiqQuj1sfU04sbyLNb3a9KQCkbU1AowAJUBgJo0uWTrf5JLfKPuh1fC6tvyVeKNFDJ7PwUO12mYIQca9pkzI495mMDm0nk3zHyHIl2kLe3KyAAAAAElFTkSuQmCC"},"alreadySignedUpButtonLabel":"You're signed up!","buttonLabel":"Sign up for free"},{"id":"IHgaH9SNRE-11Va6c0AkFA","title":"Sifted Pro","description":"Investment-grade research on the early stage startup world.","frequency":"Mon","accent":"pro","buttonVariant":"pro","newsletterType":"pro","cardImage":{"url":"https://www.datocms-assets.com/60124/1757341374-sifted_prodeals.png","alt":null,"width":1712,"height":576,"blurUpThumb":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAJCAMAAAAfIxz0AAABoVBMVEULBsgLB8cLB8gMCMQMCMUMCMUNCcINCcMNCcQOCsEOCsIPC74PC78PC78PC78PC8AQDL0QDL0QDL0RDbsRDbsRDbsSDrgSDrgSDrkSDrkSDroSDroTD7YTD7YTD7cTD7cTD7cTD7cTD7gTD7gUD7YUELQUELQUELQUELQUELUUELUUELUUELUUELUUELUUELUUELYUELYUELYUELYUELYVEbIVEbIVEbIVEbIVEbIVEbMVEbMVEbMVEbMVEbMVEbMVEbMVEbQVEbQVEbQVEbQVEbQVEbQWErAWErAWErAWErEWErEWErEWErEWErEWErEWErEWErIWErIWErIWErIWErIXE64XE64XE64XE64XE64XE68XE68XE68XE68XE68XE68XE68XE7AXE7AXE7AXE7AXE7AXE7AYE64YFKwYFKwYFKwYFK0YFK0YFK0YFK0YFK0YFK0YFK0YFK4YFK4YFK4ZFKwZFaoZFa
80933oZFasZFasZFasZFasZFasZFasZFasZFawZFawZFawZFawaFaoaFqgaFqkaFqkaFqoaFqobF6hT73rjAAAAi3RSTlMVIRoQDCsiGDQsOg8HMz0CGjY7JDU2CDAALwAsHiAAEycoAC8AABsmKQAXGBwgJikAHiEjLw4PFSEiAAQdICEkKgAaGx4oKgAEFwACEBUYGikAEhQcHwAKCw8dAAgNEBIVJAAEBhMXGAwADB0ABAgKExweABocCAANAAECAwQHCgAFChYAAAADAAEAZ9m0RQAAAMlJREFUeNoNzMtOg0AUANA7wx2GNhIesThGXPoz/r8JTZdtE2xtBWEmzItrd2d18BNi65vVquBA/sj+d7iSc8AR4tviXdhZn082nxQAXOs7ID4A77axxQoF8HVjvSqH6oQoba/62mQMSIAveB6TSvUfErvQ7qun24vQRSAGsJaT6it5xnH92pjDqxmev2sfiW9vyUlkj0pHcnN2nE3X6MWXY8rSPzR3Qk3oE2fG43aedHtmnnVpuheEgTukyBhbSLjBMp4OkvIL/QPQ9m7vxrF36gAAAABJRU5ErkJggg=="},"alreadySignedUpButtonLabel":"You're signed up!","buttonLabel":"Get starter"},{"id":"RP5dtZDNSoex8a7ZzbH5Kg","title":"Deeptech \u0026 AI","description":"The people, companies and trends shaping European AI and deeptech.","frequency":"Mon","accent":"deeptech","buttonVariant":"sifted","newsletterType":"deeptech","cardImage":{"url":"https://www.datocms-assets.com/60124/1757341374-sifted_ai-and-deeptech.png","alt":null,"width":1972,"height":575,"blurUpThumb":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAHCAMAAAAlKX2EAAAB8lBMVEUvBV8vBWEwBl4wBmQxBmYxBmgxB2YyB2syCF4yCGczCWY0CG40CV80CmY0Cmw2Cl82C2Y3C2c3C3I3DG84CmY4C184C2Y5CGc5CWY5C185DnI6Cl46DXU7B2g7CF47EHQ8B148D3g9B189CGo9EHo+Bms+CHg+CHo/Bmk/Bm4/B2E/CXhAB2hACHJACW1ACXxAC3hBDHhCCGNCCn9CDXlDCWhDC3BDC3ZDDHlDDXlECntEC3pFCWZFDINGCnxGC2lGDXNGDXpHD4ZIC2lIC39IDGlID3ZID31JD3dJEH9KCodKDGtKEYlLCohLC4dLDIJLDWlLDWxLEotMCopMDIdMDWlNDodODGhODI5ODoZOD4hOD4lPC2hPDIpPDYlPDolQCmhRDIxRDpFREYlSCWhTDY9UCWpUEJRUEoxVE41WB39WCmxWD5NWEpdXCH1XCIJXE5hYCoZZCX1ZC25ZEZdbDIpcC31cDHFdD49dE5peDXNfDnRfEZJfFZ1gDX1gEpNhFp9jD35mEH5oEH5pCY9pCpJqCY1qC5ZqD31sC41sDn1sDpptDXxvDX1vEJ9wDY1xDH5xEqJyE6RzD410DYB3DoJ3EY56D4R6Eo58EIZ9EYd9E45/Eo6BEY2CEI2ED42HD46JEJCMEZKPEpSRE5WSFJZx5BvdAAAApnRSTlMAAAAACQsHDwAABhQABgAABwcYAAcABwYHAAAAHQYAAAAgAAYiACYnAAAAJQAAByolJQAsJgAHACQlIyMALyMACAAyACMACAAJAB4ANB0eJAAANR4fACEAHyUhIgAhISIAIiAmACMAIicoAAAkIwAAJAAAACYAAAAAJwAAACkAACoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFlDQNAAAAH9JREFUeNo9jDESAjEMAy+JHSAfoObxfImeRySXs2UbV0gzalaz9I5/zA1iXiq1VmiGe8ByNdEGwAmy3zBsdUBdp6wTRjRGr/SRfa293c3TA0lTZ74xnW6CS6WgoqQ+QaUHN3qFrjUFxcqhFqrlToNHp6dB94V8Hwi4oHUe3NsP1dZq3ktjDvgAAAAASUVORK5CYII="},"alreadySignedUpButtonLabel":"You're signed up!","buttonLabel":"Sign up for free"}]}},"seo":{"description":"Sifted covers European tech, startups and venture capital with independent news, analysis, data and insights for founders, investors and operators.","title":"Sifted: European Tech News, Startups \u0026 Venture Capital","image":{"url":"https://www.datocms-assets.com/60124/1687337580-sifted-on-pink.png"}},"previewMode":false,"_sentryTraceData":"601bfa6858474de59cadcce775695032-bc3947d7c8806c03-0","_sentryBaggage":"sentry-environment=production,sentry-release=CxS59Unx8FuYsEbjZKcoC,sentry-public_key=2c16bf9f652a4db89abb8fc5509e02e9,sentry-trace_id=601bfa6858474de59cadcce775695032,sentry-sample_rate=0.01,sentry-transaction=%2F,sentry-sampled=false"},"__N_SSP":true},"page":"/","query":{},"buildId":"CxS59Unx8FuYsEbjZKcoC","runtimeConfig":{"datoCmsBase":"https://graphql.datocms.com/","subscriptionUtilsUrl":"https://sifted-subscription-utils.herokuapp.com","mixpanelToken":"516258ca7de16bfdb47d0ebf1beedce9","datadogAppID":"38fa5d45-c9de-4e91-a2a6-0240b963fc35","datadogAPIToken":"pubac09d69c6e70730d47fac08cf69c795b","datadogEnvironment":"prod","jiscOAuthEnabled":"\"true\""},"isFallback":false,"isExperimentalCompile":false,"gssp":true,"scriptLoader":[]}</script>
80933<script type="text/javascript">
80934	if (!window.Zephr) window.Zephr = {};
80935	window.Zephr.accessDetails = {"isAuthenticated":false,"accessDecisions":{},"entitlements":{},"credits":{},"meters":{},"trials":{},"timeTrials":{},"trialTrackingDetails":[],"testGroups":{"08e24f76-a36f-46f9-97bb-a475ab364ce2":"B"},"activeProducts":[]};
80936	</script>
80936</body></html>

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.