{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/pkWxmLaZ0cythsOFUWVr/UztLKRniE88UgAyeJu4E/siteMetadata.js"],
  "sourcesContent": ["// Generated by Framer (ad88b1a)\nexport default function metadata(params,activeLocale){return{customHTMLBodyEnd:\"<script>\\n<!-- Code to transfer utm parameters to all links under kluster.ai  -->\\nfunction getDomain(url) {\\n      try {\\n        const urlObject = new URL(url);\\n        return urlObject.hostname;\\n      } catch (error) {\\n        return null;\\n      }\\n    }\\n\\nfunction addUTMParams() {\\n    // Parse the current URL's query parameters\\n    const urlParams = new URLSearchParams(window.location.search);\\n    const utmParams = {};\\n    const referrer =  document && document.referrer ? getDomain(document.referrer): null;\\n\\n    // Collect all UTM parameters from the current URL\\n    for (const [key, value] of urlParams.entries()) {\\n        if (key.startsWith('utm_') || key.startsWith('gad_') || key.startsWith('gclid') || key.startsWith('mbsy')) {\\n            utmParams[key] = value;\\n        }\\n    }\\n\\n    if(referrer && !utmParams.utm_source) {\\n        utmParams.utm_source = encodeURIComponent(referrer);\\n    }\\n\\n    // If there are no UTM parameters, exit the function\\n    if (Object.keys(utmParams).length === 0) return;\\n\\n    const oneOfParams = Object.keys(utmParams)[0];\\n\\n\\n    // Select all <a> elements in the Framer page\\n    const links = document.querySelectorAll('a');\\n\\n    links.forEach(link => {\\n        try {\\n            if(link.href.includes(oneOfParams)) {\\n                return;\\n            }\\n\\n            // Parse the href into a URL object\\n            const linkUrl = new URL(link.href, window.location.origin);\\n\\n            // Check if the link's domain is under kluster.ai\\n            if (linkUrl.hostname.endsWith('kluster.ai')) {\\n                // Append UTM parameters to the link's href\\n                const linkParams = new URLSearchParams(linkUrl.search);\\n\\n                for (const [key, value] of Object.entries(utmParams)) {\\n                    linkParams.set(key, value);\\n                }\\n\\n                // Update the link's href with the new parameters\\n                linkUrl.search = linkParams.toString();\\n                link.href = linkUrl.toString();\\n            }\\n        } catch (err) {\\n            // Skip invalid URLs\\n            console.warn(`Skipping invalid URL: ${link.href}`, err);\\n        }\\n    });\\n}\\n\\nfunction init() {\\n        console.log('URL update initialised');\\n\\n        function addPushStateListener(listener) {\\n            if (!Proxy) return;\\n            window.history.pushState = new Proxy(window.history.pushState, {\\n                apply: (target, thisArg, argArray) => {\\n                    target.apply(thisArg, argArray);\\n                    listener();\\n                },\\n            });\\n        }\\n\\n        addPushStateListener(() => {\\n            console.log('Proxy triggered');\\n            setTimeout(()=> {\\n                addUTMParams();\\n            }, 1000);\\n            \\n        });\\n\\n\\n        setInterval(()=> {\\n            addUTMParams();\\n        }, 500);\\n\\n}\\n\\nsetTimeout(init, 100);\\n\\n    </script>\\n\\n\\n    <script>\\n        const getAllQueryParams = ()=> {\\n  const queryParams = new URLSearchParams(window.location.search);\\n  const params = {};\\n\\n  for (const [key, value] of queryParams.entries()) {\\n    params[key] = value;\\n  }\\n\\n  const referrer =  document && document.referrer ? getDomain(document.referrer): null;\\n\\n  if(referrer && !params.utm_source) {\\n    params.utm_source = encodeURIComponent(referrer);\\n  }\\n  \\n  return params;\\n}\\namplitude.init('b3ad16f71c580833bfd08bd035bffab3', {\\n  autocapture: {\\n    attribution: true,\\n    pageViews: false,\\n    sessions: false,\\n    formInteractions: false,\\n    fileDownloads: false,\\n    elementInteractions: false,\\n  },\\n});\\n\\n/*\\namplitude.track('page_view', {\\npageName: 'home',\\nsubpage: location.href.replace(location.search, \\n                    ''),\\n...getAllQueryParams()\\n});*/\\n\\n\\nnavigation.addEventListener('navigate', (event) => {\\n    console.log('Navigation intercepted:', event);\\n\\n    setTimeout(()=> {\\n\\n    amplitude.track('page_view', {\\npageName: 'home',\\nsubpage: location.href.replace(location.search, \\n                    ''),\\n...getAllQueryParams()\\n});\\n    }, 1000);\\n});\\n        </script>\",customHTMLHeadEnd:\"<script src=\\\"https://cdn.amplitude.com/script/b3ad16f71c580833bfd08bd035bffab3.js\\\"></script>\\n\\n<!-- Google ads code -->\\n<script>\\ngtag('config', 'AW-11500721833');\\n</script>\\n<!-- End Google ads code -->\\n\\n<!-- Twitter conversion tracking base code -->\\n<script>\\n!function(e,t,n,s,u,a){e.twq||(s=e.twq=function(){s.exe?s.exe.apply(s,arguments):s.queue.push(arguments);\\n},s.version='1.1',s.queue=[],u=t.createElement(n),u.async=!0,u.src='https://static.ads-twitter.com/uwt.js',\\na=t.getElementsByTagName(n)[0],a.parentNode.insertBefore(u,a))}(window,document,'script');\\ntwq('config','ouvua');\\n</script>\\n<!-- End Twitter conversion tracking base code -->\\n\\n\\n\\n\\n\\n<!-- Ambassador tracking code --> \\n<script>(function (u, n, i, v, e, r, s, a, l) { u[r] = {}; u[r].uid = '4a9d0dc6-f16c-48e5-a670-add3205e2c28'; u[r].m = ['getReferrerInfo', 'identify', 'integrationsReady', 'on', 'ready', 'track']; u[r].queue = []; u[r].f = function(t) { return function() { var l = Array.prototype.slice.call(arguments); l.unshift(t); u[r].queue.push(l); return u[r].queue; }; }; for (var t = 0; t < u[r].m.length; t++) { l = u[r].m[t]; u[r][l] = u[r].f(l); } a = n.createElement(v); a.src = e + '/us-' + u[r].uid + '.js'; a.async = s; n.getElementsByTagName(i)[0].appendChild(a); })(window, document, 'head', 'script', 'https://ambsnippet.kluster.ai', 'mbsy', true);</script>\",description:\"Revolutionizing inference at scale, kluster.ai offers developers unmatched value with Adaptive Inference: high-rate limits, predictable completion times, and 50% cost savings. Join now for $100 in credits!\",favicon:\"https://framerusercontent.com/assets/SrvN1rLVUdsjCAuPdXvazOofXU.png\",robots:\"max-image-preview:large\",socialImage:\"https://framerusercontent.com/assets/FGpCSKCQhYduPKqvT10QtPikI0M.png\",title:\"kluster.ai - Revolutionizing AI at scale\"};}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,oBAA8jI,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,spBAA61C,YAAY,gNAAgN,QAAQ,sEAAsE,OAAO,0BAA0B,YAAY,uEAAuE,MAAM,0CAA0C,CAAE",
  "names": ["metadata", "params", "activeLocale"]
}
