{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/2rGRJB3XnYRGgg4WH9RB/KVATATujg9JNfY2xa41F/siteMetadata.js"],
  "sourcesContent": ["// Generated by Framer (ee31e22)\nexport default function metadata(params,activeLocale){return{customHTMLHeadEnd:'<!-- Plugin: ced618 --> <script>\\n    (function() {\\n      // Initialize shopXtools with version first\\n      window.shopXtools = window.shopXtools || {};\\n      \\n      window.shopXtools.version = \"1.2\";\\n      \\n      const fcConfigs = {\\n        storefrontDomain: \"framer-template.myshopify.com\",\\n        storefrontAccessToken: \"e8de11833c452f624924494a830a6204\",\\n      };\\n    \\n      const CURRENCIES = {\"AED\":\"\u062F.\u0625\",\"AFN\":\"Af\",\"ALL\":\"L\",\"AMD\":\"\u058F\",\"ANG\":\"\u0192\",\"AOA\":\"Kz\",\"ARS\":\"$\",\"AUD\":\"$\",\"AWG\":\"\u0192\",\"AZN\":\"\u20BC\",\"BAM\":\"KM\",\"BBD\":\"$\",\"BDT\":\"\u09F3\",\"BGN\":\"\u043B\u0432\",\"BHD\":\"\u062F.\u0628\",\"BIF\":\"FBu\",\"BMD\":\"$\",\"BND\":\"$\",\"BOB\":\"Bs.\",\"BRL\":\"R$\",\"BSD\":\"$\",\"BTN\":\"Nu.\",\"BWP\":\"P\",\"BYN\":\"Br\",\"BZD\":\"BZ$\",\"CAD\":\"$\",\"CDF\":\"FC\",\"CHF\":\"Fr\",\"CLP\":\"$\",\"CNY\":\"\\xa5\",\"COP\":\"$\",\"CRC\":\"\u20A1\",\"CVE\":\"$\",\"CZK\":\"K\u010D\",\"DJF\":\"Fdj\",\"DKK\":\"kr\",\"DOP\":\"RD$\",\"DZD\":\"\u062F.\u062C\",\"EGP\":\"\\xa3\",\"ERN\":\"Nfk\",\"ETB\":\"Br\",\"EUR\":\"\u20AC\",\"FJD\":\"$\",\"FKP\":\"\\xa3\",\"GBP\":\"\\xa3\",\"GEL\":\"\u20BE\",\"GHS\":\"\u20B5\",\"GIP\":\"\\xa3\",\"GMD\":\"D\",\"GNF\":\"FG\",\"GTQ\":\"Q\",\"GYD\":\"$\",\"HKD\":\"$\",\"HNL\":\"L\",\"HRK\":\"kn\",\"HTG\":\"G\",\"HUF\":\"Ft\",\"IDR\":\"Rp\",\"ILS\":\"\u20AA\",\"INR\":\"\u20B9\",\"IQD\":\"\u0639.\u062F\",\"IRR\":\"\uFDFC\",\"ISK\":\"kr\",\"JEP\":\"\\xa3\",\"JMD\":\"J$\",\"JOD\":\"\u062F.\u0627\",\"JPY\":\"\\xa5\",\"KES\":\"KSh\",\"KGS\":\"\u0441\u043E\u043C\",\"KHR\":\"\u17DB\",\"KID\":\"$\",\"KMF\":\"CF\",\"KRW\":\"\u20A9\",\"KWD\":\"\u062F.\u0643\",\"KYD\":\"$\",\"KZT\":\"\u20B8\",\"LAK\":\"\u20AD\",\"LBP\":\"\\xa3\",\"LKR\":\"\u0DBB\u0DD4\",\"LRD\":\"$\",\"LSL\":\"L\",\"LTL\":\"Lt\",\"LVL\":\"Ls\",\"LYD\":\"\u0644.\u062F\",\"MAD\":\"\u062F.\u0645.\",\"MDL\":\"MDL\",\"MGA\":\"Ar\",\"MKD\":\"\u0434\u0435\u043D\",\"MMK\":\"Ks\",\"MNT\":\"\u20AE\",\"MOP\":\"MOP$\",\"MRU\":\"UM\",\"MUR\":\"\u20A8\",\"MVR\":\"\u0783\",\"MWK\":\"MK\",\"MXN\":\"$\",\"MYR\":\"RM\",\"MZN\":\"MT\",\"NAD\":\"$\",\"NGN\":\"\u20A6\",\"NIO\":\"C$\",\"NOK\":\"kr\",\"NPR\":\"\u0930\u0942\",\"NZD\":\"$\",\"OMR\":\"\u0631.\u0639.\",\"PAB\":\"B/.\",\"PEN\":\"S/.\",\"PGK\":\"K\",\"PHP\":\"\u20B1\",\"PKR\":\"\u20A8\",\"PLN\":\"z\u0142\",\"PYG\":\"\u20B2\",\"QAR\":\"\u0631.\u0642\",\"RON\":\"lei\",\"RSD\":\"\u0414\u0438\u043D.\",\"RUB\":\"\u20BD\",\"RWF\":\"FRw\",\"SAR\":\"\u0631.\u0633\",\"SBD\":\"$\",\"SCR\":\"\u20A8\",\"SDG\":\"\u062C.\u0633.\",\"SEK\":\"kr\",\"SGD\":\"$\",\"SHP\":\"\\xa3\",\"SLL\":\"Le\",\"SOS\":\"Sh\",\"SRD\":\"$\",\"SSP\":\"\\xa3\",\"STN\":\"Db\",\"SYP\":\"\\xa3\",\"SZL\":\"E\",\"THB\":\"\u0E3F\",\"TJS\":\"\u0405\u041C\",\"TMT\":\"T\",\"TND\":\"\u062F.\u062A\",\"TOP\":\"T$\",\"TRY\":\"\u20BA\",\"TTD\":\"TT$\",\"TWD\":\"NT$\",\"TZS\":\"TSh\",\"UAH\":\"\u20B4\",\"UGX\":\"USh\",\"USD\":\"$\",\"UYU\":\"$\",\"UZS\":\"so\\'m\",\"VED\":\"Bs.S.\",\"VES\":\"Bs.\",\"VND\":\"\u20AB\",\"VUV\":\"VT\",\"WST\":\"T\",\"XAF\":\"FCFA\",\"XCD\":\"$\",\"XOF\":\"CFA\",\"XPF\":\"\u20A3\",\"XXX\":\"\",\"YER\":\"\uFDFC\",\"ZAR\":\"R\",\"ZMW\":\"ZK\",\"BYR\":\"Br\",\"STD\":\"Db\",\"VEF\":\"Bs.\"}; \\n      const knownCurrenciesWithCodeAsSymbol = [\"CHF\",\"PLN\",\"SEK\",\"NOK\",\"DKK\",\"CZK\",\"HUF\",\"RON\",\"HRK\",\"BGN\",\"ISK\",\"MDL\",\"BYN\",\"KZT\",\"AMD\",\"UZS\",\"TJS\",\"KGS\",\"MNT\",\"GEL\",\"AFN\",\"MRU\",\"RWF\",\"XAF\",\"XOF\",\"XPF\"]; \\n      // Initialize default currency variables\\n      let defaultCountry = \\'\\';\\n      let defaultCountryCode = \\'\\';\\n      let defaultCurrency = \\'\\';\\n      let defaultCurrencySymbol = \\'\\';\\n\\n      document.addEventListener(\\'checkout__settings-updated\\', (event) => {\\n        const { current } = event.detail;\\n        if (current) {\\n          // Update the global default variables\\n          defaultCountry = current.defaultCountry || \\'\\';\\n          defaultCountryCode = current.defaultCountryCode || \\'\\';\\n          defaultCurrency = current.defaultCurrency || \\'\\';\\n          defaultCurrencySymbol = current.defaultCurrencySymbol || \\'\\';\\n\\n          // Set session storage only if it\\'s empty\\n          if (!localStorage.getItem(\\'selectedCountry\\')) {\\n            localStorage.setItem(\\'selectedCountry\\', defaultCountry);\\n          }\\n          if (!localStorage.getItem(\\'selectedCountryCode\\')) {\\n            localStorage.setItem(\\'selectedCountryCode\\', defaultCountryCode);\\n          }\\n          if (!localStorage.getItem(\\'selectedCurrency\\')) {\\n            localStorage.setItem(\\'selectedCurrency\\', defaultCurrency);\\n          }\\n          if (!localStorage.getItem(\\'selectedCurrencySymbol\\')) {\\n            localStorage.setItem(\\'selectedCurrencySymbol\\', defaultCurrencySymbol);\\n          }\\n\\n          // Clear product cache and refetch products with new currency\\n          localStorage.removeItem(\\'fc_products\\');\\n          localStorage.removeItem(\\'fc_products_timestamp\\');\\n          \\n          // Refetch products with the current country code\\n          const currentCountryCode = localStorage.getItem(\\'selectedCountryCode\\');\\n          if (currentCountryCode) {\\n            fetchProductsByCountry(currentCountryCode).catch(error => {\\n              console.error(\\'Error refetching products after currency change:\\', error);\\n              window.shopXtools.status = \"ready\";\\n            });\\n          }\\n\\n          // console.log(\\'Session storage is set:\\', {\\n          //   defaultCountry,\\n          //   defaultCountryCode,\\n          //   defaultCurrency,\\n          //   defaultCurrencySymbol\\n          // });\\n        }\\n      });\\n      \\n      let domain;\\n      let products = [];\\n    \\n      // ALL QUERIES\\n      const getProductsQuery = `\\n        query GetProducts($cursor: String) {\\n          products(first: 250, after: $cursor) {\\n            edges {\\n              node {\\n                id\\n                title\\n                vendor\\n                handle\\n                productType\\n                tags\\n                collections(first: 250) {\\n                  edges {\\n                    node {\\n                      id\\n                      title\\n                      handle\\n                    }\\n                  }\\n                }\\n                images(first: 20) {\\n                  edges {\\n                    node {\\n                      url\\n                      altText\\n                      width\\n                      height\\n                     }\\n                    }\\n                }\\n                sellingPlanGroups(first: 1) {\\n                  edges {\\n                    node {\\n                      name\\n                      options {\\n                        name\\n                        values\\n                      }\\n                      sellingPlans(first: 10) {\\n                        edges {\\n                          node {\\n                            id\\n                            name\\n                            description\\n                            recurringDeliveries\\n                            priceAdjustments {\\n                              orderCount\\n                              adjustmentValue {\\n                                __typename\\n                                ... on SellingPlanPercentagePriceAdjustment {\\n                                  adjustmentPercentage\\n                                }\\n                                ... on SellingPlanFixedAmountPriceAdjustment {\\n                                  adjustmentAmount {\\n                                    amount\\n                                    currencyCode\\n                                  }\\n                                }\\n                                ... on SellingPlanFixedPriceAdjustment {\\n                                  price {\\n                                    amount\\n                                    currencyCode\\n                                  }\\n                                }\\n                              }\\n                            }\\n                          }\\n                        }\\n                      }\\n                    }\\n                  }\\n                }\\n                options {\\n                  id\\n                  name\\n                  values\\n                }\\n                compareAtPriceRange {\\n                  minVariantPrice {\\n                    amount\\n                    currencyCode\\n                  }\\n                }\\n                priceRange {\\n                  minVariantPrice {\\n                    amount\\n                    currencyCode\\n                  }\\n                }\\n                variants(first: 250) {\\n                  pageInfo {\\n                    hasNextPage\\n                    hasPreviousPage\\n                    endCursor\\n                  }\\n                  edges {\\n                    node {\\n                      id\\n                      image {\\n                        url\\n                        altText\\n                        width\\n                        height\\n                      }\\n                      title\\n                      sku\\n                      quantityAvailable\\n                      availableForSale\\n                      requiresShipping\\n                      selectedOptions {\\n                        name\\n                        value\\n                      }\\n                      price {\\n                        amount\\n                        currencyCode\\n                      }\\n                      compareAtPrice {\\n                        amount\\n                        currencyCode\\n                      }\\n                    }\\n                  }\\n                }\\n              }\\n            }\\n            pageInfo {\\n              hasNextPage\\n              endCursor\\n            }\\n          }\\n        }\\n      `;\\n    \\n      const getProductsQueryBackup = `\\n        query GetProductsBackup($cursor: String) {\\n          products(first: 250, after: $cursor) {\\n            edges {\\n              node {\\n                id\\n                title\\n                vendor\\n                handle\\n                productType\\n                tags\\n                collections(first: 250) {\\n                  edges {\\n                    node {\\n                      id\\n                      title\\n                      handle\\n                    }\\n                  }\\n                }\\n                images(first: 20) {\\n                  edges {\\n                    node {\\n                      url\\n                      altText\\n                      width\\n                      height\\n                     }\\n                    }\\n                }\\n                options {\\n                  id\\n                  name\\n                  values\\n                }\\n                compareAtPriceRange {\\n                  minVariantPrice {\\n                    amount\\n                    currencyCode\\n                  }\\n                }\\n                priceRange {\\n                  minVariantPrice {\\n                    amount\\n                    currencyCode\\n                  }\\n                }\\n                variants(first: 250) {\\n                  pageInfo {\\n                    hasNextPage\\n                    hasPreviousPage\\n                    endCursor\\n                  }\\n                  edges {\\n                    node {\\n                      id\\n                      image {\\n                        url\\n                        altText\\n                        width\\n                        height\\n                      }\\n                      title\\n                      sku\\n                      availableForSale\\n                      quantityAvailable\\n                      requiresShipping\\n                      selectedOptions {\\n                        name\\n                        value\\n                      }\\n                      price {\\n                        amount\\n                        currencyCode\\n                      }\\n                      compareAtPrice {\\n                        amount\\n                        currencyCode\\n                      }\\n                    }\\n                  }\\n                }\\n              }\\n            }\\n            pageInfo {\\n              hasNextPage\\n              endCursor\\n            }\\n          }\\n        }\\n      `;\\n      \\n      const getCartQuery = `\\n        query GetCart($cartId: ID!) {\\n          cart(id: $cartId) {\\n            id\\n            createdAt\\n            updatedAt\\n            checkoutUrl\\n            buyerIdentity {\\n              countryCode\\n            }\\n            lines(first: 250) {\\n              edges {\\n                node {\\n                  id\\n                  quantity\\n                  sellingPlanAllocation { \\n                    checkoutChargeAmount {\\n                      amount\\n                      currencyCode\\n                    }\\n                    sellingPlan {\\n                      id\\n                      name\\n                      description\\n                    }\\n                  }\\n                  merchandise {\\n                    ... on ProductVariant {\\n                      id\\n                      title\\n                      image {\\n                        url\\n                        altText\\n                        width\\n                        height\\n                      }\\n                      selectedOptions {\\n                        name\\n                        value\\n                      }\\n                      product {\\n                        title\\n                        handle\\n                      }\\n                      price {\\n                        amount\\n                        currencyCode\\n                      }\\n                      compareAtPrice {\\n                        amount\\n                        currencyCode\\n                      }\\n                    }\\n                  }\\n                  attributes {\\n                    key\\n                    value\\n                  }\\n                  cost {\\n                    subtotalAmount {\\n                      amount\\n                      currencyCode\\n                    }\\n                    totalAmount {\\n                      amount\\n                      currencyCode\\n                    }\\n                  }\\n                }\\n              }\\n            }\\n            attributes {\\n              key\\n              value\\n            }\\n            cost {\\n              totalAmount {\\n                amount\\n                currencyCode\\n              }\\n              subtotalAmount {\\n                amount\\n                currencyCode\\n              }\\n            }\\n          }\\n        }\\n      `;\\n    \\n      const getCartQueryNoPlans = `\\n        query GetCart($cartId: ID!) {\\n          cart(id: $cartId) {\\n            id\\n            createdAt\\n            updatedAt\\n            checkoutUrl\\n            buyerIdentity {\\n              countryCode\\n            }\\n            lines(first: 250) {\\n              edges {\\n                node {\\n                  id\\n                  quantity\\n                  merchandise {\\n                    ... on ProductVariant {\\n                      id\\n                      title\\n                      image {\\n                        url\\n                        altText\\n                        width\\n                        height\\n                      }\\n                      selectedOptions {\\n                        name\\n                        value\\n                      }\\n                      product {\\n                        title\\n                        handle\\n                      }\\n                      price {\\n                        amount\\n                        currencyCode\\n                      }\\n                      compareAtPrice {\\n                        amount\\n                        currencyCode\\n                      }\\n                    }\\n                  }\\n                  attributes {\\n                    key\\n                    value\\n                  }\\n                  cost {\\n                    subtotalAmount {\\n                      amount\\n                      currencyCode\\n                    }\\n                    totalAmount {\\n                      amount\\n                      currencyCode\\n                    }\\n                  }\\n                }\\n              }\\n            }\\n            attributes {\\n              key\\n              value\\n            }\\n            cost {\\n              totalAmount {\\n                amount\\n                currencyCode\\n              }\\n              subtotalAmount {\\n                amount\\n                currencyCode\\n              }\\n            }\\n          }\\n        }\\n      `;\\n\\n\\n      // Get available currencies from the store\\n      const getAvailableCurrencies = `\\n        query GetAvailableCurrencies {\\n          localization {\\n            availableCountries {\\n              currency {\\n                isoCode\\n                name\\n                symbol\\n              }\\n              isoCode\\n              name\\n            }\\n          }\\n        }\\n      `;\\n\\n      // Get products by country\\n      const getProductsQueryByCountry = `\\n        query GetProductsByCountry ($cursor: String, $countryCode: CountryCode) @inContext(country: $countryCode) {\\n          products(first: 250, after: $cursor) {\\n            edges {\\n              node {\\n                id\\n                title\\n                vendor\\n                handle\\n                images(first: 20) {\\n                  edges {\\n                    node {\\n                      url\\n                      altText\\n                      width\\n                      height\\n                    }\\n                  }\\n                }\\n                sellingPlanGroups(first: 1) {\\n                  edges {\\n                    node {\\n                      name\\n                      options {\\n                        name\\n                        values\\n                      }\\n                      sellingPlans(first: 10) {\\n                        edges {\\n                          node {\\n                            id\\n                            name\\n                            description\\n                            recurringDeliveries\\n                            priceAdjustments {\\n                              orderCount\\n                              adjustmentValue {\\n                                __typename\\n                                ... on SellingPlanPercentagePriceAdjustment {\\n                                  adjustmentPercentage\\n                                }\\n                                ... on SellingPlanFixedAmountPriceAdjustment {\\n                                  adjustmentAmount {\\n                                    amount\\n                                    currencyCode\\n                                  }\\n                                }\\n                                ... on SellingPlanFixedPriceAdjustment {\\n                                  price {\\n                                    amount\\n                                    currencyCode\\n                                  }\\n                                }\\n                              }\\n                            }\\n                          }\\n                        }\\n                      }\\n                    }\\n                  }\\n                }\\n                options {\\n                  id\\n                  name\\n                  values\\n                }\\n                compareAtPriceRange {\\n                  minVariantPrice {\\n                    amount\\n                    currencyCode\\n                  }\\n                }\\n                priceRange {\\n                  minVariantPrice {\\n                    amount\\n                    currencyCode\\n                  }\\n                }\\n                variants(first: 250) {\\n                  pageInfo {\\n                    hasNextPage\\n                    hasPreviousPage\\n                    endCursor\\n                  }\\n                  edges {\\n                    node {\\n                      id\\n                      image {\\n                        url\\n                        altText\\n                        width\\n                        height\\n                      }\\n                      title\\n                      sku\\n                      quantityAvailable\\n                      availableForSale\\n                      requiresShipping\\n                      selectedOptions {\\n                        name\\n                        value\\n                      }\\n                      price {\\n                        amount\\n                        currencyCode\\n                      }\\n                      compareAtPrice {\\n                        amount\\n                        currencyCode\\n                      }\\n                    }\\n                  }\\n                }\\n              }\\n            }\\n            pageInfo {\\n              hasNextPage\\n              endCursor\\n            }\\n          }\\n        }\\n      `;\\n\\n      const getProductsQueryByCountryBackup = `\\n        query GetProductsByCountryBackup($cursor: String, $countryCode: CountryCode) @inContext(country: $countryCode) {\\n          products(first: 250, after: $cursor) {\\n            edges {\\n              node {\\n                id\\n                title\\n                vendor\\n                handle\\n                images(first: 20) {\\n                  edges {\\n                    node {\\n                      url\\n                      altText\\n                      width\\n                      height\\n                    }\\n                  }\\n                }\\n                options {\\n                  id\\n                  name\\n                  values\\n                }\\n                compareAtPriceRange {\\n                  minVariantPrice {\\n                    amount\\n                    currencyCode\\n                  }\\n                }\\n                priceRange {\\n                  minVariantPrice {\\n                    amount\\n                    currencyCode\\n                  }\\n                }\\n                variants(first: 250) {\\n                  pageInfo {\\n                    hasNextPage\\n                    hasPreviousPage\\n                    endCursor\\n                  }\\n                  edges {\\n                    node {\\n                      id\\n                      image {\\n                        url\\n                        altText\\n                        width\\n                        height\\n                      }\\n                      title\\n                      sku\\n                      quantityAvailable\\n                      availableForSale\\n                      requiresShipping\\n                      selectedOptions {\\n                        name\\n                        value\\n                      }\\n                      price {\\n                        amount\\n                        currencyCode\\n                      }\\n                      compareAtPrice {\\n                        amount\\n                        currencyCode\\n                      }\\n                    }\\n                  }\\n                }\\n              }\\n            }\\n            pageInfo {\\n              hasNextPage\\n              endCursor\\n            }\\n          }\\n        }\\n      `;\\n\\n\\n\\n\\n      window.shopXtools = window.shopXtools || {};\\n      window.shopXtools.products = {};\\n      window.shopXtools.fetchCart = null;\\n      window.shopXtools.dispatchEvent = (eventType, detail) => {\\n            const newEvent = new CustomEvent(eventType, { detail });\\n            document.dispatchEvent(newEvent);\\n          };\\n    \\n      window.shopXtools.handleCartMutation = async (mutation, variables) => {\\n        const endpoint = `https://${domain.host}/api/2024-07/graphql.json`;\\n        const token = fcConfigs.storefrontAccessToken;\\n    \\n        try {\\n          const response = await fetch(endpoint, {\\n            method: \"POST\",\\n            headers: {\\n              \"Content-Type\": \"application/json\",\\n              \"X-Shopify-Storefront-Access-Token\": token,\\n            },\\n            body: JSON.stringify({\\n              query: mutation,\\n              variables,\\n            }),\\n          });\\n          const result = await response.json();\\n          if (response.ok && !result.errors) {\\n            // If this is a cart mutation and we have cart data, save it to localStorage\\n            if (result.data && (result.data.cartCreate || result.data.cartLinesAdd || \\n                result.data.cartLinesRemove || result.data.cartLinesUpdate || \\n                result.data.cartBuyerIdentityUpdate)) {\\n              \\n              // Find the cart object in the response\\n              const cartData = result.data.cartCreate?.cart || \\n                              result.data.cartLinesAdd?.cart || \\n                              result.data.cartLinesRemove?.cart || \\n                              result.data.cartLinesUpdate?.cart ||\\n                              result.data.cartBuyerIdentityUpdate?.cart;\\n              \\n              if (cartData) {\\n                //console.log(\"Saving cart data to localStorage:\", cartData);\\n                // Update the global cart object\\n                window.shopXtools.cart = cartData;\\n                // Save to localStorage\\n                localStorage.setItem(\"shopXtools.cart\", JSON.stringify(cartData));\\n                \\n                // If this is a buyerIdentity update with a country code, update currency settings\\n                if (result.data.cartBuyerIdentityUpdate && cartData.buyerIdentity && cartData.buyerIdentity.countryCode) {\\n                  //console.log(\"Country code updated in cart:\", cartData.buyerIdentity.countryCode);\\n                  // Trigger currency settings update\\n                  initializeCurrencySettings();\\n                }\\n              }\\n            }\\n            return result.data;\\n          } else {\\n            console.error(\"GraphQL errors:\", result.errors);\\n            return null;\\n          }\\n        } catch (error) {\\n          console.error(\"Network error:\", error);\\n          return null;\\n        }\\n      };\\n    \\n      window.shopXtools.fetchCart = async function(cartId) {\\n        const variables = { cartId: cartId };\\n        const endpoint = `https://${domain.host}/api/2024-07/graphql.json`;\\n    \\n        const tryFetchCart = async (query, queryName) => {\\n          try {\\n            const response = await fetch(endpoint, {\\n              method: \"POST\",\\n              headers: {\\n                \"Content-Type\": \"application/json\",\\n                \"X-Shopify-Storefront-Access-Token\": fcConfigs.storefrontAccessToken,\\n              },\\n              body: JSON.stringify({ query: query, variables }),\\n            });\\n    \\n            const result = await response.json();\\n            if (result.errors) {\\n              console.error(`${queryName} failed with errors:`, result.errors);\\n              return null;\\n            }\\n    \\n            if (result.data && result.data.cart) {\\n              // Save cart data to localStorage\\n              //console.log(\"Saving fetched cart data to localStorage:\", result.data.cart);\\n              window.shopXtools.cart = result.data.cart;\\n              localStorage.setItem(\"shopXtools.cart\", JSON.stringify(result.data.cart));\\n              \\n              // If cart has buyerIdentity with countryCode, update currency settings\\n              if (result.data.cart.buyerIdentity && result.data.cart.buyerIdentity.countryCode) {\\n                //console.log(\"Country code found in fetched cart:\", result.data.cart.buyerIdentity.countryCode);\\n                // Trigger currency settings update\\n                initializeCurrencySettings();\\n              }\\n              \\n              return result.data.cart;\\n            } else {\\n              console.error(`Cart data not found in response from ${queryName}:`, result);\\n              return null;\\n            }\\n          } catch (error) {\\n            console.error(`Network error during ${queryName}:`, error);\\n            return null;\\n          }\\n        };\\n    \\n        let cartData = await tryFetchCart(getCartQuery, \"Primary cart query\");\\n        //console.log(cartData);\\n        if (!cartData) {\\n          //console.log(\"Primary cart query failed, attempting backup cart query...\");\\n          cartData = await tryFetchCart(getCartQueryNoPlans, \"Backup cart query\");\\n        }\\n    \\n        return cartData;\\n      };\\n    \\n      const configValidation = () => {\\n        if (!fcConfigs.storefrontDomain) {\\n          throw Error(\"Storefront domain not found\");\\n        }\\n        if (!fcConfigs.storefrontAccessToken) {\\n          throw Error(\"Storefront access token not found\");\\n        }\\n      };\\n    \\n      const setDomainUrl = () => {\\n        let storeDomain = \"https://test.shopify.com\";\\n        if (fcConfigs.storefrontDomain) {\\n          storeDomain = fcConfigs.storefrontDomain.startsWith(\"http\")\\n            ? fcConfigs.storefrontDomain\\n            : `https://${fcConfigs.storefrontDomain}`;\\n        }\\n        domain = new URL(storeDomain);\\n      };\\n    \\n      const shopify = async (type, query, variables) => {\\n        const endpoint = `https://${domain.host}/api/2024-07/graphql.json`;\\n        const response = await fetch(endpoint, {\\n          method: \"POST\",\\n          body: JSON.stringify({ [type]: query, variables }),\\n          headers: {\\n            \"Content-Type\": \"application/json\",\\n            \"X-Shopify-Storefront-Access-Token\": fcConfigs.storefrontAccessToken,\\n          },\\n        });\\n        const json = await response.json();\\n        return json.data;\\n      };\\n    \\n      const setupInitialToolsObject = () => {\\n        if (window.shopXtools) {\\n          return;\\n        }\\n    \\n        window.shopXtools = {\\n          __eventsIdentifier: \"shopX__events__fragment\",\\n          dispatchEvent: (eventType, detail) => {\\n            const newEvent = new CustomEvent(eventType, { detail });\\n            document.dispatchEvent(newEvent);\\n          },\\n          status: \"loading\",\\n          cart: {},\\n          products: [],\\n          getProducts: (_id) => null\\n        };\\n      };\\n\\n\\n      // Function to fetch available currencies\\n      const fetchAvailableCurrencies = async () => {\\n        // console.log(\"Domain object in fetchAvailableCurrencies:\", domain);\\n        // console.log(\"Domain host:\", domain?.host);\\n\\n        const endpoint = `https://${domain.host}/api/2024-07/graphql.json`;\\n        \\n        try {\\n          const response = await fetch(endpoint, {\\n            method: \"POST\",\\n            headers: {\\n              \"Content-Type\": \"application/json\",\\n              \"X-Shopify-Storefront-Access-Token\": fcConfigs.storefrontAccessToken,\\n            },\\n            body: JSON.stringify({ query: getAvailableCurrencies }),\\n          });\\n\\n          const result = await response.json();\\n          //console.log(\"[CURRENCIES] Result:\", result);\\n          if (result.errors) {\\n            console.error(\"Error fetching currencies:\", result.errors);\\n            return null;\\n          }\\n          const availableCurrenciesAndCountries = result?.data?.localization?.availableCountries;\\n          \\n          //console.log(\"[CURRENCIES] Available Currencies:\", availableCurrenciesAndCountries);\\n          sessionStorage.setItem(\"availableCurrenciesAndCountries\", JSON.stringify(availableCurrenciesAndCountries));\\n          //console.log(sessionStorage.getItem(\"availableCurrenciesAndCountries\")\\n          \\n          return { availableCurrenciesAndCountries };\\n          \\n        } catch (error) {\\n          console.error(\"Error fetching currencies:\", error);\\n          return null;\\n        }\\n      };\\n\\n      // Initialize shopXtools and attach fetchAvailableCurrencies to it\\n      window.shopXtools = window.shopXtools || {};\\n      window.shopXtools.fetchAvailableCurrencies = fetchAvailableCurrencies;\\n      \\n      \\n\\n      // Function to initialize currency settings\\n      const initializeCurrencySettings = async () => {\\n        // Ensure domain is initialized before proceeding\\n        if (!domain) {\\n            await setDomainUrl();\\n        }\\n        if (!domain || !domain.host) {\\n            console.error(\"Domain is still undefined after initialization. Cannot fetch currencies.\");\\n            return;\\n        }\\n\\n        // Retrieve available currencies from sessionStorage or fetch if not available\\n        let availableCurrenciesAndCountries = JSON.parse(sessionStorage.getItem(\"availableCurrenciesAndCountries\"));\\n        if (!availableCurrenciesAndCountries) {\\n            const currencies = await fetchAvailableCurrencies();\\n            if (!currencies) {\\n                console.error(\"Failed to fetch available currencies\");\\n                return;\\n            }\\n            availableCurrenciesAndCountries = currencies.availableCurrenciesAndCountries;\\n            sessionStorage.setItem(\"availableCurrenciesAndCountries\", JSON.stringify(availableCurrenciesAndCountries));\\n        }\\n\\n        // Get values from window.__FcCheckoutConfigs\\n        const fcCheckoutConfigs = window.__FcCheckoutConfigs || {};\\n        const configCountry = fcCheckoutConfigs.defaultCountry;\\n        const configCountryCode = fcCheckoutConfigs.defaultCountryCode;\\n        const configCurrency = fcCheckoutConfigs.defaultCurrency;\\n        const configCurrencySymbol = fcCheckoutConfigs.defaultCurrencySymbol;\\n        //console.log(\"configCurrencySymbol\", configCurrencySymbol)\\n        \\n        // Get values from localStorage\\n        let storedCurrency = localStorage.getItem(\"selectedCurrency\");\\n        let storedCountry = localStorage.getItem(\"selectedCountry\");\\n        let storedCountryCode = localStorage.getItem(\"selectedCountryCode\");\\n        let storedCurrencySymbol = localStorage.getItem(\"selectedCurrencySymbol\");\\n\\n        // Get cart data from localStorage\\n        let cart;\\n        try {\\n          const cartData = localStorage.getItem(\"shopXtools.cart\");\\n          if (cartData) {\\n            cart = JSON.parse(cartData);\\n          } else {\\n            cart = {};\\n          }\\n        } catch (error) {\\n          console.error(\"Error parsing cart data:\", error);\\n          cart = {};\\n        }\\n        \\n        const buyerIdentity = cart.buyerIdentity || {};\\n        const countryCodeFromCart = buyerIdentity.countryCode;\\n        window.shopXtools.cart = cart;\\n\\n        // Determine the country code using the priority sequence\\n        let finalCountryCode;\\n        let finalCurrency = null;\\n        let finalCountry = null;\\n        let finalCurrencySymbol = null;\\n        \\n        if (countryCodeFromCart) {\\n          // Priority 1: Use country code from cart\\n          finalCountryCode = countryCodeFromCart;\\n        } else if (storedCountryCode && storedCurrency && storedCountry && storedCurrencySymbol) {\\n          // Priority 2: Use values from localStorage if all are present\\n          finalCountryCode = storedCountryCode;\\n          finalCurrency = storedCurrency;\\n          finalCountry = storedCountry;\\n          finalCurrencySymbol = storedCurrencySymbol;\\n        } else if (configCountryCode && configCurrency && configCountry) {\\n          // Priority 3: Use values from window.__FcCheckoutConfigs if all are present\\n          finalCountryCode = configCountryCode;\\n          finalCurrency = configCurrency;\\n          finalCountry = configCountry;\\n          finalCurrencySymbol = configCurrencySymbol;\\n        } else {\\n          // Priority 4: Use first available country if nothing else is available\\n          if (availableCurrenciesAndCountries && availableCurrenciesAndCountries.length > 0) {\\n            finalCountryCode = availableCurrenciesAndCountries[0].isoCode;\\n          } else {\\n            console.error(\"No country data available\");\\n            return;\\n          }\\n        }\\n        \\n        // If we only have the country code (from cart or when other values are missing),\\n        // find the matching country data to get the currency and country name\\n        if (!finalCurrency || !finalCountry) {\\n          const matchedCountry = availableCurrenciesAndCountries.find(c => c.isoCode === finalCountryCode);\\n          if (matchedCountry) {\\n            finalCurrency = matchedCountry.currency.isoCode;\\n            finalCountry = matchedCountry.name;\\n            //finalCurrencySymbol = CURRENCIES[finalCurrency];\\n            if (knownCurrenciesWithCodeAsSymbol[finalCurrency]){\\n              finalCurrencySymbol = finalCurrency\\n            } else {\\n              finalCurrencySymbol = CURRENCIES[finalCurrency];\\n            }\\n          } else {\\n            // If no match found, use first available country as fallback\\n            if (availableCurrenciesAndCountries && availableCurrenciesAndCountries.length > 0) {\\n              const firstCountry = availableCurrenciesAndCountries[0];\\n              finalCountryCode = firstCountry.isoCode;\\n              finalCurrency = firstCountry.currency.isoCode;\\n              finalCountry = firstCountry.name;\\n              //finalCurrencySymbol = CURRENCIES[finalCurrency];\\n              if (knownCurrenciesWithCodeAsSymbol[finalCurrency]){\\n                finalCurrencySymbol = finalCurrency\\n              } else {\\n                finalCurrencySymbol = CURRENCIES[finalCurrency];\\n              }\\n            } else {\\n              console.error(\"Cannot determine country settings\");\\n              return;\\n            }\\n          }\\n        }\\n\\n        // Update localStorage with the final values\\n        localStorage.setItem(\"selectedCountry\", finalCountry);\\n        localStorage.setItem(\"selectedCurrency\", finalCurrency);\\n        localStorage.setItem(\"selectedCountryCode\", finalCountryCode);\\n        localStorage.setItem(\"selectedCurrencySymbol\", finalCurrencySymbol);\\n\\n        // Also update window.shopXtools for global consistency\\n        window.shopXtools.defaultCurrency = finalCurrency;\\n        window.shopXtools.defaultCountry = finalCountry;\\n        window.shopXtools.defaultCountryCode = finalCountryCode;\\n        window.shopXtools.defaultCurrencySymbol = finalCurrencySymbol;\\n\\n        // Dispatch an event to notify the application of currency settings changes\\n        const currencyEvent = new CustomEvent(\\'currency__settings-updated\\', {\\n          detail: {\\n            previous: {\\n              defaultCountry: storedCountry,\\n              defaultCountryCode: storedCountryCode,\\n              defaultCurrency: storedCurrency,\\n              defaultCurrencySymbol: storedCurrencySymbol\\n            },\\n            current: {\\n              defaultCountry: finalCountry,\\n              defaultCountryCode: finalCountryCode,\\n              defaultCurrency: finalCurrency,\\n              defaultCurrencySymbol: finalCurrencySymbol\\n            }\\n          }\\n        });\\n        document.dispatchEvent(currencyEvent);\\n      };\\n\\n\\n      const handleProductData = (newProducts, countryCode, inventoryData = null) => {\\n        // Transform the data to ensure collections are in the expected format\\n        const transformedProducts = newProducts.map(({ node }) => ({\\n          node: {\\n            ...node,\\n            collections: node.collections?.edges?.map(edge => edge.node) || [],\\n            // If we have fresh inventory data, use it, otherwise keep existing\\n            variants: {\\n              ...node.variants,\\n              edges: node.variants.edges.map(({ node: variant }) => ({\\n                node: {\\n                  ...variant,\\n                  // Update inventory if we have fresh data\\n                  quantityAvailable: inventoryData?.[variant.id]?.quantityAvailable ?? variant.quantityAvailable,\\n                  availableForSale: inventoryData?.[variant.id]?.availableForSale ?? variant.availableForSale\\n                }\\n              }))\\n            }\\n          }\\n        }));\\n        \\n        // Get existing cached products with prices\\n        let cachedProductsWithPrices;\\n        try {\\n          cachedProductsWithPrices = JSON.parse(sessionStorage.getItem(\\'fc_products_with_prices\\') || \\'{}\\');\\n        } catch (error) {\\n          console.error(\\'Error parsing cached products:\\', error);\\n          cachedProductsWithPrices = {};\\n        }\\n\\n        // Update the cache with new products for this country code\\n        cachedProductsWithPrices[countryCode] = transformedProducts;\\n        \\n        // Store in sessionStorage for quick access\\n        try {\\n          sessionStorage.setItem(\\'fc_products_with_prices\\', JSON.stringify(cachedProductsWithPrices));\\n          sessionStorage.setItem(\\'fc_products_timestamp\\', Date.now().toString());\\n        } catch (error) {\\n          console.error(\\'Error saving to session storage:\\', error);\\n        }\\n\\n        // Update the products array with current country\\'s products\\n        products = transformedProducts;\\n\\n        // Update shopXtools\\n        window.shopXtools.productsWithPrices = cachedProductsWithPrices;\\n        window.shopXtools.products = products;\\n        window.shopXtools.getProducts = (_id) => {\\n          const fullId = _id.startsWith(\\'gid://\\') ? _id : `gid://shopify/Product/${_id}`;\\n          return products.find(({ node: product }) => product.id === fullId);\\n        };\\n        window.shopXtools.getProductsForCountry = (countryCode) => {\\n          return cachedProductsWithPrices[countryCode] || [];\\n        };\\n\\n        // Dispatch the event\\n        window.shopXtools.dispatchEvent(\\'data__products-ready\\', { products });\\n      };\\n\\n      const fetchInventoryData = async () => {\\n        const inventoryQuery = `\\n          query GetInventory($cursor: String) {\\n            products(first: 250, after: $cursor) {\\n              edges {\\n                node {\\n                  id\\n                  variants(first: 250) {\\n                    edges {\\n                      node {\\n                        id\\n                        quantityAvailable\\n                        availableForSale\\n                      }\\n                    }\\n                  }\\n                }\\n              }\\n              pageInfo {\\n                hasNextPage\\n                endCursor\\n              }\\n            }\\n          }\\n        `;\\n\\n        const fetchPage = async (cursor = null) => {\\n          const variables = cursor ? { cursor } : {};\\n          const endpoint = `https://${domain.host}/api/2024-07/graphql.json`;\\n          \\n          try {\\n            const response = await fetch(endpoint, {\\n              method: \"POST\",\\n              headers: {\\n                \"Content-Type\": \"application/json\",\\n                \"X-Shopify-Storefront-Access-Token\": fcConfigs.storefrontAccessToken,\\n              },\\n              body: JSON.stringify({ query: inventoryQuery, variables }),\\n            });\\n            \\n            const body = await response.json();\\n            if (!body.errors && body.data) {\\n              return body.data;\\n            }\\n            return null;\\n          } catch (error) {\\n            console.error(\\'Error fetching inventory:\\', error);\\n            return null;\\n          }\\n        };\\n\\n        let allInventory = {};\\n        let hasNextPage = true;\\n        let cursor = null;\\n\\n        while (hasNextPage) {\\n          const data = await fetchPage(cursor);\\n          if (!data) break;\\n\\n          // Extract inventory data\\n          data.products.edges.forEach(({ node: product }) => {\\n            product.variants.edges.forEach(({ node: variant }) => {\\n              allInventory[variant.id] = {\\n                quantityAvailable: variant.quantityAvailable,\\n                availableForSale: variant.availableForSale\\n              };\\n            });\\n          });\\n\\n          hasNextPage = data.products.pageInfo.hasNextPage;\\n          cursor = data.products.pageInfo.endCursor;\\n        }\\n\\n        return allInventory;\\n      };\\n    \\n      const fetchProductsByCountry = async (countryCode, cursor = null) => {\\n        // Try to load from cache first\\n        if (!cursor) {\\n          try {\\n            const timestamp = parseInt(sessionStorage.getItem(\\'fc_products_timestamp\\') || \\'0\\');\\n            const cachedProductsWithPrices = JSON.parse(sessionStorage.getItem(\\'fc_products_with_prices\\') || \\'{}\\');\\n            const now = Date.now();\\n            \\n            // Use stored data if less than 5 minutes old and we have data for this country\\n            if (cachedProductsWithPrices[countryCode] && (now - timestamp < 300000)) {\\n              // First show cached data\\n              handleProductData(cachedProductsWithPrices[countryCode], countryCode);\\n              window.shopXtools.status = \"ready\";\\n              \\n              // Then fetch fresh inventory data\\n              const inventoryData = await fetchInventoryData();\\n              if (inventoryData) {\\n                handleProductData(cachedProductsWithPrices[countryCode], countryCode, inventoryData);\\n              }\\n              \\n              return;\\n            }\\n          } catch (error) {\\n            console.error(\\'Error loading from session storage:\\', error);\\n          }\\n        }\\n\\n        const tryFetchProductsByCountry = async (query, queryName, variables = {}) => {\\n          const endpoint = `https://${domain.host}/api/2024-07/graphql.json`;\\n          // console.log(\"Domain object in fetchProductsByCountry:\", domain);\\n          // console.log(\"Domain host:\", domain?.host);\\n          try {\\n            const response = await fetch(endpoint, {\\n              method: \"POST\",\\n              headers: {\\n                \"Content-Type\": \"application/json\",\\n                \"X-Shopify-Storefront-Access-Token\": fcConfigs.storefrontAccessToken,\\n              },\\n              body: JSON.stringify({ query, variables }),\\n            });\\n            const body = await response.json();\\n            //console.log(\"[DEBUG PRODUCTS BY COUNTRY] Body:\", body?.data?.products?.edges);\\n            if (body.errors) {\\n              console.error(`${queryName} failed with errors:`, body.errors);\\n              return null;\\n            }\\n            if (body.data && body.data.products) {\\n              return body;\\n            } else {\\n              console.error(`Product data not found in response from ${queryName}:`, body);\\n              return null;\\n            }\\n          } catch (error) {\\n            console.error(`Network error during ${queryName}:`, error);\\n            return null;\\n          }\\n        };\\n        const variables = cursor ? { countryCode, cursor } : { countryCode };\\n        //console.log(\"[DEBUG PRODUCTS BY COUNTRY] Variables:\", variables);\\n        const body = await tryFetchProductsByCountry(getProductsQueryByCountry, \"Products by country query\", variables);\\n\\n        if (!body) {\\n          //console.log(\"Primary products by country query failed, attempting backup query...\");\\n          body = await tryFetchProducts(getProductsQueryByCountryBackup, \"Backup products by countryquery\", variables);\\n        }\\n\\n        // If we have valid data, handle it\\n        if (body) {\\n          const newProducts = body.data.products.edges || [];\\n          const allProducts = cursor ? [...products, ...newProducts] : newProducts;\\n          handleProductData(allProducts, countryCode);\\n\\n          const pageInfo = body.data.products.pageInfo;\\n          if (pageInfo.hasNextPage && pageInfo.endCursor) {\\n            await fetchProducts(pageInfo.endCursor);\\n          } else {\\n            window.shopXtools.status = \"ready\";\\n          }\\n          // Return the products\\n          return allProducts;\\n        } else {\\n          console.error(\"Products by country query failed.\");\\n          window.shopXtools.status = \"ready\";\\n          return null;\\n        }\\n      };\\n        \\n      // Initialize shopXtools and attach fetchAvailableCurrencies to it\\n      window.shopXtools = window.shopXtools || {};\\n      window.shopXtools.fetchProductsByCountry = fetchProductsByCountry;\\n\\n      setupInitialToolsObject();\\n      configValidation();\\n      setDomainUrl();\\n      \\n  const validateDomainForFreePlan = () => {\\n    if (\"free\" === \"free\") {\\n      const isFramerSubdomain = domain.host.includes(\\'framer.app\\');\\n      if (isFramerSubdomain) {\\n        console.error(\\'Free plan users can only  use a Framer subdomain\\');\\n        return false;\\n      }\\n    }\\n    return true;\\n  };\\n\\n  if (!validateDomainForFreePlan()) {\\n    console.log(\\'Domain validation failed, products will not be fetched\\');\\n    return;\\n  }\\n\\n      \\n  if (\"free\" === \"free\") {\\n    // Wait for DOM to be ready\\n    const insertWidget = () => {\\n      const widget = document.createElement(\\'div\\');\\n      widget.innerHTML = `\\n        <div \\n          style=\"\\n            position: fixed;\\n            bottom: 60px;\\n            right: 20px;\\n            border-radius: 10px;\\n            overflow: hidden;\\n            z-index: 999999;\\n            transition: opacity 0.3s ease;\\n            box-shadow:\\n              rgba(0, 0, 0, 0.26) 0px 0.636953px 1.14652px -1.125px, \\n              rgba(0, 0, 0, 0.24) 0px 1.9316px 3.47689px -2.25px, \\n              rgba(0, 0, 0, 0.192) 0px 5.10612px 9.19102px -3.375px, \\n              rgba(0, 0, 0, 0.03) 0px 16px 28.8px -4.5px;\\n            width: 142px;\\n            background: white;\\n          \"\\n          onmouseover=\"this.style.opacity = \\'1\\'\"\\n          onmouseout=\"this.style.opacity = \\'1\\'\"\\n        >\\n          <a \\n            href=\"https://framercommerce.com/?utm_source=framer&utm_medium=badge&utm_campaign=free_tier\" \\n            target=\"_blank\" \\n            style=\"\\n              display: block;\\n              line-height: 0;\\n            \"\\n          >\\n            <img \\n              src=\"https://www.dropbox.com/scl/fi/liuwd84g4nioi6fmu93e1/fc-free-badge.png?rlkey=yearpo3rkxqalq4mtmabujdk4&raw=1\" \\n              alt=\"Framer Commerce\"\\n              width=\"142\"\\n              height=\"36\"\\n              style=\"display: block; width: 100%; height: auto;\"\\n            />\\n\\n          </a>\\n        </div>\\n      `;\\n\\n      // Check if widget already exists\\n      const existingWidget = document.querySelector(\\'[data-framercommerce-widget]\\');\\n      if (!existingWidget) {\\n        widget.setAttribute(\\'data-framercommerce-widget\\', \\'true\\');\\n        document.body.appendChild(widget);\\n      }\\n    };\\n\\n    // If DOM is already loaded\\n    if (document.readyState === \\'complete\\' || document.readyState === \\'interactive\\') {\\n      setTimeout(insertWidget, 1);\\n    } else {\\n      // Wait for DOM to be ready\\n      document.addEventListener(\\'DOMContentLoaded\\', insertWidget);\\n    }\\n\\n    // Backup in case DOMContentLoaded doesn\\'t fire\\n    window.addEventListener(\\'load\\', insertWidget);\\n  }\\n\\n\\n      // Initialize cart from localStorage\\n      const initializeCartFromLocalStorage = () => {\\n        try {\\n          const cartData = localStorage.getItem(\"shopXtools.cart\");\\n          if (cartData) {\\n            const cart = JSON.parse(cartData);\\n            //console.log(\"Initializing cart from localStorage:\", cart);\\n            window.shopXtools.cart = cart;\\n            \\n            // If cart has buyerIdentity with countryCode, we\\'ll use it during currency initialization\\n            if (cart.buyerIdentity && cart.buyerIdentity.countryCode) {\\n              //console.log(\"Found country code in stored cart:\", cart.buyerIdentity.countryCode);\\n            }\\n          } else {\\n            //console.log(\"No cart data found in localStorage\");\\n            window.shopXtools.cart = {};\\n          }\\n        } catch (error) {\\n          console.error(\"Error initializing cart from localStorage:\", error);\\n          window.shopXtools.cart = {};\\n        }\\n      };\\n\\n      // Initialize cart before proceeding with other initializations\\n      initializeCartFromLocalStorage();\\n\\n      // Check domain before proceeding with product fetch\\n      if (!validateDomainForFreePlan()) {\\n        window.shopXtools.products = [];\\n        window.shopXtools.status = \"ready\";\\n        window.shopXtools.getProducts = () => null;\\n        // console.log(\\'Domain validation failed, products will not be fetched\\');\\n        return;\\n      }\\n\\n      if (!window.shopXtools || !Array.isArray(window.shopXtools.products)) {\\n        // Initialize currency settings first\\n        initializeCurrencySettings().then(() => {\\n            // Get the stored country code\\n            const storedCountryCode = localStorage.getItem(\"selectedCountryCode\");\\n            if (storedCountryCode) {\\n              // Then fetch products with the correct country code\\n              fetchProductsByCountry(storedCountryCode).catch(error => {\\n                console.error(\\'Error fetching products by country:\\', error);\\n                window.shopXtools.status = \"ready\";\\n              });\\n            } else {\\n                console.error(\\'No country code available for product fetch\\');\\n            }\\n        }).catch(error => {\\n            console.error(\\'Error during initialization:\\', error);\\n        });\\n      }\\n    \\n      window.__currencyMap = CURRENCIES;\\n      \\n\\n    })();\\n  </script>',customHTMLHeadStart:\"<!-- Plugin: ced618 --> <script>\\n        (function() {\\n          window.__FcCheckoutConfigs = window.__FcCheckoutConfigs || {};\\n          window.__FcCheckoutConfigs = {\\n            ...window.__FcCheckoutConfigs,\\n            checkoutLocale: \\\"en\\\",\\n            defaultCountry: \\\"United States\\\",\\n            defaultCountryCode: \\\"US\\\",\\n            defaultCurrency: \\\"USD\\\",\\n            defaultCurrencySymbol: \\\"$\\\",\\n            metaPixelId: \\\"\\\",\\n            googleAnalyticsId: \\\"\\\"\\n          };\\n\\n          // Store settings in localStorage for persistence!!\\n          const existingLocale = localStorage.getItem('checkoutLocale');\\n          if (existingLocale === null) {\\n            localStorage.setItem('checkoutLocale', 'en');\\n          }\\n          const existingCountry = localStorage.getItem('selectedCountry');\\n          if (existingCountry === null) { \\n            localStorage.setItem('selectedCountry', 'United States');\\n          }\\n          const existingCountryCode = localStorage.getItem('selectedCountryCode');\\n          if (existingCountryCode === null) {\\n            localStorage.setItem('selectedCountryCode', 'US');\\n          }\\n          const existingCurrency = localStorage.getItem('selectedCurrency');\\n          if (existingCurrency === null) {\\n            localStorage.setItem('selectedCurrency', 'USD');\\n          }\\n          const existingCurrencySymbol = localStorage.getItem('selectedCurrencySymbol');\\n          if (existingCurrencySymbol === null) {\\n            localStorage.setItem('selectedCurrencySymbol', '$');\\n          }\\n\\n          // Dispatch checkout settings update event\\n          const checkoutEvent = new CustomEvent('checkout__settings-updated', {\\n            detail: {\\n              previous: { ...window.__FcCheckoutConfigs },\\n              current: window.__FcCheckoutConfigs\\n            }\\n          });\\n          document.dispatchEvent(checkoutEvent);\\n\\n          \\n          \\n        })();</script>\",description:\"Build your e-commerce store quickly with Veon, a timeless high-end Framer template for minimalist clothing brands.\",favicon:\"https://framerusercontent.com/assets/Ep8ev73gejlGh63JpnxQrESjEd8.png\",robots:\"max-image-preview:large\",socialImage:\"https://framerusercontent.com/assets/KZ9B38FtcQxIDlMKzgOq7jl6dM.png\",title:\"Veon\"};}export const metadataVersion=1;\nexport const __FramerMetadata__ = {\"exports\":{\"metadataVersion\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],
  "mappings": "AACe,SAARA,EAA0BC,EAAOC,EAAa,CAAC,MAAM,CAAC,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAA2qnD,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAAu8D,YAAY,qHAAqH,QAAQ,uEAAuE,OAAO,0BAA0B,YAAY,sEAAsE,MAAM,MAAM,CAAE",
  "names": ["metadata", "params", "activeLocale"]
}
