{"version":3,"file":"SetPassword.DcAFGzaf.mjs","names":["useStore","useState","defaultSetTimout","defaultClearTimeout","runTimeout","cachedSetTimeout","runClearTimeout","cachedClearTimeout","cleanUpNextTick","draining","currentQueue","queue","drainQueue","queueIndex","nextTick","Item","noop","binding","cwd","chdir","umask","hrtime","performanceNow","performance","uptime","startTime","globalContext","title","platform","browser","argv","version","versions","release","config","on","addListener","once","off","removeListener","removeAllListeners","emit","process","p","resolveFetch","_a","from","config","head","get","defaultSetTimout","defaultClearTimeout","runTimeout","cachedSetTimeout","runClearTimeout","cachedClearTimeout","cleanUpNextTick","draining","currentQueue","queue","drainQueue","queueIndex","nextTick","Item","noop","binding","cwd","chdir","umask","hrtime","performanceNow","performance","uptime","startTime","global$1","globalContext","title","platform","browser","argv","version","versions","release","config","on","addListener","once","off","removeListener","removeAllListeners","emit","process","_a","noop$1","toHex","_a","_typeof","toPrimitive","toPropertyKey","_defineProperty","ownKeys","_objectSpread2","_handleRequest","_getRequestParams","handleError","resolveFetch$1","version","DEFAULT_HEADERS","resolveFetch","_getErrorMessage","TO_BASE64URL","FROM_BASE64URL","stringFromBase64URL","codepointToUTF8","stringToUTF8","emit","stringFromUTF8","_a","isBrowser","version","IGNORE_BASE64URL","resolveFetch","process","version","init","__commonjs_module0"],"sources":["https:/framerusercontent.com/modules/vj7bFUjvEQFgEzNBkdoG/vf3CKm378wlVcBk7IhSU/createStore.js","https:/framer.com/m/framer/store.js@^1.0.0","https:/cdn.skypack.dev/-/@supabase/supabase-js@v2.89.0-VPq8vSMLrgfaWsifSWsm/dist=es2019,mode=imports/optimized/common/process-2545f00a.js","https:/cdn.skypack.dev/-/tslib@v2.8.1-aomsAGZSx3SJvCkCzmxc/dist=es2019,mode=imports/optimized/tslib.js","https:/cdn.skypack.dev/-/@supabase/functions-js@v2.89.0-VPdSgQggOqAfkKQ1QQKt/dist=es2019,mode=imports/optimized/@supabase/functions-js.js","https:/cdn.skypack.dev/-/@supabase/postgrest-js@v2.89.0-nIVrTazQRvb9ArOeHqWq/dist=es2019,mode=imports/optimized/@supabase/postgrest-js.js","https:/cdn.skypack.dev/-/@supabase/realtime-js@v2.89.0-kSnamBvKNTnn5J9v6DZ0/dist=es2019,mode=imports/optimized/@supabase/realtime-js.js","https:/cdn.skypack.dev/-/@supabase/storage-js@v2.89.0-lA6hoSs9hLGCVTHsQfe8/dist=es2019,mode=imports/optimized/common/buffer-es6-f1f37f6e.js","https:/cdn.skypack.dev/-/iceberg-js@v0.8.1-qSeYW4emrEZtCbPI7Cx3/dist=es2019,mode=imports/optimized/iceberg-js.js","https:/cdn.skypack.dev/-/@supabase/storage-js@v2.89.0-lA6hoSs9hLGCVTHsQfe8/dist=es2019,mode=imports/optimized/@supabase/storage-js.js","https:/cdn.skypack.dev/-/@supabase/auth-js@v2.89.0-tpOqWvH8EAX8bMbNapEL/dist=es2019,mode=imports/optimized/@supabase/auth-js.js","https:/cdn.skypack.dev/-/@supabase/supabase-js@v2.89.0-VPq8vSMLrgfaWsifSWsm/dist=es2019,mode=imports/optimized/@supabase/supabase-js.js","https:/cdn.skypack.dev/-/cookie@v1.1.1-hJ7DLLyYXBQaJ0ibmXVz/dist=es2019,mode=imports/optimized/cookie.js","https:/cdn.skypack.dev/-/@supabase/ssr@v0.8.0-ESgoSXe004EGh6FajnBn/dist=es2019,mode=imports/optimized/@supabase/ssr.js","https:/cdn.skypack.dev/@supabase/ssr","https:/framerusercontent.com/modules/MFHKMoyyiEA32FB3rfXO/eujy88pfEJGZOoreVV3L/SetPassword.js"],"sourcesContent":["import{useState,useEffect}from\"react\";import{Data,useObserveData}from\"framer\";export function createStore(state1){// Use Data so that a Preview reload resets the state\nconst dataStore=Data({state:Object.freeze({...state1})});// Create a set function that updates the state\nconst setDataStore=newState=>{// If the state is an object, make sure we copy it\nif(typeof newState===\"function\"){newState=newState(dataStore.state);}dataStore.state=Object.freeze({...dataStore.state,...newState});};// Store the initial state, copy the object if it's an object\nlet storeState=typeof state1===\"object\"?Object.freeze({...state1}):state1;// Keep a list of all the listeners, in the form of React hook setters\nconst storeSetters=new Set();// Create a set function that updates all the listeners / setters\nconst setStoreState=newState=>{// If the state is an object, make sure we copy it\nif(typeof newState===\"function\"){newState=newState(storeState);}storeState=typeof newState===\"object\"?Object.freeze({...storeState,...newState}):newState;// Update all the listeners / setters with the new value\nstoreSetters.forEach(setter=>setter(storeState));};// Create the actual hook based on everything above\nfunction useStore(){// Create the hook we are going to use as a listener\nconst[state,setState]=useState(storeState);// If we unmount the component using this hook, we need to remove the listener\n// @ts-ignore\nuseEffect(()=>{// But right now, we need to add the listener\nstoreSetters.add(setState);return()=>storeSetters.delete(setState);},[]);// If Data context exists, use Data, otherwise use vanilla React state\nif(useObserveData()===true){useObserveData();return[dataStore.state,setDataStore];}else{// Return the state and a function to update the central store\nreturn[state,setStoreState];}}return useStore;}\nexport const __FramerMetadata__ = {\"exports\":{\"createStore\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./createStore.map","/*\n * createStore (framer/store@1.0.1)\n *\n * Learn More: https://www.framer.com/asset-urls\n */\n\nexport * from \"https://framerusercontent.com/modules/vj7bFUjvEQFgEzNBkdoG/vf3CKm378wlVcBk7IhSU/createStore.js\"\n","function defaultSetTimout() {\n  throw new Error(\"setTimeout has not been defined\");\n}\nfunction defaultClearTimeout() {\n  throw new Error(\"clearTimeout has not been defined\");\n}\nvar cachedSetTimeout = defaultSetTimout;\nvar cachedClearTimeout = defaultClearTimeout;\nvar globalContext;\nif (typeof window !== \"undefined\") {\n  globalContext = window;\n} else if (typeof self !== \"undefined\") {\n  globalContext = self;\n} else {\n  globalContext = {};\n}\nif (typeof globalContext.setTimeout === \"function\") {\n  cachedSetTimeout = setTimeout;\n}\nif (typeof globalContext.clearTimeout === \"function\") {\n  cachedClearTimeout = clearTimeout;\n}\nfunction runTimeout(fun) {\n  if (cachedSetTimeout === setTimeout) {\n    return setTimeout(fun, 0);\n  }\n  if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n    cachedSetTimeout = setTimeout;\n    return setTimeout(fun, 0);\n  }\n  try {\n    return cachedSetTimeout(fun, 0);\n  } catch (e) {\n    try {\n      return cachedSetTimeout.call(null, fun, 0);\n    } catch (e2) {\n      return cachedSetTimeout.call(this, fun, 0);\n    }\n  }\n}\nfunction runClearTimeout(marker) {\n  if (cachedClearTimeout === clearTimeout) {\n    return clearTimeout(marker);\n  }\n  if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n    cachedClearTimeout = clearTimeout;\n    return clearTimeout(marker);\n  }\n  try {\n    return cachedClearTimeout(marker);\n  } catch (e) {\n    try {\n      return cachedClearTimeout.call(null, marker);\n    } catch (e2) {\n      return cachedClearTimeout.call(this, marker);\n    }\n  }\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\nfunction cleanUpNextTick() {\n  if (!draining || !currentQueue) {\n    return;\n  }\n  draining = false;\n  if (currentQueue.length) {\n    queue = currentQueue.concat(queue);\n  } else {\n    queueIndex = -1;\n  }\n  if (queue.length) {\n    drainQueue();\n  }\n}\nfunction drainQueue() {\n  if (draining) {\n    return;\n  }\n  var timeout = runTimeout(cleanUpNextTick);\n  draining = true;\n  var len = queue.length;\n  while (len) {\n    currentQueue = queue;\n    queue = [];\n    while (++queueIndex < len) {\n      if (currentQueue) {\n        currentQueue[queueIndex].run();\n      }\n    }\n    queueIndex = -1;\n    len = queue.length;\n  }\n  currentQueue = null;\n  draining = false;\n  runClearTimeout(timeout);\n}\nfunction nextTick(fun) {\n  var args = new Array(arguments.length - 1);\n  if (arguments.length > 1) {\n    for (var i = 1; i < arguments.length; i++) {\n      args[i - 1] = arguments[i];\n    }\n  }\n  queue.push(new Item(fun, args));\n  if (queue.length === 1 && !draining) {\n    runTimeout(drainQueue);\n  }\n}\nfunction Item(fun, array) {\n  this.fun = fun;\n  this.array = array;\n}\nItem.prototype.run = function() {\n  this.fun.apply(null, this.array);\n};\nvar title = \"browser\";\nvar platform = \"browser\";\nvar browser = true;\nvar argv = [];\nvar version = \"\";\nvar versions = {};\nvar release = {};\nvar config = {};\nfunction noop() {\n}\nvar on = noop;\nvar addListener = noop;\nvar once = noop;\nvar off = noop;\nvar removeListener = noop;\nvar removeAllListeners = noop;\nvar emit = noop;\nfunction binding(name) {\n  throw new Error(\"process.binding is not supported\");\n}\nfunction cwd() {\n  return \"/\";\n}\nfunction chdir(dir) {\n  throw new Error(\"process.chdir is not supported\");\n}\nfunction umask() {\n  return 0;\n}\nvar performance = globalContext.performance || {};\nvar performanceNow = performance.now || performance.mozNow || performance.msNow || performance.oNow || performance.webkitNow || function() {\n  return new Date().getTime();\n};\nfunction hrtime(previousTimestamp) {\n  var clocktime = performanceNow.call(performance) * 1e-3;\n  var seconds = Math.floor(clocktime);\n  var nanoseconds = Math.floor(clocktime % 1 * 1e9);\n  if (previousTimestamp) {\n    seconds = seconds - previousTimestamp[0];\n    nanoseconds = nanoseconds - previousTimestamp[1];\n    if (nanoseconds < 0) {\n      seconds--;\n      nanoseconds += 1e9;\n    }\n  }\n  return [seconds, nanoseconds];\n}\nvar startTime = new Date();\nfunction uptime() {\n  var currentTime = new Date();\n  var dif = currentTime - startTime;\n  return dif / 1e3;\n}\nvar process = {\n  nextTick,\n  title,\n  browser,\n  env: {NODE_ENV: \"production\"},\n  argv,\n  version,\n  versions,\n  on,\n  addListener,\n  once,\n  off,\n  removeListener,\n  removeAllListeners,\n  emit,\n  binding,\n  cwd,\n  chdir,\n  umask,\n  hrtime,\n  platform,\n  release,\n  config,\n  uptime\n};\nexport {process as p};\nexport default null;\n","var extendStatics = function(d, b) {\n  extendStatics = Object.setPrototypeOf || {__proto__: []} instanceof Array && function(d2, b2) {\n    d2.__proto__ = b2;\n  } || function(d2, b2) {\n    for (var p in b2)\n      if (Object.prototype.hasOwnProperty.call(b2, p))\n        d2[p] = b2[p];\n  };\n  return extendStatics(d, b);\n};\nfunction __extends(d, b) {\n  if (typeof b !== \"function\" && b !== null)\n    throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n  extendStatics(d, b);\n  function __() {\n    this.constructor = d;\n  }\n  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\nvar __assign = function() {\n  __assign = Object.assign || function __assign2(t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n      for (var p in s)\n        if (Object.prototype.hasOwnProperty.call(s, p))\n          t[p] = s[p];\n    }\n    return t;\n  };\n  return __assign.apply(this, arguments);\n};\nfunction __rest(s, e) {\n  var t = {};\n  for (var p in s)\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n      t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n    for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n      if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n        t[p[i]] = s[p[i]];\n    }\n  return t;\n}\nfunction __decorate(decorators, target, key, desc) {\n  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n  if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n    r = Reflect.decorate(decorators, target, key, desc);\n  else\n    for (var i = decorators.length - 1; i >= 0; i--)\n      if (d = decorators[i])\n        r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n  return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\nfunction __param(paramIndex, decorator) {\n  return function(target, key) {\n    decorator(target, key, paramIndex);\n  };\n}\nfunction __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n  function accept(f) {\n    if (f !== void 0 && typeof f !== \"function\")\n      throw new TypeError(\"Function expected\");\n    return f;\n  }\n  var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n  var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n  var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n  var _, done = false;\n  for (var i = decorators.length - 1; i >= 0; i--) {\n    var context = {};\n    for (var p in contextIn)\n      context[p] = p === \"access\" ? {} : contextIn[p];\n    for (var p in contextIn.access)\n      context.access[p] = contextIn.access[p];\n    context.addInitializer = function(f) {\n      if (done)\n        throw new TypeError(\"Cannot add initializers after decoration has completed\");\n      extraInitializers.push(accept(f || null));\n    };\n    var result = (0, decorators[i])(kind === \"accessor\" ? {get: descriptor.get, set: descriptor.set} : descriptor[key], context);\n    if (kind === \"accessor\") {\n      if (result === void 0)\n        continue;\n      if (result === null || typeof result !== \"object\")\n        throw new TypeError(\"Object expected\");\n      if (_ = accept(result.get))\n        descriptor.get = _;\n      if (_ = accept(result.set))\n        descriptor.set = _;\n      if (_ = accept(result.init))\n        initializers.unshift(_);\n    } else if (_ = accept(result)) {\n      if (kind === \"field\")\n        initializers.unshift(_);\n      else\n        descriptor[key] = _;\n    }\n  }\n  if (target)\n    Object.defineProperty(target, contextIn.name, descriptor);\n  done = true;\n}\nfunction __runInitializers(thisArg, initializers, value) {\n  var useValue = arguments.length > 2;\n  for (var i = 0; i < initializers.length; i++) {\n    value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n  }\n  return useValue ? value : void 0;\n}\nfunction __propKey(x) {\n  return typeof x === \"symbol\" ? x : \"\".concat(x);\n}\nfunction __setFunctionName(f, name, prefix) {\n  if (typeof name === \"symbol\")\n    name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n  return Object.defineProperty(f, \"name\", {configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name});\n}\nfunction __metadata(metadataKey, metadataValue) {\n  if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\")\n    return Reflect.metadata(metadataKey, metadataValue);\n}\nfunction __awaiter(thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function(resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function(resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n}\nfunction __generator(thisArg, body) {\n  var _ = {label: 0, sent: function() {\n    if (t[0] & 1)\n      throw t[1];\n    return t[1];\n  }, trys: [], ops: []}, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n  return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() {\n    return this;\n  }), g;\n  function verb(n) {\n    return function(v) {\n      return step([n, v]);\n    };\n  }\n  function step(op) {\n    if (f)\n      throw new TypeError(\"Generator is already executing.\");\n    while (g && (g = 0, op[0] && (_ = 0)), _)\n      try {\n        if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done)\n          return t;\n        if (y = 0, t)\n          op = [op[0] & 2, t.value];\n        switch (op[0]) {\n          case 0:\n          case 1:\n            t = op;\n            break;\n          case 4:\n            _.label++;\n            return {value: op[1], done: false};\n          case 5:\n            _.label++;\n            y = op[1];\n            op = [0];\n            continue;\n          case 7:\n            op = _.ops.pop();\n            _.trys.pop();\n            continue;\n          default:\n            if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n              _ = 0;\n              continue;\n            }\n            if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n              _.label = op[1];\n              break;\n            }\n            if (op[0] === 6 && _.label < t[1]) {\n              _.label = t[1];\n              t = op;\n              break;\n            }\n            if (t && _.label < t[2]) {\n              _.label = t[2];\n              _.ops.push(op);\n              break;\n            }\n            if (t[2])\n              _.ops.pop();\n            _.trys.pop();\n            continue;\n        }\n        op = body.call(thisArg, _);\n      } catch (e) {\n        op = [6, e];\n        y = 0;\n      } finally {\n        f = t = 0;\n      }\n    if (op[0] & 5)\n      throw op[1];\n    return {value: op[0] ? op[1] : void 0, done: true};\n  }\n}\nvar __createBinding = Object.create ? function(o, m, k, k2) {\n  if (k2 === void 0)\n    k2 = k;\n  var desc = Object.getOwnPropertyDescriptor(m, k);\n  if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n    desc = {enumerable: true, get: function() {\n      return m[k];\n    }};\n  }\n  Object.defineProperty(o, k2, desc);\n} : function(o, m, k, k2) {\n  if (k2 === void 0)\n    k2 = k;\n  o[k2] = m[k];\n};\nfunction __exportStar(m, o) {\n  for (var p in m)\n    if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p))\n      __createBinding(o, m, p);\n}\nfunction __values(o) {\n  var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n  if (m)\n    return m.call(o);\n  if (o && typeof o.length === \"number\")\n    return {\n      next: function() {\n        if (o && i >= o.length)\n          o = void 0;\n        return {value: o && o[i++], done: !o};\n      }\n    };\n  throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\nfunction __read(o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m)\n    return o;\n  var i = m.call(o), r, ar = [], e;\n  try {\n    while ((n === void 0 || n-- > 0) && !(r = i.next()).done)\n      ar.push(r.value);\n  } catch (error) {\n    e = {error};\n  } finally {\n    try {\n      if (r && !r.done && (m = i[\"return\"]))\n        m.call(i);\n    } finally {\n      if (e)\n        throw e.error;\n    }\n  }\n  return ar;\n}\nfunction __spread() {\n  for (var ar = [], i = 0; i < arguments.length; i++)\n    ar = ar.concat(__read(arguments[i]));\n  return ar;\n}\nfunction __spreadArrays() {\n  for (var s = 0, i = 0, il = arguments.length; i < il; i++)\n    s += arguments[i].length;\n  for (var r = Array(s), k = 0, i = 0; i < il; i++)\n    for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n      r[k] = a[j];\n  return r;\n}\nfunction __spreadArray(to, from, pack) {\n  if (pack || arguments.length === 2)\n    for (var i = 0, l = from.length, ar; i < l; i++) {\n      if (ar || !(i in from)) {\n        if (!ar)\n          ar = Array.prototype.slice.call(from, 0, i);\n        ar[i] = from[i];\n      }\n    }\n  return to.concat(ar || Array.prototype.slice.call(from));\n}\nfunction __await(v) {\n  return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\nfunction __asyncGenerator(thisArg, _arguments, generator) {\n  if (!Symbol.asyncIterator)\n    throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var g = generator.apply(thisArg, _arguments || []), i, q = [];\n  return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function() {\n    return this;\n  }, i;\n  function awaitReturn(f) {\n    return function(v) {\n      return Promise.resolve(v).then(f, reject);\n    };\n  }\n  function verb(n, f) {\n    if (g[n]) {\n      i[n] = function(v) {\n        return new Promise(function(a, b) {\n          q.push([n, v, a, b]) > 1 || resume(n, v);\n        });\n      };\n      if (f)\n        i[n] = f(i[n]);\n    }\n  }\n  function resume(n, v) {\n    try {\n      step(g[n](v));\n    } catch (e) {\n      settle(q[0][3], e);\n    }\n  }\n  function step(r) {\n    r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);\n  }\n  function fulfill(value) {\n    resume(\"next\", value);\n  }\n  function reject(value) {\n    resume(\"throw\", value);\n  }\n  function settle(f, v) {\n    if (f(v), q.shift(), q.length)\n      resume(q[0][0], q[0][1]);\n  }\n}\nfunction __asyncDelegator(o) {\n  var i, p;\n  return i = {}, verb(\"next\"), verb(\"throw\", function(e) {\n    throw e;\n  }), verb(\"return\"), i[Symbol.iterator] = function() {\n    return this;\n  }, i;\n  function verb(n, f) {\n    i[n] = o[n] ? function(v) {\n      return (p = !p) ? {value: __await(o[n](v)), done: false} : f ? f(v) : v;\n    } : f;\n  }\n}\nfunction __asyncValues(o) {\n  if (!Symbol.asyncIterator)\n    throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var m = o[Symbol.asyncIterator], i;\n  return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function() {\n    return this;\n  }, i);\n  function verb(n) {\n    i[n] = o[n] && function(v) {\n      return new Promise(function(resolve, reject) {\n        v = o[n](v), settle(resolve, reject, v.done, v.value);\n      });\n    };\n  }\n  function settle(resolve, reject, d, v) {\n    Promise.resolve(v).then(function(v2) {\n      resolve({value: v2, done: d});\n    }, reject);\n  }\n}\nfunction __makeTemplateObject(cooked, raw) {\n  if (Object.defineProperty) {\n    Object.defineProperty(cooked, \"raw\", {value: raw});\n  } else {\n    cooked.raw = raw;\n  }\n  return cooked;\n}\nvar __setModuleDefault = Object.create ? function(o, v) {\n  Object.defineProperty(o, \"default\", {enumerable: true, value: v});\n} : function(o, v) {\n  o[\"default\"] = v;\n};\nvar ownKeys = function(o) {\n  ownKeys = Object.getOwnPropertyNames || function(o2) {\n    var ar = [];\n    for (var k in o2)\n      if (Object.prototype.hasOwnProperty.call(o2, k))\n        ar[ar.length] = k;\n    return ar;\n  };\n  return ownKeys(o);\n};\nfunction __importStar(mod) {\n  if (mod && mod.__esModule)\n    return mod;\n  var result = {};\n  if (mod != null) {\n    for (var k = ownKeys(mod), i = 0; i < k.length; i++)\n      if (k[i] !== \"default\")\n        __createBinding(result, mod, k[i]);\n  }\n  __setModuleDefault(result, mod);\n  return result;\n}\nfunction __importDefault(mod) {\n  return mod && mod.__esModule ? mod : {default: mod};\n}\nfunction __classPrivateFieldGet(receiver, state, kind, f) {\n  if (kind === \"a\" && !f)\n    throw new TypeError(\"Private accessor was defined without a getter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver))\n    throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n  return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\nfunction __classPrivateFieldSet(receiver, state, value, kind, f) {\n  if (kind === \"m\")\n    throw new TypeError(\"Private method is not writable\");\n  if (kind === \"a\" && !f)\n    throw new TypeError(\"Private accessor was defined without a setter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver))\n    throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n  return kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value), value;\n}\nfunction __classPrivateFieldIn(state, receiver) {\n  if (receiver === null || typeof receiver !== \"object\" && typeof receiver !== \"function\")\n    throw new TypeError(\"Cannot use 'in' operator on non-object\");\n  return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\nfunction __addDisposableResource(env, value, async) {\n  if (value !== null && value !== void 0) {\n    if (typeof value !== \"object\" && typeof value !== \"function\")\n      throw new TypeError(\"Object expected.\");\n    var dispose, inner;\n    if (async) {\n      if (!Symbol.asyncDispose)\n        throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n      dispose = value[Symbol.asyncDispose];\n    }\n    if (dispose === void 0) {\n      if (!Symbol.dispose)\n        throw new TypeError(\"Symbol.dispose is not defined.\");\n      dispose = value[Symbol.dispose];\n      if (async)\n        inner = dispose;\n    }\n    if (typeof dispose !== \"function\")\n      throw new TypeError(\"Object not disposable.\");\n    if (inner)\n      dispose = function() {\n        try {\n          inner.call(this);\n        } catch (e) {\n          return Promise.reject(e);\n        }\n      };\n    env.stack.push({value, dispose, async});\n  } else if (async) {\n    env.stack.push({async: true});\n  }\n  return value;\n}\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function(error, suppressed, message) {\n  var e = new Error(message);\n  return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\nfunction __disposeResources(env) {\n  function fail(e) {\n    env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n    env.hasError = true;\n  }\n  var r, s = 0;\n  function next() {\n    while (r = env.stack.pop()) {\n      try {\n        if (!r.async && s === 1)\n          return s = 0, env.stack.push(r), Promise.resolve().then(next);\n        if (r.dispose) {\n          var result = r.dispose.call(r.value);\n          if (r.async)\n            return s |= 2, Promise.resolve(result).then(next, function(e) {\n              fail(e);\n              return next();\n            });\n        } else\n          s |= 1;\n      } catch (e) {\n        fail(e);\n      }\n    }\n    if (s === 1)\n      return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n    if (env.hasError)\n      throw env.error;\n  }\n  return next();\n}\nfunction __rewriteRelativeImportExtension(path, preserveJsx) {\n  if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n    return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function(m, tsx, d, ext, cm) {\n      return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : d + ext + \".\" + cm.toLowerCase() + \"js\";\n    });\n  }\n  return path;\n}\nvar tslib_es6 = {\n  __extends,\n  __assign,\n  __rest,\n  __decorate,\n  __param,\n  __esDecorate,\n  __runInitializers,\n  __propKey,\n  __setFunctionName,\n  __metadata,\n  __awaiter,\n  __generator,\n  __createBinding,\n  __exportStar,\n  __values,\n  __read,\n  __spread,\n  __spreadArrays,\n  __spreadArray,\n  __await,\n  __asyncGenerator,\n  __asyncDelegator,\n  __asyncValues,\n  __makeTemplateObject,\n  __importStar,\n  __importDefault,\n  __classPrivateFieldGet,\n  __classPrivateFieldSet,\n  __classPrivateFieldIn,\n  __addDisposableResource,\n  __disposeResources,\n  __rewriteRelativeImportExtension\n};\nexport default tslib_es6;\nexport {__addDisposableResource, __assign, __asyncDelegator, __asyncGenerator, __asyncValues, __await, __awaiter, __classPrivateFieldGet, __classPrivateFieldIn, __classPrivateFieldSet, __createBinding, __decorate, __disposeResources, __esDecorate, __exportStar, __extends, __generator, __importDefault, __importStar, __makeTemplateObject, __metadata, __param, __propKey, __read, __rest, __rewriteRelativeImportExtension, __runInitializers, __setFunctionName, __spread, __spreadArray, __spreadArrays, __values};\n","import {__awaiter} from \"/-/tslib@v2.8.1-aomsAGZSx3SJvCkCzmxc/dist=es2019,mode=imports/optimized/tslib.js\";\nconst resolveFetch = (customFetch) => {\n  if (customFetch) {\n    return (...args) => customFetch(...args);\n  }\n  return (...args) => fetch(...args);\n};\nclass FunctionsError extends Error {\n  constructor(message, name = \"FunctionsError\", context) {\n    super(message);\n    this.name = name;\n    this.context = context;\n  }\n}\nclass FunctionsFetchError extends FunctionsError {\n  constructor(context) {\n    super(\"Failed to send a request to the Edge Function\", \"FunctionsFetchError\", context);\n  }\n}\nclass FunctionsRelayError extends FunctionsError {\n  constructor(context) {\n    super(\"Relay Error invoking the Edge Function\", \"FunctionsRelayError\", context);\n  }\n}\nclass FunctionsHttpError extends FunctionsError {\n  constructor(context) {\n    super(\"Edge Function returned a non-2xx status code\", \"FunctionsHttpError\", context);\n  }\n}\nvar FunctionRegion;\n(function(FunctionRegion2) {\n  FunctionRegion2[\"Any\"] = \"any\";\n  FunctionRegion2[\"ApNortheast1\"] = \"ap-northeast-1\";\n  FunctionRegion2[\"ApNortheast2\"] = \"ap-northeast-2\";\n  FunctionRegion2[\"ApSouth1\"] = \"ap-south-1\";\n  FunctionRegion2[\"ApSoutheast1\"] = \"ap-southeast-1\";\n  FunctionRegion2[\"ApSoutheast2\"] = \"ap-southeast-2\";\n  FunctionRegion2[\"CaCentral1\"] = \"ca-central-1\";\n  FunctionRegion2[\"EuCentral1\"] = \"eu-central-1\";\n  FunctionRegion2[\"EuWest1\"] = \"eu-west-1\";\n  FunctionRegion2[\"EuWest2\"] = \"eu-west-2\";\n  FunctionRegion2[\"EuWest3\"] = \"eu-west-3\";\n  FunctionRegion2[\"SaEast1\"] = \"sa-east-1\";\n  FunctionRegion2[\"UsEast1\"] = \"us-east-1\";\n  FunctionRegion2[\"UsWest1\"] = \"us-west-1\";\n  FunctionRegion2[\"UsWest2\"] = \"us-west-2\";\n})(FunctionRegion || (FunctionRegion = {}));\nclass FunctionsClient {\n  constructor(url, {headers = {}, customFetch, region = FunctionRegion.Any} = {}) {\n    this.url = url;\n    this.headers = headers;\n    this.region = region;\n    this.fetch = resolveFetch(customFetch);\n  }\n  setAuth(token) {\n    this.headers.Authorization = `Bearer ${token}`;\n  }\n  invoke(functionName_1) {\n    return __awaiter(this, arguments, void 0, function* (functionName, options = {}) {\n      var _a;\n      let timeoutId;\n      let timeoutController;\n      try {\n        const {headers, method, body: functionArgs, signal, timeout} = options;\n        let _headers = {};\n        let {region} = options;\n        if (!region) {\n          region = this.region;\n        }\n        const url = new URL(`${this.url}/${functionName}`);\n        if (region && region !== \"any\") {\n          _headers[\"x-region\"] = region;\n          url.searchParams.set(\"forceFunctionRegion\", region);\n        }\n        let body;\n        if (functionArgs && (headers && !Object.prototype.hasOwnProperty.call(headers, \"Content-Type\") || !headers)) {\n          if (typeof Blob !== \"undefined\" && functionArgs instanceof Blob || functionArgs instanceof ArrayBuffer) {\n            _headers[\"Content-Type\"] = \"application/octet-stream\";\n            body = functionArgs;\n          } else if (typeof functionArgs === \"string\") {\n            _headers[\"Content-Type\"] = \"text/plain\";\n            body = functionArgs;\n          } else if (typeof FormData !== \"undefined\" && functionArgs instanceof FormData) {\n            body = functionArgs;\n          } else {\n            _headers[\"Content-Type\"] = \"application/json\";\n            body = JSON.stringify(functionArgs);\n          }\n        } else {\n          body = functionArgs;\n        }\n        let effectiveSignal = signal;\n        if (timeout) {\n          timeoutController = new AbortController();\n          timeoutId = setTimeout(() => timeoutController.abort(), timeout);\n          if (signal) {\n            effectiveSignal = timeoutController.signal;\n            signal.addEventListener(\"abort\", () => timeoutController.abort());\n          } else {\n            effectiveSignal = timeoutController.signal;\n          }\n        }\n        const response = yield this.fetch(url.toString(), {\n          method: method || \"POST\",\n          headers: Object.assign(Object.assign(Object.assign({}, _headers), this.headers), headers),\n          body,\n          signal: effectiveSignal\n        }).catch((fetchError) => {\n          throw new FunctionsFetchError(fetchError);\n        });\n        const isRelayError = response.headers.get(\"x-relay-error\");\n        if (isRelayError && isRelayError === \"true\") {\n          throw new FunctionsRelayError(response);\n        }\n        if (!response.ok) {\n          throw new FunctionsHttpError(response);\n        }\n        let responseType = ((_a = response.headers.get(\"Content-Type\")) !== null && _a !== void 0 ? _a : \"text/plain\").split(\";\")[0].trim();\n        let data;\n        if (responseType === \"application/json\") {\n          data = yield response.json();\n        } else if (responseType === \"application/octet-stream\" || responseType === \"application/pdf\") {\n          data = yield response.blob();\n        } else if (responseType === \"text/event-stream\") {\n          data = response;\n        } else if (responseType === \"multipart/form-data\") {\n          data = yield response.formData();\n        } else {\n          data = yield response.text();\n        }\n        return {data, error: null, response};\n      } catch (error) {\n        return {\n          data: null,\n          error,\n          response: error instanceof FunctionsHttpError || error instanceof FunctionsRelayError ? error.context : void 0\n        };\n      } finally {\n        if (timeoutId) {\n          clearTimeout(timeoutId);\n        }\n      }\n    });\n  }\n}\nexport {FunctionRegion, FunctionsClient, FunctionsError, FunctionsFetchError, FunctionsHttpError, FunctionsRelayError};\nexport default null;\n","var PostgrestError = class extends Error {\n  constructor(context) {\n    super(context.message);\n    this.name = \"PostgrestError\";\n    this.details = context.details;\n    this.hint = context.hint;\n    this.code = context.code;\n  }\n};\nvar PostgrestBuilder = class {\n  constructor(builder) {\n    var _builder$shouldThrowO, _builder$isMaybeSingl;\n    this.shouldThrowOnError = false;\n    this.method = builder.method;\n    this.url = builder.url;\n    this.headers = new Headers(builder.headers);\n    this.schema = builder.schema;\n    this.body = builder.body;\n    this.shouldThrowOnError = (_builder$shouldThrowO = builder.shouldThrowOnError) !== null && _builder$shouldThrowO !== void 0 ? _builder$shouldThrowO : false;\n    this.signal = builder.signal;\n    this.isMaybeSingle = (_builder$isMaybeSingl = builder.isMaybeSingle) !== null && _builder$isMaybeSingl !== void 0 ? _builder$isMaybeSingl : false;\n    if (builder.fetch)\n      this.fetch = builder.fetch;\n    else\n      this.fetch = fetch;\n  }\n  throwOnError() {\n    this.shouldThrowOnError = true;\n    return this;\n  }\n  setHeader(name, value) {\n    this.headers = new Headers(this.headers);\n    this.headers.set(name, value);\n    return this;\n  }\n  then(onfulfilled, onrejected) {\n    var _this = this;\n    if (this.schema === void 0)\n      ;\n    else if ([\"GET\", \"HEAD\"].includes(this.method))\n      this.headers.set(\"Accept-Profile\", this.schema);\n    else\n      this.headers.set(\"Content-Profile\", this.schema);\n    if (this.method !== \"GET\" && this.method !== \"HEAD\")\n      this.headers.set(\"Content-Type\", \"application/json\");\n    const _fetch = this.fetch;\n    let res = _fetch(this.url.toString(), {\n      method: this.method,\n      headers: this.headers,\n      body: JSON.stringify(this.body),\n      signal: this.signal\n    }).then(async (res$1) => {\n      let error = null;\n      let data = null;\n      let count = null;\n      let status = res$1.status;\n      let statusText = res$1.statusText;\n      if (res$1.ok) {\n        var _this$headers$get2, _res$headers$get;\n        if (_this.method !== \"HEAD\") {\n          var _this$headers$get;\n          const body = await res$1.text();\n          if (body === \"\")\n            ;\n          else if (_this.headers.get(\"Accept\") === \"text/csv\")\n            data = body;\n          else if (_this.headers.get(\"Accept\") && ((_this$headers$get = _this.headers.get(\"Accept\")) === null || _this$headers$get === void 0 ? void 0 : _this$headers$get.includes(\"application/vnd.pgrst.plan+text\")))\n            data = body;\n          else\n            data = JSON.parse(body);\n        }\n        const countHeader = (_this$headers$get2 = _this.headers.get(\"Prefer\")) === null || _this$headers$get2 === void 0 ? void 0 : _this$headers$get2.match(/count=(exact|planned|estimated)/);\n        const contentRange = (_res$headers$get = res$1.headers.get(\"content-range\")) === null || _res$headers$get === void 0 ? void 0 : _res$headers$get.split(\"/\");\n        if (countHeader && contentRange && contentRange.length > 1)\n          count = parseInt(contentRange[1]);\n        if (_this.isMaybeSingle && _this.method === \"GET\" && Array.isArray(data))\n          if (data.length > 1) {\n            error = {\n              code: \"PGRST116\",\n              details: `Results contain ${data.length} rows, application/vnd.pgrst.object+json requires 1 row`,\n              hint: null,\n              message: \"JSON object requested, multiple (or no) rows returned\"\n            };\n            data = null;\n            count = null;\n            status = 406;\n            statusText = \"Not Acceptable\";\n          } else if (data.length === 1)\n            data = data[0];\n          else\n            data = null;\n      } else {\n        var _error$details;\n        const body = await res$1.text();\n        try {\n          error = JSON.parse(body);\n          if (Array.isArray(error) && res$1.status === 404) {\n            data = [];\n            error = null;\n            status = 200;\n            statusText = \"OK\";\n          }\n        } catch (_unused) {\n          if (res$1.status === 404 && body === \"\") {\n            status = 204;\n            statusText = \"No Content\";\n          } else\n            error = {message: body};\n        }\n        if (error && _this.isMaybeSingle && (error === null || error === void 0 || (_error$details = error.details) === null || _error$details === void 0 ? void 0 : _error$details.includes(\"0 rows\"))) {\n          error = null;\n          status = 200;\n          statusText = \"OK\";\n        }\n        if (error && _this.shouldThrowOnError)\n          throw new PostgrestError(error);\n      }\n      return {\n        error,\n        data,\n        count,\n        status,\n        statusText\n      };\n    });\n    if (!this.shouldThrowOnError)\n      res = res.catch((fetchError) => {\n        var _fetchError$name2;\n        let errorDetails = \"\";\n        const cause = fetchError === null || fetchError === void 0 ? void 0 : fetchError.cause;\n        if (cause) {\n          var _cause$message, _cause$code, _fetchError$name, _cause$name;\n          const causeMessage = (_cause$message = cause === null || cause === void 0 ? void 0 : cause.message) !== null && _cause$message !== void 0 ? _cause$message : \"\";\n          const causeCode = (_cause$code = cause === null || cause === void 0 ? void 0 : cause.code) !== null && _cause$code !== void 0 ? _cause$code : \"\";\n          errorDetails = `${(_fetchError$name = fetchError === null || fetchError === void 0 ? void 0 : fetchError.name) !== null && _fetchError$name !== void 0 ? _fetchError$name : \"FetchError\"}: ${fetchError === null || fetchError === void 0 ? void 0 : fetchError.message}`;\n          errorDetails += `\n\nCaused by: ${(_cause$name = cause === null || cause === void 0 ? void 0 : cause.name) !== null && _cause$name !== void 0 ? _cause$name : \"Error\"}: ${causeMessage}`;\n          if (causeCode)\n            errorDetails += ` (${causeCode})`;\n          if (cause === null || cause === void 0 ? void 0 : cause.stack)\n            errorDetails += `\n${cause.stack}`;\n        } else {\n          var _fetchError$stack;\n          errorDetails = (_fetchError$stack = fetchError === null || fetchError === void 0 ? void 0 : fetchError.stack) !== null && _fetchError$stack !== void 0 ? _fetchError$stack : \"\";\n        }\n        return {\n          error: {\n            message: `${(_fetchError$name2 = fetchError === null || fetchError === void 0 ? void 0 : fetchError.name) !== null && _fetchError$name2 !== void 0 ? _fetchError$name2 : \"FetchError\"}: ${fetchError === null || fetchError === void 0 ? void 0 : fetchError.message}`,\n            details: errorDetails,\n            hint: \"\",\n            code: \"\"\n          },\n          data: null,\n          count: null,\n          status: 0,\n          statusText: \"\"\n        };\n      });\n    return res.then(onfulfilled, onrejected);\n  }\n  returns() {\n    return this;\n  }\n  overrideTypes() {\n    return this;\n  }\n};\nvar PostgrestTransformBuilder = class extends PostgrestBuilder {\n  select(columns) {\n    let quoted = false;\n    const cleanedColumns = (columns !== null && columns !== void 0 ? columns : \"*\").split(\"\").map((c) => {\n      if (/\\s/.test(c) && !quoted)\n        return \"\";\n      if (c === '\"')\n        quoted = !quoted;\n      return c;\n    }).join(\"\");\n    this.url.searchParams.set(\"select\", cleanedColumns);\n    this.headers.append(\"Prefer\", \"return=representation\");\n    return this;\n  }\n  order(column, {ascending = true, nullsFirst, foreignTable, referencedTable = foreignTable} = {}) {\n    const key = referencedTable ? `${referencedTable}.order` : \"order\";\n    const existingOrder = this.url.searchParams.get(key);\n    this.url.searchParams.set(key, `${existingOrder ? `${existingOrder},` : \"\"}${column}.${ascending ? \"asc\" : \"desc\"}${nullsFirst === void 0 ? \"\" : nullsFirst ? \".nullsfirst\" : \".nullslast\"}`);\n    return this;\n  }\n  limit(count, {foreignTable, referencedTable = foreignTable} = {}) {\n    const key = typeof referencedTable === \"undefined\" ? \"limit\" : `${referencedTable}.limit`;\n    this.url.searchParams.set(key, `${count}`);\n    return this;\n  }\n  range(from, to, {foreignTable, referencedTable = foreignTable} = {}) {\n    const keyOffset = typeof referencedTable === \"undefined\" ? \"offset\" : `${referencedTable}.offset`;\n    const keyLimit = typeof referencedTable === \"undefined\" ? \"limit\" : `${referencedTable}.limit`;\n    this.url.searchParams.set(keyOffset, `${from}`);\n    this.url.searchParams.set(keyLimit, `${to - from + 1}`);\n    return this;\n  }\n  abortSignal(signal) {\n    this.signal = signal;\n    return this;\n  }\n  single() {\n    this.headers.set(\"Accept\", \"application/vnd.pgrst.object+json\");\n    return this;\n  }\n  maybeSingle() {\n    if (this.method === \"GET\")\n      this.headers.set(\"Accept\", \"application/json\");\n    else\n      this.headers.set(\"Accept\", \"application/vnd.pgrst.object+json\");\n    this.isMaybeSingle = true;\n    return this;\n  }\n  csv() {\n    this.headers.set(\"Accept\", \"text/csv\");\n    return this;\n  }\n  geojson() {\n    this.headers.set(\"Accept\", \"application/geo+json\");\n    return this;\n  }\n  explain({analyze = false, verbose = false, settings = false, buffers = false, wal = false, format = \"text\"} = {}) {\n    var _this$headers$get;\n    const options = [\n      analyze ? \"analyze\" : null,\n      verbose ? \"verbose\" : null,\n      settings ? \"settings\" : null,\n      buffers ? \"buffers\" : null,\n      wal ? \"wal\" : null\n    ].filter(Boolean).join(\"|\");\n    const forMediatype = (_this$headers$get = this.headers.get(\"Accept\")) !== null && _this$headers$get !== void 0 ? _this$headers$get : \"application/json\";\n    this.headers.set(\"Accept\", `application/vnd.pgrst.plan+${format}; for=\"${forMediatype}\"; options=${options};`);\n    if (format === \"json\")\n      return this;\n    else\n      return this;\n  }\n  rollback() {\n    this.headers.append(\"Prefer\", \"tx=rollback\");\n    return this;\n  }\n  returns() {\n    return this;\n  }\n  maxAffected(value) {\n    this.headers.append(\"Prefer\", \"handling=strict\");\n    this.headers.append(\"Prefer\", `max-affected=${value}`);\n    return this;\n  }\n};\nconst PostgrestReservedCharsRegexp = /* @__PURE__ */ new RegExp(\"[,()]\");\nvar PostgrestFilterBuilder = class extends PostgrestTransformBuilder {\n  eq(column, value) {\n    this.url.searchParams.append(column, `eq.${value}`);\n    return this;\n  }\n  neq(column, value) {\n    this.url.searchParams.append(column, `neq.${value}`);\n    return this;\n  }\n  gt(column, value) {\n    this.url.searchParams.append(column, `gt.${value}`);\n    return this;\n  }\n  gte(column, value) {\n    this.url.searchParams.append(column, `gte.${value}`);\n    return this;\n  }\n  lt(column, value) {\n    this.url.searchParams.append(column, `lt.${value}`);\n    return this;\n  }\n  lte(column, value) {\n    this.url.searchParams.append(column, `lte.${value}`);\n    return this;\n  }\n  like(column, pattern) {\n    this.url.searchParams.append(column, `like.${pattern}`);\n    return this;\n  }\n  likeAllOf(column, patterns) {\n    this.url.searchParams.append(column, `like(all).{${patterns.join(\",\")}}`);\n    return this;\n  }\n  likeAnyOf(column, patterns) {\n    this.url.searchParams.append(column, `like(any).{${patterns.join(\",\")}}`);\n    return this;\n  }\n  ilike(column, pattern) {\n    this.url.searchParams.append(column, `ilike.${pattern}`);\n    return this;\n  }\n  ilikeAllOf(column, patterns) {\n    this.url.searchParams.append(column, `ilike(all).{${patterns.join(\",\")}}`);\n    return this;\n  }\n  ilikeAnyOf(column, patterns) {\n    this.url.searchParams.append(column, `ilike(any).{${patterns.join(\",\")}}`);\n    return this;\n  }\n  regexMatch(column, pattern) {\n    this.url.searchParams.append(column, `match.${pattern}`);\n    return this;\n  }\n  regexIMatch(column, pattern) {\n    this.url.searchParams.append(column, `imatch.${pattern}`);\n    return this;\n  }\n  is(column, value) {\n    this.url.searchParams.append(column, `is.${value}`);\n    return this;\n  }\n  isDistinct(column, value) {\n    this.url.searchParams.append(column, `isdistinct.${value}`);\n    return this;\n  }\n  in(column, values) {\n    const cleanedValues = Array.from(new Set(values)).map((s) => {\n      if (typeof s === \"string\" && PostgrestReservedCharsRegexp.test(s))\n        return `\"${s}\"`;\n      else\n        return `${s}`;\n    }).join(\",\");\n    this.url.searchParams.append(column, `in.(${cleanedValues})`);\n    return this;\n  }\n  notIn(column, values) {\n    const cleanedValues = Array.from(new Set(values)).map((s) => {\n      if (typeof s === \"string\" && PostgrestReservedCharsRegexp.test(s))\n        return `\"${s}\"`;\n      else\n        return `${s}`;\n    }).join(\",\");\n    this.url.searchParams.append(column, `not.in.(${cleanedValues})`);\n    return this;\n  }\n  contains(column, value) {\n    if (typeof value === \"string\")\n      this.url.searchParams.append(column, `cs.${value}`);\n    else if (Array.isArray(value))\n      this.url.searchParams.append(column, `cs.{${value.join(\",\")}}`);\n    else\n      this.url.searchParams.append(column, `cs.${JSON.stringify(value)}`);\n    return this;\n  }\n  containedBy(column, value) {\n    if (typeof value === \"string\")\n      this.url.searchParams.append(column, `cd.${value}`);\n    else if (Array.isArray(value))\n      this.url.searchParams.append(column, `cd.{${value.join(\",\")}}`);\n    else\n      this.url.searchParams.append(column, `cd.${JSON.stringify(value)}`);\n    return this;\n  }\n  rangeGt(column, range) {\n    this.url.searchParams.append(column, `sr.${range}`);\n    return this;\n  }\n  rangeGte(column, range) {\n    this.url.searchParams.append(column, `nxl.${range}`);\n    return this;\n  }\n  rangeLt(column, range) {\n    this.url.searchParams.append(column, `sl.${range}`);\n    return this;\n  }\n  rangeLte(column, range) {\n    this.url.searchParams.append(column, `nxr.${range}`);\n    return this;\n  }\n  rangeAdjacent(column, range) {\n    this.url.searchParams.append(column, `adj.${range}`);\n    return this;\n  }\n  overlaps(column, value) {\n    if (typeof value === \"string\")\n      this.url.searchParams.append(column, `ov.${value}`);\n    else\n      this.url.searchParams.append(column, `ov.{${value.join(\",\")}}`);\n    return this;\n  }\n  textSearch(column, query, {config, type} = {}) {\n    let typePart = \"\";\n    if (type === \"plain\")\n      typePart = \"pl\";\n    else if (type === \"phrase\")\n      typePart = \"ph\";\n    else if (type === \"websearch\")\n      typePart = \"w\";\n    const configPart = config === void 0 ? \"\" : `(${config})`;\n    this.url.searchParams.append(column, `${typePart}fts${configPart}.${query}`);\n    return this;\n  }\n  match(query) {\n    Object.entries(query).forEach(([column, value]) => {\n      this.url.searchParams.append(column, `eq.${value}`);\n    });\n    return this;\n  }\n  not(column, operator, value) {\n    this.url.searchParams.append(column, `not.${operator}.${value}`);\n    return this;\n  }\n  or(filters, {foreignTable, referencedTable = foreignTable} = {}) {\n    const key = referencedTable ? `${referencedTable}.or` : \"or\";\n    this.url.searchParams.append(key, `(${filters})`);\n    return this;\n  }\n  filter(column, operator, value) {\n    this.url.searchParams.append(column, `${operator}.${value}`);\n    return this;\n  }\n};\nvar PostgrestQueryBuilder = class {\n  constructor(url, {headers = {}, schema, fetch: fetch$1}) {\n    this.url = url;\n    this.headers = new Headers(headers);\n    this.schema = schema;\n    this.fetch = fetch$1;\n  }\n  select(columns, options) {\n    const {head = false, count} = options !== null && options !== void 0 ? options : {};\n    const method = head ? \"HEAD\" : \"GET\";\n    let quoted = false;\n    const cleanedColumns = (columns !== null && columns !== void 0 ? columns : \"*\").split(\"\").map((c) => {\n      if (/\\s/.test(c) && !quoted)\n        return \"\";\n      if (c === '\"')\n        quoted = !quoted;\n      return c;\n    }).join(\"\");\n    this.url.searchParams.set(\"select\", cleanedColumns);\n    if (count)\n      this.headers.append(\"Prefer\", `count=${count}`);\n    return new PostgrestFilterBuilder({\n      method,\n      url: this.url,\n      headers: this.headers,\n      schema: this.schema,\n      fetch: this.fetch\n    });\n  }\n  insert(values, {count, defaultToNull = true} = {}) {\n    var _this$fetch;\n    const method = \"POST\";\n    if (count)\n      this.headers.append(\"Prefer\", `count=${count}`);\n    if (!defaultToNull)\n      this.headers.append(\"Prefer\", `missing=default`);\n    if (Array.isArray(values)) {\n      const columns = values.reduce((acc, x) => acc.concat(Object.keys(x)), []);\n      if (columns.length > 0) {\n        const uniqueColumns = [...new Set(columns)].map((column) => `\"${column}\"`);\n        this.url.searchParams.set(\"columns\", uniqueColumns.join(\",\"));\n      }\n    }\n    return new PostgrestFilterBuilder({\n      method,\n      url: this.url,\n      headers: this.headers,\n      schema: this.schema,\n      body: values,\n      fetch: (_this$fetch = this.fetch) !== null && _this$fetch !== void 0 ? _this$fetch : fetch\n    });\n  }\n  upsert(values, {onConflict, ignoreDuplicates = false, count, defaultToNull = true} = {}) {\n    var _this$fetch2;\n    const method = \"POST\";\n    this.headers.append(\"Prefer\", `resolution=${ignoreDuplicates ? \"ignore\" : \"merge\"}-duplicates`);\n    if (onConflict !== void 0)\n      this.url.searchParams.set(\"on_conflict\", onConflict);\n    if (count)\n      this.headers.append(\"Prefer\", `count=${count}`);\n    if (!defaultToNull)\n      this.headers.append(\"Prefer\", \"missing=default\");\n    if (Array.isArray(values)) {\n      const columns = values.reduce((acc, x) => acc.concat(Object.keys(x)), []);\n      if (columns.length > 0) {\n        const uniqueColumns = [...new Set(columns)].map((column) => `\"${column}\"`);\n        this.url.searchParams.set(\"columns\", uniqueColumns.join(\",\"));\n      }\n    }\n    return new PostgrestFilterBuilder({\n      method,\n      url: this.url,\n      headers: this.headers,\n      schema: this.schema,\n      body: values,\n      fetch: (_this$fetch2 = this.fetch) !== null && _this$fetch2 !== void 0 ? _this$fetch2 : fetch\n    });\n  }\n  update(values, {count} = {}) {\n    var _this$fetch3;\n    const method = \"PATCH\";\n    if (count)\n      this.headers.append(\"Prefer\", `count=${count}`);\n    return new PostgrestFilterBuilder({\n      method,\n      url: this.url,\n      headers: this.headers,\n      schema: this.schema,\n      body: values,\n      fetch: (_this$fetch3 = this.fetch) !== null && _this$fetch3 !== void 0 ? _this$fetch3 : fetch\n    });\n  }\n  delete({count} = {}) {\n    var _this$fetch4;\n    const method = \"DELETE\";\n    if (count)\n      this.headers.append(\"Prefer\", `count=${count}`);\n    return new PostgrestFilterBuilder({\n      method,\n      url: this.url,\n      headers: this.headers,\n      schema: this.schema,\n      fetch: (_this$fetch4 = this.fetch) !== null && _this$fetch4 !== void 0 ? _this$fetch4 : fetch\n    });\n  }\n};\nvar PostgrestClient = class PostgrestClient2 {\n  constructor(url, {headers = {}, schema, fetch: fetch$1} = {}) {\n    this.url = url;\n    this.headers = new Headers(headers);\n    this.schemaName = schema;\n    this.fetch = fetch$1;\n  }\n  from(relation) {\n    if (!relation || typeof relation !== \"string\" || relation.trim() === \"\")\n      throw new Error(\"Invalid relation name: relation must be a non-empty string.\");\n    return new PostgrestQueryBuilder(new URL(`${this.url}/${relation}`), {\n      headers: new Headers(this.headers),\n      schema: this.schemaName,\n      fetch: this.fetch\n    });\n  }\n  schema(schema) {\n    return new PostgrestClient2(this.url, {\n      headers: this.headers,\n      schema,\n      fetch: this.fetch\n    });\n  }\n  rpc(fn, args = {}, {head = false, get = false, count} = {}) {\n    var _this$fetch;\n    let method;\n    const url = new URL(`${this.url}/rpc/${fn}`);\n    let body;\n    if (head || get) {\n      method = head ? \"HEAD\" : \"GET\";\n      Object.entries(args).filter(([_, value]) => value !== void 0).map(([name, value]) => [name, Array.isArray(value) ? `{${value.join(\",\")}}` : `${value}`]).forEach(([name, value]) => {\n        url.searchParams.append(name, value);\n      });\n    } else {\n      method = \"POST\";\n      body = args;\n    }\n    const headers = new Headers(this.headers);\n    if (count)\n      headers.set(\"Prefer\", `count=${count}`);\n    return new PostgrestFilterBuilder({\n      method,\n      url,\n      headers,\n      schema: this.schemaName,\n      body,\n      fetch: (_this$fetch = this.fetch) !== null && _this$fetch !== void 0 ? _this$fetch : fetch\n    });\n  }\n};\nvar src_default = {\n  PostgrestClient,\n  PostgrestQueryBuilder,\n  PostgrestFilterBuilder,\n  PostgrestTransformBuilder,\n  PostgrestBuilder,\n  PostgrestError\n};\nexport default src_default;\nexport {PostgrestBuilder, PostgrestClient, PostgrestError, PostgrestFilterBuilder, PostgrestQueryBuilder, PostgrestTransformBuilder};\n","var global$1 = typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {};\nfunction defaultSetTimout() {\n  throw new Error(\"setTimeout has not been defined\");\n}\nfunction defaultClearTimeout() {\n  throw new Error(\"clearTimeout has not been defined\");\n}\nvar cachedSetTimeout = defaultSetTimout;\nvar cachedClearTimeout = defaultClearTimeout;\nvar globalContext;\nif (typeof window !== \"undefined\") {\n  globalContext = window;\n} else if (typeof self !== \"undefined\") {\n  globalContext = self;\n} else {\n  globalContext = {};\n}\nif (typeof globalContext.setTimeout === \"function\") {\n  cachedSetTimeout = setTimeout;\n}\nif (typeof globalContext.clearTimeout === \"function\") {\n  cachedClearTimeout = clearTimeout;\n}\nfunction runTimeout(fun) {\n  if (cachedSetTimeout === setTimeout) {\n    return setTimeout(fun, 0);\n  }\n  if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n    cachedSetTimeout = setTimeout;\n    return setTimeout(fun, 0);\n  }\n  try {\n    return cachedSetTimeout(fun, 0);\n  } catch (e) {\n    try {\n      return cachedSetTimeout.call(null, fun, 0);\n    } catch (e2) {\n      return cachedSetTimeout.call(this, fun, 0);\n    }\n  }\n}\nfunction runClearTimeout(marker) {\n  if (cachedClearTimeout === clearTimeout) {\n    return clearTimeout(marker);\n  }\n  if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n    cachedClearTimeout = clearTimeout;\n    return clearTimeout(marker);\n  }\n  try {\n    return cachedClearTimeout(marker);\n  } catch (e) {\n    try {\n      return cachedClearTimeout.call(null, marker);\n    } catch (e2) {\n      return cachedClearTimeout.call(this, marker);\n    }\n  }\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\nfunction cleanUpNextTick() {\n  if (!draining || !currentQueue) {\n    return;\n  }\n  draining = false;\n  if (currentQueue.length) {\n    queue = currentQueue.concat(queue);\n  } else {\n    queueIndex = -1;\n  }\n  if (queue.length) {\n    drainQueue();\n  }\n}\nfunction drainQueue() {\n  if (draining) {\n    return;\n  }\n  var timeout = runTimeout(cleanUpNextTick);\n  draining = true;\n  var len = queue.length;\n  while (len) {\n    currentQueue = queue;\n    queue = [];\n    while (++queueIndex < len) {\n      if (currentQueue) {\n        currentQueue[queueIndex].run();\n      }\n    }\n    queueIndex = -1;\n    len = queue.length;\n  }\n  currentQueue = null;\n  draining = false;\n  runClearTimeout(timeout);\n}\nfunction nextTick(fun) {\n  var args = new Array(arguments.length - 1);\n  if (arguments.length > 1) {\n    for (var i = 1; i < arguments.length; i++) {\n      args[i - 1] = arguments[i];\n    }\n  }\n  queue.push(new Item(fun, args));\n  if (queue.length === 1 && !draining) {\n    runTimeout(drainQueue);\n  }\n}\nfunction Item(fun, array) {\n  this.fun = fun;\n  this.array = array;\n}\nItem.prototype.run = function() {\n  this.fun.apply(null, this.array);\n};\nvar title = \"browser\";\nvar platform = \"browser\";\nvar browser = true;\nvar argv = [];\nvar version = \"\";\nvar versions = {};\nvar release = {};\nvar config = {};\nfunction noop() {\n}\nvar on = noop;\nvar addListener = noop;\nvar once = noop;\nvar off = noop;\nvar removeListener = noop;\nvar removeAllListeners = noop;\nvar emit = noop;\nfunction binding(name) {\n  throw new Error(\"process.binding is not supported\");\n}\nfunction cwd() {\n  return \"/\";\n}\nfunction chdir(dir) {\n  throw new Error(\"process.chdir is not supported\");\n}\nfunction umask() {\n  return 0;\n}\nvar performance = globalContext.performance || {};\nvar performanceNow = performance.now || performance.mozNow || performance.msNow || performance.oNow || performance.webkitNow || function() {\n  return new Date().getTime();\n};\nfunction hrtime(previousTimestamp) {\n  var clocktime = performanceNow.call(performance) * 1e-3;\n  var seconds = Math.floor(clocktime);\n  var nanoseconds = Math.floor(clocktime % 1 * 1e9);\n  if (previousTimestamp) {\n    seconds = seconds - previousTimestamp[0];\n    nanoseconds = nanoseconds - previousTimestamp[1];\n    if (nanoseconds < 0) {\n      seconds--;\n      nanoseconds += 1e9;\n    }\n  }\n  return [seconds, nanoseconds];\n}\nvar startTime = new Date();\nfunction uptime() {\n  var currentTime = new Date();\n  var dif = currentTime - startTime;\n  return dif / 1e3;\n}\nvar process = {\n  nextTick,\n  title,\n  browser,\n  env: {NODE_ENV: \"production\"},\n  argv,\n  version,\n  versions,\n  on,\n  addListener,\n  once,\n  off,\n  removeListener,\n  removeAllListeners,\n  emit,\n  binding,\n  cwd,\n  chdir,\n  umask,\n  hrtime,\n  platform,\n  release,\n  config,\n  uptime\n};\nclass WebSocketFactory {\n  constructor() {\n  }\n  static detectEnvironment() {\n    var _a;\n    if (typeof WebSocket !== \"undefined\") {\n      return {type: \"native\", constructor: WebSocket};\n    }\n    if (typeof globalThis !== \"undefined\" && typeof globalThis.WebSocket !== \"undefined\") {\n      return {type: \"native\", constructor: globalThis.WebSocket};\n    }\n    if (typeof global$1 !== \"undefined\" && typeof global$1.WebSocket !== \"undefined\") {\n      return {type: \"native\", constructor: global$1.WebSocket};\n    }\n    if (typeof globalThis !== \"undefined\" && typeof globalThis.WebSocketPair !== \"undefined\" && typeof globalThis.WebSocket === \"undefined\") {\n      return {\n        type: \"cloudflare\",\n        error: \"Cloudflare Workers detected. WebSocket clients are not supported in Cloudflare Workers.\",\n        workaround: \"Use Cloudflare Workers WebSocket API for server-side WebSocket handling, or deploy to a different runtime.\"\n      };\n    }\n    if (typeof globalThis !== \"undefined\" && globalThis.EdgeRuntime || typeof navigator !== \"undefined\" && ((_a = navigator.userAgent) === null || _a === void 0 ? void 0 : _a.includes(\"Vercel-Edge\"))) {\n      return {\n        type: \"unsupported\",\n        error: \"Edge runtime detected (Vercel Edge/Netlify Edge). WebSockets are not supported in edge functions.\",\n        workaround: \"Use serverless functions or a different deployment target for WebSocket functionality.\"\n      };\n    }\n    if (typeof process !== \"undefined\") {\n      const processVersions = process[\"versions\"];\n      if (processVersions && processVersions[\"node\"]) {\n        const versionString = processVersions[\"node\"];\n        const nodeVersion = parseInt(versionString.replace(/^v/, \"\").split(\".\")[0]);\n        if (nodeVersion >= 22) {\n          if (typeof globalThis.WebSocket !== \"undefined\") {\n            return {type: \"native\", constructor: globalThis.WebSocket};\n          }\n          return {\n            type: \"unsupported\",\n            error: `Node.js ${nodeVersion} detected but native WebSocket not found.`,\n            workaround: \"Provide a WebSocket implementation via the transport option.\"\n          };\n        }\n        return {\n          type: \"unsupported\",\n          error: `Node.js ${nodeVersion} detected without native WebSocket support.`,\n          workaround: 'For Node.js < 22, install \"ws\" package and provide it via the transport option:\\nimport ws from \"ws\"\\nnew RealtimeClient(url, { transport: ws })'\n        };\n      }\n    }\n    return {\n      type: \"unsupported\",\n      error: \"Unknown JavaScript runtime without WebSocket support.\",\n      workaround: \"Ensure you're running in a supported environment (browser, Node.js, Deno) or provide a custom WebSocket implementation.\"\n    };\n  }\n  static getWebSocketConstructor() {\n    const env = this.detectEnvironment();\n    if (env.constructor) {\n      return env.constructor;\n    }\n    let errorMessage = env.error || \"WebSocket not supported in this environment.\";\n    if (env.workaround) {\n      errorMessage += `\n\nSuggested solution: ${env.workaround}`;\n    }\n    throw new Error(errorMessage);\n  }\n  static createWebSocket(url, protocols) {\n    const WS = this.getWebSocketConstructor();\n    return new WS(url, protocols);\n  }\n  static isWebSocketSupported() {\n    try {\n      const env = this.detectEnvironment();\n      return env.type === \"native\" || env.type === \"ws\";\n    } catch (_a) {\n      return false;\n    }\n  }\n}\nconst version$1 = \"2.89.0\";\nconst DEFAULT_VERSION = `realtime-js/${version$1}`;\nconst VSN_1_0_0 = \"1.0.0\";\nconst VSN_2_0_0 = \"2.0.0\";\nconst DEFAULT_VSN = VSN_1_0_0;\nconst DEFAULT_TIMEOUT = 1e4;\nconst WS_CLOSE_NORMAL = 1e3;\nconst MAX_PUSH_BUFFER_SIZE = 100;\nvar SOCKET_STATES;\n(function(SOCKET_STATES2) {\n  SOCKET_STATES2[SOCKET_STATES2[\"connecting\"] = 0] = \"connecting\";\n  SOCKET_STATES2[SOCKET_STATES2[\"open\"] = 1] = \"open\";\n  SOCKET_STATES2[SOCKET_STATES2[\"closing\"] = 2] = \"closing\";\n  SOCKET_STATES2[SOCKET_STATES2[\"closed\"] = 3] = \"closed\";\n})(SOCKET_STATES || (SOCKET_STATES = {}));\nvar CHANNEL_STATES;\n(function(CHANNEL_STATES2) {\n  CHANNEL_STATES2[\"closed\"] = \"closed\";\n  CHANNEL_STATES2[\"errored\"] = \"errored\";\n  CHANNEL_STATES2[\"joined\"] = \"joined\";\n  CHANNEL_STATES2[\"joining\"] = \"joining\";\n  CHANNEL_STATES2[\"leaving\"] = \"leaving\";\n})(CHANNEL_STATES || (CHANNEL_STATES = {}));\nvar CHANNEL_EVENTS;\n(function(CHANNEL_EVENTS2) {\n  CHANNEL_EVENTS2[\"close\"] = \"phx_close\";\n  CHANNEL_EVENTS2[\"error\"] = \"phx_error\";\n  CHANNEL_EVENTS2[\"join\"] = \"phx_join\";\n  CHANNEL_EVENTS2[\"reply\"] = \"phx_reply\";\n  CHANNEL_EVENTS2[\"leave\"] = \"phx_leave\";\n  CHANNEL_EVENTS2[\"access_token\"] = \"access_token\";\n})(CHANNEL_EVENTS || (CHANNEL_EVENTS = {}));\nvar TRANSPORTS;\n(function(TRANSPORTS2) {\n  TRANSPORTS2[\"websocket\"] = \"websocket\";\n})(TRANSPORTS || (TRANSPORTS = {}));\nvar CONNECTION_STATE;\n(function(CONNECTION_STATE2) {\n  CONNECTION_STATE2[\"Connecting\"] = \"connecting\";\n  CONNECTION_STATE2[\"Open\"] = \"open\";\n  CONNECTION_STATE2[\"Closing\"] = \"closing\";\n  CONNECTION_STATE2[\"Closed\"] = \"closed\";\n})(CONNECTION_STATE || (CONNECTION_STATE = {}));\nclass Serializer {\n  constructor(allowedMetadataKeys) {\n    this.HEADER_LENGTH = 1;\n    this.USER_BROADCAST_PUSH_META_LENGTH = 6;\n    this.KINDS = {userBroadcastPush: 3, userBroadcast: 4};\n    this.BINARY_ENCODING = 0;\n    this.JSON_ENCODING = 1;\n    this.BROADCAST_EVENT = \"broadcast\";\n    this.allowedMetadataKeys = [];\n    this.allowedMetadataKeys = allowedMetadataKeys !== null && allowedMetadataKeys !== void 0 ? allowedMetadataKeys : [];\n  }\n  encode(msg, callback) {\n    if (msg.event === this.BROADCAST_EVENT && !(msg.payload instanceof ArrayBuffer) && typeof msg.payload.event === \"string\") {\n      return callback(this._binaryEncodeUserBroadcastPush(msg));\n    }\n    let payload = [msg.join_ref, msg.ref, msg.topic, msg.event, msg.payload];\n    return callback(JSON.stringify(payload));\n  }\n  _binaryEncodeUserBroadcastPush(message) {\n    var _a;\n    if (this._isArrayBuffer((_a = message.payload) === null || _a === void 0 ? void 0 : _a.payload)) {\n      return this._encodeBinaryUserBroadcastPush(message);\n    } else {\n      return this._encodeJsonUserBroadcastPush(message);\n    }\n  }\n  _encodeBinaryUserBroadcastPush(message) {\n    var _a, _b;\n    const userPayload = (_b = (_a = message.payload) === null || _a === void 0 ? void 0 : _a.payload) !== null && _b !== void 0 ? _b : new ArrayBuffer(0);\n    return this._encodeUserBroadcastPush(message, this.BINARY_ENCODING, userPayload);\n  }\n  _encodeJsonUserBroadcastPush(message) {\n    var _a, _b;\n    const userPayload = (_b = (_a = message.payload) === null || _a === void 0 ? void 0 : _a.payload) !== null && _b !== void 0 ? _b : {};\n    const encoder = new TextEncoder();\n    const encodedUserPayload = encoder.encode(JSON.stringify(userPayload)).buffer;\n    return this._encodeUserBroadcastPush(message, this.JSON_ENCODING, encodedUserPayload);\n  }\n  _encodeUserBroadcastPush(message, encodingType, encodedPayload) {\n    var _a, _b;\n    const topic = message.topic;\n    const ref = (_a = message.ref) !== null && _a !== void 0 ? _a : \"\";\n    const joinRef = (_b = message.join_ref) !== null && _b !== void 0 ? _b : \"\";\n    const userEvent = message.payload.event;\n    const rest = this.allowedMetadataKeys ? this._pick(message.payload, this.allowedMetadataKeys) : {};\n    const metadata = Object.keys(rest).length === 0 ? \"\" : JSON.stringify(rest);\n    if (joinRef.length > 255) {\n      throw new Error(`joinRef length ${joinRef.length} exceeds maximum of 255`);\n    }\n    if (ref.length > 255) {\n      throw new Error(`ref length ${ref.length} exceeds maximum of 255`);\n    }\n    if (topic.length > 255) {\n      throw new Error(`topic length ${topic.length} exceeds maximum of 255`);\n    }\n    if (userEvent.length > 255) {\n      throw new Error(`userEvent length ${userEvent.length} exceeds maximum of 255`);\n    }\n    if (metadata.length > 255) {\n      throw new Error(`metadata length ${metadata.length} exceeds maximum of 255`);\n    }\n    const metaLength = this.USER_BROADCAST_PUSH_META_LENGTH + joinRef.length + ref.length + topic.length + userEvent.length + metadata.length;\n    const header = new ArrayBuffer(this.HEADER_LENGTH + metaLength);\n    let view = new DataView(header);\n    let offset = 0;\n    view.setUint8(offset++, this.KINDS.userBroadcastPush);\n    view.setUint8(offset++, joinRef.length);\n    view.setUint8(offset++, ref.length);\n    view.setUint8(offset++, topic.length);\n    view.setUint8(offset++, userEvent.length);\n    view.setUint8(offset++, metadata.length);\n    view.setUint8(offset++, encodingType);\n    Array.from(joinRef, (char) => view.setUint8(offset++, char.charCodeAt(0)));\n    Array.from(ref, (char) => view.setUint8(offset++, char.charCodeAt(0)));\n    Array.from(topic, (char) => view.setUint8(offset++, char.charCodeAt(0)));\n    Array.from(userEvent, (char) => view.setUint8(offset++, char.charCodeAt(0)));\n    Array.from(metadata, (char) => view.setUint8(offset++, char.charCodeAt(0)));\n    var combined = new Uint8Array(header.byteLength + encodedPayload.byteLength);\n    combined.set(new Uint8Array(header), 0);\n    combined.set(new Uint8Array(encodedPayload), header.byteLength);\n    return combined.buffer;\n  }\n  decode(rawPayload, callback) {\n    if (this._isArrayBuffer(rawPayload)) {\n      let result = this._binaryDecode(rawPayload);\n      return callback(result);\n    }\n    if (typeof rawPayload === \"string\") {\n      const jsonPayload = JSON.parse(rawPayload);\n      const [join_ref, ref, topic, event, payload] = jsonPayload;\n      return callback({join_ref, ref, topic, event, payload});\n    }\n    return callback({});\n  }\n  _binaryDecode(buffer) {\n    const view = new DataView(buffer);\n    const kind = view.getUint8(0);\n    const decoder = new TextDecoder();\n    switch (kind) {\n      case this.KINDS.userBroadcast:\n        return this._decodeUserBroadcast(buffer, view, decoder);\n    }\n  }\n  _decodeUserBroadcast(buffer, view, decoder) {\n    const topicSize = view.getUint8(1);\n    const userEventSize = view.getUint8(2);\n    const metadataSize = view.getUint8(3);\n    const payloadEncoding = view.getUint8(4);\n    let offset = this.HEADER_LENGTH + 4;\n    const topic = decoder.decode(buffer.slice(offset, offset + topicSize));\n    offset = offset + topicSize;\n    const userEvent = decoder.decode(buffer.slice(offset, offset + userEventSize));\n    offset = offset + userEventSize;\n    const metadata = decoder.decode(buffer.slice(offset, offset + metadataSize));\n    offset = offset + metadataSize;\n    const payload = buffer.slice(offset, buffer.byteLength);\n    const parsedPayload = payloadEncoding === this.JSON_ENCODING ? JSON.parse(decoder.decode(payload)) : payload;\n    const data = {\n      type: this.BROADCAST_EVENT,\n      event: userEvent,\n      payload: parsedPayload\n    };\n    if (metadataSize > 0) {\n      data[\"meta\"] = JSON.parse(metadata);\n    }\n    return {join_ref: null, ref: null, topic, event: this.BROADCAST_EVENT, payload: data};\n  }\n  _isArrayBuffer(buffer) {\n    var _a;\n    return buffer instanceof ArrayBuffer || ((_a = buffer === null || buffer === void 0 ? void 0 : buffer.constructor) === null || _a === void 0 ? void 0 : _a.name) === \"ArrayBuffer\";\n  }\n  _pick(obj, keys) {\n    if (!obj || typeof obj !== \"object\") {\n      return {};\n    }\n    return Object.fromEntries(Object.entries(obj).filter(([key]) => keys.includes(key)));\n  }\n}\nclass Timer {\n  constructor(callback, timerCalc) {\n    this.callback = callback;\n    this.timerCalc = timerCalc;\n    this.timer = void 0;\n    this.tries = 0;\n    this.callback = callback;\n    this.timerCalc = timerCalc;\n  }\n  reset() {\n    this.tries = 0;\n    clearTimeout(this.timer);\n    this.timer = void 0;\n  }\n  scheduleTimeout() {\n    clearTimeout(this.timer);\n    this.timer = setTimeout(() => {\n      this.tries = this.tries + 1;\n      this.callback();\n    }, this.timerCalc(this.tries + 1));\n  }\n}\nvar PostgresTypes;\n(function(PostgresTypes2) {\n  PostgresTypes2[\"abstime\"] = \"abstime\";\n  PostgresTypes2[\"bool\"] = \"bool\";\n  PostgresTypes2[\"date\"] = \"date\";\n  PostgresTypes2[\"daterange\"] = \"daterange\";\n  PostgresTypes2[\"float4\"] = \"float4\";\n  PostgresTypes2[\"float8\"] = \"float8\";\n  PostgresTypes2[\"int2\"] = \"int2\";\n  PostgresTypes2[\"int4\"] = \"int4\";\n  PostgresTypes2[\"int4range\"] = \"int4range\";\n  PostgresTypes2[\"int8\"] = \"int8\";\n  PostgresTypes2[\"int8range\"] = \"int8range\";\n  PostgresTypes2[\"json\"] = \"json\";\n  PostgresTypes2[\"jsonb\"] = \"jsonb\";\n  PostgresTypes2[\"money\"] = \"money\";\n  PostgresTypes2[\"numeric\"] = \"numeric\";\n  PostgresTypes2[\"oid\"] = \"oid\";\n  PostgresTypes2[\"reltime\"] = \"reltime\";\n  PostgresTypes2[\"text\"] = \"text\";\n  PostgresTypes2[\"time\"] = \"time\";\n  PostgresTypes2[\"timestamp\"] = \"timestamp\";\n  PostgresTypes2[\"timestamptz\"] = \"timestamptz\";\n  PostgresTypes2[\"timetz\"] = \"timetz\";\n  PostgresTypes2[\"tsrange\"] = \"tsrange\";\n  PostgresTypes2[\"tstzrange\"] = \"tstzrange\";\n})(PostgresTypes || (PostgresTypes = {}));\nconst convertChangeData = (columns, record, options = {}) => {\n  var _a;\n  const skipTypes = (_a = options.skipTypes) !== null && _a !== void 0 ? _a : [];\n  if (!record) {\n    return {};\n  }\n  return Object.keys(record).reduce((acc, rec_key) => {\n    acc[rec_key] = convertColumn(rec_key, columns, record, skipTypes);\n    return acc;\n  }, {});\n};\nconst convertColumn = (columnName, columns, record, skipTypes) => {\n  const column = columns.find((x) => x.name === columnName);\n  const colType = column === null || column === void 0 ? void 0 : column.type;\n  const value = record[columnName];\n  if (colType && !skipTypes.includes(colType)) {\n    return convertCell(colType, value);\n  }\n  return noop$1(value);\n};\nconst convertCell = (type, value) => {\n  if (type.charAt(0) === \"_\") {\n    const dataType = type.slice(1, type.length);\n    return toArray(value, dataType);\n  }\n  switch (type) {\n    case PostgresTypes.bool:\n      return toBoolean(value);\n    case PostgresTypes.float4:\n    case PostgresTypes.float8:\n    case PostgresTypes.int2:\n    case PostgresTypes.int4:\n    case PostgresTypes.int8:\n    case PostgresTypes.numeric:\n    case PostgresTypes.oid:\n      return toNumber(value);\n    case PostgresTypes.json:\n    case PostgresTypes.jsonb:\n      return toJson(value);\n    case PostgresTypes.timestamp:\n      return toTimestampString(value);\n    case PostgresTypes.abstime:\n    case PostgresTypes.date:\n    case PostgresTypes.daterange:\n    case PostgresTypes.int4range:\n    case PostgresTypes.int8range:\n    case PostgresTypes.money:\n    case PostgresTypes.reltime:\n    case PostgresTypes.text:\n    case PostgresTypes.time:\n    case PostgresTypes.timestamptz:\n    case PostgresTypes.timetz:\n    case PostgresTypes.tsrange:\n    case PostgresTypes.tstzrange:\n      return noop$1(value);\n    default:\n      return noop$1(value);\n  }\n};\nconst noop$1 = (value) => {\n  return value;\n};\nconst toBoolean = (value) => {\n  switch (value) {\n    case \"t\":\n      return true;\n    case \"f\":\n      return false;\n    default:\n      return value;\n  }\n};\nconst toNumber = (value) => {\n  if (typeof value === \"string\") {\n    const parsedValue = parseFloat(value);\n    if (!Number.isNaN(parsedValue)) {\n      return parsedValue;\n    }\n  }\n  return value;\n};\nconst toJson = (value) => {\n  if (typeof value === \"string\") {\n    try {\n      return JSON.parse(value);\n    } catch (_a) {\n      return value;\n    }\n  }\n  return value;\n};\nconst toArray = (value, type) => {\n  if (typeof value !== \"string\") {\n    return value;\n  }\n  const lastIdx = value.length - 1;\n  const closeBrace = value[lastIdx];\n  const openBrace = value[0];\n  if (openBrace === \"{\" && closeBrace === \"}\") {\n    let arr;\n    const valTrim = value.slice(1, lastIdx);\n    try {\n      arr = JSON.parse(\"[\" + valTrim + \"]\");\n    } catch (_) {\n      arr = valTrim ? valTrim.split(\",\") : [];\n    }\n    return arr.map((val) => convertCell(type, val));\n  }\n  return value;\n};\nconst toTimestampString = (value) => {\n  if (typeof value === \"string\") {\n    return value.replace(\" \", \"T\");\n  }\n  return value;\n};\nconst httpEndpointURL = (socketUrl) => {\n  const wsUrl = new URL(socketUrl);\n  wsUrl.protocol = wsUrl.protocol.replace(/^ws/i, \"http\");\n  wsUrl.pathname = wsUrl.pathname.replace(/\\/+$/, \"\").replace(/\\/socket\\/websocket$/i, \"\").replace(/\\/socket$/i, \"\").replace(/\\/websocket$/i, \"\");\n  if (wsUrl.pathname === \"\" || wsUrl.pathname === \"/\") {\n    wsUrl.pathname = \"/api/broadcast\";\n  } else {\n    wsUrl.pathname = wsUrl.pathname + \"/api/broadcast\";\n  }\n  return wsUrl.href;\n};\nclass Push {\n  constructor(channel, event, payload = {}, timeout = DEFAULT_TIMEOUT) {\n    this.channel = channel;\n    this.event = event;\n    this.payload = payload;\n    this.timeout = timeout;\n    this.sent = false;\n    this.timeoutTimer = void 0;\n    this.ref = \"\";\n    this.receivedResp = null;\n    this.recHooks = [];\n    this.refEvent = null;\n  }\n  resend(timeout) {\n    this.timeout = timeout;\n    this._cancelRefEvent();\n    this.ref = \"\";\n    this.refEvent = null;\n    this.receivedResp = null;\n    this.sent = false;\n    this.send();\n  }\n  send() {\n    if (this._hasReceived(\"timeout\")) {\n      return;\n    }\n    this.startTimeout();\n    this.sent = true;\n    this.channel.socket.push({\n      topic: this.channel.topic,\n      event: this.event,\n      payload: this.payload,\n      ref: this.ref,\n      join_ref: this.channel._joinRef()\n    });\n  }\n  updatePayload(payload) {\n    this.payload = Object.assign(Object.assign({}, this.payload), payload);\n  }\n  receive(status, callback) {\n    var _a;\n    if (this._hasReceived(status)) {\n      callback((_a = this.receivedResp) === null || _a === void 0 ? void 0 : _a.response);\n    }\n    this.recHooks.push({status, callback});\n    return this;\n  }\n  startTimeout() {\n    if (this.timeoutTimer) {\n      return;\n    }\n    this.ref = this.channel.socket._makeRef();\n    this.refEvent = this.channel._replyEventName(this.ref);\n    const callback = (payload) => {\n      this._cancelRefEvent();\n      this._cancelTimeout();\n      this.receivedResp = payload;\n      this._matchReceive(payload);\n    };\n    this.channel._on(this.refEvent, {}, callback);\n    this.timeoutTimer = setTimeout(() => {\n      this.trigger(\"timeout\", {});\n    }, this.timeout);\n  }\n  trigger(status, response) {\n    if (this.refEvent)\n      this.channel._trigger(this.refEvent, {status, response});\n  }\n  destroy() {\n    this._cancelRefEvent();\n    this._cancelTimeout();\n  }\n  _cancelRefEvent() {\n    if (!this.refEvent) {\n      return;\n    }\n    this.channel._off(this.refEvent, {});\n  }\n  _cancelTimeout() {\n    clearTimeout(this.timeoutTimer);\n    this.timeoutTimer = void 0;\n  }\n  _matchReceive({status, response}) {\n    this.recHooks.filter((h) => h.status === status).forEach((h) => h.callback(response));\n  }\n  _hasReceived(status) {\n    return this.receivedResp && this.receivedResp.status === status;\n  }\n}\nvar REALTIME_PRESENCE_LISTEN_EVENTS;\n(function(REALTIME_PRESENCE_LISTEN_EVENTS2) {\n  REALTIME_PRESENCE_LISTEN_EVENTS2[\"SYNC\"] = \"sync\";\n  REALTIME_PRESENCE_LISTEN_EVENTS2[\"JOIN\"] = \"join\";\n  REALTIME_PRESENCE_LISTEN_EVENTS2[\"LEAVE\"] = \"leave\";\n})(REALTIME_PRESENCE_LISTEN_EVENTS || (REALTIME_PRESENCE_LISTEN_EVENTS = {}));\nclass RealtimePresence {\n  constructor(channel, opts) {\n    this.channel = channel;\n    this.state = {};\n    this.pendingDiffs = [];\n    this.joinRef = null;\n    this.enabled = false;\n    this.caller = {\n      onJoin: () => {\n      },\n      onLeave: () => {\n      },\n      onSync: () => {\n      }\n    };\n    const events = (opts === null || opts === void 0 ? void 0 : opts.events) || {\n      state: \"presence_state\",\n      diff: \"presence_diff\"\n    };\n    this.channel._on(events.state, {}, (newState) => {\n      const {onJoin, onLeave, onSync} = this.caller;\n      this.joinRef = this.channel._joinRef();\n      this.state = RealtimePresence.syncState(this.state, newState, onJoin, onLeave);\n      this.pendingDiffs.forEach((diff) => {\n        this.state = RealtimePresence.syncDiff(this.state, diff, onJoin, onLeave);\n      });\n      this.pendingDiffs = [];\n      onSync();\n    });\n    this.channel._on(events.diff, {}, (diff) => {\n      const {onJoin, onLeave, onSync} = this.caller;\n      if (this.inPendingSyncState()) {\n        this.pendingDiffs.push(diff);\n      } else {\n        this.state = RealtimePresence.syncDiff(this.state, diff, onJoin, onLeave);\n        onSync();\n      }\n    });\n    this.onJoin((key, currentPresences, newPresences) => {\n      this.channel._trigger(\"presence\", {\n        event: \"join\",\n        key,\n        currentPresences,\n        newPresences\n      });\n    });\n    this.onLeave((key, currentPresences, leftPresences) => {\n      this.channel._trigger(\"presence\", {\n        event: \"leave\",\n        key,\n        currentPresences,\n        leftPresences\n      });\n    });\n    this.onSync(() => {\n      this.channel._trigger(\"presence\", {event: \"sync\"});\n    });\n  }\n  static syncState(currentState, newState, onJoin, onLeave) {\n    const state = this.cloneDeep(currentState);\n    const transformedState = this.transformState(newState);\n    const joins = {};\n    const leaves = {};\n    this.map(state, (key, presences) => {\n      if (!transformedState[key]) {\n        leaves[key] = presences;\n      }\n    });\n    this.map(transformedState, (key, newPresences) => {\n      const currentPresences = state[key];\n      if (currentPresences) {\n        const newPresenceRefs = newPresences.map((m) => m.presence_ref);\n        const curPresenceRefs = currentPresences.map((m) => m.presence_ref);\n        const joinedPresences = newPresences.filter((m) => curPresenceRefs.indexOf(m.presence_ref) < 0);\n        const leftPresences = currentPresences.filter((m) => newPresenceRefs.indexOf(m.presence_ref) < 0);\n        if (joinedPresences.length > 0) {\n          joins[key] = joinedPresences;\n        }\n        if (leftPresences.length > 0) {\n          leaves[key] = leftPresences;\n        }\n      } else {\n        joins[key] = newPresences;\n      }\n    });\n    return this.syncDiff(state, {joins, leaves}, onJoin, onLeave);\n  }\n  static syncDiff(state, diff, onJoin, onLeave) {\n    const {joins, leaves} = {\n      joins: this.transformState(diff.joins),\n      leaves: this.transformState(diff.leaves)\n    };\n    if (!onJoin) {\n      onJoin = () => {\n      };\n    }\n    if (!onLeave) {\n      onLeave = () => {\n      };\n    }\n    this.map(joins, (key, newPresences) => {\n      var _a;\n      const currentPresences = (_a = state[key]) !== null && _a !== void 0 ? _a : [];\n      state[key] = this.cloneDeep(newPresences);\n      if (currentPresences.length > 0) {\n        const joinedPresenceRefs = state[key].map((m) => m.presence_ref);\n        const curPresences = currentPresences.filter((m) => joinedPresenceRefs.indexOf(m.presence_ref) < 0);\n        state[key].unshift(...curPresences);\n      }\n      onJoin(key, currentPresences, newPresences);\n    });\n    this.map(leaves, (key, leftPresences) => {\n      let currentPresences = state[key];\n      if (!currentPresences)\n        return;\n      const presenceRefsToRemove = leftPresences.map((m) => m.presence_ref);\n      currentPresences = currentPresences.filter((m) => presenceRefsToRemove.indexOf(m.presence_ref) < 0);\n      state[key] = currentPresences;\n      onLeave(key, currentPresences, leftPresences);\n      if (currentPresences.length === 0)\n        delete state[key];\n    });\n    return state;\n  }\n  static map(obj, func) {\n    return Object.getOwnPropertyNames(obj).map((key) => func(key, obj[key]));\n  }\n  static transformState(state) {\n    state = this.cloneDeep(state);\n    return Object.getOwnPropertyNames(state).reduce((newState, key) => {\n      const presences = state[key];\n      if (\"metas\" in presences) {\n        newState[key] = presences.metas.map((presence) => {\n          presence[\"presence_ref\"] = presence[\"phx_ref\"];\n          delete presence[\"phx_ref\"];\n          delete presence[\"phx_ref_prev\"];\n          return presence;\n        });\n      } else {\n        newState[key] = presences;\n      }\n      return newState;\n    }, {});\n  }\n  static cloneDeep(obj) {\n    return JSON.parse(JSON.stringify(obj));\n  }\n  onJoin(callback) {\n    this.caller.onJoin = callback;\n  }\n  onLeave(callback) {\n    this.caller.onLeave = callback;\n  }\n  onSync(callback) {\n    this.caller.onSync = callback;\n  }\n  inPendingSyncState() {\n    return !this.joinRef || this.joinRef !== this.channel._joinRef();\n  }\n}\nvar REALTIME_POSTGRES_CHANGES_LISTEN_EVENT;\n(function(REALTIME_POSTGRES_CHANGES_LISTEN_EVENT2) {\n  REALTIME_POSTGRES_CHANGES_LISTEN_EVENT2[\"ALL\"] = \"*\";\n  REALTIME_POSTGRES_CHANGES_LISTEN_EVENT2[\"INSERT\"] = \"INSERT\";\n  REALTIME_POSTGRES_CHANGES_LISTEN_EVENT2[\"UPDATE\"] = \"UPDATE\";\n  REALTIME_POSTGRES_CHANGES_LISTEN_EVENT2[\"DELETE\"] = \"DELETE\";\n})(REALTIME_POSTGRES_CHANGES_LISTEN_EVENT || (REALTIME_POSTGRES_CHANGES_LISTEN_EVENT = {}));\nvar REALTIME_LISTEN_TYPES;\n(function(REALTIME_LISTEN_TYPES2) {\n  REALTIME_LISTEN_TYPES2[\"BROADCAST\"] = \"broadcast\";\n  REALTIME_LISTEN_TYPES2[\"PRESENCE\"] = \"presence\";\n  REALTIME_LISTEN_TYPES2[\"POSTGRES_CHANGES\"] = \"postgres_changes\";\n  REALTIME_LISTEN_TYPES2[\"SYSTEM\"] = \"system\";\n})(REALTIME_LISTEN_TYPES || (REALTIME_LISTEN_TYPES = {}));\nvar REALTIME_SUBSCRIBE_STATES;\n(function(REALTIME_SUBSCRIBE_STATES2) {\n  REALTIME_SUBSCRIBE_STATES2[\"SUBSCRIBED\"] = \"SUBSCRIBED\";\n  REALTIME_SUBSCRIBE_STATES2[\"TIMED_OUT\"] = \"TIMED_OUT\";\n  REALTIME_SUBSCRIBE_STATES2[\"CLOSED\"] = \"CLOSED\";\n  REALTIME_SUBSCRIBE_STATES2[\"CHANNEL_ERROR\"] = \"CHANNEL_ERROR\";\n})(REALTIME_SUBSCRIBE_STATES || (REALTIME_SUBSCRIBE_STATES = {}));\nconst REALTIME_CHANNEL_STATES = CHANNEL_STATES;\nclass RealtimeChannel {\n  constructor(topic, params = {config: {}}, socket) {\n    var _a, _b;\n    this.topic = topic;\n    this.params = params;\n    this.socket = socket;\n    this.bindings = {};\n    this.state = CHANNEL_STATES.closed;\n    this.joinedOnce = false;\n    this.pushBuffer = [];\n    this.subTopic = topic.replace(/^realtime:/i, \"\");\n    this.params.config = Object.assign({\n      broadcast: {ack: false, self: false},\n      presence: {key: \"\", enabled: false},\n      private: false\n    }, params.config);\n    this.timeout = this.socket.timeout;\n    this.joinPush = new Push(this, CHANNEL_EVENTS.join, this.params, this.timeout);\n    this.rejoinTimer = new Timer(() => this._rejoinUntilConnected(), this.socket.reconnectAfterMs);\n    this.joinPush.receive(\"ok\", () => {\n      this.state = CHANNEL_STATES.joined;\n      this.rejoinTimer.reset();\n      this.pushBuffer.forEach((pushEvent) => pushEvent.send());\n      this.pushBuffer = [];\n    });\n    this._onClose(() => {\n      this.rejoinTimer.reset();\n      this.socket.log(\"channel\", `close ${this.topic} ${this._joinRef()}`);\n      this.state = CHANNEL_STATES.closed;\n      this.socket._remove(this);\n    });\n    this._onError((reason) => {\n      if (this._isLeaving() || this._isClosed()) {\n        return;\n      }\n      this.socket.log(\"channel\", `error ${this.topic}`, reason);\n      this.state = CHANNEL_STATES.errored;\n      this.rejoinTimer.scheduleTimeout();\n    });\n    this.joinPush.receive(\"timeout\", () => {\n      if (!this._isJoining()) {\n        return;\n      }\n      this.socket.log(\"channel\", `timeout ${this.topic}`, this.joinPush.timeout);\n      this.state = CHANNEL_STATES.errored;\n      this.rejoinTimer.scheduleTimeout();\n    });\n    this.joinPush.receive(\"error\", (reason) => {\n      if (this._isLeaving() || this._isClosed()) {\n        return;\n      }\n      this.socket.log(\"channel\", `error ${this.topic}`, reason);\n      this.state = CHANNEL_STATES.errored;\n      this.rejoinTimer.scheduleTimeout();\n    });\n    this._on(CHANNEL_EVENTS.reply, {}, (payload, ref) => {\n      this._trigger(this._replyEventName(ref), payload);\n    });\n    this.presence = new RealtimePresence(this);\n    this.broadcastEndpointURL = httpEndpointURL(this.socket.endPoint);\n    this.private = this.params.config.private || false;\n    if (!this.private && ((_b = (_a = this.params.config) === null || _a === void 0 ? void 0 : _a.broadcast) === null || _b === void 0 ? void 0 : _b.replay)) {\n      throw `tried to use replay on public channel '${this.topic}'. It must be a private channel.`;\n    }\n  }\n  subscribe(callback, timeout = this.timeout) {\n    var _a, _b, _c;\n    if (!this.socket.isConnected()) {\n      this.socket.connect();\n    }\n    if (this.state == CHANNEL_STATES.closed) {\n      const {config: {broadcast, presence, private: isPrivate}} = this.params;\n      const postgres_changes = (_b = (_a = this.bindings.postgres_changes) === null || _a === void 0 ? void 0 : _a.map((r) => r.filter)) !== null && _b !== void 0 ? _b : [];\n      const presence_enabled = !!this.bindings[REALTIME_LISTEN_TYPES.PRESENCE] && this.bindings[REALTIME_LISTEN_TYPES.PRESENCE].length > 0 || ((_c = this.params.config.presence) === null || _c === void 0 ? void 0 : _c.enabled) === true;\n      const accessTokenPayload = {};\n      const config2 = {\n        broadcast,\n        presence: Object.assign(Object.assign({}, presence), {enabled: presence_enabled}),\n        postgres_changes,\n        private: isPrivate\n      };\n      if (this.socket.accessTokenValue) {\n        accessTokenPayload.access_token = this.socket.accessTokenValue;\n      }\n      this._onError((e) => callback === null || callback === void 0 ? void 0 : callback(REALTIME_SUBSCRIBE_STATES.CHANNEL_ERROR, e));\n      this._onClose(() => callback === null || callback === void 0 ? void 0 : callback(REALTIME_SUBSCRIBE_STATES.CLOSED));\n      this.updateJoinPayload(Object.assign({config: config2}, accessTokenPayload));\n      this.joinedOnce = true;\n      this._rejoin(timeout);\n      this.joinPush.receive(\"ok\", async ({postgres_changes: postgres_changes2}) => {\n        var _a2;\n        if (!this.socket._isManualToken()) {\n          this.socket.setAuth();\n        }\n        if (postgres_changes2 === void 0) {\n          callback === null || callback === void 0 ? void 0 : callback(REALTIME_SUBSCRIBE_STATES.SUBSCRIBED);\n          return;\n        } else {\n          const clientPostgresBindings = this.bindings.postgres_changes;\n          const bindingsLen = (_a2 = clientPostgresBindings === null || clientPostgresBindings === void 0 ? void 0 : clientPostgresBindings.length) !== null && _a2 !== void 0 ? _a2 : 0;\n          const newPostgresBindings = [];\n          for (let i = 0; i < bindingsLen; i++) {\n            const clientPostgresBinding = clientPostgresBindings[i];\n            const {filter: {event, schema, table, filter}} = clientPostgresBinding;\n            const serverPostgresFilter = postgres_changes2 && postgres_changes2[i];\n            if (serverPostgresFilter && serverPostgresFilter.event === event && RealtimeChannel.isFilterValueEqual(serverPostgresFilter.schema, schema) && RealtimeChannel.isFilterValueEqual(serverPostgresFilter.table, table) && RealtimeChannel.isFilterValueEqual(serverPostgresFilter.filter, filter)) {\n              newPostgresBindings.push(Object.assign(Object.assign({}, clientPostgresBinding), {id: serverPostgresFilter.id}));\n            } else {\n              this.unsubscribe();\n              this.state = CHANNEL_STATES.errored;\n              callback === null || callback === void 0 ? void 0 : callback(REALTIME_SUBSCRIBE_STATES.CHANNEL_ERROR, new Error(\"mismatch between server and client bindings for postgres changes\"));\n              return;\n            }\n          }\n          this.bindings.postgres_changes = newPostgresBindings;\n          callback && callback(REALTIME_SUBSCRIBE_STATES.SUBSCRIBED);\n          return;\n        }\n      }).receive(\"error\", (error) => {\n        this.state = CHANNEL_STATES.errored;\n        callback === null || callback === void 0 ? void 0 : callback(REALTIME_SUBSCRIBE_STATES.CHANNEL_ERROR, new Error(JSON.stringify(Object.values(error).join(\", \") || \"error\")));\n        return;\n      }).receive(\"timeout\", () => {\n        callback === null || callback === void 0 ? void 0 : callback(REALTIME_SUBSCRIBE_STATES.TIMED_OUT);\n        return;\n      });\n    }\n    return this;\n  }\n  presenceState() {\n    return this.presence.state;\n  }\n  async track(payload, opts = {}) {\n    return await this.send({\n      type: \"presence\",\n      event: \"track\",\n      payload\n    }, opts.timeout || this.timeout);\n  }\n  async untrack(opts = {}) {\n    return await this.send({\n      type: \"presence\",\n      event: \"untrack\"\n    }, opts);\n  }\n  on(type, filter, callback) {\n    if (this.state === CHANNEL_STATES.joined && type === REALTIME_LISTEN_TYPES.PRESENCE) {\n      this.socket.log(\"channel\", `resubscribe to ${this.topic} due to change in presence callbacks on joined channel`);\n      this.unsubscribe().then(async () => await this.subscribe());\n    }\n    return this._on(type, filter, callback);\n  }\n  async httpSend(event, payload, opts = {}) {\n    var _a;\n    if (payload === void 0 || payload === null) {\n      return Promise.reject(\"Payload is required for httpSend()\");\n    }\n    const headers = {\n      apikey: this.socket.apiKey ? this.socket.apiKey : \"\",\n      \"Content-Type\": \"application/json\"\n    };\n    if (this.socket.accessTokenValue) {\n      headers[\"Authorization\"] = `Bearer ${this.socket.accessTokenValue}`;\n    }\n    const options = {\n      method: \"POST\",\n      headers,\n      body: JSON.stringify({\n        messages: [\n          {\n            topic: this.subTopic,\n            event,\n            payload,\n            private: this.private\n          }\n        ]\n      })\n    };\n    const response = await this._fetchWithTimeout(this.broadcastEndpointURL, options, (_a = opts.timeout) !== null && _a !== void 0 ? _a : this.timeout);\n    if (response.status === 202) {\n      return {success: true};\n    }\n    let errorMessage = response.statusText;\n    try {\n      const errorBody = await response.json();\n      errorMessage = errorBody.error || errorBody.message || errorMessage;\n    } catch (_b) {\n    }\n    return Promise.reject(new Error(errorMessage));\n  }\n  async send(args, opts = {}) {\n    var _a, _b;\n    if (!this._canPush() && args.type === \"broadcast\") {\n      console.warn(\"Realtime send() is automatically falling back to REST API. This behavior will be deprecated in the future. Please use httpSend() explicitly for REST delivery.\");\n      const {event, payload: endpoint_payload} = args;\n      const headers = {\n        apikey: this.socket.apiKey ? this.socket.apiKey : \"\",\n        \"Content-Type\": \"application/json\"\n      };\n      if (this.socket.accessTokenValue) {\n        headers[\"Authorization\"] = `Bearer ${this.socket.accessTokenValue}`;\n      }\n      const options = {\n        method: \"POST\",\n        headers,\n        body: JSON.stringify({\n          messages: [\n            {\n              topic: this.subTopic,\n              event,\n              payload: endpoint_payload,\n              private: this.private\n            }\n          ]\n        })\n      };\n      try {\n        const response = await this._fetchWithTimeout(this.broadcastEndpointURL, options, (_a = opts.timeout) !== null && _a !== void 0 ? _a : this.timeout);\n        await ((_b = response.body) === null || _b === void 0 ? void 0 : _b.cancel());\n        return response.ok ? \"ok\" : \"error\";\n      } catch (error) {\n        if (error.name === \"AbortError\") {\n          return \"timed out\";\n        } else {\n          return \"error\";\n        }\n      }\n    } else {\n      return new Promise((resolve) => {\n        var _a2, _b2, _c;\n        const push = this._push(args.type, args, opts.timeout || this.timeout);\n        if (args.type === \"broadcast\" && !((_c = (_b2 = (_a2 = this.params) === null || _a2 === void 0 ? void 0 : _a2.config) === null || _b2 === void 0 ? void 0 : _b2.broadcast) === null || _c === void 0 ? void 0 : _c.ack)) {\n          resolve(\"ok\");\n        }\n        push.receive(\"ok\", () => resolve(\"ok\"));\n        push.receive(\"error\", () => resolve(\"error\"));\n        push.receive(\"timeout\", () => resolve(\"timed out\"));\n      });\n    }\n  }\n  updateJoinPayload(payload) {\n    this.joinPush.updatePayload(payload);\n  }\n  unsubscribe(timeout = this.timeout) {\n    this.state = CHANNEL_STATES.leaving;\n    const onClose = () => {\n      this.socket.log(\"channel\", `leave ${this.topic}`);\n      this._trigger(CHANNEL_EVENTS.close, \"leave\", this._joinRef());\n    };\n    this.joinPush.destroy();\n    let leavePush = null;\n    return new Promise((resolve) => {\n      leavePush = new Push(this, CHANNEL_EVENTS.leave, {}, timeout);\n      leavePush.receive(\"ok\", () => {\n        onClose();\n        resolve(\"ok\");\n      }).receive(\"timeout\", () => {\n        onClose();\n        resolve(\"timed out\");\n      }).receive(\"error\", () => {\n        resolve(\"error\");\n      });\n      leavePush.send();\n      if (!this._canPush()) {\n        leavePush.trigger(\"ok\", {});\n      }\n    }).finally(() => {\n      leavePush === null || leavePush === void 0 ? void 0 : leavePush.destroy();\n    });\n  }\n  teardown() {\n    this.pushBuffer.forEach((push) => push.destroy());\n    this.pushBuffer = [];\n    this.rejoinTimer.reset();\n    this.joinPush.destroy();\n    this.state = CHANNEL_STATES.closed;\n    this.bindings = {};\n  }\n  async _fetchWithTimeout(url, options, timeout) {\n    const controller = new AbortController();\n    const id = setTimeout(() => controller.abort(), timeout);\n    const response = await this.socket.fetch(url, Object.assign(Object.assign({}, options), {signal: controller.signal}));\n    clearTimeout(id);\n    return response;\n  }\n  _push(event, payload, timeout = this.timeout) {\n    if (!this.joinedOnce) {\n      throw `tried to push '${event}' to '${this.topic}' before joining. Use channel.subscribe() before pushing events`;\n    }\n    let pushEvent = new Push(this, event, payload, timeout);\n    if (this._canPush()) {\n      pushEvent.send();\n    } else {\n      this._addToPushBuffer(pushEvent);\n    }\n    return pushEvent;\n  }\n  _addToPushBuffer(pushEvent) {\n    pushEvent.startTimeout();\n    this.pushBuffer.push(pushEvent);\n    if (this.pushBuffer.length > MAX_PUSH_BUFFER_SIZE) {\n      const removedPush = this.pushBuffer.shift();\n      if (removedPush) {\n        removedPush.destroy();\n        this.socket.log(\"channel\", `discarded push due to buffer overflow: ${removedPush.event}`, removedPush.payload);\n      }\n    }\n  }\n  _onMessage(_event, payload, _ref) {\n    return payload;\n  }\n  _isMember(topic) {\n    return this.topic === topic;\n  }\n  _joinRef() {\n    return this.joinPush.ref;\n  }\n  _trigger(type, payload, ref) {\n    var _a, _b;\n    const typeLower = type.toLocaleLowerCase();\n    const {close, error, leave, join} = CHANNEL_EVENTS;\n    const events = [close, error, leave, join];\n    if (ref && events.indexOf(typeLower) >= 0 && ref !== this._joinRef()) {\n      return;\n    }\n    let handledPayload = this._onMessage(typeLower, payload, ref);\n    if (payload && !handledPayload) {\n      throw \"channel onMessage callbacks must return the payload, modified or unmodified\";\n    }\n    if ([\"insert\", \"update\", \"delete\"].includes(typeLower)) {\n      (_a = this.bindings.postgres_changes) === null || _a === void 0 ? void 0 : _a.filter((bind) => {\n        var _a2, _b2, _c;\n        return ((_a2 = bind.filter) === null || _a2 === void 0 ? void 0 : _a2.event) === \"*\" || ((_c = (_b2 = bind.filter) === null || _b2 === void 0 ? void 0 : _b2.event) === null || _c === void 0 ? void 0 : _c.toLocaleLowerCase()) === typeLower;\n      }).map((bind) => bind.callback(handledPayload, ref));\n    } else {\n      (_b = this.bindings[typeLower]) === null || _b === void 0 ? void 0 : _b.filter((bind) => {\n        var _a2, _b2, _c, _d, _e, _f;\n        if ([\"broadcast\", \"presence\", \"postgres_changes\"].includes(typeLower)) {\n          if (\"id\" in bind) {\n            const bindId = bind.id;\n            const bindEvent = (_a2 = bind.filter) === null || _a2 === void 0 ? void 0 : _a2.event;\n            return bindId && ((_b2 = payload.ids) === null || _b2 === void 0 ? void 0 : _b2.includes(bindId)) && (bindEvent === \"*\" || (bindEvent === null || bindEvent === void 0 ? void 0 : bindEvent.toLocaleLowerCase()) === ((_c = payload.data) === null || _c === void 0 ? void 0 : _c.type.toLocaleLowerCase()));\n          } else {\n            const bindEvent = (_e = (_d = bind === null || bind === void 0 ? void 0 : bind.filter) === null || _d === void 0 ? void 0 : _d.event) === null || _e === void 0 ? void 0 : _e.toLocaleLowerCase();\n            return bindEvent === \"*\" || bindEvent === ((_f = payload === null || payload === void 0 ? void 0 : payload.event) === null || _f === void 0 ? void 0 : _f.toLocaleLowerCase());\n          }\n        } else {\n          return bind.type.toLocaleLowerCase() === typeLower;\n        }\n      }).map((bind) => {\n        if (typeof handledPayload === \"object\" && \"ids\" in handledPayload) {\n          const postgresChanges = handledPayload.data;\n          const {schema, table, commit_timestamp, type: type2, errors} = postgresChanges;\n          const enrichedPayload = {\n            schema,\n            table,\n            commit_timestamp,\n            eventType: type2,\n            new: {},\n            old: {},\n            errors\n          };\n          handledPayload = Object.assign(Object.assign({}, enrichedPayload), this._getPayloadRecords(postgresChanges));\n        }\n        bind.callback(handledPayload, ref);\n      });\n    }\n  }\n  _isClosed() {\n    return this.state === CHANNEL_STATES.closed;\n  }\n  _isJoined() {\n    return this.state === CHANNEL_STATES.joined;\n  }\n  _isJoining() {\n    return this.state === CHANNEL_STATES.joining;\n  }\n  _isLeaving() {\n    return this.state === CHANNEL_STATES.leaving;\n  }\n  _replyEventName(ref) {\n    return `chan_reply_${ref}`;\n  }\n  _on(type, filter, callback) {\n    const typeLower = type.toLocaleLowerCase();\n    const binding2 = {\n      type: typeLower,\n      filter,\n      callback\n    };\n    if (this.bindings[typeLower]) {\n      this.bindings[typeLower].push(binding2);\n    } else {\n      this.bindings[typeLower] = [binding2];\n    }\n    return this;\n  }\n  _off(type, filter) {\n    const typeLower = type.toLocaleLowerCase();\n    if (this.bindings[typeLower]) {\n      this.bindings[typeLower] = this.bindings[typeLower].filter((bind) => {\n        var _a;\n        return !(((_a = bind.type) === null || _a === void 0 ? void 0 : _a.toLocaleLowerCase()) === typeLower && RealtimeChannel.isEqual(bind.filter, filter));\n      });\n    }\n    return this;\n  }\n  static isEqual(obj1, obj2) {\n    if (Object.keys(obj1).length !== Object.keys(obj2).length) {\n      return false;\n    }\n    for (const k in obj1) {\n      if (obj1[k] !== obj2[k]) {\n        return false;\n      }\n    }\n    return true;\n  }\n  static isFilterValueEqual(serverValue, clientValue) {\n    const normalizedServer = serverValue !== null && serverValue !== void 0 ? serverValue : void 0;\n    const normalizedClient = clientValue !== null && clientValue !== void 0 ? clientValue : void 0;\n    return normalizedServer === normalizedClient;\n  }\n  _rejoinUntilConnected() {\n    this.rejoinTimer.scheduleTimeout();\n    if (this.socket.isConnected()) {\n      this._rejoin();\n    }\n  }\n  _onClose(callback) {\n    this._on(CHANNEL_EVENTS.close, {}, callback);\n  }\n  _onError(callback) {\n    this._on(CHANNEL_EVENTS.error, {}, (reason) => callback(reason));\n  }\n  _canPush() {\n    return this.socket.isConnected() && this._isJoined();\n  }\n  _rejoin(timeout = this.timeout) {\n    if (this._isLeaving()) {\n      return;\n    }\n    this.socket._leaveOpenTopic(this.topic);\n    this.state = CHANNEL_STATES.joining;\n    this.joinPush.resend(timeout);\n  }\n  _getPayloadRecords(payload) {\n    const records = {\n      new: {},\n      old: {}\n    };\n    if (payload.type === \"INSERT\" || payload.type === \"UPDATE\") {\n      records.new = convertChangeData(payload.columns, payload.record);\n    }\n    if (payload.type === \"UPDATE\" || payload.type === \"DELETE\") {\n      records.old = convertChangeData(payload.columns, payload.old_record);\n    }\n    return records;\n  }\n}\nconst noop$2 = () => {\n};\nconst CONNECTION_TIMEOUTS = {\n  HEARTBEAT_INTERVAL: 25e3,\n  RECONNECT_DELAY: 10,\n  HEARTBEAT_TIMEOUT_FALLBACK: 100\n};\nconst RECONNECT_INTERVALS = [1e3, 2e3, 5e3, 1e4];\nconst DEFAULT_RECONNECT_FALLBACK = 1e4;\nconst WORKER_SCRIPT = `\n  addEventListener(\"message\", (e) => {\n    if (e.data.event === \"start\") {\n      setInterval(() => postMessage({ event: \"keepAlive\" }), e.data.interval);\n    }\n  });`;\nclass RealtimeClient {\n  constructor(endPoint, options) {\n    var _a;\n    this.accessTokenValue = null;\n    this.apiKey = null;\n    this._manuallySetToken = false;\n    this.channels = new Array();\n    this.endPoint = \"\";\n    this.httpEndpoint = \"\";\n    this.headers = {};\n    this.params = {};\n    this.timeout = DEFAULT_TIMEOUT;\n    this.transport = null;\n    this.heartbeatIntervalMs = CONNECTION_TIMEOUTS.HEARTBEAT_INTERVAL;\n    this.heartbeatTimer = void 0;\n    this.pendingHeartbeatRef = null;\n    this.heartbeatCallback = noop$2;\n    this.ref = 0;\n    this.reconnectTimer = null;\n    this.vsn = DEFAULT_VSN;\n    this.logger = noop$2;\n    this.conn = null;\n    this.sendBuffer = [];\n    this.serializer = new Serializer();\n    this.stateChangeCallbacks = {\n      open: [],\n      close: [],\n      error: [],\n      message: []\n    };\n    this.accessToken = null;\n    this._connectionState = \"disconnected\";\n    this._wasManualDisconnect = false;\n    this._authPromise = null;\n    this._resolveFetch = (customFetch) => {\n      if (customFetch) {\n        return (...args) => customFetch(...args);\n      }\n      return (...args) => fetch(...args);\n    };\n    if (!((_a = options === null || options === void 0 ? void 0 : options.params) === null || _a === void 0 ? void 0 : _a.apikey)) {\n      throw new Error(\"API key is required to connect to Realtime\");\n    }\n    this.apiKey = options.params.apikey;\n    this.endPoint = `${endPoint}/${TRANSPORTS.websocket}`;\n    this.httpEndpoint = httpEndpointURL(endPoint);\n    this._initializeOptions(options);\n    this._setupReconnectionTimer();\n    this.fetch = this._resolveFetch(options === null || options === void 0 ? void 0 : options.fetch);\n  }\n  connect() {\n    if (this.isConnecting() || this.isDisconnecting() || this.conn !== null && this.isConnected()) {\n      return;\n    }\n    this._setConnectionState(\"connecting\");\n    if (this.accessToken && !this._authPromise) {\n      this._setAuthSafely(\"connect\");\n    }\n    if (this.transport) {\n      this.conn = new this.transport(this.endpointURL());\n    } else {\n      try {\n        this.conn = WebSocketFactory.createWebSocket(this.endpointURL());\n      } catch (error) {\n        this._setConnectionState(\"disconnected\");\n        const errorMessage = error.message;\n        if (errorMessage.includes(\"Node.js\")) {\n          throw new Error(`${errorMessage}\n\nTo use Realtime in Node.js, you need to provide a WebSocket implementation:\n\nOption 1: Use Node.js 22+ which has native WebSocket support\nOption 2: Install and provide the \"ws\" package:\n\n  npm install ws\n\n  import ws from \"ws\"\n  const client = new RealtimeClient(url, {\n    ...options,\n    transport: ws\n  })`);\n        }\n        throw new Error(`WebSocket not available: ${errorMessage}`);\n      }\n    }\n    this._setupConnectionHandlers();\n  }\n  endpointURL() {\n    return this._appendParams(this.endPoint, Object.assign({}, this.params, {vsn: this.vsn}));\n  }\n  disconnect(code, reason) {\n    if (this.isDisconnecting()) {\n      return;\n    }\n    this._setConnectionState(\"disconnecting\", true);\n    if (this.conn) {\n      const fallbackTimer = setTimeout(() => {\n        this._setConnectionState(\"disconnected\");\n      }, 100);\n      this.conn.onclose = () => {\n        clearTimeout(fallbackTimer);\n        this._setConnectionState(\"disconnected\");\n      };\n      if (typeof this.conn.close === \"function\") {\n        if (code) {\n          this.conn.close(code, reason !== null && reason !== void 0 ? reason : \"\");\n        } else {\n          this.conn.close();\n        }\n      }\n      this._teardownConnection();\n    } else {\n      this._setConnectionState(\"disconnected\");\n    }\n  }\n  getChannels() {\n    return this.channels;\n  }\n  async removeChannel(channel) {\n    const status = await channel.unsubscribe();\n    if (this.channels.length === 0) {\n      this.disconnect();\n    }\n    return status;\n  }\n  async removeAllChannels() {\n    const values_1 = await Promise.all(this.channels.map((channel) => channel.unsubscribe()));\n    this.channels = [];\n    this.disconnect();\n    return values_1;\n  }\n  log(kind, msg, data) {\n    this.logger(kind, msg, data);\n  }\n  connectionState() {\n    switch (this.conn && this.conn.readyState) {\n      case SOCKET_STATES.connecting:\n        return CONNECTION_STATE.Connecting;\n      case SOCKET_STATES.open:\n        return CONNECTION_STATE.Open;\n      case SOCKET_STATES.closing:\n        return CONNECTION_STATE.Closing;\n      default:\n        return CONNECTION_STATE.Closed;\n    }\n  }\n  isConnected() {\n    return this.connectionState() === CONNECTION_STATE.Open;\n  }\n  isConnecting() {\n    return this._connectionState === \"connecting\";\n  }\n  isDisconnecting() {\n    return this._connectionState === \"disconnecting\";\n  }\n  channel(topic, params = {config: {}}) {\n    const realtimeTopic = `realtime:${topic}`;\n    const exists = this.getChannels().find((c) => c.topic === realtimeTopic);\n    if (!exists) {\n      const chan = new RealtimeChannel(`realtime:${topic}`, params, this);\n      this.channels.push(chan);\n      return chan;\n    } else {\n      return exists;\n    }\n  }\n  push(data) {\n    const {topic, event, payload, ref} = data;\n    const callback = () => {\n      this.encode(data, (result) => {\n        var _a;\n        (_a = this.conn) === null || _a === void 0 ? void 0 : _a.send(result);\n      });\n    };\n    this.log(\"push\", `${topic} ${event} (${ref})`, payload);\n    if (this.isConnected()) {\n      callback();\n    } else {\n      this.sendBuffer.push(callback);\n    }\n  }\n  async setAuth(token = null) {\n    this._authPromise = this._performAuth(token);\n    try {\n      await this._authPromise;\n    } finally {\n      this._authPromise = null;\n    }\n  }\n  _isManualToken() {\n    return this._manuallySetToken;\n  }\n  async sendHeartbeat() {\n    var _a;\n    if (!this.isConnected()) {\n      try {\n        this.heartbeatCallback(\"disconnected\");\n      } catch (e) {\n        this.log(\"error\", \"error in heartbeat callback\", e);\n      }\n      return;\n    }\n    if (this.pendingHeartbeatRef) {\n      this.pendingHeartbeatRef = null;\n      this.log(\"transport\", \"heartbeat timeout. Attempting to re-establish connection\");\n      try {\n        this.heartbeatCallback(\"timeout\");\n      } catch (e) {\n        this.log(\"error\", \"error in heartbeat callback\", e);\n      }\n      this._wasManualDisconnect = false;\n      (_a = this.conn) === null || _a === void 0 ? void 0 : _a.close(WS_CLOSE_NORMAL, \"heartbeat timeout\");\n      setTimeout(() => {\n        var _a2;\n        if (!this.isConnected()) {\n          (_a2 = this.reconnectTimer) === null || _a2 === void 0 ? void 0 : _a2.scheduleTimeout();\n        }\n      }, CONNECTION_TIMEOUTS.HEARTBEAT_TIMEOUT_FALLBACK);\n      return;\n    }\n    this.pendingHeartbeatRef = this._makeRef();\n    this.push({\n      topic: \"phoenix\",\n      event: \"heartbeat\",\n      payload: {},\n      ref: this.pendingHeartbeatRef\n    });\n    try {\n      this.heartbeatCallback(\"sent\");\n    } catch (e) {\n      this.log(\"error\", \"error in heartbeat callback\", e);\n    }\n    this._setAuthSafely(\"heartbeat\");\n  }\n  onHeartbeat(callback) {\n    this.heartbeatCallback = callback;\n  }\n  flushSendBuffer() {\n    if (this.isConnected() && this.sendBuffer.length > 0) {\n      this.sendBuffer.forEach((callback) => callback());\n      this.sendBuffer = [];\n    }\n  }\n  _makeRef() {\n    let newRef = this.ref + 1;\n    if (newRef === this.ref) {\n      this.ref = 0;\n    } else {\n      this.ref = newRef;\n    }\n    return this.ref.toString();\n  }\n  _leaveOpenTopic(topic) {\n    let dupChannel = this.channels.find((c) => c.topic === topic && (c._isJoined() || c._isJoining()));\n    if (dupChannel) {\n      this.log(\"transport\", `leaving duplicate topic \"${topic}\"`);\n      dupChannel.unsubscribe();\n    }\n  }\n  _remove(channel) {\n    this.channels = this.channels.filter((c) => c.topic !== channel.topic);\n  }\n  _onConnMessage(rawMessage) {\n    this.decode(rawMessage.data, (msg) => {\n      if (msg.topic === \"phoenix\" && msg.event === \"phx_reply\") {\n        try {\n          this.heartbeatCallback(msg.payload.status === \"ok\" ? \"ok\" : \"error\");\n        } catch (e) {\n          this.log(\"error\", \"error in heartbeat callback\", e);\n        }\n      }\n      if (msg.ref && msg.ref === this.pendingHeartbeatRef) {\n        this.pendingHeartbeatRef = null;\n      }\n      const {topic, event, payload, ref} = msg;\n      const refString = ref ? `(${ref})` : \"\";\n      const status = payload.status || \"\";\n      this.log(\"receive\", `${status} ${topic} ${event} ${refString}`.trim(), payload);\n      this.channels.filter((channel) => channel._isMember(topic)).forEach((channel) => channel._trigger(event, payload, ref));\n      this._triggerStateCallbacks(\"message\", msg);\n    });\n  }\n  _clearTimer(timer) {\n    var _a;\n    if (timer === \"heartbeat\" && this.heartbeatTimer) {\n      clearInterval(this.heartbeatTimer);\n      this.heartbeatTimer = void 0;\n    } else if (timer === \"reconnect\") {\n      (_a = this.reconnectTimer) === null || _a === void 0 ? void 0 : _a.reset();\n    }\n  }\n  _clearAllTimers() {\n    this._clearTimer(\"heartbeat\");\n    this._clearTimer(\"reconnect\");\n  }\n  _setupConnectionHandlers() {\n    if (!this.conn)\n      return;\n    if (\"binaryType\" in this.conn) {\n      this.conn.binaryType = \"arraybuffer\";\n    }\n    this.conn.onopen = () => this._onConnOpen();\n    this.conn.onerror = (error) => this._onConnError(error);\n    this.conn.onmessage = (event) => this._onConnMessage(event);\n    this.conn.onclose = (event) => this._onConnClose(event);\n    if (this.conn.readyState === SOCKET_STATES.open) {\n      this._onConnOpen();\n    }\n  }\n  _teardownConnection() {\n    if (this.conn) {\n      if (this.conn.readyState === SOCKET_STATES.open || this.conn.readyState === SOCKET_STATES.connecting) {\n        try {\n          this.conn.close();\n        } catch (e) {\n          this.log(\"error\", \"Error closing connection\", e);\n        }\n      }\n      this.conn.onopen = null;\n      this.conn.onerror = null;\n      this.conn.onmessage = null;\n      this.conn.onclose = null;\n      this.conn = null;\n    }\n    this._clearAllTimers();\n    this._terminateWorker();\n    this.channels.forEach((channel) => channel.teardown());\n  }\n  _onConnOpen() {\n    this._setConnectionState(\"connected\");\n    this.log(\"transport\", `connected to ${this.endpointURL()}`);\n    const authPromise = this._authPromise || (this.accessToken && !this.accessTokenValue ? this.setAuth() : Promise.resolve());\n    authPromise.then(() => {\n      this.flushSendBuffer();\n    }).catch((e) => {\n      this.log(\"error\", \"error waiting for auth on connect\", e);\n      this.flushSendBuffer();\n    });\n    this._clearTimer(\"reconnect\");\n    if (!this.worker) {\n      this._startHeartbeat();\n    } else {\n      if (!this.workerRef) {\n        this._startWorkerHeartbeat();\n      }\n    }\n    this._triggerStateCallbacks(\"open\");\n  }\n  _startHeartbeat() {\n    this.heartbeatTimer && clearInterval(this.heartbeatTimer);\n    this.heartbeatTimer = setInterval(() => this.sendHeartbeat(), this.heartbeatIntervalMs);\n  }\n  _startWorkerHeartbeat() {\n    if (this.workerUrl) {\n      this.log(\"worker\", `starting worker for from ${this.workerUrl}`);\n    } else {\n      this.log(\"worker\", `starting default worker`);\n    }\n    const objectUrl = this._workerObjectUrl(this.workerUrl);\n    this.workerRef = new Worker(objectUrl);\n    this.workerRef.onerror = (error) => {\n      this.log(\"worker\", \"worker error\", error.message);\n      this._terminateWorker();\n    };\n    this.workerRef.onmessage = (event) => {\n      if (event.data.event === \"keepAlive\") {\n        this.sendHeartbeat();\n      }\n    };\n    this.workerRef.postMessage({\n      event: \"start\",\n      interval: this.heartbeatIntervalMs\n    });\n  }\n  _terminateWorker() {\n    if (this.workerRef) {\n      this.log(\"worker\", \"terminating worker\");\n      this.workerRef.terminate();\n      this.workerRef = void 0;\n    }\n  }\n  _onConnClose(event) {\n    var _a;\n    this._setConnectionState(\"disconnected\");\n    this.log(\"transport\", \"close\", event);\n    this._triggerChanError();\n    this._clearTimer(\"heartbeat\");\n    if (!this._wasManualDisconnect) {\n      (_a = this.reconnectTimer) === null || _a === void 0 ? void 0 : _a.scheduleTimeout();\n    }\n    this._triggerStateCallbacks(\"close\", event);\n  }\n  _onConnError(error) {\n    this._setConnectionState(\"disconnected\");\n    this.log(\"transport\", `${error}`);\n    this._triggerChanError();\n    this._triggerStateCallbacks(\"error\", error);\n  }\n  _triggerChanError() {\n    this.channels.forEach((channel) => channel._trigger(CHANNEL_EVENTS.error));\n  }\n  _appendParams(url, params) {\n    if (Object.keys(params).length === 0) {\n      return url;\n    }\n    const prefix = url.match(/\\?/) ? \"&\" : \"?\";\n    const query = new URLSearchParams(params);\n    return `${url}${prefix}${query}`;\n  }\n  _workerObjectUrl(url) {\n    let result_url;\n    if (url) {\n      result_url = url;\n    } else {\n      const blob = new Blob([WORKER_SCRIPT], {type: \"application/javascript\"});\n      result_url = URL.createObjectURL(blob);\n    }\n    return result_url;\n  }\n  _setConnectionState(state, manual = false) {\n    this._connectionState = state;\n    if (state === \"connecting\") {\n      this._wasManualDisconnect = false;\n    } else if (state === \"disconnecting\") {\n      this._wasManualDisconnect = manual;\n    }\n  }\n  async _performAuth(token = null) {\n    let tokenToSend;\n    let isManualToken = false;\n    if (token) {\n      tokenToSend = token;\n      isManualToken = true;\n    } else if (this.accessToken) {\n      try {\n        tokenToSend = await this.accessToken();\n      } catch (e) {\n        this.log(\"error\", \"Error fetching access token from callback\", e);\n        tokenToSend = this.accessTokenValue;\n      }\n    } else {\n      tokenToSend = this.accessTokenValue;\n    }\n    if (isManualToken) {\n      this._manuallySetToken = true;\n    } else if (this.accessToken) {\n      this._manuallySetToken = false;\n    }\n    if (this.accessTokenValue != tokenToSend) {\n      this.accessTokenValue = tokenToSend;\n      this.channels.forEach((channel) => {\n        const payload = {\n          access_token: tokenToSend,\n          version: DEFAULT_VERSION\n        };\n        tokenToSend && channel.updateJoinPayload(payload);\n        if (channel.joinedOnce && channel._isJoined()) {\n          channel._push(CHANNEL_EVENTS.access_token, {\n            access_token: tokenToSend\n          });\n        }\n      });\n    }\n  }\n  async _waitForAuthIfNeeded() {\n    if (this._authPromise) {\n      await this._authPromise;\n    }\n  }\n  _setAuthSafely(context = \"general\") {\n    if (!this._isManualToken()) {\n      this.setAuth().catch((e) => {\n        this.log(\"error\", `Error setting auth in ${context}`, e);\n      });\n    }\n  }\n  _triggerStateCallbacks(event, data) {\n    try {\n      this.stateChangeCallbacks[event].forEach((callback) => {\n        try {\n          callback(data);\n        } catch (e) {\n          this.log(\"error\", `error in ${event} callback`, e);\n        }\n      });\n    } catch (e) {\n      this.log(\"error\", `error triggering ${event} callbacks`, e);\n    }\n  }\n  _setupReconnectionTimer() {\n    this.reconnectTimer = new Timer(async () => {\n      setTimeout(async () => {\n        await this._waitForAuthIfNeeded();\n        if (!this.isConnected()) {\n          this.connect();\n        }\n      }, CONNECTION_TIMEOUTS.RECONNECT_DELAY);\n    }, this.reconnectAfterMs);\n  }\n  _initializeOptions(options) {\n    var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;\n    this.transport = (_a = options === null || options === void 0 ? void 0 : options.transport) !== null && _a !== void 0 ? _a : null;\n    this.timeout = (_b = options === null || options === void 0 ? void 0 : options.timeout) !== null && _b !== void 0 ? _b : DEFAULT_TIMEOUT;\n    this.heartbeatIntervalMs = (_c = options === null || options === void 0 ? void 0 : options.heartbeatIntervalMs) !== null && _c !== void 0 ? _c : CONNECTION_TIMEOUTS.HEARTBEAT_INTERVAL;\n    this.worker = (_d = options === null || options === void 0 ? void 0 : options.worker) !== null && _d !== void 0 ? _d : false;\n    this.accessToken = (_e = options === null || options === void 0 ? void 0 : options.accessToken) !== null && _e !== void 0 ? _e : null;\n    this.heartbeatCallback = (_f = options === null || options === void 0 ? void 0 : options.heartbeatCallback) !== null && _f !== void 0 ? _f : noop$2;\n    this.vsn = (_g = options === null || options === void 0 ? void 0 : options.vsn) !== null && _g !== void 0 ? _g : DEFAULT_VSN;\n    if (options === null || options === void 0 ? void 0 : options.params)\n      this.params = options.params;\n    if (options === null || options === void 0 ? void 0 : options.logger)\n      this.logger = options.logger;\n    if ((options === null || options === void 0 ? void 0 : options.logLevel) || (options === null || options === void 0 ? void 0 : options.log_level)) {\n      this.logLevel = options.logLevel || options.log_level;\n      this.params = Object.assign(Object.assign({}, this.params), {log_level: this.logLevel});\n    }\n    this.reconnectAfterMs = (_h = options === null || options === void 0 ? void 0 : options.reconnectAfterMs) !== null && _h !== void 0 ? _h : (tries) => {\n      return RECONNECT_INTERVALS[tries - 1] || DEFAULT_RECONNECT_FALLBACK;\n    };\n    switch (this.vsn) {\n      case VSN_1_0_0:\n        this.encode = (_j = options === null || options === void 0 ? void 0 : options.encode) !== null && _j !== void 0 ? _j : (payload, callback) => {\n          return callback(JSON.stringify(payload));\n        };\n        this.decode = (_k = options === null || options === void 0 ? void 0 : options.decode) !== null && _k !== void 0 ? _k : (payload, callback) => {\n          return callback(JSON.parse(payload));\n        };\n        break;\n      case VSN_2_0_0:\n        this.encode = (_l = options === null || options === void 0 ? void 0 : options.encode) !== null && _l !== void 0 ? _l : this.serializer.encode.bind(this.serializer);\n        this.decode = (_m = options === null || options === void 0 ? void 0 : options.decode) !== null && _m !== void 0 ? _m : this.serializer.decode.bind(this.serializer);\n        break;\n      default:\n        throw new Error(`Unsupported serializer version: ${this.vsn}`);\n    }\n    if (this.worker) {\n      if (typeof window !== \"undefined\" && !window.Worker) {\n        throw new Error(\"Web Worker is not supported\");\n      }\n      this.workerUrl = options === null || options === void 0 ? void 0 : options.workerUrl;\n    }\n  }\n}\nexport {REALTIME_CHANNEL_STATES, REALTIME_LISTEN_TYPES, REALTIME_POSTGRES_CHANGES_LISTEN_EVENT, REALTIME_PRESENCE_LISTEN_EVENTS, REALTIME_SUBSCRIBE_STATES, RealtimeChannel, RealtimeClient, RealtimePresence, WebSocketFactory};\nexport default null;\n","var global$1 = typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {};\nvar lookup = [];\nvar revLookup = [];\nvar Arr = typeof Uint8Array !== \"undefined\" ? Uint8Array : Array;\nvar inited = false;\nfunction init() {\n  inited = true;\n  var code = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n  for (var i = 0, len = code.length; i < len; ++i) {\n    lookup[i] = code[i];\n    revLookup[code.charCodeAt(i)] = i;\n  }\n  revLookup[\"-\".charCodeAt(0)] = 62;\n  revLookup[\"_\".charCodeAt(0)] = 63;\n}\nfunction toByteArray(b64) {\n  if (!inited) {\n    init();\n  }\n  var i, j, l, tmp, placeHolders, arr;\n  var len = b64.length;\n  if (len % 4 > 0) {\n    throw new Error(\"Invalid string. Length must be a multiple of 4\");\n  }\n  placeHolders = b64[len - 2] === \"=\" ? 2 : b64[len - 1] === \"=\" ? 1 : 0;\n  arr = new Arr(len * 3 / 4 - placeHolders);\n  l = placeHolders > 0 ? len - 4 : len;\n  var L = 0;\n  for (i = 0, j = 0; i < l; i += 4, j += 3) {\n    tmp = revLookup[b64.charCodeAt(i)] << 18 | revLookup[b64.charCodeAt(i + 1)] << 12 | revLookup[b64.charCodeAt(i + 2)] << 6 | revLookup[b64.charCodeAt(i + 3)];\n    arr[L++] = tmp >> 16 & 255;\n    arr[L++] = tmp >> 8 & 255;\n    arr[L++] = tmp & 255;\n  }\n  if (placeHolders === 2) {\n    tmp = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4;\n    arr[L++] = tmp & 255;\n  } else if (placeHolders === 1) {\n    tmp = revLookup[b64.charCodeAt(i)] << 10 | revLookup[b64.charCodeAt(i + 1)] << 4 | revLookup[b64.charCodeAt(i + 2)] >> 2;\n    arr[L++] = tmp >> 8 & 255;\n    arr[L++] = tmp & 255;\n  }\n  return arr;\n}\nfunction tripletToBase64(num) {\n  return lookup[num >> 18 & 63] + lookup[num >> 12 & 63] + lookup[num >> 6 & 63] + lookup[num & 63];\n}\nfunction encodeChunk(uint8, start, end) {\n  var tmp;\n  var output = [];\n  for (var i = start; i < end; i += 3) {\n    tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + uint8[i + 2];\n    output.push(tripletToBase64(tmp));\n  }\n  return output.join(\"\");\n}\nfunction fromByteArray(uint8) {\n  if (!inited) {\n    init();\n  }\n  var tmp;\n  var len = uint8.length;\n  var extraBytes = len % 3;\n  var output = \"\";\n  var parts = [];\n  var maxChunkLength = 16383;\n  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n    parts.push(encodeChunk(uint8, i, i + maxChunkLength > len2 ? len2 : i + maxChunkLength));\n  }\n  if (extraBytes === 1) {\n    tmp = uint8[len - 1];\n    output += lookup[tmp >> 2];\n    output += lookup[tmp << 4 & 63];\n    output += \"==\";\n  } else if (extraBytes === 2) {\n    tmp = (uint8[len - 2] << 8) + uint8[len - 1];\n    output += lookup[tmp >> 10];\n    output += lookup[tmp >> 4 & 63];\n    output += lookup[tmp << 2 & 63];\n    output += \"=\";\n  }\n  parts.push(output);\n  return parts.join(\"\");\n}\nfunction read(buffer, offset, isLE, mLen, nBytes) {\n  var e, m;\n  var eLen = nBytes * 8 - mLen - 1;\n  var eMax = (1 << eLen) - 1;\n  var eBias = eMax >> 1;\n  var nBits = -7;\n  var i = isLE ? nBytes - 1 : 0;\n  var d = isLE ? -1 : 1;\n  var s = buffer[offset + i];\n  i += d;\n  e = s & (1 << -nBits) - 1;\n  s >>= -nBits;\n  nBits += eLen;\n  for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {\n  }\n  m = e & (1 << -nBits) - 1;\n  e >>= -nBits;\n  nBits += mLen;\n  for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {\n  }\n  if (e === 0) {\n    e = 1 - eBias;\n  } else if (e === eMax) {\n    return m ? NaN : (s ? -1 : 1) * Infinity;\n  } else {\n    m = m + Math.pow(2, mLen);\n    e = e - eBias;\n  }\n  return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\n}\nfunction write(buffer, value, offset, isLE, mLen, nBytes) {\n  var e, m, c;\n  var eLen = nBytes * 8 - mLen - 1;\n  var eMax = (1 << eLen) - 1;\n  var eBias = eMax >> 1;\n  var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0;\n  var i = isLE ? 0 : nBytes - 1;\n  var d = isLE ? 1 : -1;\n  var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n  value = Math.abs(value);\n  if (isNaN(value) || value === Infinity) {\n    m = isNaN(value) ? 1 : 0;\n    e = eMax;\n  } else {\n    e = Math.floor(Math.log(value) / Math.LN2);\n    if (value * (c = Math.pow(2, -e)) < 1) {\n      e--;\n      c *= 2;\n    }\n    if (e + eBias >= 1) {\n      value += rt / c;\n    } else {\n      value += rt * Math.pow(2, 1 - eBias);\n    }\n    if (value * c >= 2) {\n      e++;\n      c /= 2;\n    }\n    if (e + eBias >= eMax) {\n      m = 0;\n      e = eMax;\n    } else if (e + eBias >= 1) {\n      m = (value * c - 1) * Math.pow(2, mLen);\n      e = e + eBias;\n    } else {\n      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n      e = 0;\n    }\n  }\n  for (; mLen >= 8; buffer[offset + i] = m & 255, i += d, m /= 256, mLen -= 8) {\n  }\n  e = e << mLen | m;\n  eLen += mLen;\n  for (; eLen > 0; buffer[offset + i] = e & 255, i += d, e /= 256, eLen -= 8) {\n  }\n  buffer[offset + i - d] |= s * 128;\n}\nvar toString = {}.toString;\nvar isArray = Array.isArray || function(arr) {\n  return toString.call(arr) == \"[object Array]\";\n};\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license  MIT\n */\nvar INSPECT_MAX_BYTES = 50;\nBuffer.TYPED_ARRAY_SUPPORT = global$1.TYPED_ARRAY_SUPPORT !== void 0 ? global$1.TYPED_ARRAY_SUPPORT : true;\nfunction kMaxLength() {\n  return Buffer.TYPED_ARRAY_SUPPORT ? 2147483647 : 1073741823;\n}\nfunction createBuffer(that, length) {\n  if (kMaxLength() < length) {\n    throw new RangeError(\"Invalid typed array length\");\n  }\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    that = new Uint8Array(length);\n    that.__proto__ = Buffer.prototype;\n  } else {\n    if (that === null) {\n      that = new Buffer(length);\n    }\n    that.length = length;\n  }\n  return that;\n}\nfunction Buffer(arg, encodingOrOffset, length) {\n  if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n    return new Buffer(arg, encodingOrOffset, length);\n  }\n  if (typeof arg === \"number\") {\n    if (typeof encodingOrOffset === \"string\") {\n      throw new Error(\"If encoding is specified then the first argument must be a string\");\n    }\n    return allocUnsafe(this, arg);\n  }\n  return from(this, arg, encodingOrOffset, length);\n}\nBuffer.poolSize = 8192;\nBuffer._augment = function(arr) {\n  arr.__proto__ = Buffer.prototype;\n  return arr;\n};\nfunction from(that, value, encodingOrOffset, length) {\n  if (typeof value === \"number\") {\n    throw new TypeError('\"value\" argument must not be a number');\n  }\n  if (typeof ArrayBuffer !== \"undefined\" && value instanceof ArrayBuffer) {\n    return fromArrayBuffer(that, value, encodingOrOffset, length);\n  }\n  if (typeof value === \"string\") {\n    return fromString(that, value, encodingOrOffset);\n  }\n  return fromObject(that, value);\n}\nBuffer.from = function(value, encodingOrOffset, length) {\n  return from(null, value, encodingOrOffset, length);\n};\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n  Buffer.prototype.__proto__ = Uint8Array.prototype;\n  Buffer.__proto__ = Uint8Array;\n}\nfunction assertSize(size) {\n  if (typeof size !== \"number\") {\n    throw new TypeError('\"size\" argument must be a number');\n  } else if (size < 0) {\n    throw new RangeError('\"size\" argument must not be negative');\n  }\n}\nfunction alloc(that, size, fill2, encoding) {\n  assertSize(size);\n  if (size <= 0) {\n    return createBuffer(that, size);\n  }\n  if (fill2 !== void 0) {\n    return typeof encoding === \"string\" ? createBuffer(that, size).fill(fill2, encoding) : createBuffer(that, size).fill(fill2);\n  }\n  return createBuffer(that, size);\n}\nBuffer.alloc = function(size, fill2, encoding) {\n  return alloc(null, size, fill2, encoding);\n};\nfunction allocUnsafe(that, size) {\n  assertSize(size);\n  that = createBuffer(that, size < 0 ? 0 : checked(size) | 0);\n  if (!Buffer.TYPED_ARRAY_SUPPORT) {\n    for (var i = 0; i < size; ++i) {\n      that[i] = 0;\n    }\n  }\n  return that;\n}\nBuffer.allocUnsafe = function(size) {\n  return allocUnsafe(null, size);\n};\nBuffer.allocUnsafeSlow = function(size) {\n  return allocUnsafe(null, size);\n};\nfunction fromString(that, string, encoding) {\n  if (typeof encoding !== \"string\" || encoding === \"\") {\n    encoding = \"utf8\";\n  }\n  if (!Buffer.isEncoding(encoding)) {\n    throw new TypeError('\"encoding\" must be a valid string encoding');\n  }\n  var length = byteLength(string, encoding) | 0;\n  that = createBuffer(that, length);\n  var actual = that.write(string, encoding);\n  if (actual !== length) {\n    that = that.slice(0, actual);\n  }\n  return that;\n}\nfunction fromArrayLike(that, array) {\n  var length = array.length < 0 ? 0 : checked(array.length) | 0;\n  that = createBuffer(that, length);\n  for (var i = 0; i < length; i += 1) {\n    that[i] = array[i] & 255;\n  }\n  return that;\n}\nfunction fromArrayBuffer(that, array, byteOffset, length) {\n  array.byteLength;\n  if (byteOffset < 0 || array.byteLength < byteOffset) {\n    throw new RangeError(\"'offset' is out of bounds\");\n  }\n  if (array.byteLength < byteOffset + (length || 0)) {\n    throw new RangeError(\"'length' is out of bounds\");\n  }\n  if (byteOffset === void 0 && length === void 0) {\n    array = new Uint8Array(array);\n  } else if (length === void 0) {\n    array = new Uint8Array(array, byteOffset);\n  } else {\n    array = new Uint8Array(array, byteOffset, length);\n  }\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    that = array;\n    that.__proto__ = Buffer.prototype;\n  } else {\n    that = fromArrayLike(that, array);\n  }\n  return that;\n}\nfunction fromObject(that, obj) {\n  if (internalIsBuffer(obj)) {\n    var len = checked(obj.length) | 0;\n    that = createBuffer(that, len);\n    if (that.length === 0) {\n      return that;\n    }\n    obj.copy(that, 0, 0, len);\n    return that;\n  }\n  if (obj) {\n    if (typeof ArrayBuffer !== \"undefined\" && obj.buffer instanceof ArrayBuffer || \"length\" in obj) {\n      if (typeof obj.length !== \"number\" || isnan(obj.length)) {\n        return createBuffer(that, 0);\n      }\n      return fromArrayLike(that, obj);\n    }\n    if (obj.type === \"Buffer\" && isArray(obj.data)) {\n      return fromArrayLike(that, obj.data);\n    }\n  }\n  throw new TypeError(\"First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.\");\n}\nfunction checked(length) {\n  if (length >= kMaxLength()) {\n    throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\" + kMaxLength().toString(16) + \" bytes\");\n  }\n  return length | 0;\n}\nBuffer.isBuffer = isBuffer;\nfunction internalIsBuffer(b) {\n  return !!(b != null && b._isBuffer);\n}\nBuffer.compare = function compare(a, b) {\n  if (!internalIsBuffer(a) || !internalIsBuffer(b)) {\n    throw new TypeError(\"Arguments must be Buffers\");\n  }\n  if (a === b)\n    return 0;\n  var x = a.length;\n  var y = b.length;\n  for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n    if (a[i] !== b[i]) {\n      x = a[i];\n      y = b[i];\n      break;\n    }\n  }\n  if (x < y)\n    return -1;\n  if (y < x)\n    return 1;\n  return 0;\n};\nBuffer.isEncoding = function isEncoding(encoding) {\n  switch (String(encoding).toLowerCase()) {\n    case \"hex\":\n    case \"utf8\":\n    case \"utf-8\":\n    case \"ascii\":\n    case \"latin1\":\n    case \"binary\":\n    case \"base64\":\n    case \"ucs2\":\n    case \"ucs-2\":\n    case \"utf16le\":\n    case \"utf-16le\":\n      return true;\n    default:\n      return false;\n  }\n};\nBuffer.concat = function concat(list, length) {\n  if (!isArray(list)) {\n    throw new TypeError('\"list\" argument must be an Array of Buffers');\n  }\n  if (list.length === 0) {\n    return Buffer.alloc(0);\n  }\n  var i;\n  if (length === void 0) {\n    length = 0;\n    for (i = 0; i < list.length; ++i) {\n      length += list[i].length;\n    }\n  }\n  var buffer = Buffer.allocUnsafe(length);\n  var pos = 0;\n  for (i = 0; i < list.length; ++i) {\n    var buf = list[i];\n    if (!internalIsBuffer(buf)) {\n      throw new TypeError('\"list\" argument must be an Array of Buffers');\n    }\n    buf.copy(buffer, pos);\n    pos += buf.length;\n  }\n  return buffer;\n};\nfunction byteLength(string, encoding) {\n  if (internalIsBuffer(string)) {\n    return string.length;\n  }\n  if (typeof ArrayBuffer !== \"undefined\" && typeof ArrayBuffer.isView === \"function\" && (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n    return string.byteLength;\n  }\n  if (typeof string !== \"string\") {\n    string = \"\" + string;\n  }\n  var len = string.length;\n  if (len === 0)\n    return 0;\n  var loweredCase = false;\n  for (; ; ) {\n    switch (encoding) {\n      case \"ascii\":\n      case \"latin1\":\n      case \"binary\":\n        return len;\n      case \"utf8\":\n      case \"utf-8\":\n      case void 0:\n        return utf8ToBytes(string).length;\n      case \"ucs2\":\n      case \"ucs-2\":\n      case \"utf16le\":\n      case \"utf-16le\":\n        return len * 2;\n      case \"hex\":\n        return len >>> 1;\n      case \"base64\":\n        return base64ToBytes(string).length;\n      default:\n        if (loweredCase)\n          return utf8ToBytes(string).length;\n        encoding = (\"\" + encoding).toLowerCase();\n        loweredCase = true;\n    }\n  }\n}\nBuffer.byteLength = byteLength;\nfunction slowToString(encoding, start, end) {\n  var loweredCase = false;\n  if (start === void 0 || start < 0) {\n    start = 0;\n  }\n  if (start > this.length) {\n    return \"\";\n  }\n  if (end === void 0 || end > this.length) {\n    end = this.length;\n  }\n  if (end <= 0) {\n    return \"\";\n  }\n  end >>>= 0;\n  start >>>= 0;\n  if (end <= start) {\n    return \"\";\n  }\n  if (!encoding)\n    encoding = \"utf8\";\n  while (true) {\n    switch (encoding) {\n      case \"hex\":\n        return hexSlice(this, start, end);\n      case \"utf8\":\n      case \"utf-8\":\n        return utf8Slice(this, start, end);\n      case \"ascii\":\n        return asciiSlice(this, start, end);\n      case \"latin1\":\n      case \"binary\":\n        return latin1Slice(this, start, end);\n      case \"base64\":\n        return base64Slice(this, start, end);\n      case \"ucs2\":\n      case \"ucs-2\":\n      case \"utf16le\":\n      case \"utf-16le\":\n        return utf16leSlice(this, start, end);\n      default:\n        if (loweredCase)\n          throw new TypeError(\"Unknown encoding: \" + encoding);\n        encoding = (encoding + \"\").toLowerCase();\n        loweredCase = true;\n    }\n  }\n}\nBuffer.prototype._isBuffer = true;\nfunction swap(b, n, m) {\n  var i = b[n];\n  b[n] = b[m];\n  b[m] = i;\n}\nBuffer.prototype.swap16 = function swap16() {\n  var len = this.length;\n  if (len % 2 !== 0) {\n    throw new RangeError(\"Buffer size must be a multiple of 16-bits\");\n  }\n  for (var i = 0; i < len; i += 2) {\n    swap(this, i, i + 1);\n  }\n  return this;\n};\nBuffer.prototype.swap32 = function swap32() {\n  var len = this.length;\n  if (len % 4 !== 0) {\n    throw new RangeError(\"Buffer size must be a multiple of 32-bits\");\n  }\n  for (var i = 0; i < len; i += 4) {\n    swap(this, i, i + 3);\n    swap(this, i + 1, i + 2);\n  }\n  return this;\n};\nBuffer.prototype.swap64 = function swap64() {\n  var len = this.length;\n  if (len % 8 !== 0) {\n    throw new RangeError(\"Buffer size must be a multiple of 64-bits\");\n  }\n  for (var i = 0; i < len; i += 8) {\n    swap(this, i, i + 7);\n    swap(this, i + 1, i + 6);\n    swap(this, i + 2, i + 5);\n    swap(this, i + 3, i + 4);\n  }\n  return this;\n};\nBuffer.prototype.toString = function toString2() {\n  var length = this.length | 0;\n  if (length === 0)\n    return \"\";\n  if (arguments.length === 0)\n    return utf8Slice(this, 0, length);\n  return slowToString.apply(this, arguments);\n};\nBuffer.prototype.equals = function equals(b) {\n  if (!internalIsBuffer(b))\n    throw new TypeError(\"Argument must be a Buffer\");\n  if (this === b)\n    return true;\n  return Buffer.compare(this, b) === 0;\n};\nBuffer.prototype.inspect = function inspect() {\n  var str = \"\";\n  var max = INSPECT_MAX_BYTES;\n  if (this.length > 0) {\n    str = this.toString(\"hex\", 0, max).match(/.{2}/g).join(\" \");\n    if (this.length > max)\n      str += \" ... \";\n  }\n  return \"<Buffer \" + str + \">\";\n};\nBuffer.prototype.compare = function compare2(target, start, end, thisStart, thisEnd) {\n  if (!internalIsBuffer(target)) {\n    throw new TypeError(\"Argument must be a Buffer\");\n  }\n  if (start === void 0) {\n    start = 0;\n  }\n  if (end === void 0) {\n    end = target ? target.length : 0;\n  }\n  if (thisStart === void 0) {\n    thisStart = 0;\n  }\n  if (thisEnd === void 0) {\n    thisEnd = this.length;\n  }\n  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n    throw new RangeError(\"out of range index\");\n  }\n  if (thisStart >= thisEnd && start >= end) {\n    return 0;\n  }\n  if (thisStart >= thisEnd) {\n    return -1;\n  }\n  if (start >= end) {\n    return 1;\n  }\n  start >>>= 0;\n  end >>>= 0;\n  thisStart >>>= 0;\n  thisEnd >>>= 0;\n  if (this === target)\n    return 0;\n  var x = thisEnd - thisStart;\n  var y = end - start;\n  var len = Math.min(x, y);\n  var thisCopy = this.slice(thisStart, thisEnd);\n  var targetCopy = target.slice(start, end);\n  for (var i = 0; i < len; ++i) {\n    if (thisCopy[i] !== targetCopy[i]) {\n      x = thisCopy[i];\n      y = targetCopy[i];\n      break;\n    }\n  }\n  if (x < y)\n    return -1;\n  if (y < x)\n    return 1;\n  return 0;\n};\nfunction bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) {\n  if (buffer.length === 0)\n    return -1;\n  if (typeof byteOffset === \"string\") {\n    encoding = byteOffset;\n    byteOffset = 0;\n  } else if (byteOffset > 2147483647) {\n    byteOffset = 2147483647;\n  } else if (byteOffset < -2147483648) {\n    byteOffset = -2147483648;\n  }\n  byteOffset = +byteOffset;\n  if (isNaN(byteOffset)) {\n    byteOffset = dir ? 0 : buffer.length - 1;\n  }\n  if (byteOffset < 0)\n    byteOffset = buffer.length + byteOffset;\n  if (byteOffset >= buffer.length) {\n    if (dir)\n      return -1;\n    else\n      byteOffset = buffer.length - 1;\n  } else if (byteOffset < 0) {\n    if (dir)\n      byteOffset = 0;\n    else\n      return -1;\n  }\n  if (typeof val === \"string\") {\n    val = Buffer.from(val, encoding);\n  }\n  if (internalIsBuffer(val)) {\n    if (val.length === 0) {\n      return -1;\n    }\n    return arrayIndexOf(buffer, val, byteOffset, encoding, dir);\n  } else if (typeof val === \"number\") {\n    val = val & 255;\n    if (Buffer.TYPED_ARRAY_SUPPORT && typeof Uint8Array.prototype.indexOf === \"function\") {\n      if (dir) {\n        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset);\n      } else {\n        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset);\n      }\n    }\n    return arrayIndexOf(buffer, [val], byteOffset, encoding, dir);\n  }\n  throw new TypeError(\"val must be string, number or Buffer\");\n}\nfunction arrayIndexOf(arr, val, byteOffset, encoding, dir) {\n  var indexSize = 1;\n  var arrLength = arr.length;\n  var valLength = val.length;\n  if (encoding !== void 0) {\n    encoding = String(encoding).toLowerCase();\n    if (encoding === \"ucs2\" || encoding === \"ucs-2\" || encoding === \"utf16le\" || encoding === \"utf-16le\") {\n      if (arr.length < 2 || val.length < 2) {\n        return -1;\n      }\n      indexSize = 2;\n      arrLength /= 2;\n      valLength /= 2;\n      byteOffset /= 2;\n    }\n  }\n  function read2(buf, i2) {\n    if (indexSize === 1) {\n      return buf[i2];\n    } else {\n      return buf.readUInt16BE(i2 * indexSize);\n    }\n  }\n  var i;\n  if (dir) {\n    var foundIndex = -1;\n    for (i = byteOffset; i < arrLength; i++) {\n      if (read2(arr, i) === read2(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n        if (foundIndex === -1)\n          foundIndex = i;\n        if (i - foundIndex + 1 === valLength)\n          return foundIndex * indexSize;\n      } else {\n        if (foundIndex !== -1)\n          i -= i - foundIndex;\n        foundIndex = -1;\n      }\n    }\n  } else {\n    if (byteOffset + valLength > arrLength)\n      byteOffset = arrLength - valLength;\n    for (i = byteOffset; i >= 0; i--) {\n      var found = true;\n      for (var j = 0; j < valLength; j++) {\n        if (read2(arr, i + j) !== read2(val, j)) {\n          found = false;\n          break;\n        }\n      }\n      if (found)\n        return i;\n    }\n  }\n  return -1;\n}\nBuffer.prototype.includes = function includes(val, byteOffset, encoding) {\n  return this.indexOf(val, byteOffset, encoding) !== -1;\n};\nBuffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, true);\n};\nBuffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, false);\n};\nfunction hexWrite(buf, string, offset, length) {\n  offset = Number(offset) || 0;\n  var remaining = buf.length - offset;\n  if (!length) {\n    length = remaining;\n  } else {\n    length = Number(length);\n    if (length > remaining) {\n      length = remaining;\n    }\n  }\n  var strLen = string.length;\n  if (strLen % 2 !== 0)\n    throw new TypeError(\"Invalid hex string\");\n  if (length > strLen / 2) {\n    length = strLen / 2;\n  }\n  for (var i = 0; i < length; ++i) {\n    var parsed = parseInt(string.substr(i * 2, 2), 16);\n    if (isNaN(parsed))\n      return i;\n    buf[offset + i] = parsed;\n  }\n  return i;\n}\nfunction utf8Write(buf, string, offset, length) {\n  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length);\n}\nfunction asciiWrite(buf, string, offset, length) {\n  return blitBuffer(asciiToBytes(string), buf, offset, length);\n}\nfunction latin1Write(buf, string, offset, length) {\n  return asciiWrite(buf, string, offset, length);\n}\nfunction base64Write(buf, string, offset, length) {\n  return blitBuffer(base64ToBytes(string), buf, offset, length);\n}\nfunction ucs2Write(buf, string, offset, length) {\n  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length);\n}\nBuffer.prototype.write = function write2(string, offset, length, encoding) {\n  if (offset === void 0) {\n    encoding = \"utf8\";\n    length = this.length;\n    offset = 0;\n  } else if (length === void 0 && typeof offset === \"string\") {\n    encoding = offset;\n    length = this.length;\n    offset = 0;\n  } else if (isFinite(offset)) {\n    offset = offset | 0;\n    if (isFinite(length)) {\n      length = length | 0;\n      if (encoding === void 0)\n        encoding = \"utf8\";\n    } else {\n      encoding = length;\n      length = void 0;\n    }\n  } else {\n    throw new Error(\"Buffer.write(string, encoding, offset[, length]) is no longer supported\");\n  }\n  var remaining = this.length - offset;\n  if (length === void 0 || length > remaining)\n    length = remaining;\n  if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) {\n    throw new RangeError(\"Attempt to write outside buffer bounds\");\n  }\n  if (!encoding)\n    encoding = \"utf8\";\n  var loweredCase = false;\n  for (; ; ) {\n    switch (encoding) {\n      case \"hex\":\n        return hexWrite(this, string, offset, length);\n      case \"utf8\":\n      case \"utf-8\":\n        return utf8Write(this, string, offset, length);\n      case \"ascii\":\n        return asciiWrite(this, string, offset, length);\n      case \"latin1\":\n      case \"binary\":\n        return latin1Write(this, string, offset, length);\n      case \"base64\":\n        return base64Write(this, string, offset, length);\n      case \"ucs2\":\n      case \"ucs-2\":\n      case \"utf16le\":\n      case \"utf-16le\":\n        return ucs2Write(this, string, offset, length);\n      default:\n        if (loweredCase)\n          throw new TypeError(\"Unknown encoding: \" + encoding);\n        encoding = (\"\" + encoding).toLowerCase();\n        loweredCase = true;\n    }\n  }\n};\nBuffer.prototype.toJSON = function toJSON() {\n  return {\n    type: \"Buffer\",\n    data: Array.prototype.slice.call(this._arr || this, 0)\n  };\n};\nfunction base64Slice(buf, start, end) {\n  if (start === 0 && end === buf.length) {\n    return fromByteArray(buf);\n  } else {\n    return fromByteArray(buf.slice(start, end));\n  }\n}\nfunction utf8Slice(buf, start, end) {\n  end = Math.min(buf.length, end);\n  var res = [];\n  var i = start;\n  while (i < end) {\n    var firstByte = buf[i];\n    var codePoint = null;\n    var bytesPerSequence = firstByte > 239 ? 4 : firstByte > 223 ? 3 : firstByte > 191 ? 2 : 1;\n    if (i + bytesPerSequence <= end) {\n      var secondByte, thirdByte, fourthByte, tempCodePoint;\n      switch (bytesPerSequence) {\n        case 1:\n          if (firstByte < 128) {\n            codePoint = firstByte;\n          }\n          break;\n        case 2:\n          secondByte = buf[i + 1];\n          if ((secondByte & 192) === 128) {\n            tempCodePoint = (firstByte & 31) << 6 | secondByte & 63;\n            if (tempCodePoint > 127) {\n              codePoint = tempCodePoint;\n            }\n          }\n          break;\n        case 3:\n          secondByte = buf[i + 1];\n          thirdByte = buf[i + 2];\n          if ((secondByte & 192) === 128 && (thirdByte & 192) === 128) {\n            tempCodePoint = (firstByte & 15) << 12 | (secondByte & 63) << 6 | thirdByte & 63;\n            if (tempCodePoint > 2047 && (tempCodePoint < 55296 || tempCodePoint > 57343)) {\n              codePoint = tempCodePoint;\n            }\n          }\n          break;\n        case 4:\n          secondByte = buf[i + 1];\n          thirdByte = buf[i + 2];\n          fourthByte = buf[i + 3];\n          if ((secondByte & 192) === 128 && (thirdByte & 192) === 128 && (fourthByte & 192) === 128) {\n            tempCodePoint = (firstByte & 15) << 18 | (secondByte & 63) << 12 | (thirdByte & 63) << 6 | fourthByte & 63;\n            if (tempCodePoint > 65535 && tempCodePoint < 1114112) {\n              codePoint = tempCodePoint;\n            }\n          }\n      }\n    }\n    if (codePoint === null) {\n      codePoint = 65533;\n      bytesPerSequence = 1;\n    } else if (codePoint > 65535) {\n      codePoint -= 65536;\n      res.push(codePoint >>> 10 & 1023 | 55296);\n      codePoint = 56320 | codePoint & 1023;\n    }\n    res.push(codePoint);\n    i += bytesPerSequence;\n  }\n  return decodeCodePointsArray(res);\n}\nvar MAX_ARGUMENTS_LENGTH = 4096;\nfunction decodeCodePointsArray(codePoints) {\n  var len = codePoints.length;\n  if (len <= MAX_ARGUMENTS_LENGTH) {\n    return String.fromCharCode.apply(String, codePoints);\n  }\n  var res = \"\";\n  var i = 0;\n  while (i < len) {\n    res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH));\n  }\n  return res;\n}\nfunction asciiSlice(buf, start, end) {\n  var ret = \"\";\n  end = Math.min(buf.length, end);\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i] & 127);\n  }\n  return ret;\n}\nfunction latin1Slice(buf, start, end) {\n  var ret = \"\";\n  end = Math.min(buf.length, end);\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i]);\n  }\n  return ret;\n}\nfunction hexSlice(buf, start, end) {\n  var len = buf.length;\n  if (!start || start < 0)\n    start = 0;\n  if (!end || end < 0 || end > len)\n    end = len;\n  var out = \"\";\n  for (var i = start; i < end; ++i) {\n    out += toHex(buf[i]);\n  }\n  return out;\n}\nfunction utf16leSlice(buf, start, end) {\n  var bytes = buf.slice(start, end);\n  var res = \"\";\n  for (var i = 0; i < bytes.length; i += 2) {\n    res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);\n  }\n  return res;\n}\nBuffer.prototype.slice = function slice(start, end) {\n  var len = this.length;\n  start = ~~start;\n  end = end === void 0 ? len : ~~end;\n  if (start < 0) {\n    start += len;\n    if (start < 0)\n      start = 0;\n  } else if (start > len) {\n    start = len;\n  }\n  if (end < 0) {\n    end += len;\n    if (end < 0)\n      end = 0;\n  } else if (end > len) {\n    end = len;\n  }\n  if (end < start)\n    end = start;\n  var newBuf;\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    newBuf = this.subarray(start, end);\n    newBuf.__proto__ = Buffer.prototype;\n  } else {\n    var sliceLen = end - start;\n    newBuf = new Buffer(sliceLen, void 0);\n    for (var i = 0; i < sliceLen; ++i) {\n      newBuf[i] = this[i + start];\n    }\n  }\n  return newBuf;\n};\nfunction checkOffset(offset, ext, length) {\n  if (offset % 1 !== 0 || offset < 0)\n    throw new RangeError(\"offset is not uint\");\n  if (offset + ext > length)\n    throw new RangeError(\"Trying to access beyond buffer length\");\n}\nBuffer.prototype.readUIntLE = function readUIntLE(offset, byteLength2, noAssert) {\n  offset = offset | 0;\n  byteLength2 = byteLength2 | 0;\n  if (!noAssert)\n    checkOffset(offset, byteLength2, this.length);\n  var val = this[offset];\n  var mul = 1;\n  var i = 0;\n  while (++i < byteLength2 && (mul *= 256)) {\n    val += this[offset + i] * mul;\n  }\n  return val;\n};\nBuffer.prototype.readUIntBE = function readUIntBE(offset, byteLength2, noAssert) {\n  offset = offset | 0;\n  byteLength2 = byteLength2 | 0;\n  if (!noAssert) {\n    checkOffset(offset, byteLength2, this.length);\n  }\n  var val = this[offset + --byteLength2];\n  var mul = 1;\n  while (byteLength2 > 0 && (mul *= 256)) {\n    val += this[offset + --byteLength2] * mul;\n  }\n  return val;\n};\nBuffer.prototype.readUInt8 = function readUInt8(offset, noAssert) {\n  if (!noAssert)\n    checkOffset(offset, 1, this.length);\n  return this[offset];\n};\nBuffer.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) {\n  if (!noAssert)\n    checkOffset(offset, 2, this.length);\n  return this[offset] | this[offset + 1] << 8;\n};\nBuffer.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) {\n  if (!noAssert)\n    checkOffset(offset, 2, this.length);\n  return this[offset] << 8 | this[offset + 1];\n};\nBuffer.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) {\n  if (!noAssert)\n    checkOffset(offset, 4, this.length);\n  return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 16777216;\n};\nBuffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) {\n  if (!noAssert)\n    checkOffset(offset, 4, this.length);\n  return this[offset] * 16777216 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]);\n};\nBuffer.prototype.readIntLE = function readIntLE(offset, byteLength2, noAssert) {\n  offset = offset | 0;\n  byteLength2 = byteLength2 | 0;\n  if (!noAssert)\n    checkOffset(offset, byteLength2, this.length);\n  var val = this[offset];\n  var mul = 1;\n  var i = 0;\n  while (++i < byteLength2 && (mul *= 256)) {\n    val += this[offset + i] * mul;\n  }\n  mul *= 128;\n  if (val >= mul)\n    val -= Math.pow(2, 8 * byteLength2);\n  return val;\n};\nBuffer.prototype.readIntBE = function readIntBE(offset, byteLength2, noAssert) {\n  offset = offset | 0;\n  byteLength2 = byteLength2 | 0;\n  if (!noAssert)\n    checkOffset(offset, byteLength2, this.length);\n  var i = byteLength2;\n  var mul = 1;\n  var val = this[offset + --i];\n  while (i > 0 && (mul *= 256)) {\n    val += this[offset + --i] * mul;\n  }\n  mul *= 128;\n  if (val >= mul)\n    val -= Math.pow(2, 8 * byteLength2);\n  return val;\n};\nBuffer.prototype.readInt8 = function readInt8(offset, noAssert) {\n  if (!noAssert)\n    checkOffset(offset, 1, this.length);\n  if (!(this[offset] & 128))\n    return this[offset];\n  return (255 - this[offset] + 1) * -1;\n};\nBuffer.prototype.readInt16LE = function readInt16LE(offset, noAssert) {\n  if (!noAssert)\n    checkOffset(offset, 2, this.length);\n  var val = this[offset] | this[offset + 1] << 8;\n  return val & 32768 ? val | 4294901760 : val;\n};\nBuffer.prototype.readInt16BE = function readInt16BE(offset, noAssert) {\n  if (!noAssert)\n    checkOffset(offset, 2, this.length);\n  var val = this[offset + 1] | this[offset] << 8;\n  return val & 32768 ? val | 4294901760 : val;\n};\nBuffer.prototype.readInt32LE = function readInt32LE(offset, noAssert) {\n  if (!noAssert)\n    checkOffset(offset, 4, this.length);\n  return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24;\n};\nBuffer.prototype.readInt32BE = function readInt32BE(offset, noAssert) {\n  if (!noAssert)\n    checkOffset(offset, 4, this.length);\n  return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3];\n};\nBuffer.prototype.readFloatLE = function readFloatLE(offset, noAssert) {\n  if (!noAssert)\n    checkOffset(offset, 4, this.length);\n  return read(this, offset, true, 23, 4);\n};\nBuffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) {\n  if (!noAssert)\n    checkOffset(offset, 4, this.length);\n  return read(this, offset, false, 23, 4);\n};\nBuffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) {\n  if (!noAssert)\n    checkOffset(offset, 8, this.length);\n  return read(this, offset, true, 52, 8);\n};\nBuffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) {\n  if (!noAssert)\n    checkOffset(offset, 8, this.length);\n  return read(this, offset, false, 52, 8);\n};\nfunction checkInt(buf, value, offset, ext, max, min) {\n  if (!internalIsBuffer(buf))\n    throw new TypeError('\"buffer\" argument must be a Buffer instance');\n  if (value > max || value < min)\n    throw new RangeError('\"value\" argument is out of bounds');\n  if (offset + ext > buf.length)\n    throw new RangeError(\"Index out of range\");\n}\nBuffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength2, noAssert) {\n  value = +value;\n  offset = offset | 0;\n  byteLength2 = byteLength2 | 0;\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength2) - 1;\n    checkInt(this, value, offset, byteLength2, maxBytes, 0);\n  }\n  var mul = 1;\n  var i = 0;\n  this[offset] = value & 255;\n  while (++i < byteLength2 && (mul *= 256)) {\n    this[offset + i] = value / mul & 255;\n  }\n  return offset + byteLength2;\n};\nBuffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength2, noAssert) {\n  value = +value;\n  offset = offset | 0;\n  byteLength2 = byteLength2 | 0;\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength2) - 1;\n    checkInt(this, value, offset, byteLength2, maxBytes, 0);\n  }\n  var i = byteLength2 - 1;\n  var mul = 1;\n  this[offset + i] = value & 255;\n  while (--i >= 0 && (mul *= 256)) {\n    this[offset + i] = value / mul & 255;\n  }\n  return offset + byteLength2;\n};\nBuffer.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) {\n  value = +value;\n  offset = offset | 0;\n  if (!noAssert)\n    checkInt(this, value, offset, 1, 255, 0);\n  if (!Buffer.TYPED_ARRAY_SUPPORT)\n    value = Math.floor(value);\n  this[offset] = value & 255;\n  return offset + 1;\n};\nfunction objectWriteUInt16(buf, value, offset, littleEndian) {\n  if (value < 0)\n    value = 65535 + value + 1;\n  for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n    buf[offset + i] = (value & 255 << 8 * (littleEndian ? i : 1 - i)) >>> (littleEndian ? i : 1 - i) * 8;\n  }\n}\nBuffer.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) {\n  value = +value;\n  offset = offset | 0;\n  if (!noAssert)\n    checkInt(this, value, offset, 2, 65535, 0);\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = value & 255;\n    this[offset + 1] = value >>> 8;\n  } else {\n    objectWriteUInt16(this, value, offset, true);\n  }\n  return offset + 2;\n};\nBuffer.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) {\n  value = +value;\n  offset = offset | 0;\n  if (!noAssert)\n    checkInt(this, value, offset, 2, 65535, 0);\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = value >>> 8;\n    this[offset + 1] = value & 255;\n  } else {\n    objectWriteUInt16(this, value, offset, false);\n  }\n  return offset + 2;\n};\nfunction objectWriteUInt32(buf, value, offset, littleEndian) {\n  if (value < 0)\n    value = 4294967295 + value + 1;\n  for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n    buf[offset + i] = value >>> (littleEndian ? i : 3 - i) * 8 & 255;\n  }\n}\nBuffer.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) {\n  value = +value;\n  offset = offset | 0;\n  if (!noAssert)\n    checkInt(this, value, offset, 4, 4294967295, 0);\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset + 3] = value >>> 24;\n    this[offset + 2] = value >>> 16;\n    this[offset + 1] = value >>> 8;\n    this[offset] = value & 255;\n  } else {\n    objectWriteUInt32(this, value, offset, true);\n  }\n  return offset + 4;\n};\nBuffer.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) {\n  value = +value;\n  offset = offset | 0;\n  if (!noAssert)\n    checkInt(this, value, offset, 4, 4294967295, 0);\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = value >>> 24;\n    this[offset + 1] = value >>> 16;\n    this[offset + 2] = value >>> 8;\n    this[offset + 3] = value & 255;\n  } else {\n    objectWriteUInt32(this, value, offset, false);\n  }\n  return offset + 4;\n};\nBuffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength2, noAssert) {\n  value = +value;\n  offset = offset | 0;\n  if (!noAssert) {\n    var limit = Math.pow(2, 8 * byteLength2 - 1);\n    checkInt(this, value, offset, byteLength2, limit - 1, -limit);\n  }\n  var i = 0;\n  var mul = 1;\n  var sub = 0;\n  this[offset] = value & 255;\n  while (++i < byteLength2 && (mul *= 256)) {\n    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n      sub = 1;\n    }\n    this[offset + i] = (value / mul >> 0) - sub & 255;\n  }\n  return offset + byteLength2;\n};\nBuffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength2, noAssert) {\n  value = +value;\n  offset = offset | 0;\n  if (!noAssert) {\n    var limit = Math.pow(2, 8 * byteLength2 - 1);\n    checkInt(this, value, offset, byteLength2, limit - 1, -limit);\n  }\n  var i = byteLength2 - 1;\n  var mul = 1;\n  var sub = 0;\n  this[offset + i] = value & 255;\n  while (--i >= 0 && (mul *= 256)) {\n    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n      sub = 1;\n    }\n    this[offset + i] = (value / mul >> 0) - sub & 255;\n  }\n  return offset + byteLength2;\n};\nBuffer.prototype.writeInt8 = function writeInt8(value, offset, noAssert) {\n  value = +value;\n  offset = offset | 0;\n  if (!noAssert)\n    checkInt(this, value, offset, 1, 127, -128);\n  if (!Buffer.TYPED_ARRAY_SUPPORT)\n    value = Math.floor(value);\n  if (value < 0)\n    value = 255 + value + 1;\n  this[offset] = value & 255;\n  return offset + 1;\n};\nBuffer.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) {\n  value = +value;\n  offset = offset | 0;\n  if (!noAssert)\n    checkInt(this, value, offset, 2, 32767, -32768);\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = value & 255;\n    this[offset + 1] = value >>> 8;\n  } else {\n    objectWriteUInt16(this, value, offset, true);\n  }\n  return offset + 2;\n};\nBuffer.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) {\n  value = +value;\n  offset = offset | 0;\n  if (!noAssert)\n    checkInt(this, value, offset, 2, 32767, -32768);\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = value >>> 8;\n    this[offset + 1] = value & 255;\n  } else {\n    objectWriteUInt16(this, value, offset, false);\n  }\n  return offset + 2;\n};\nBuffer.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) {\n  value = +value;\n  offset = offset | 0;\n  if (!noAssert)\n    checkInt(this, value, offset, 4, 2147483647, -2147483648);\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = value & 255;\n    this[offset + 1] = value >>> 8;\n    this[offset + 2] = value >>> 16;\n    this[offset + 3] = value >>> 24;\n  } else {\n    objectWriteUInt32(this, value, offset, true);\n  }\n  return offset + 4;\n};\nBuffer.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) {\n  value = +value;\n  offset = offset | 0;\n  if (!noAssert)\n    checkInt(this, value, offset, 4, 2147483647, -2147483648);\n  if (value < 0)\n    value = 4294967295 + value + 1;\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = value >>> 24;\n    this[offset + 1] = value >>> 16;\n    this[offset + 2] = value >>> 8;\n    this[offset + 3] = value & 255;\n  } else {\n    objectWriteUInt32(this, value, offset, false);\n  }\n  return offset + 4;\n};\nfunction checkIEEE754(buf, value, offset, ext, max, min) {\n  if (offset + ext > buf.length)\n    throw new RangeError(\"Index out of range\");\n  if (offset < 0)\n    throw new RangeError(\"Index out of range\");\n}\nfunction writeFloat(buf, value, offset, littleEndian, noAssert) {\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 4);\n  }\n  write(buf, value, offset, littleEndian, 23, 4);\n  return offset + 4;\n}\nBuffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) {\n  return writeFloat(this, value, offset, true, noAssert);\n};\nBuffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) {\n  return writeFloat(this, value, offset, false, noAssert);\n};\nfunction writeDouble(buf, value, offset, littleEndian, noAssert) {\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 8);\n  }\n  write(buf, value, offset, littleEndian, 52, 8);\n  return offset + 8;\n}\nBuffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) {\n  return writeDouble(this, value, offset, true, noAssert);\n};\nBuffer.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) {\n  return writeDouble(this, value, offset, false, noAssert);\n};\nBuffer.prototype.copy = function copy(target, targetStart, start, end) {\n  if (!start)\n    start = 0;\n  if (!end && end !== 0)\n    end = this.length;\n  if (targetStart >= target.length)\n    targetStart = target.length;\n  if (!targetStart)\n    targetStart = 0;\n  if (end > 0 && end < start)\n    end = start;\n  if (end === start)\n    return 0;\n  if (target.length === 0 || this.length === 0)\n    return 0;\n  if (targetStart < 0) {\n    throw new RangeError(\"targetStart out of bounds\");\n  }\n  if (start < 0 || start >= this.length)\n    throw new RangeError(\"sourceStart out of bounds\");\n  if (end < 0)\n    throw new RangeError(\"sourceEnd out of bounds\");\n  if (end > this.length)\n    end = this.length;\n  if (target.length - targetStart < end - start) {\n    end = target.length - targetStart + start;\n  }\n  var len = end - start;\n  var i;\n  if (this === target && start < targetStart && targetStart < end) {\n    for (i = len - 1; i >= 0; --i) {\n      target[i + targetStart] = this[i + start];\n    }\n  } else if (len < 1e3 || !Buffer.TYPED_ARRAY_SUPPORT) {\n    for (i = 0; i < len; ++i) {\n      target[i + targetStart] = this[i + start];\n    }\n  } else {\n    Uint8Array.prototype.set.call(target, this.subarray(start, start + len), targetStart);\n  }\n  return len;\n};\nBuffer.prototype.fill = function fill(val, start, end, encoding) {\n  if (typeof val === \"string\") {\n    if (typeof start === \"string\") {\n      encoding = start;\n      start = 0;\n      end = this.length;\n    } else if (typeof end === \"string\") {\n      encoding = end;\n      end = this.length;\n    }\n    if (val.length === 1) {\n      var code = val.charCodeAt(0);\n      if (code < 256) {\n        val = code;\n      }\n    }\n    if (encoding !== void 0 && typeof encoding !== \"string\") {\n      throw new TypeError(\"encoding must be a string\");\n    }\n    if (typeof encoding === \"string\" && !Buffer.isEncoding(encoding)) {\n      throw new TypeError(\"Unknown encoding: \" + encoding);\n    }\n  } else if (typeof val === \"number\") {\n    val = val & 255;\n  }\n  if (start < 0 || this.length < start || this.length < end) {\n    throw new RangeError(\"Out of range index\");\n  }\n  if (end <= start) {\n    return this;\n  }\n  start = start >>> 0;\n  end = end === void 0 ? this.length : end >>> 0;\n  if (!val)\n    val = 0;\n  var i;\n  if (typeof val === \"number\") {\n    for (i = start; i < end; ++i) {\n      this[i] = val;\n    }\n  } else {\n    var bytes = internalIsBuffer(val) ? val : utf8ToBytes(new Buffer(val, encoding).toString());\n    var len = bytes.length;\n    for (i = 0; i < end - start; ++i) {\n      this[i + start] = bytes[i % len];\n    }\n  }\n  return this;\n};\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g;\nfunction base64clean(str) {\n  str = stringtrim(str).replace(INVALID_BASE64_RE, \"\");\n  if (str.length < 2)\n    return \"\";\n  while (str.length % 4 !== 0) {\n    str = str + \"=\";\n  }\n  return str;\n}\nfunction stringtrim(str) {\n  if (str.trim)\n    return str.trim();\n  return str.replace(/^\\s+|\\s+$/g, \"\");\n}\nfunction toHex(n) {\n  if (n < 16)\n    return \"0\" + n.toString(16);\n  return n.toString(16);\n}\nfunction utf8ToBytes(string, units) {\n  units = units || Infinity;\n  var codePoint;\n  var length = string.length;\n  var leadSurrogate = null;\n  var bytes = [];\n  for (var i = 0; i < length; ++i) {\n    codePoint = string.charCodeAt(i);\n    if (codePoint > 55295 && codePoint < 57344) {\n      if (!leadSurrogate) {\n        if (codePoint > 56319) {\n          if ((units -= 3) > -1)\n            bytes.push(239, 191, 189);\n          continue;\n        } else if (i + 1 === length) {\n          if ((units -= 3) > -1)\n            bytes.push(239, 191, 189);\n          continue;\n        }\n        leadSurrogate = codePoint;\n        continue;\n      }\n      if (codePoint < 56320) {\n        if ((units -= 3) > -1)\n          bytes.push(239, 191, 189);\n        leadSurrogate = codePoint;\n        continue;\n      }\n      codePoint = (leadSurrogate - 55296 << 10 | codePoint - 56320) + 65536;\n    } else if (leadSurrogate) {\n      if ((units -= 3) > -1)\n        bytes.push(239, 191, 189);\n    }\n    leadSurrogate = null;\n    if (codePoint < 128) {\n      if ((units -= 1) < 0)\n        break;\n      bytes.push(codePoint);\n    } else if (codePoint < 2048) {\n      if ((units -= 2) < 0)\n        break;\n      bytes.push(codePoint >> 6 | 192, codePoint & 63 | 128);\n    } else if (codePoint < 65536) {\n      if ((units -= 3) < 0)\n        break;\n      bytes.push(codePoint >> 12 | 224, codePoint >> 6 & 63 | 128, codePoint & 63 | 128);\n    } else if (codePoint < 1114112) {\n      if ((units -= 4) < 0)\n        break;\n      bytes.push(codePoint >> 18 | 240, codePoint >> 12 & 63 | 128, codePoint >> 6 & 63 | 128, codePoint & 63 | 128);\n    } else {\n      throw new Error(\"Invalid code point\");\n    }\n  }\n  return bytes;\n}\nfunction asciiToBytes(str) {\n  var byteArray = [];\n  for (var i = 0; i < str.length; ++i) {\n    byteArray.push(str.charCodeAt(i) & 255);\n  }\n  return byteArray;\n}\nfunction utf16leToBytes(str, units) {\n  var c, hi, lo;\n  var byteArray = [];\n  for (var i = 0; i < str.length; ++i) {\n    if ((units -= 2) < 0)\n      break;\n    c = str.charCodeAt(i);\n    hi = c >> 8;\n    lo = c % 256;\n    byteArray.push(lo);\n    byteArray.push(hi);\n  }\n  return byteArray;\n}\nfunction base64ToBytes(str) {\n  return toByteArray(base64clean(str));\n}\nfunction blitBuffer(src, dst, offset, length) {\n  for (var i = 0; i < length; ++i) {\n    if (i + offset >= dst.length || i >= src.length)\n      break;\n    dst[i + offset] = src[i];\n  }\n  return i;\n}\nfunction isnan(val) {\n  return val !== val;\n}\nfunction isBuffer(obj) {\n  return obj != null && (!!obj._isBuffer || isFastBuffer(obj) || isSlowBuffer(obj));\n}\nfunction isFastBuffer(obj) {\n  return !!obj.constructor && typeof obj.constructor.isBuffer === \"function\" && obj.constructor.isBuffer(obj);\n}\nfunction isSlowBuffer(obj) {\n  return typeof obj.readFloatLE === \"function\" && typeof obj.slice === \"function\" && isFastBuffer(obj.slice(0, 0));\n}\nexport {Buffer as B};\nexport default null;\n","var IcebergError = class extends Error {\n  constructor(message, opts) {\n    super(message);\n    var _a;\n    this.name = \"IcebergError\";\n    this.status = opts.status;\n    this.icebergType = opts.icebergType;\n    this.icebergCode = opts.icebergCode;\n    this.details = opts.details;\n    this.isCommitStateUnknown = opts.icebergType === \"CommitStateUnknownException\" || [500, 502, 504].includes(opts.status) && ((_a = opts.icebergType) == null ? void 0 : _a.includes(\"CommitState\")) === true;\n  }\n  isNotFound() {\n    return this.status === 404;\n  }\n  isConflict() {\n    return this.status === 409;\n  }\n  isAuthenticationTimeout() {\n    return this.status === 419;\n  }\n};\nfunction buildUrl(baseUrl, path, query) {\n  const url = new URL(path, baseUrl);\n  if (query) {\n    for (const [key, value] of Object.entries(query)) {\n      if (value !== void 0) {\n        url.searchParams.set(key, value);\n      }\n    }\n  }\n  return url.toString();\n}\nasync function buildAuthHeaders(auth) {\n  if (!auth || auth.type === \"none\") {\n    return {};\n  }\n  if (auth.type === \"bearer\") {\n    return {Authorization: `Bearer ${auth.token}`};\n  }\n  if (auth.type === \"header\") {\n    return {[auth.name]: auth.value};\n  }\n  if (auth.type === \"custom\") {\n    return await auth.getHeaders();\n  }\n  return {};\n}\nfunction createFetchClient(options) {\n  var _a;\n  const fetchFn = (_a = options.fetchImpl) != null ? _a : globalThis.fetch;\n  return {\n    async request({\n      method,\n      path,\n      query,\n      body,\n      headers\n    }) {\n      var _a2;\n      const url = buildUrl(options.baseUrl, path, query);\n      const authHeaders = await buildAuthHeaders(options.auth);\n      const res = await fetchFn(url, {\n        method,\n        headers: {\n          ...body ? {\"Content-Type\": \"application/json\"} : {},\n          ...authHeaders,\n          ...headers\n        },\n        body: body ? JSON.stringify(body) : void 0\n      });\n      const text = await res.text();\n      const isJson = (res.headers.get(\"content-type\") || \"\").includes(\"application/json\");\n      const data = isJson && text ? JSON.parse(text) : text;\n      if (!res.ok) {\n        const errBody = isJson ? data : void 0;\n        const errorDetail = errBody == null ? void 0 : errBody.error;\n        throw new IcebergError((_a2 = errorDetail == null ? void 0 : errorDetail.message) != null ? _a2 : `Request failed with status ${res.status}`, {\n          status: res.status,\n          icebergType: errorDetail == null ? void 0 : errorDetail.type,\n          icebergCode: errorDetail == null ? void 0 : errorDetail.code,\n          details: errBody\n        });\n      }\n      return {status: res.status, headers: res.headers, data};\n    }\n  };\n}\nfunction namespaceToPath(namespace) {\n  return namespace.join(\"\u001f\");\n}\nvar NamespaceOperations = class {\n  constructor(client, prefix = \"\") {\n    this.client = client;\n    this.prefix = prefix;\n  }\n  async listNamespaces(parent) {\n    const query = parent ? {parent: namespaceToPath(parent.namespace)} : void 0;\n    const response = await this.client.request({\n      method: \"GET\",\n      path: `${this.prefix}/namespaces`,\n      query\n    });\n    return response.data.namespaces.map((ns) => ({namespace: ns}));\n  }\n  async createNamespace(id, metadata) {\n    const request = {\n      namespace: id.namespace,\n      properties: metadata == null ? void 0 : metadata.properties\n    };\n    const response = await this.client.request({\n      method: \"POST\",\n      path: `${this.prefix}/namespaces`,\n      body: request\n    });\n    return response.data;\n  }\n  async dropNamespace(id) {\n    await this.client.request({\n      method: \"DELETE\",\n      path: `${this.prefix}/namespaces/${namespaceToPath(id.namespace)}`\n    });\n  }\n  async loadNamespaceMetadata(id) {\n    const response = await this.client.request({\n      method: \"GET\",\n      path: `${this.prefix}/namespaces/${namespaceToPath(id.namespace)}`\n    });\n    return {\n      properties: response.data.properties\n    };\n  }\n  async namespaceExists(id) {\n    try {\n      await this.client.request({\n        method: \"HEAD\",\n        path: `${this.prefix}/namespaces/${namespaceToPath(id.namespace)}`\n      });\n      return true;\n    } catch (error) {\n      if (error instanceof IcebergError && error.status === 404) {\n        return false;\n      }\n      throw error;\n    }\n  }\n  async createNamespaceIfNotExists(id, metadata) {\n    try {\n      return await this.createNamespace(id, metadata);\n    } catch (error) {\n      if (error instanceof IcebergError && error.status === 409) {\n        return;\n      }\n      throw error;\n    }\n  }\n};\nfunction namespaceToPath2(namespace) {\n  return namespace.join(\"\u001f\");\n}\nvar TableOperations = class {\n  constructor(client, prefix = \"\", accessDelegation) {\n    this.client = client;\n    this.prefix = prefix;\n    this.accessDelegation = accessDelegation;\n  }\n  async listTables(namespace) {\n    const response = await this.client.request({\n      method: \"GET\",\n      path: `${this.prefix}/namespaces/${namespaceToPath2(namespace.namespace)}/tables`\n    });\n    return response.data.identifiers;\n  }\n  async createTable(namespace, request) {\n    const headers = {};\n    if (this.accessDelegation) {\n      headers[\"X-Iceberg-Access-Delegation\"] = this.accessDelegation;\n    }\n    const response = await this.client.request({\n      method: \"POST\",\n      path: `${this.prefix}/namespaces/${namespaceToPath2(namespace.namespace)}/tables`,\n      body: request,\n      headers\n    });\n    return response.data.metadata;\n  }\n  async updateTable(id, request) {\n    const response = await this.client.request({\n      method: \"POST\",\n      path: `${this.prefix}/namespaces/${namespaceToPath2(id.namespace)}/tables/${id.name}`,\n      body: request\n    });\n    return {\n      \"metadata-location\": response.data[\"metadata-location\"],\n      metadata: response.data.metadata\n    };\n  }\n  async dropTable(id, options) {\n    var _a;\n    await this.client.request({\n      method: \"DELETE\",\n      path: `${this.prefix}/namespaces/${namespaceToPath2(id.namespace)}/tables/${id.name}`,\n      query: {purgeRequested: String((_a = options == null ? void 0 : options.purge) != null ? _a : false)}\n    });\n  }\n  async loadTable(id) {\n    const headers = {};\n    if (this.accessDelegation) {\n      headers[\"X-Iceberg-Access-Delegation\"] = this.accessDelegation;\n    }\n    const response = await this.client.request({\n      method: \"GET\",\n      path: `${this.prefix}/namespaces/${namespaceToPath2(id.namespace)}/tables/${id.name}`,\n      headers\n    });\n    return response.data.metadata;\n  }\n  async tableExists(id) {\n    const headers = {};\n    if (this.accessDelegation) {\n      headers[\"X-Iceberg-Access-Delegation\"] = this.accessDelegation;\n    }\n    try {\n      await this.client.request({\n        method: \"HEAD\",\n        path: `${this.prefix}/namespaces/${namespaceToPath2(id.namespace)}/tables/${id.name}`,\n        headers\n      });\n      return true;\n    } catch (error) {\n      if (error instanceof IcebergError && error.status === 404) {\n        return false;\n      }\n      throw error;\n    }\n  }\n  async createTableIfNotExists(namespace, request) {\n    try {\n      return await this.createTable(namespace, request);\n    } catch (error) {\n      if (error instanceof IcebergError && error.status === 409) {\n        return await this.loadTable({namespace: namespace.namespace, name: request.name});\n      }\n      throw error;\n    }\n  }\n};\nvar IcebergRestCatalog = class {\n  constructor(options) {\n    var _a;\n    let prefix = \"v1\";\n    if (options.catalogName) {\n      prefix += `/${options.catalogName}`;\n    }\n    const baseUrl = options.baseUrl.endsWith(\"/\") ? options.baseUrl : `${options.baseUrl}/`;\n    this.client = createFetchClient({\n      baseUrl,\n      auth: options.auth,\n      fetchImpl: options.fetch\n    });\n    this.accessDelegation = (_a = options.accessDelegation) == null ? void 0 : _a.join(\",\");\n    this.namespaceOps = new NamespaceOperations(this.client, prefix);\n    this.tableOps = new TableOperations(this.client, prefix, this.accessDelegation);\n  }\n  async listNamespaces(parent) {\n    return this.namespaceOps.listNamespaces(parent);\n  }\n  async createNamespace(id, metadata) {\n    return this.namespaceOps.createNamespace(id, metadata);\n  }\n  async dropNamespace(id) {\n    await this.namespaceOps.dropNamespace(id);\n  }\n  async loadNamespaceMetadata(id) {\n    return this.namespaceOps.loadNamespaceMetadata(id);\n  }\n  async listTables(namespace) {\n    return this.tableOps.listTables(namespace);\n  }\n  async createTable(namespace, request) {\n    return this.tableOps.createTable(namespace, request);\n  }\n  async updateTable(id, request) {\n    return this.tableOps.updateTable(id, request);\n  }\n  async dropTable(id, options) {\n    await this.tableOps.dropTable(id, options);\n  }\n  async loadTable(id) {\n    return this.tableOps.loadTable(id);\n  }\n  async namespaceExists(id) {\n    return this.namespaceOps.namespaceExists(id);\n  }\n  async tableExists(id) {\n    return this.tableOps.tableExists(id);\n  }\n  async createNamespaceIfNotExists(id, metadata) {\n    return this.namespaceOps.createNamespaceIfNotExists(id, metadata);\n  }\n  async createTableIfNotExists(namespace, request) {\n    return this.tableOps.createTableIfNotExists(namespace, request);\n  }\n};\nvar DECIMAL_REGEX = /^decimal\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)$/;\nvar FIXED_REGEX = /^fixed\\s*\\[\\s*(\\d+)\\s*\\]$/;\nfunction parseDecimalType(type) {\n  const match = type.match(DECIMAL_REGEX);\n  if (!match)\n    return null;\n  return {\n    precision: parseInt(match[1], 10),\n    scale: parseInt(match[2], 10)\n  };\n}\nfunction parseFixedType(type) {\n  const match = type.match(FIXED_REGEX);\n  if (!match)\n    return null;\n  return {\n    length: parseInt(match[1], 10)\n  };\n}\nfunction isDecimalType(type) {\n  return DECIMAL_REGEX.test(type);\n}\nfunction isFixedType(type) {\n  return FIXED_REGEX.test(type);\n}\nfunction typesEqual(a, b) {\n  const decimalA = parseDecimalType(a);\n  const decimalB = parseDecimalType(b);\n  if (decimalA && decimalB) {\n    return decimalA.precision === decimalB.precision && decimalA.scale === decimalB.scale;\n  }\n  const fixedA = parseFixedType(a);\n  const fixedB = parseFixedType(b);\n  if (fixedA && fixedB) {\n    return fixedA.length === fixedB.length;\n  }\n  return a === b;\n}\nfunction getCurrentSchema(metadata) {\n  return metadata.schemas.find((s) => s[\"schema-id\"] === metadata[\"current-schema-id\"]);\n}\nexport {IcebergError, IcebergRestCatalog, getCurrentSchema, isDecimalType, isFixedType, parseDecimalType, parseFixedType, typesEqual};\nexport default null;\n","import {B as Buffer} from \"../common/buffer-es6-f1f37f6e.js\";\nimport {IcebergRestCatalog} from \"/-/iceberg-js@v0.8.1-qSeYW4emrEZtCbPI7Cx3/dist=es2019,mode=imports/optimized/iceberg-js.js\";\nvar StorageError = class extends Error {\n  constructor(message) {\n    super(message);\n    this.__isStorageError = true;\n    this.name = \"StorageError\";\n  }\n};\nfunction isStorageError(error) {\n  return typeof error === \"object\" && error !== null && \"__isStorageError\" in error;\n}\nvar StorageApiError = class extends StorageError {\n  constructor(message, status, statusCode) {\n    super(message);\n    this.name = \"StorageApiError\";\n    this.status = status;\n    this.statusCode = statusCode;\n  }\n  toJSON() {\n    return {\n      name: this.name,\n      message: this.message,\n      status: this.status,\n      statusCode: this.statusCode\n    };\n  }\n};\nvar StorageUnknownError = class extends StorageError {\n  constructor(message, originalError) {\n    super(message);\n    this.name = \"StorageUnknownError\";\n    this.originalError = originalError;\n  }\n};\nconst resolveFetch$1 = (customFetch) => {\n  if (customFetch)\n    return (...args) => customFetch(...args);\n  return (...args) => fetch(...args);\n};\nconst resolveResponse$1 = () => {\n  return Response;\n};\nconst recursiveToCamel = (item) => {\n  if (Array.isArray(item))\n    return item.map((el) => recursiveToCamel(el));\n  else if (typeof item === \"function\" || item !== Object(item))\n    return item;\n  const result = {};\n  Object.entries(item).forEach(([key, value]) => {\n    const newKey = key.replace(/([-_][a-z])/gi, (c) => c.toUpperCase().replace(/[-_]/g, \"\"));\n    result[newKey] = recursiveToCamel(value);\n  });\n  return result;\n};\nconst isPlainObject$1 = (value) => {\n  if (typeof value !== \"object\" || value === null)\n    return false;\n  const prototype = Object.getPrototypeOf(value);\n  return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n};\nconst isValidBucketName = (bucketName) => {\n  if (!bucketName || typeof bucketName !== \"string\")\n    return false;\n  if (bucketName.length === 0 || bucketName.length > 100)\n    return false;\n  if (bucketName.trim() !== bucketName)\n    return false;\n  if (bucketName.includes(\"/\") || bucketName.includes(\"\\\\\"))\n    return false;\n  return /^[\\w!.\\*'() &$@=;:+,?-]+$/.test(bucketName);\n};\nfunction _typeof(o) {\n  \"@babel/helpers - typeof\";\n  return _typeof = typeof Symbol == \"function\" && typeof Symbol.iterator == \"symbol\" ? function(o$1) {\n    return typeof o$1;\n  } : function(o$1) {\n    return o$1 && typeof Symbol == \"function\" && o$1.constructor === Symbol && o$1 !== Symbol.prototype ? \"symbol\" : typeof o$1;\n  }, _typeof(o);\n}\nfunction toPrimitive(t, r) {\n  if (_typeof(t) != \"object\" || !t)\n    return t;\n  var e = t[Symbol.toPrimitive];\n  if (e !== void 0) {\n    var i = e.call(t, r || \"default\");\n    if (_typeof(i) != \"object\")\n      return i;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (r === \"string\" ? String : Number)(t);\n}\nfunction toPropertyKey(t) {\n  var i = toPrimitive(t, \"string\");\n  return _typeof(i) == \"symbol\" ? i : i + \"\";\n}\nfunction _defineProperty(e, r, t) {\n  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n    value: t,\n    enumerable: true,\n    configurable: true,\n    writable: true\n  }) : e[r] = t, e;\n}\nfunction ownKeys(e, r) {\n  var t = Object.keys(e);\n  if (Object.getOwnPropertySymbols) {\n    var o = Object.getOwnPropertySymbols(e);\n    r && (o = o.filter(function(r$1) {\n      return Object.getOwnPropertyDescriptor(e, r$1).enumerable;\n    })), t.push.apply(t, o);\n  }\n  return t;\n}\nfunction _objectSpread2(e) {\n  for (var r = 1; r < arguments.length; r++) {\n    var t = arguments[r] != null ? arguments[r] : {};\n    r % 2 ? ownKeys(Object(t), true).forEach(function(r$1) {\n      _defineProperty(e, r$1, t[r$1]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r$1) {\n      Object.defineProperty(e, r$1, Object.getOwnPropertyDescriptor(t, r$1));\n    });\n  }\n  return e;\n}\nconst _getErrorMessage$1 = (err) => {\n  var _err$error;\n  return err.msg || err.message || err.error_description || (typeof err.error === \"string\" ? err.error : (_err$error = err.error) === null || _err$error === void 0 ? void 0 : _err$error.message) || JSON.stringify(err);\n};\nconst handleError$1 = async (error, reject, options) => {\n  if (error instanceof await resolveResponse$1() && !(options === null || options === void 0 ? void 0 : options.noResolveJson))\n    error.json().then((err) => {\n      const status = error.status || 500;\n      const statusCode = (err === null || err === void 0 ? void 0 : err.statusCode) || status + \"\";\n      reject(new StorageApiError(_getErrorMessage$1(err), status, statusCode));\n    }).catch((err) => {\n      reject(new StorageUnknownError(_getErrorMessage$1(err), err));\n    });\n  else\n    reject(new StorageUnknownError(_getErrorMessage$1(error), error));\n};\nconst _getRequestParams$1 = (method, options, parameters, body) => {\n  const params = {\n    method,\n    headers: (options === null || options === void 0 ? void 0 : options.headers) || {}\n  };\n  if (method === \"GET\" || !body)\n    return params;\n  if (isPlainObject$1(body)) {\n    params.headers = _objectSpread2({\"Content-Type\": \"application/json\"}, options === null || options === void 0 ? void 0 : options.headers);\n    params.body = JSON.stringify(body);\n  } else\n    params.body = body;\n  if (options === null || options === void 0 ? void 0 : options.duplex)\n    params.duplex = options.duplex;\n  return _objectSpread2(_objectSpread2({}, params), parameters);\n};\nasync function _handleRequest$1(fetcher, method, url, options, parameters, body) {\n  return new Promise((resolve, reject) => {\n    fetcher(url, _getRequestParams$1(method, options, parameters, body)).then((result) => {\n      if (!result.ok)\n        throw result;\n      if (options === null || options === void 0 ? void 0 : options.noResolveJson)\n        return result;\n      return result.json();\n    }).then((data) => resolve(data)).catch((error) => handleError$1(error, reject, options));\n  });\n}\nasync function get(fetcher, url, options, parameters) {\n  return _handleRequest$1(fetcher, \"GET\", url, options, parameters);\n}\nasync function post$1(fetcher, url, body, options, parameters) {\n  return _handleRequest$1(fetcher, \"POST\", url, options, parameters, body);\n}\nasync function put(fetcher, url, body, options, parameters) {\n  return _handleRequest$1(fetcher, \"PUT\", url, options, parameters, body);\n}\nasync function head(fetcher, url, options, parameters) {\n  return _handleRequest$1(fetcher, \"HEAD\", url, _objectSpread2(_objectSpread2({}, options), {}, {noResolveJson: true}), parameters);\n}\nasync function remove(fetcher, url, body, options, parameters) {\n  return _handleRequest$1(fetcher, \"DELETE\", url, options, parameters, body);\n}\nvar StreamDownloadBuilder = class {\n  constructor(downloadFn, shouldThrowOnError) {\n    this.downloadFn = downloadFn;\n    this.shouldThrowOnError = shouldThrowOnError;\n  }\n  then(onfulfilled, onrejected) {\n    return this.execute().then(onfulfilled, onrejected);\n  }\n  async execute() {\n    var _this = this;\n    try {\n      return {\n        data: (await _this.downloadFn()).body,\n        error: null\n      };\n    } catch (error) {\n      if (_this.shouldThrowOnError)\n        throw error;\n      if (isStorageError(error))\n        return {\n          data: null,\n          error\n        };\n      throw error;\n    }\n  }\n};\nlet _Symbol$toStringTag;\n_Symbol$toStringTag = Symbol.toStringTag;\nvar BlobDownloadBuilder = class {\n  constructor(downloadFn, shouldThrowOnError) {\n    this.downloadFn = downloadFn;\n    this.shouldThrowOnError = shouldThrowOnError;\n    this[_Symbol$toStringTag] = \"BlobDownloadBuilder\";\n    this.promise = null;\n  }\n  asStream() {\n    return new StreamDownloadBuilder(this.downloadFn, this.shouldThrowOnError);\n  }\n  then(onfulfilled, onrejected) {\n    return this.getPromise().then(onfulfilled, onrejected);\n  }\n  catch(onrejected) {\n    return this.getPromise().catch(onrejected);\n  }\n  finally(onfinally) {\n    return this.getPromise().finally(onfinally);\n  }\n  getPromise() {\n    if (!this.promise)\n      this.promise = this.execute();\n    return this.promise;\n  }\n  async execute() {\n    var _this = this;\n    try {\n      return {\n        data: await (await _this.downloadFn()).blob(),\n        error: null\n      };\n    } catch (error) {\n      if (_this.shouldThrowOnError)\n        throw error;\n      if (isStorageError(error))\n        return {\n          data: null,\n          error\n        };\n      throw error;\n    }\n  }\n};\nconst DEFAULT_SEARCH_OPTIONS = {\n  limit: 100,\n  offset: 0,\n  sortBy: {\n    column: \"name\",\n    order: \"asc\"\n  }\n};\nconst DEFAULT_FILE_OPTIONS = {\n  cacheControl: \"3600\",\n  contentType: \"text/plain;charset=UTF-8\",\n  upsert: false\n};\nvar StorageFileApi = class {\n  constructor(url, headers = {}, bucketId, fetch$1) {\n    this.shouldThrowOnError = false;\n    this.url = url;\n    this.headers = headers;\n    this.bucketId = bucketId;\n    this.fetch = resolveFetch$1(fetch$1);\n  }\n  throwOnError() {\n    this.shouldThrowOnError = true;\n    return this;\n  }\n  async uploadOrUpdate(method, path, fileBody, fileOptions) {\n    var _this = this;\n    try {\n      let body;\n      const options = _objectSpread2(_objectSpread2({}, DEFAULT_FILE_OPTIONS), fileOptions);\n      let headers = _objectSpread2(_objectSpread2({}, _this.headers), method === \"POST\" && {\"x-upsert\": String(options.upsert)});\n      const metadata = options.metadata;\n      if (typeof Blob !== \"undefined\" && fileBody instanceof Blob) {\n        body = new FormData();\n        body.append(\"cacheControl\", options.cacheControl);\n        if (metadata)\n          body.append(\"metadata\", _this.encodeMetadata(metadata));\n        body.append(\"\", fileBody);\n      } else if (typeof FormData !== \"undefined\" && fileBody instanceof FormData) {\n        body = fileBody;\n        if (!body.has(\"cacheControl\"))\n          body.append(\"cacheControl\", options.cacheControl);\n        if (metadata && !body.has(\"metadata\"))\n          body.append(\"metadata\", _this.encodeMetadata(metadata));\n      } else {\n        body = fileBody;\n        headers[\"cache-control\"] = `max-age=${options.cacheControl}`;\n        headers[\"content-type\"] = options.contentType;\n        if (metadata)\n          headers[\"x-metadata\"] = _this.toBase64(_this.encodeMetadata(metadata));\n        if ((typeof ReadableStream !== \"undefined\" && body instanceof ReadableStream || body && typeof body === \"object\" && \"pipe\" in body && typeof body.pipe === \"function\") && !options.duplex)\n          options.duplex = \"half\";\n      }\n      if (fileOptions === null || fileOptions === void 0 ? void 0 : fileOptions.headers)\n        headers = _objectSpread2(_objectSpread2({}, headers), fileOptions.headers);\n      const cleanPath = _this._removeEmptyFolders(path);\n      const _path = _this._getFinalPath(cleanPath);\n      const data = await (method == \"PUT\" ? put : post$1)(_this.fetch, `${_this.url}/object/${_path}`, body, _objectSpread2({headers}, (options === null || options === void 0 ? void 0 : options.duplex) ? {duplex: options.duplex} : {}));\n      return {\n        data: {\n          path: cleanPath,\n          id: data.Id,\n          fullPath: data.Key\n        },\n        error: null\n      };\n    } catch (error) {\n      if (_this.shouldThrowOnError)\n        throw error;\n      if (isStorageError(error))\n        return {\n          data: null,\n          error\n        };\n      throw error;\n    }\n  }\n  async upload(path, fileBody, fileOptions) {\n    return this.uploadOrUpdate(\"POST\", path, fileBody, fileOptions);\n  }\n  async uploadToSignedUrl(path, token, fileBody, fileOptions) {\n    var _this3 = this;\n    const cleanPath = _this3._removeEmptyFolders(path);\n    const _path = _this3._getFinalPath(cleanPath);\n    const url = new URL(_this3.url + `/object/upload/sign/${_path}`);\n    url.searchParams.set(\"token\", token);\n    try {\n      let body;\n      const options = _objectSpread2({upsert: DEFAULT_FILE_OPTIONS.upsert}, fileOptions);\n      const headers = _objectSpread2(_objectSpread2({}, _this3.headers), {\"x-upsert\": String(options.upsert)});\n      if (typeof Blob !== \"undefined\" && fileBody instanceof Blob) {\n        body = new FormData();\n        body.append(\"cacheControl\", options.cacheControl);\n        body.append(\"\", fileBody);\n      } else if (typeof FormData !== \"undefined\" && fileBody instanceof FormData) {\n        body = fileBody;\n        body.append(\"cacheControl\", options.cacheControl);\n      } else {\n        body = fileBody;\n        headers[\"cache-control\"] = `max-age=${options.cacheControl}`;\n        headers[\"content-type\"] = options.contentType;\n      }\n      return {\n        data: {\n          path: cleanPath,\n          fullPath: (await put(_this3.fetch, url.toString(), body, {headers})).Key\n        },\n        error: null\n      };\n    } catch (error) {\n      if (_this3.shouldThrowOnError)\n        throw error;\n      if (isStorageError(error))\n        return {\n          data: null,\n          error\n        };\n      throw error;\n    }\n  }\n  async createSignedUploadUrl(path, options) {\n    var _this4 = this;\n    try {\n      let _path = _this4._getFinalPath(path);\n      const headers = _objectSpread2({}, _this4.headers);\n      if (options === null || options === void 0 ? void 0 : options.upsert)\n        headers[\"x-upsert\"] = \"true\";\n      const data = await post$1(_this4.fetch, `${_this4.url}/object/upload/sign/${_path}`, {}, {headers});\n      const url = new URL(_this4.url + data.url);\n      const token = url.searchParams.get(\"token\");\n      if (!token)\n        throw new StorageError(\"No token returned by API\");\n      return {\n        data: {\n          signedUrl: url.toString(),\n          path,\n          token\n        },\n        error: null\n      };\n    } catch (error) {\n      if (_this4.shouldThrowOnError)\n        throw error;\n      if (isStorageError(error))\n        return {\n          data: null,\n          error\n        };\n      throw error;\n    }\n  }\n  async update(path, fileBody, fileOptions) {\n    return this.uploadOrUpdate(\"PUT\", path, fileBody, fileOptions);\n  }\n  async move(fromPath, toPath, options) {\n    var _this6 = this;\n    try {\n      return {\n        data: await post$1(_this6.fetch, `${_this6.url}/object/move`, {\n          bucketId: _this6.bucketId,\n          sourceKey: fromPath,\n          destinationKey: toPath,\n          destinationBucket: options === null || options === void 0 ? void 0 : options.destinationBucket\n        }, {headers: _this6.headers}),\n        error: null\n      };\n    } catch (error) {\n      if (_this6.shouldThrowOnError)\n        throw error;\n      if (isStorageError(error))\n        return {\n          data: null,\n          error\n        };\n      throw error;\n    }\n  }\n  async copy(fromPath, toPath, options) {\n    var _this7 = this;\n    try {\n      return {\n        data: {path: (await post$1(_this7.fetch, `${_this7.url}/object/copy`, {\n          bucketId: _this7.bucketId,\n          sourceKey: fromPath,\n          destinationKey: toPath,\n          destinationBucket: options === null || options === void 0 ? void 0 : options.destinationBucket\n        }, {headers: _this7.headers})).Key},\n        error: null\n      };\n    } catch (error) {\n      if (_this7.shouldThrowOnError)\n        throw error;\n      if (isStorageError(error))\n        return {\n          data: null,\n          error\n        };\n      throw error;\n    }\n  }\n  async createSignedUrl(path, expiresIn, options) {\n    var _this8 = this;\n    try {\n      let _path = _this8._getFinalPath(path);\n      let data = await post$1(_this8.fetch, `${_this8.url}/object/sign/${_path}`, _objectSpread2({expiresIn}, (options === null || options === void 0 ? void 0 : options.transform) ? {transform: options.transform} : {}), {headers: _this8.headers});\n      const downloadQueryParam = (options === null || options === void 0 ? void 0 : options.download) ? `&download=${options.download === true ? \"\" : options.download}` : \"\";\n      data = {signedUrl: encodeURI(`${_this8.url}${data.signedURL}${downloadQueryParam}`)};\n      return {\n        data,\n        error: null\n      };\n    } catch (error) {\n      if (_this8.shouldThrowOnError)\n        throw error;\n      if (isStorageError(error))\n        return {\n          data: null,\n          error\n        };\n      throw error;\n    }\n  }\n  async createSignedUrls(paths, expiresIn, options) {\n    var _this9 = this;\n    try {\n      const data = await post$1(_this9.fetch, `${_this9.url}/object/sign/${_this9.bucketId}`, {\n        expiresIn,\n        paths\n      }, {headers: _this9.headers});\n      const downloadQueryParam = (options === null || options === void 0 ? void 0 : options.download) ? `&download=${options.download === true ? \"\" : options.download}` : \"\";\n      return {\n        data: data.map((datum) => _objectSpread2(_objectSpread2({}, datum), {}, {signedUrl: datum.signedURL ? encodeURI(`${_this9.url}${datum.signedURL}${downloadQueryParam}`) : null})),\n        error: null\n      };\n    } catch (error) {\n      if (_this9.shouldThrowOnError)\n        throw error;\n      if (isStorageError(error))\n        return {\n          data: null,\n          error\n        };\n      throw error;\n    }\n  }\n  download(path, options) {\n    const renderPath = typeof (options === null || options === void 0 ? void 0 : options.transform) !== \"undefined\" ? \"render/image/authenticated\" : \"object\";\n    const transformationQuery = this.transformOptsToQueryString((options === null || options === void 0 ? void 0 : options.transform) || {});\n    const queryString = transformationQuery ? `?${transformationQuery}` : \"\";\n    const _path = this._getFinalPath(path);\n    const downloadFn = () => get(this.fetch, `${this.url}/${renderPath}/${_path}${queryString}`, {\n      headers: this.headers,\n      noResolveJson: true\n    });\n    return new BlobDownloadBuilder(downloadFn, this.shouldThrowOnError);\n  }\n  async info(path) {\n    var _this10 = this;\n    const _path = _this10._getFinalPath(path);\n    try {\n      return {\n        data: recursiveToCamel(await get(_this10.fetch, `${_this10.url}/object/info/${_path}`, {headers: _this10.headers})),\n        error: null\n      };\n    } catch (error) {\n      if (_this10.shouldThrowOnError)\n        throw error;\n      if (isStorageError(error))\n        return {\n          data: null,\n          error\n        };\n      throw error;\n    }\n  }\n  async exists(path) {\n    var _this11 = this;\n    const _path = _this11._getFinalPath(path);\n    try {\n      await head(_this11.fetch, `${_this11.url}/object/${_path}`, {headers: _this11.headers});\n      return {\n        data: true,\n        error: null\n      };\n    } catch (error) {\n      if (_this11.shouldThrowOnError)\n        throw error;\n      if (isStorageError(error) && error instanceof StorageUnknownError) {\n        const originalError = error.originalError;\n        if ([400, 404].includes(originalError === null || originalError === void 0 ? void 0 : originalError.status))\n          return {\n            data: false,\n            error\n          };\n      }\n      throw error;\n    }\n  }\n  getPublicUrl(path, options) {\n    const _path = this._getFinalPath(path);\n    const _queryString = [];\n    const downloadQueryParam = (options === null || options === void 0 ? void 0 : options.download) ? `download=${options.download === true ? \"\" : options.download}` : \"\";\n    if (downloadQueryParam !== \"\")\n      _queryString.push(downloadQueryParam);\n    const renderPath = typeof (options === null || options === void 0 ? void 0 : options.transform) !== \"undefined\" ? \"render/image\" : \"object\";\n    const transformationQuery = this.transformOptsToQueryString((options === null || options === void 0 ? void 0 : options.transform) || {});\n    if (transformationQuery !== \"\")\n      _queryString.push(transformationQuery);\n    let queryString = _queryString.join(\"&\");\n    if (queryString !== \"\")\n      queryString = `?${queryString}`;\n    return {data: {publicUrl: encodeURI(`${this.url}/${renderPath}/public/${_path}${queryString}`)}};\n  }\n  async remove(paths) {\n    var _this12 = this;\n    try {\n      return {\n        data: await remove(_this12.fetch, `${_this12.url}/object/${_this12.bucketId}`, {prefixes: paths}, {headers: _this12.headers}),\n        error: null\n      };\n    } catch (error) {\n      if (_this12.shouldThrowOnError)\n        throw error;\n      if (isStorageError(error))\n        return {\n          data: null,\n          error\n        };\n      throw error;\n    }\n  }\n  async list(path, options, parameters) {\n    var _this13 = this;\n    try {\n      const body = _objectSpread2(_objectSpread2(_objectSpread2({}, DEFAULT_SEARCH_OPTIONS), options), {}, {prefix: path || \"\"});\n      return {\n        data: await post$1(_this13.fetch, `${_this13.url}/object/list/${_this13.bucketId}`, body, {headers: _this13.headers}, parameters),\n        error: null\n      };\n    } catch (error) {\n      if (_this13.shouldThrowOnError)\n        throw error;\n      if (isStorageError(error))\n        return {\n          data: null,\n          error\n        };\n      throw error;\n    }\n  }\n  async listV2(options, parameters) {\n    var _this14 = this;\n    try {\n      const body = _objectSpread2({}, options);\n      return {\n        data: await post$1(_this14.fetch, `${_this14.url}/object/list-v2/${_this14.bucketId}`, body, {headers: _this14.headers}, parameters),\n        error: null\n      };\n    } catch (error) {\n      if (_this14.shouldThrowOnError)\n        throw error;\n      if (isStorageError(error))\n        return {\n          data: null,\n          error\n        };\n      throw error;\n    }\n  }\n  encodeMetadata(metadata) {\n    return JSON.stringify(metadata);\n  }\n  toBase64(data) {\n    if (typeof Buffer !== \"undefined\")\n      return Buffer.from(data).toString(\"base64\");\n    return btoa(data);\n  }\n  _getFinalPath(path) {\n    return `${this.bucketId}/${path.replace(/^\\/+/, \"\")}`;\n  }\n  _removeEmptyFolders(path) {\n    return path.replace(/^\\/|\\/$/g, \"\").replace(/\\/+/g, \"/\");\n  }\n  transformOptsToQueryString(transform) {\n    const params = [];\n    if (transform.width)\n      params.push(`width=${transform.width}`);\n    if (transform.height)\n      params.push(`height=${transform.height}`);\n    if (transform.resize)\n      params.push(`resize=${transform.resize}`);\n    if (transform.format)\n      params.push(`format=${transform.format}`);\n    if (transform.quality)\n      params.push(`quality=${transform.quality}`);\n    return params.join(\"&\");\n  }\n};\nconst version = \"2.89.0\";\nconst DEFAULT_HEADERS$1 = {\"X-Client-Info\": `storage-js/${version}`};\nvar StorageBucketApi = class {\n  constructor(url, headers = {}, fetch$1, opts) {\n    this.shouldThrowOnError = false;\n    const baseUrl = new URL(url);\n    if (opts === null || opts === void 0 ? void 0 : opts.useNewHostname) {\n      if (/supabase\\.(co|in|red)$/.test(baseUrl.hostname) && !baseUrl.hostname.includes(\"storage.supabase.\"))\n        baseUrl.hostname = baseUrl.hostname.replace(\"supabase.\", \"storage.supabase.\");\n    }\n    this.url = baseUrl.href.replace(/\\/$/, \"\");\n    this.headers = _objectSpread2(_objectSpread2({}, DEFAULT_HEADERS$1), headers);\n    this.fetch = resolveFetch$1(fetch$1);\n  }\n  throwOnError() {\n    this.shouldThrowOnError = true;\n    return this;\n  }\n  async listBuckets(options) {\n    var _this = this;\n    try {\n      const queryString = _this.listBucketOptionsToQueryString(options);\n      return {\n        data: await get(_this.fetch, `${_this.url}/bucket${queryString}`, {headers: _this.headers}),\n        error: null\n      };\n    } catch (error) {\n      if (_this.shouldThrowOnError)\n        throw error;\n      if (isStorageError(error))\n        return {\n          data: null,\n          error\n        };\n      throw error;\n    }\n  }\n  async getBucket(id) {\n    var _this2 = this;\n    try {\n      return {\n        data: await get(_this2.fetch, `${_this2.url}/bucket/${id}`, {headers: _this2.headers}),\n        error: null\n      };\n    } catch (error) {\n      if (_this2.shouldThrowOnError)\n        throw error;\n      if (isStorageError(error))\n        return {\n          data: null,\n          error\n        };\n      throw error;\n    }\n  }\n  async createBucket(id, options = {public: false}) {\n    var _this3 = this;\n    try {\n      return {\n        data: await post$1(_this3.fetch, `${_this3.url}/bucket`, {\n          id,\n          name: id,\n          type: options.type,\n          public: options.public,\n          file_size_limit: options.fileSizeLimit,\n          allowed_mime_types: options.allowedMimeTypes\n        }, {headers: _this3.headers}),\n        error: null\n      };\n    } catch (error) {\n      if (_this3.shouldThrowOnError)\n        throw error;\n      if (isStorageError(error))\n        return {\n          data: null,\n          error\n        };\n      throw error;\n    }\n  }\n  async updateBucket(id, options) {\n    var _this4 = this;\n    try {\n      return {\n        data: await put(_this4.fetch, `${_this4.url}/bucket/${id}`, {\n          id,\n          name: id,\n          public: options.public,\n          file_size_limit: options.fileSizeLimit,\n          allowed_mime_types: options.allowedMimeTypes\n        }, {headers: _this4.headers}),\n        error: null\n      };\n    } catch (error) {\n      if (_this4.shouldThrowOnError)\n        throw error;\n      if (isStorageError(error))\n        return {\n          data: null,\n          error\n        };\n      throw error;\n    }\n  }\n  async emptyBucket(id) {\n    var _this5 = this;\n    try {\n      return {\n        data: await post$1(_this5.fetch, `${_this5.url}/bucket/${id}/empty`, {}, {headers: _this5.headers}),\n        error: null\n      };\n    } catch (error) {\n      if (_this5.shouldThrowOnError)\n        throw error;\n      if (isStorageError(error))\n        return {\n          data: null,\n          error\n        };\n      throw error;\n    }\n  }\n  async deleteBucket(id) {\n    var _this6 = this;\n    try {\n      return {\n        data: await remove(_this6.fetch, `${_this6.url}/bucket/${id}`, {}, {headers: _this6.headers}),\n        error: null\n      };\n    } catch (error) {\n      if (_this6.shouldThrowOnError)\n        throw error;\n      if (isStorageError(error))\n        return {\n          data: null,\n          error\n        };\n      throw error;\n    }\n  }\n  listBucketOptionsToQueryString(options) {\n    const params = {};\n    if (options) {\n      if (\"limit\" in options)\n        params.limit = String(options.limit);\n      if (\"offset\" in options)\n        params.offset = String(options.offset);\n      if (options.search)\n        params.search = options.search;\n      if (options.sortColumn)\n        params.sortColumn = options.sortColumn;\n      if (options.sortOrder)\n        params.sortOrder = options.sortOrder;\n    }\n    return Object.keys(params).length > 0 ? \"?\" + new URLSearchParams(params).toString() : \"\";\n  }\n};\nvar StorageAnalyticsClient = class {\n  constructor(url, headers = {}, fetch$1) {\n    this.shouldThrowOnError = false;\n    this.url = url.replace(/\\/$/, \"\");\n    this.headers = _objectSpread2(_objectSpread2({}, DEFAULT_HEADERS$1), headers);\n    this.fetch = resolveFetch$1(fetch$1);\n  }\n  throwOnError() {\n    this.shouldThrowOnError = true;\n    return this;\n  }\n  async createBucket(name) {\n    var _this = this;\n    try {\n      return {\n        data: await post$1(_this.fetch, `${_this.url}/bucket`, {name}, {headers: _this.headers}),\n        error: null\n      };\n    } catch (error) {\n      if (_this.shouldThrowOnError)\n        throw error;\n      if (isStorageError(error))\n        return {\n          data: null,\n          error\n        };\n      throw error;\n    }\n  }\n  async listBuckets(options) {\n    var _this2 = this;\n    try {\n      const queryParams = new URLSearchParams();\n      if ((options === null || options === void 0 ? void 0 : options.limit) !== void 0)\n        queryParams.set(\"limit\", options.limit.toString());\n      if ((options === null || options === void 0 ? void 0 : options.offset) !== void 0)\n        queryParams.set(\"offset\", options.offset.toString());\n      if (options === null || options === void 0 ? void 0 : options.sortColumn)\n        queryParams.set(\"sortColumn\", options.sortColumn);\n      if (options === null || options === void 0 ? void 0 : options.sortOrder)\n        queryParams.set(\"sortOrder\", options.sortOrder);\n      if (options === null || options === void 0 ? void 0 : options.search)\n        queryParams.set(\"search\", options.search);\n      const queryString = queryParams.toString();\n      const url = queryString ? `${_this2.url}/bucket?${queryString}` : `${_this2.url}/bucket`;\n      return {\n        data: await get(_this2.fetch, url, {headers: _this2.headers}),\n        error: null\n      };\n    } catch (error) {\n      if (_this2.shouldThrowOnError)\n        throw error;\n      if (isStorageError(error))\n        return {\n          data: null,\n          error\n        };\n      throw error;\n    }\n  }\n  async deleteBucket(bucketName) {\n    var _this3 = this;\n    try {\n      return {\n        data: await remove(_this3.fetch, `${_this3.url}/bucket/${bucketName}`, {}, {headers: _this3.headers}),\n        error: null\n      };\n    } catch (error) {\n      if (_this3.shouldThrowOnError)\n        throw error;\n      if (isStorageError(error))\n        return {\n          data: null,\n          error\n        };\n      throw error;\n    }\n  }\n  from(bucketName) {\n    var _this4 = this;\n    if (!isValidBucketName(bucketName))\n      throw new StorageError(\"Invalid bucket name: File, folder, and bucket names must follow AWS object key naming guidelines and should avoid the use of any other characters.\");\n    const catalog = new IcebergRestCatalog({\n      baseUrl: this.url,\n      catalogName: bucketName,\n      auth: {\n        type: \"custom\",\n        getHeaders: async () => _this4.headers\n      },\n      fetch: this.fetch\n    });\n    const shouldThrowOnError = this.shouldThrowOnError;\n    return new Proxy(catalog, {get(target, prop) {\n      const value = target[prop];\n      if (typeof value !== \"function\")\n        return value;\n      return async (...args) => {\n        try {\n          return {\n            data: await value.apply(target, args),\n            error: null\n          };\n        } catch (error) {\n          if (shouldThrowOnError)\n            throw error;\n          return {\n            data: null,\n            error\n          };\n        }\n      };\n    }});\n  }\n};\nconst DEFAULT_HEADERS = {\n  \"X-Client-Info\": `storage-js/${version}`,\n  \"Content-Type\": \"application/json\"\n};\nvar StorageVectorsError = class extends Error {\n  constructor(message) {\n    super(message);\n    this.__isStorageVectorsError = true;\n    this.name = \"StorageVectorsError\";\n  }\n};\nfunction isStorageVectorsError(error) {\n  return typeof error === \"object\" && error !== null && \"__isStorageVectorsError\" in error;\n}\nvar StorageVectorsApiError = class extends StorageVectorsError {\n  constructor(message, status, statusCode) {\n    super(message);\n    this.name = \"StorageVectorsApiError\";\n    this.status = status;\n    this.statusCode = statusCode;\n  }\n  toJSON() {\n    return {\n      name: this.name,\n      message: this.message,\n      status: this.status,\n      statusCode: this.statusCode\n    };\n  }\n};\nvar StorageVectorsUnknownError = class extends StorageVectorsError {\n  constructor(message, originalError) {\n    super(message);\n    this.name = \"StorageVectorsUnknownError\";\n    this.originalError = originalError;\n  }\n};\nlet StorageVectorsErrorCode = /* @__PURE__ */ function(StorageVectorsErrorCode$1) {\n  StorageVectorsErrorCode$1[\"InternalError\"] = \"InternalError\";\n  StorageVectorsErrorCode$1[\"S3VectorConflictException\"] = \"S3VectorConflictException\";\n  StorageVectorsErrorCode$1[\"S3VectorNotFoundException\"] = \"S3VectorNotFoundException\";\n  StorageVectorsErrorCode$1[\"S3VectorBucketNotEmpty\"] = \"S3VectorBucketNotEmpty\";\n  StorageVectorsErrorCode$1[\"S3VectorMaxBucketsExceeded\"] = \"S3VectorMaxBucketsExceeded\";\n  StorageVectorsErrorCode$1[\"S3VectorMaxIndexesExceeded\"] = \"S3VectorMaxIndexesExceeded\";\n  return StorageVectorsErrorCode$1;\n}({});\nconst resolveFetch = (customFetch) => {\n  if (customFetch)\n    return (...args) => customFetch(...args);\n  return (...args) => fetch(...args);\n};\nconst resolveResponse = () => {\n  return Response;\n};\nconst isPlainObject = (value) => {\n  if (typeof value !== \"object\" || value === null)\n    return false;\n  const prototype = Object.getPrototypeOf(value);\n  return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n};\nconst normalizeToFloat32 = (values) => {\n  return Array.from(new Float32Array(values));\n};\nconst validateVectorDimension = (vector, expectedDimension) => {\n  if (expectedDimension !== void 0 && vector.float32.length !== expectedDimension)\n    throw new Error(`Vector dimension mismatch: expected ${expectedDimension}, got ${vector.float32.length}`);\n};\nconst _getErrorMessage = (err) => err.msg || err.message || err.error_description || err.error || JSON.stringify(err);\nconst handleError = async (error, reject, options) => {\n  if (error && typeof error === \"object\" && \"status\" in error && \"ok\" in error && typeof error.status === \"number\" && !(options === null || options === void 0 ? void 0 : options.noResolveJson)) {\n    const status = error.status || 500;\n    const responseError = error;\n    if (typeof responseError.json === \"function\")\n      responseError.json().then((err) => {\n        const statusCode = (err === null || err === void 0 ? void 0 : err.statusCode) || (err === null || err === void 0 ? void 0 : err.code) || status + \"\";\n        reject(new StorageVectorsApiError(_getErrorMessage(err), status, statusCode));\n      }).catch(() => {\n        const statusCode = status + \"\";\n        reject(new StorageVectorsApiError(responseError.statusText || `HTTP ${status} error`, status, statusCode));\n      });\n    else {\n      const statusCode = status + \"\";\n      reject(new StorageVectorsApiError(responseError.statusText || `HTTP ${status} error`, status, statusCode));\n    }\n  } else\n    reject(new StorageVectorsUnknownError(_getErrorMessage(error), error));\n};\nconst _getRequestParams = (method, options, parameters, body) => {\n  const params = {\n    method,\n    headers: (options === null || options === void 0 ? void 0 : options.headers) || {}\n  };\n  if (method === \"GET\" || !body)\n    return params;\n  if (isPlainObject(body)) {\n    params.headers = _objectSpread2({\"Content-Type\": \"application/json\"}, options === null || options === void 0 ? void 0 : options.headers);\n    params.body = JSON.stringify(body);\n  } else\n    params.body = body;\n  return _objectSpread2(_objectSpread2({}, params), parameters);\n};\nasync function _handleRequest(fetcher, method, url, options, parameters, body) {\n  return new Promise((resolve, reject) => {\n    fetcher(url, _getRequestParams(method, options, parameters, body)).then((result) => {\n      if (!result.ok)\n        throw result;\n      if (options === null || options === void 0 ? void 0 : options.noResolveJson)\n        return result;\n      const contentType = result.headers.get(\"content-type\");\n      if (!contentType || !contentType.includes(\"application/json\"))\n        return {};\n      return result.json();\n    }).then((data) => resolve(data)).catch((error) => handleError(error, reject, options));\n  });\n}\nasync function post(fetcher, url, body, options, parameters) {\n  return _handleRequest(fetcher, \"POST\", url, options, parameters, body);\n}\nvar VectorIndexApi = class {\n  constructor(url, headers = {}, fetch$1) {\n    this.shouldThrowOnError = false;\n    this.url = url.replace(/\\/$/, \"\");\n    this.headers = _objectSpread2(_objectSpread2({}, DEFAULT_HEADERS), headers);\n    this.fetch = resolveFetch(fetch$1);\n  }\n  throwOnError() {\n    this.shouldThrowOnError = true;\n    return this;\n  }\n  async createIndex(options) {\n    var _this = this;\n    try {\n      return {\n        data: await post(_this.fetch, `${_this.url}/CreateIndex`, options, {headers: _this.headers}) || {},\n        error: null\n      };\n    } catch (error) {\n      if (_this.shouldThrowOnError)\n        throw error;\n      if (isStorageVectorsError(error))\n        return {\n          data: null,\n          error\n        };\n      throw error;\n    }\n  }\n  async getIndex(vectorBucketName, indexName) {\n    var _this2 = this;\n    try {\n      return {\n        data: await post(_this2.fetch, `${_this2.url}/GetIndex`, {\n          vectorBucketName,\n          indexName\n        }, {headers: _this2.headers}),\n        error: null\n      };\n    } catch (error) {\n      if (_this2.shouldThrowOnError)\n        throw error;\n      if (isStorageVectorsError(error))\n        return {\n          data: null,\n          error\n        };\n      throw error;\n    }\n  }\n  async listIndexes(options) {\n    var _this3 = this;\n    try {\n      return {\n        data: await post(_this3.fetch, `${_this3.url}/ListIndexes`, options, {headers: _this3.headers}),\n        error: null\n      };\n    } catch (error) {\n      if (_this3.shouldThrowOnError)\n        throw error;\n      if (isStorageVectorsError(error))\n        return {\n          data: null,\n          error\n        };\n      throw error;\n    }\n  }\n  async deleteIndex(vectorBucketName, indexName) {\n    var _this4 = this;\n    try {\n      return {\n        data: await post(_this4.fetch, `${_this4.url}/DeleteIndex`, {\n          vectorBucketName,\n          indexName\n        }, {headers: _this4.headers}) || {},\n        error: null\n      };\n    } catch (error) {\n      if (_this4.shouldThrowOnError)\n        throw error;\n      if (isStorageVectorsError(error))\n        return {\n          data: null,\n          error\n        };\n      throw error;\n    }\n  }\n};\nvar VectorDataApi = class {\n  constructor(url, headers = {}, fetch$1) {\n    this.shouldThrowOnError = false;\n    this.url = url.replace(/\\/$/, \"\");\n    this.headers = _objectSpread2(_objectSpread2({}, DEFAULT_HEADERS), headers);\n    this.fetch = resolveFetch(fetch$1);\n  }\n  throwOnError() {\n    this.shouldThrowOnError = true;\n    return this;\n  }\n  async putVectors(options) {\n    var _this = this;\n    try {\n      if (options.vectors.length < 1 || options.vectors.length > 500)\n        throw new Error(\"Vector batch size must be between 1 and 500 items\");\n      return {\n        data: await post(_this.fetch, `${_this.url}/PutVectors`, options, {headers: _this.headers}) || {},\n        error: null\n      };\n    } catch (error) {\n      if (_this.shouldThrowOnError)\n        throw error;\n      if (isStorageVectorsError(error))\n        return {\n          data: null,\n          error\n        };\n      throw error;\n    }\n  }\n  async getVectors(options) {\n    var _this2 = this;\n    try {\n      return {\n        data: await post(_this2.fetch, `${_this2.url}/GetVectors`, options, {headers: _this2.headers}),\n        error: null\n      };\n    } catch (error) {\n      if (_this2.shouldThrowOnError)\n        throw error;\n      if (isStorageVectorsError(error))\n        return {\n          data: null,\n          error\n        };\n      throw error;\n    }\n  }\n  async listVectors(options) {\n    var _this3 = this;\n    try {\n      if (options.segmentCount !== void 0) {\n        if (options.segmentCount < 1 || options.segmentCount > 16)\n          throw new Error(\"segmentCount must be between 1 and 16\");\n        if (options.segmentIndex !== void 0) {\n          if (options.segmentIndex < 0 || options.segmentIndex >= options.segmentCount)\n            throw new Error(`segmentIndex must be between 0 and ${options.segmentCount - 1}`);\n        }\n      }\n      return {\n        data: await post(_this3.fetch, `${_this3.url}/ListVectors`, options, {headers: _this3.headers}),\n        error: null\n      };\n    } catch (error) {\n      if (_this3.shouldThrowOnError)\n        throw error;\n      if (isStorageVectorsError(error))\n        return {\n          data: null,\n          error\n        };\n      throw error;\n    }\n  }\n  async queryVectors(options) {\n    var _this4 = this;\n    try {\n      return {\n        data: await post(_this4.fetch, `${_this4.url}/QueryVectors`, options, {headers: _this4.headers}),\n        error: null\n      };\n    } catch (error) {\n      if (_this4.shouldThrowOnError)\n        throw error;\n      if (isStorageVectorsError(error))\n        return {\n          data: null,\n          error\n        };\n      throw error;\n    }\n  }\n  async deleteVectors(options) {\n    var _this5 = this;\n    try {\n      if (options.keys.length < 1 || options.keys.length > 500)\n        throw new Error(\"Keys batch size must be between 1 and 500 items\");\n      return {\n        data: await post(_this5.fetch, `${_this5.url}/DeleteVectors`, options, {headers: _this5.headers}) || {},\n        error: null\n      };\n    } catch (error) {\n      if (_this5.shouldThrowOnError)\n        throw error;\n      if (isStorageVectorsError(error))\n        return {\n          data: null,\n          error\n        };\n      throw error;\n    }\n  }\n};\nvar VectorBucketApi = class {\n  constructor(url, headers = {}, fetch$1) {\n    this.shouldThrowOnError = false;\n    this.url = url.replace(/\\/$/, \"\");\n    this.headers = _objectSpread2(_objectSpread2({}, DEFAULT_HEADERS), headers);\n    this.fetch = resolveFetch(fetch$1);\n  }\n  throwOnError() {\n    this.shouldThrowOnError = true;\n    return this;\n  }\n  async createBucket(vectorBucketName) {\n    var _this = this;\n    try {\n      return {\n        data: await post(_this.fetch, `${_this.url}/CreateVectorBucket`, {vectorBucketName}, {headers: _this.headers}) || {},\n        error: null\n      };\n    } catch (error) {\n      if (_this.shouldThrowOnError)\n        throw error;\n      if (isStorageVectorsError(error))\n        return {\n          data: null,\n          error\n        };\n      throw error;\n    }\n  }\n  async getBucket(vectorBucketName) {\n    var _this2 = this;\n    try {\n      return {\n        data: await post(_this2.fetch, `${_this2.url}/GetVectorBucket`, {vectorBucketName}, {headers: _this2.headers}),\n        error: null\n      };\n    } catch (error) {\n      if (_this2.shouldThrowOnError)\n        throw error;\n      if (isStorageVectorsError(error))\n        return {\n          data: null,\n          error\n        };\n      throw error;\n    }\n  }\n  async listBuckets(options = {}) {\n    var _this3 = this;\n    try {\n      return {\n        data: await post(_this3.fetch, `${_this3.url}/ListVectorBuckets`, options, {headers: _this3.headers}),\n        error: null\n      };\n    } catch (error) {\n      if (_this3.shouldThrowOnError)\n        throw error;\n      if (isStorageVectorsError(error))\n        return {\n          data: null,\n          error\n        };\n      throw error;\n    }\n  }\n  async deleteBucket(vectorBucketName) {\n    var _this4 = this;\n    try {\n      return {\n        data: await post(_this4.fetch, `${_this4.url}/DeleteVectorBucket`, {vectorBucketName}, {headers: _this4.headers}) || {},\n        error: null\n      };\n    } catch (error) {\n      if (_this4.shouldThrowOnError)\n        throw error;\n      if (isStorageVectorsError(error))\n        return {\n          data: null,\n          error\n        };\n      throw error;\n    }\n  }\n};\nvar StorageVectorsClient = class extends VectorBucketApi {\n  constructor(url, options = {}) {\n    super(url, options.headers || {}, options.fetch);\n  }\n  from(vectorBucketName) {\n    return new VectorBucketScope(this.url, this.headers, vectorBucketName, this.fetch);\n  }\n  async createBucket(vectorBucketName) {\n    var _superprop_getCreateBucket = () => super.createBucket, _this = this;\n    return _superprop_getCreateBucket().call(_this, vectorBucketName);\n  }\n  async getBucket(vectorBucketName) {\n    var _superprop_getGetBucket = () => super.getBucket, _this2 = this;\n    return _superprop_getGetBucket().call(_this2, vectorBucketName);\n  }\n  async listBuckets(options = {}) {\n    var _superprop_getListBuckets = () => super.listBuckets, _this3 = this;\n    return _superprop_getListBuckets().call(_this3, options);\n  }\n  async deleteBucket(vectorBucketName) {\n    var _superprop_getDeleteBucket = () => super.deleteBucket, _this4 = this;\n    return _superprop_getDeleteBucket().call(_this4, vectorBucketName);\n  }\n};\nvar VectorBucketScope = class extends VectorIndexApi {\n  constructor(url, headers, vectorBucketName, fetch$1) {\n    super(url, headers, fetch$1);\n    this.vectorBucketName = vectorBucketName;\n  }\n  async createIndex(options) {\n    var _superprop_getCreateIndex = () => super.createIndex, _this5 = this;\n    return _superprop_getCreateIndex().call(_this5, _objectSpread2(_objectSpread2({}, options), {}, {vectorBucketName: _this5.vectorBucketName}));\n  }\n  async listIndexes(options = {}) {\n    var _superprop_getListIndexes = () => super.listIndexes, _this6 = this;\n    return _superprop_getListIndexes().call(_this6, _objectSpread2(_objectSpread2({}, options), {}, {vectorBucketName: _this6.vectorBucketName}));\n  }\n  async getIndex(indexName) {\n    var _superprop_getGetIndex = () => super.getIndex, _this7 = this;\n    return _superprop_getGetIndex().call(_this7, _this7.vectorBucketName, indexName);\n  }\n  async deleteIndex(indexName) {\n    var _superprop_getDeleteIndex = () => super.deleteIndex, _this8 = this;\n    return _superprop_getDeleteIndex().call(_this8, _this8.vectorBucketName, indexName);\n  }\n  index(indexName) {\n    return new VectorIndexScope(this.url, this.headers, this.vectorBucketName, indexName, this.fetch);\n  }\n};\nvar VectorIndexScope = class extends VectorDataApi {\n  constructor(url, headers, vectorBucketName, indexName, fetch$1) {\n    super(url, headers, fetch$1);\n    this.vectorBucketName = vectorBucketName;\n    this.indexName = indexName;\n  }\n  async putVectors(options) {\n    var _superprop_getPutVectors = () => super.putVectors, _this9 = this;\n    return _superprop_getPutVectors().call(_this9, _objectSpread2(_objectSpread2({}, options), {}, {\n      vectorBucketName: _this9.vectorBucketName,\n      indexName: _this9.indexName\n    }));\n  }\n  async getVectors(options) {\n    var _superprop_getGetVectors = () => super.getVectors, _this10 = this;\n    return _superprop_getGetVectors().call(_this10, _objectSpread2(_objectSpread2({}, options), {}, {\n      vectorBucketName: _this10.vectorBucketName,\n      indexName: _this10.indexName\n    }));\n  }\n  async listVectors(options = {}) {\n    var _superprop_getListVectors = () => super.listVectors, _this11 = this;\n    return _superprop_getListVectors().call(_this11, _objectSpread2(_objectSpread2({}, options), {}, {\n      vectorBucketName: _this11.vectorBucketName,\n      indexName: _this11.indexName\n    }));\n  }\n  async queryVectors(options) {\n    var _superprop_getQueryVectors = () => super.queryVectors, _this12 = this;\n    return _superprop_getQueryVectors().call(_this12, _objectSpread2(_objectSpread2({}, options), {}, {\n      vectorBucketName: _this12.vectorBucketName,\n      indexName: _this12.indexName\n    }));\n  }\n  async deleteVectors(options) {\n    var _superprop_getDeleteVectors = () => super.deleteVectors, _this13 = this;\n    return _superprop_getDeleteVectors().call(_this13, _objectSpread2(_objectSpread2({}, options), {}, {\n      vectorBucketName: _this13.vectorBucketName,\n      indexName: _this13.indexName\n    }));\n  }\n};\nvar StorageClient = class extends StorageBucketApi {\n  constructor(url, headers = {}, fetch$1, opts) {\n    super(url, headers, fetch$1, opts);\n  }\n  from(id) {\n    return new StorageFileApi(this.url, this.headers, id, this.fetch);\n  }\n  get vectors() {\n    return new StorageVectorsClient(this.url + \"/vector\", {\n      headers: this.headers,\n      fetch: this.fetch\n    });\n  }\n  get analytics() {\n    return new StorageAnalyticsClient(this.url + \"/iceberg\", this.headers, this.fetch);\n  }\n};\nexport {StorageAnalyticsClient, StorageApiError, StorageClient, StorageError, StorageUnknownError, StorageVectorsApiError, StorageVectorsClient, StorageVectorsError, StorageVectorsErrorCode, StorageVectorsUnknownError, VectorBucketApi, VectorBucketScope, VectorDataApi, VectorIndexApi, VectorIndexScope, isPlainObject, isStorageError, isStorageVectorsError, normalizeToFloat32, resolveFetch, resolveResponse, validateVectorDimension};\nexport default null;\n","import {__rest} from \"/-/tslib@v2.8.1-aomsAGZSx3SJvCkCzmxc/dist=es2019,mode=imports/optimized/tslib.js\";\nconst version = \"2.89.0\";\nconst AUTO_REFRESH_TICK_DURATION_MS = 30 * 1e3;\nconst AUTO_REFRESH_TICK_THRESHOLD = 3;\nconst EXPIRY_MARGIN_MS = AUTO_REFRESH_TICK_THRESHOLD * AUTO_REFRESH_TICK_DURATION_MS;\nconst GOTRUE_URL = \"http://localhost:9999\";\nconst STORAGE_KEY = \"supabase.auth.token\";\nconst DEFAULT_HEADERS = {\"X-Client-Info\": `gotrue-js/${version}`};\nconst API_VERSION_HEADER_NAME = \"X-Supabase-Api-Version\";\nconst API_VERSIONS = {\n  \"2024-01-01\": {\n    timestamp: Date.parse(\"2024-01-01T00:00:00.0Z\"),\n    name: \"2024-01-01\"\n  }\n};\nconst BASE64URL_REGEX = /^([a-z0-9_-]{4})*($|[a-z0-9_-]{3}$|[a-z0-9_-]{2}$)$/i;\nconst JWKS_TTL = 10 * 60 * 1e3;\nclass AuthError extends Error {\n  constructor(message, status, code) {\n    super(message);\n    this.__isAuthError = true;\n    this.name = \"AuthError\";\n    this.status = status;\n    this.code = code;\n  }\n}\nfunction isAuthError(error) {\n  return typeof error === \"object\" && error !== null && \"__isAuthError\" in error;\n}\nclass AuthApiError extends AuthError {\n  constructor(message, status, code) {\n    super(message, status, code);\n    this.name = \"AuthApiError\";\n    this.status = status;\n    this.code = code;\n  }\n}\nfunction isAuthApiError(error) {\n  return isAuthError(error) && error.name === \"AuthApiError\";\n}\nclass AuthUnknownError extends AuthError {\n  constructor(message, originalError) {\n    super(message);\n    this.name = \"AuthUnknownError\";\n    this.originalError = originalError;\n  }\n}\nclass CustomAuthError extends AuthError {\n  constructor(message, name, status, code) {\n    super(message, status, code);\n    this.name = name;\n    this.status = status;\n  }\n}\nclass AuthSessionMissingError extends CustomAuthError {\n  constructor() {\n    super(\"Auth session missing!\", \"AuthSessionMissingError\", 400, void 0);\n  }\n}\nfunction isAuthSessionMissingError(error) {\n  return isAuthError(error) && error.name === \"AuthSessionMissingError\";\n}\nclass AuthInvalidTokenResponseError extends CustomAuthError {\n  constructor() {\n    super(\"Auth session or user missing\", \"AuthInvalidTokenResponseError\", 500, void 0);\n  }\n}\nclass AuthInvalidCredentialsError extends CustomAuthError {\n  constructor(message) {\n    super(message, \"AuthInvalidCredentialsError\", 400, void 0);\n  }\n}\nclass AuthImplicitGrantRedirectError extends CustomAuthError {\n  constructor(message, details = null) {\n    super(message, \"AuthImplicitGrantRedirectError\", 500, void 0);\n    this.details = null;\n    this.details = details;\n  }\n  toJSON() {\n    return {\n      name: this.name,\n      message: this.message,\n      status: this.status,\n      details: this.details\n    };\n  }\n}\nfunction isAuthImplicitGrantRedirectError(error) {\n  return isAuthError(error) && error.name === \"AuthImplicitGrantRedirectError\";\n}\nclass AuthPKCEGrantCodeExchangeError extends CustomAuthError {\n  constructor(message, details = null) {\n    super(message, \"AuthPKCEGrantCodeExchangeError\", 500, void 0);\n    this.details = null;\n    this.details = details;\n  }\n  toJSON() {\n    return {\n      name: this.name,\n      message: this.message,\n      status: this.status,\n      details: this.details\n    };\n  }\n}\nclass AuthPKCECodeVerifierMissingError extends CustomAuthError {\n  constructor() {\n    super(\"PKCE code verifier not found in storage. This can happen if the auth flow was initiated in a different browser or device, or if the storage was cleared. For SSR frameworks (Next.js, SvelteKit, etc.), use @supabase/ssr on both the server and client to store the code verifier in cookies.\", \"AuthPKCECodeVerifierMissingError\", 400, \"pkce_code_verifier_not_found\");\n  }\n}\nfunction isAuthPKCECodeVerifierMissingError(error) {\n  return isAuthError(error) && error.name === \"AuthPKCECodeVerifierMissingError\";\n}\nclass AuthRetryableFetchError extends CustomAuthError {\n  constructor(message, status) {\n    super(message, \"AuthRetryableFetchError\", status, void 0);\n  }\n}\nfunction isAuthRetryableFetchError(error) {\n  return isAuthError(error) && error.name === \"AuthRetryableFetchError\";\n}\nclass AuthWeakPasswordError extends CustomAuthError {\n  constructor(message, status, reasons) {\n    super(message, \"AuthWeakPasswordError\", status, \"weak_password\");\n    this.reasons = reasons;\n  }\n}\nfunction isAuthWeakPasswordError(error) {\n  return isAuthError(error) && error.name === \"AuthWeakPasswordError\";\n}\nclass AuthInvalidJwtError extends CustomAuthError {\n  constructor(message) {\n    super(message, \"AuthInvalidJwtError\", 400, \"invalid_jwt\");\n  }\n}\nconst TO_BASE64URL = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_\".split(\"\");\nconst IGNORE_BASE64URL = \" \t\\n\\r=\".split(\"\");\nconst FROM_BASE64URL = (() => {\n  const charMap = new Array(128);\n  for (let i = 0; i < charMap.length; i += 1) {\n    charMap[i] = -1;\n  }\n  for (let i = 0; i < IGNORE_BASE64URL.length; i += 1) {\n    charMap[IGNORE_BASE64URL[i].charCodeAt(0)] = -2;\n  }\n  for (let i = 0; i < TO_BASE64URL.length; i += 1) {\n    charMap[TO_BASE64URL[i].charCodeAt(0)] = i;\n  }\n  return charMap;\n})();\nfunction byteToBase64URL(byte, state, emit) {\n  if (byte !== null) {\n    state.queue = state.queue << 8 | byte;\n    state.queuedBits += 8;\n    while (state.queuedBits >= 6) {\n      const pos = state.queue >> state.queuedBits - 6 & 63;\n      emit(TO_BASE64URL[pos]);\n      state.queuedBits -= 6;\n    }\n  } else if (state.queuedBits > 0) {\n    state.queue = state.queue << 6 - state.queuedBits;\n    state.queuedBits = 6;\n    while (state.queuedBits >= 6) {\n      const pos = state.queue >> state.queuedBits - 6 & 63;\n      emit(TO_BASE64URL[pos]);\n      state.queuedBits -= 6;\n    }\n  }\n}\nfunction byteFromBase64URL(charCode, state, emit) {\n  const bits = FROM_BASE64URL[charCode];\n  if (bits > -1) {\n    state.queue = state.queue << 6 | bits;\n    state.queuedBits += 6;\n    while (state.queuedBits >= 8) {\n      emit(state.queue >> state.queuedBits - 8 & 255);\n      state.queuedBits -= 8;\n    }\n  } else if (bits === -2) {\n    return;\n  } else {\n    throw new Error(`Invalid Base64-URL character \"${String.fromCharCode(charCode)}\"`);\n  }\n}\nfunction stringFromBase64URL(str) {\n  const conv = [];\n  const utf8Emit = (codepoint) => {\n    conv.push(String.fromCodePoint(codepoint));\n  };\n  const utf8State = {\n    utf8seq: 0,\n    codepoint: 0\n  };\n  const b64State = {queue: 0, queuedBits: 0};\n  const byteEmit = (byte) => {\n    stringFromUTF8(byte, utf8State, utf8Emit);\n  };\n  for (let i = 0; i < str.length; i += 1) {\n    byteFromBase64URL(str.charCodeAt(i), b64State, byteEmit);\n  }\n  return conv.join(\"\");\n}\nfunction codepointToUTF8(codepoint, emit) {\n  if (codepoint <= 127) {\n    emit(codepoint);\n    return;\n  } else if (codepoint <= 2047) {\n    emit(192 | codepoint >> 6);\n    emit(128 | codepoint & 63);\n    return;\n  } else if (codepoint <= 65535) {\n    emit(224 | codepoint >> 12);\n    emit(128 | codepoint >> 6 & 63);\n    emit(128 | codepoint & 63);\n    return;\n  } else if (codepoint <= 1114111) {\n    emit(240 | codepoint >> 18);\n    emit(128 | codepoint >> 12 & 63);\n    emit(128 | codepoint >> 6 & 63);\n    emit(128 | codepoint & 63);\n    return;\n  }\n  throw new Error(`Unrecognized Unicode codepoint: ${codepoint.toString(16)}`);\n}\nfunction stringToUTF8(str, emit) {\n  for (let i = 0; i < str.length; i += 1) {\n    let codepoint = str.charCodeAt(i);\n    if (codepoint > 55295 && codepoint <= 56319) {\n      const highSurrogate = (codepoint - 55296) * 1024 & 65535;\n      const lowSurrogate = str.charCodeAt(i + 1) - 56320 & 65535;\n      codepoint = (lowSurrogate | highSurrogate) + 65536;\n      i += 1;\n    }\n    codepointToUTF8(codepoint, emit);\n  }\n}\nfunction stringFromUTF8(byte, state, emit) {\n  if (state.utf8seq === 0) {\n    if (byte <= 127) {\n      emit(byte);\n      return;\n    }\n    for (let leadingBit = 1; leadingBit < 6; leadingBit += 1) {\n      if ((byte >> 7 - leadingBit & 1) === 0) {\n        state.utf8seq = leadingBit;\n        break;\n      }\n    }\n    if (state.utf8seq === 2) {\n      state.codepoint = byte & 31;\n    } else if (state.utf8seq === 3) {\n      state.codepoint = byte & 15;\n    } else if (state.utf8seq === 4) {\n      state.codepoint = byte & 7;\n    } else {\n      throw new Error(\"Invalid UTF-8 sequence\");\n    }\n    state.utf8seq -= 1;\n  } else if (state.utf8seq > 0) {\n    if (byte <= 127) {\n      throw new Error(\"Invalid UTF-8 sequence\");\n    }\n    state.codepoint = state.codepoint << 6 | byte & 63;\n    state.utf8seq -= 1;\n    if (state.utf8seq === 0) {\n      emit(state.codepoint);\n    }\n  }\n}\nfunction base64UrlToUint8Array(str) {\n  const result = [];\n  const state = {queue: 0, queuedBits: 0};\n  const onByte = (byte) => {\n    result.push(byte);\n  };\n  for (let i = 0; i < str.length; i += 1) {\n    byteFromBase64URL(str.charCodeAt(i), state, onByte);\n  }\n  return new Uint8Array(result);\n}\nfunction stringToUint8Array(str) {\n  const result = [];\n  stringToUTF8(str, (byte) => result.push(byte));\n  return new Uint8Array(result);\n}\nfunction bytesToBase64URL(bytes) {\n  const result = [];\n  const state = {queue: 0, queuedBits: 0};\n  const onChar = (char) => {\n    result.push(char);\n  };\n  bytes.forEach((byte) => byteToBase64URL(byte, state, onChar));\n  byteToBase64URL(null, state, onChar);\n  return result.join(\"\");\n}\nfunction expiresAt(expiresIn) {\n  const timeNow = Math.round(Date.now() / 1e3);\n  return timeNow + expiresIn;\n}\nfunction generateCallbackId() {\n  return Symbol(\"auth-callback\");\n}\nconst isBrowser = () => typeof window !== \"undefined\" && typeof document !== \"undefined\";\nconst localStorageWriteTests = {\n  tested: false,\n  writable: false\n};\nconst supportsLocalStorage = () => {\n  if (!isBrowser()) {\n    return false;\n  }\n  try {\n    if (typeof globalThis.localStorage !== \"object\") {\n      return false;\n    }\n  } catch (e) {\n    return false;\n  }\n  if (localStorageWriteTests.tested) {\n    return localStorageWriteTests.writable;\n  }\n  const randomKey = `lswt-${Math.random()}${Math.random()}`;\n  try {\n    globalThis.localStorage.setItem(randomKey, randomKey);\n    globalThis.localStorage.removeItem(randomKey);\n    localStorageWriteTests.tested = true;\n    localStorageWriteTests.writable = true;\n  } catch (e) {\n    localStorageWriteTests.tested = true;\n    localStorageWriteTests.writable = false;\n  }\n  return localStorageWriteTests.writable;\n};\nfunction parseParametersFromURL(href) {\n  const result = {};\n  const url = new URL(href);\n  if (url.hash && url.hash[0] === \"#\") {\n    try {\n      const hashSearchParams = new URLSearchParams(url.hash.substring(1));\n      hashSearchParams.forEach((value, key) => {\n        result[key] = value;\n      });\n    } catch (e) {\n    }\n  }\n  url.searchParams.forEach((value, key) => {\n    result[key] = value;\n  });\n  return result;\n}\nconst resolveFetch = (customFetch) => {\n  if (customFetch) {\n    return (...args) => customFetch(...args);\n  }\n  return (...args) => fetch(...args);\n};\nconst looksLikeFetchResponse = (maybeResponse) => {\n  return typeof maybeResponse === \"object\" && maybeResponse !== null && \"status\" in maybeResponse && \"ok\" in maybeResponse && \"json\" in maybeResponse && typeof maybeResponse.json === \"function\";\n};\nconst setItemAsync = async (storage, key, data) => {\n  await storage.setItem(key, JSON.stringify(data));\n};\nconst getItemAsync = async (storage, key) => {\n  const value = await storage.getItem(key);\n  if (!value) {\n    return null;\n  }\n  try {\n    return JSON.parse(value);\n  } catch (_a) {\n    return value;\n  }\n};\nconst removeItemAsync = async (storage, key) => {\n  await storage.removeItem(key);\n};\nclass Deferred {\n  constructor() {\n    this.promise = new Deferred.promiseConstructor((res, rej) => {\n      this.resolve = res;\n      this.reject = rej;\n    });\n  }\n}\nDeferred.promiseConstructor = Promise;\nfunction decodeJWT(token) {\n  const parts = token.split(\".\");\n  if (parts.length !== 3) {\n    throw new AuthInvalidJwtError(\"Invalid JWT structure\");\n  }\n  for (let i = 0; i < parts.length; i++) {\n    if (!BASE64URL_REGEX.test(parts[i])) {\n      throw new AuthInvalidJwtError(\"JWT not in base64url format\");\n    }\n  }\n  const data = {\n    header: JSON.parse(stringFromBase64URL(parts[0])),\n    payload: JSON.parse(stringFromBase64URL(parts[1])),\n    signature: base64UrlToUint8Array(parts[2]),\n    raw: {\n      header: parts[0],\n      payload: parts[1]\n    }\n  };\n  return data;\n}\nasync function sleep(time) {\n  return await new Promise((accept) => {\n    setTimeout(() => accept(null), time);\n  });\n}\nfunction retryable(fn, isRetryable) {\n  const promise = new Promise((accept, reject) => {\n    (async () => {\n      for (let attempt = 0; attempt < Infinity; attempt++) {\n        try {\n          const result = await fn(attempt);\n          if (!isRetryable(attempt, null, result)) {\n            accept(result);\n            return;\n          }\n        } catch (e) {\n          if (!isRetryable(attempt, e)) {\n            reject(e);\n            return;\n          }\n        }\n      }\n    })();\n  });\n  return promise;\n}\nfunction dec2hex(dec) {\n  return (\"0\" + dec.toString(16)).substr(-2);\n}\nfunction generatePKCEVerifier() {\n  const verifierLength = 56;\n  const array = new Uint32Array(verifierLength);\n  if (typeof crypto === \"undefined\") {\n    const charSet = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~\";\n    const charSetLen = charSet.length;\n    let verifier = \"\";\n    for (let i = 0; i < verifierLength; i++) {\n      verifier += charSet.charAt(Math.floor(Math.random() * charSetLen));\n    }\n    return verifier;\n  }\n  crypto.getRandomValues(array);\n  return Array.from(array, dec2hex).join(\"\");\n}\nasync function sha256(randomString) {\n  const encoder = new TextEncoder();\n  const encodedData = encoder.encode(randomString);\n  const hash = await crypto.subtle.digest(\"SHA-256\", encodedData);\n  const bytes = new Uint8Array(hash);\n  return Array.from(bytes).map((c) => String.fromCharCode(c)).join(\"\");\n}\nasync function generatePKCEChallenge(verifier) {\n  const hasCryptoSupport = typeof crypto !== \"undefined\" && typeof crypto.subtle !== \"undefined\" && typeof TextEncoder !== \"undefined\";\n  if (!hasCryptoSupport) {\n    console.warn(\"WebCrypto API is not supported. Code challenge method will default to use plain instead of sha256.\");\n    return verifier;\n  }\n  const hashed = await sha256(verifier);\n  return btoa(hashed).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=+$/, \"\");\n}\nasync function getCodeChallengeAndMethod(storage, storageKey, isPasswordRecovery = false) {\n  const codeVerifier = generatePKCEVerifier();\n  let storedCodeVerifier = codeVerifier;\n  if (isPasswordRecovery) {\n    storedCodeVerifier += \"/PASSWORD_RECOVERY\";\n  }\n  await setItemAsync(storage, `${storageKey}-code-verifier`, storedCodeVerifier);\n  const codeChallenge = await generatePKCEChallenge(codeVerifier);\n  const codeChallengeMethod = codeVerifier === codeChallenge ? \"plain\" : \"s256\";\n  return [codeChallenge, codeChallengeMethod];\n}\nconst API_VERSION_REGEX = /^2[0-9]{3}-(0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-9]|3[0-1])$/i;\nfunction parseResponseAPIVersion(response) {\n  const apiVersion = response.headers.get(API_VERSION_HEADER_NAME);\n  if (!apiVersion) {\n    return null;\n  }\n  if (!apiVersion.match(API_VERSION_REGEX)) {\n    return null;\n  }\n  try {\n    const date = new Date(`${apiVersion}T00:00:00.0Z`);\n    return date;\n  } catch (e) {\n    return null;\n  }\n}\nfunction validateExp(exp) {\n  if (!exp) {\n    throw new Error(\"Missing exp claim\");\n  }\n  const timeNow = Math.floor(Date.now() / 1e3);\n  if (exp <= timeNow) {\n    throw new Error(\"JWT has expired\");\n  }\n}\nfunction getAlgorithm(alg) {\n  switch (alg) {\n    case \"RS256\":\n      return {\n        name: \"RSASSA-PKCS1-v1_5\",\n        hash: {name: \"SHA-256\"}\n      };\n    case \"ES256\":\n      return {\n        name: \"ECDSA\",\n        namedCurve: \"P-256\",\n        hash: {name: \"SHA-256\"}\n      };\n    default:\n      throw new Error(\"Invalid alg claim\");\n  }\n}\nconst UUID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;\nfunction validateUUID(str) {\n  if (!UUID_REGEX.test(str)) {\n    throw new Error(\"@supabase/auth-js: Expected parameter to be UUID but is not\");\n  }\n}\nfunction userNotAvailableProxy() {\n  const proxyTarget = {};\n  return new Proxy(proxyTarget, {\n    get: (target, prop) => {\n      if (prop === \"__isUserNotAvailableProxy\") {\n        return true;\n      }\n      if (typeof prop === \"symbol\") {\n        const sProp = prop.toString();\n        if (sProp === \"Symbol(Symbol.toPrimitive)\" || sProp === \"Symbol(Symbol.toStringTag)\" || sProp === \"Symbol(util.inspect.custom)\") {\n          return void 0;\n        }\n      }\n      throw new Error(`@supabase/auth-js: client was created with userStorage option and there was no user stored in the user storage. Accessing the \"${prop}\" property of the session object is not supported. Please use getUser() instead.`);\n    },\n    set: (_target, prop) => {\n      throw new Error(`@supabase/auth-js: client was created with userStorage option and there was no user stored in the user storage. Setting the \"${prop}\" property of the session object is not supported. Please use getUser() to fetch a user object you can manipulate.`);\n    },\n    deleteProperty: (_target, prop) => {\n      throw new Error(`@supabase/auth-js: client was created with userStorage option and there was no user stored in the user storage. Deleting the \"${prop}\" property of the session object is not supported. Please use getUser() to fetch a user object you can manipulate.`);\n    }\n  });\n}\nfunction insecureUserWarningProxy(user, suppressWarningRef) {\n  return new Proxy(user, {\n    get: (target, prop, receiver) => {\n      if (prop === \"__isInsecureUserWarningProxy\") {\n        return true;\n      }\n      if (typeof prop === \"symbol\") {\n        const sProp = prop.toString();\n        if (sProp === \"Symbol(Symbol.toPrimitive)\" || sProp === \"Symbol(Symbol.toStringTag)\" || sProp === \"Symbol(util.inspect.custom)\" || sProp === \"Symbol(nodejs.util.inspect.custom)\") {\n          return Reflect.get(target, prop, receiver);\n        }\n      }\n      if (!suppressWarningRef.value && typeof prop === \"string\") {\n        console.warn(\"Using the user object as returned from supabase.auth.getSession() or from some supabase.auth.onAuthStateChange() events could be insecure! This value comes directly from the storage medium (usually cookies on the server) and may not be authentic. Use supabase.auth.getUser() instead which authenticates the data by contacting the Supabase Auth server.\");\n        suppressWarningRef.value = true;\n      }\n      return Reflect.get(target, prop, receiver);\n    }\n  });\n}\nfunction deepClone(obj) {\n  return JSON.parse(JSON.stringify(obj));\n}\nconst _getErrorMessage = (err) => err.msg || err.message || err.error_description || err.error || JSON.stringify(err);\nconst NETWORK_ERROR_CODES = [502, 503, 504];\nasync function handleError(error) {\n  var _a;\n  if (!looksLikeFetchResponse(error)) {\n    throw new AuthRetryableFetchError(_getErrorMessage(error), 0);\n  }\n  if (NETWORK_ERROR_CODES.includes(error.status)) {\n    throw new AuthRetryableFetchError(_getErrorMessage(error), error.status);\n  }\n  let data;\n  try {\n    data = await error.json();\n  } catch (e) {\n    throw new AuthUnknownError(_getErrorMessage(e), e);\n  }\n  let errorCode = void 0;\n  const responseAPIVersion = parseResponseAPIVersion(error);\n  if (responseAPIVersion && responseAPIVersion.getTime() >= API_VERSIONS[\"2024-01-01\"].timestamp && typeof data === \"object\" && data && typeof data.code === \"string\") {\n    errorCode = data.code;\n  } else if (typeof data === \"object\" && data && typeof data.error_code === \"string\") {\n    errorCode = data.error_code;\n  }\n  if (!errorCode) {\n    if (typeof data === \"object\" && data && typeof data.weak_password === \"object\" && data.weak_password && Array.isArray(data.weak_password.reasons) && data.weak_password.reasons.length && data.weak_password.reasons.reduce((a, i) => a && typeof i === \"string\", true)) {\n      throw new AuthWeakPasswordError(_getErrorMessage(data), error.status, data.weak_password.reasons);\n    }\n  } else if (errorCode === \"weak_password\") {\n    throw new AuthWeakPasswordError(_getErrorMessage(data), error.status, ((_a = data.weak_password) === null || _a === void 0 ? void 0 : _a.reasons) || []);\n  } else if (errorCode === \"session_not_found\") {\n    throw new AuthSessionMissingError();\n  }\n  throw new AuthApiError(_getErrorMessage(data), error.status || 500, errorCode);\n}\nconst _getRequestParams = (method, options, parameters, body) => {\n  const params = {method, headers: (options === null || options === void 0 ? void 0 : options.headers) || {}};\n  if (method === \"GET\") {\n    return params;\n  }\n  params.headers = Object.assign({\"Content-Type\": \"application/json;charset=UTF-8\"}, options === null || options === void 0 ? void 0 : options.headers);\n  params.body = JSON.stringify(body);\n  return Object.assign(Object.assign({}, params), parameters);\n};\nasync function _request(fetcher, method, url, options) {\n  var _a;\n  const headers = Object.assign({}, options === null || options === void 0 ? void 0 : options.headers);\n  if (!headers[API_VERSION_HEADER_NAME]) {\n    headers[API_VERSION_HEADER_NAME] = API_VERSIONS[\"2024-01-01\"].name;\n  }\n  if (options === null || options === void 0 ? void 0 : options.jwt) {\n    headers[\"Authorization\"] = `Bearer ${options.jwt}`;\n  }\n  const qs = (_a = options === null || options === void 0 ? void 0 : options.query) !== null && _a !== void 0 ? _a : {};\n  if (options === null || options === void 0 ? void 0 : options.redirectTo) {\n    qs[\"redirect_to\"] = options.redirectTo;\n  }\n  const queryString = Object.keys(qs).length ? \"?\" + new URLSearchParams(qs).toString() : \"\";\n  const data = await _handleRequest(fetcher, method, url + queryString, {\n    headers,\n    noResolveJson: options === null || options === void 0 ? void 0 : options.noResolveJson\n  }, {}, options === null || options === void 0 ? void 0 : options.body);\n  return (options === null || options === void 0 ? void 0 : options.xform) ? options === null || options === void 0 ? void 0 : options.xform(data) : {data: Object.assign({}, data), error: null};\n}\nasync function _handleRequest(fetcher, method, url, options, parameters, body) {\n  const requestParams = _getRequestParams(method, options, parameters, body);\n  let result;\n  try {\n    result = await fetcher(url, Object.assign({}, requestParams));\n  } catch (e) {\n    console.error(e);\n    throw new AuthRetryableFetchError(_getErrorMessage(e), 0);\n  }\n  if (!result.ok) {\n    await handleError(result);\n  }\n  if (options === null || options === void 0 ? void 0 : options.noResolveJson) {\n    return result;\n  }\n  try {\n    return await result.json();\n  } catch (e) {\n    await handleError(e);\n  }\n}\nfunction _sessionResponse(data) {\n  var _a;\n  let session = null;\n  if (hasSession(data)) {\n    session = Object.assign({}, data);\n    if (!data.expires_at) {\n      session.expires_at = expiresAt(data.expires_in);\n    }\n  }\n  const user = (_a = data.user) !== null && _a !== void 0 ? _a : data;\n  return {data: {session, user}, error: null};\n}\nfunction _sessionResponsePassword(data) {\n  const response = _sessionResponse(data);\n  if (!response.error && data.weak_password && typeof data.weak_password === \"object\" && Array.isArray(data.weak_password.reasons) && data.weak_password.reasons.length && data.weak_password.message && typeof data.weak_password.message === \"string\" && data.weak_password.reasons.reduce((a, i) => a && typeof i === \"string\", true)) {\n    response.data.weak_password = data.weak_password;\n  }\n  return response;\n}\nfunction _userResponse(data) {\n  var _a;\n  const user = (_a = data.user) !== null && _a !== void 0 ? _a : data;\n  return {data: {user}, error: null};\n}\nfunction _ssoResponse(data) {\n  return {data, error: null};\n}\nfunction _generateLinkResponse(data) {\n  const {action_link, email_otp, hashed_token, redirect_to, verification_type} = data, rest = __rest(data, [\"action_link\", \"email_otp\", \"hashed_token\", \"redirect_to\", \"verification_type\"]);\n  const properties = {\n    action_link,\n    email_otp,\n    hashed_token,\n    redirect_to,\n    verification_type\n  };\n  const user = Object.assign({}, rest);\n  return {\n    data: {\n      properties,\n      user\n    },\n    error: null\n  };\n}\nfunction _noResolveJsonResponse(data) {\n  return data;\n}\nfunction hasSession(data) {\n  return data.access_token && data.refresh_token && data.expires_in;\n}\nconst SIGN_OUT_SCOPES = [\"global\", \"local\", \"others\"];\nclass GoTrueAdminApi {\n  constructor({url = \"\", headers = {}, fetch: fetch2}) {\n    this.url = url;\n    this.headers = headers;\n    this.fetch = resolveFetch(fetch2);\n    this.mfa = {\n      listFactors: this._listFactors.bind(this),\n      deleteFactor: this._deleteFactor.bind(this)\n    };\n    this.oauth = {\n      listClients: this._listOAuthClients.bind(this),\n      createClient: this._createOAuthClient.bind(this),\n      getClient: this._getOAuthClient.bind(this),\n      updateClient: this._updateOAuthClient.bind(this),\n      deleteClient: this._deleteOAuthClient.bind(this),\n      regenerateClientSecret: this._regenerateOAuthClientSecret.bind(this)\n    };\n  }\n  async signOut(jwt, scope = SIGN_OUT_SCOPES[0]) {\n    if (SIGN_OUT_SCOPES.indexOf(scope) < 0) {\n      throw new Error(`@supabase/auth-js: Parameter scope must be one of ${SIGN_OUT_SCOPES.join(\", \")}`);\n    }\n    try {\n      await _request(this.fetch, \"POST\", `${this.url}/logout?scope=${scope}`, {\n        headers: this.headers,\n        jwt,\n        noResolveJson: true\n      });\n      return {data: null, error: null};\n    } catch (error) {\n      if (isAuthError(error)) {\n        return {data: null, error};\n      }\n      throw error;\n    }\n  }\n  async inviteUserByEmail(email, options = {}) {\n    try {\n      return await _request(this.fetch, \"POST\", `${this.url}/invite`, {\n        body: {email, data: options.data},\n        headers: this.headers,\n        redirectTo: options.redirectTo,\n        xform: _userResponse\n      });\n    } catch (error) {\n      if (isAuthError(error)) {\n        return {data: {user: null}, error};\n      }\n      throw error;\n    }\n  }\n  async generateLink(params) {\n    try {\n      const {options} = params, rest = __rest(params, [\"options\"]);\n      const body = Object.assign(Object.assign({}, rest), options);\n      if (\"newEmail\" in rest) {\n        body.new_email = rest === null || rest === void 0 ? void 0 : rest.newEmail;\n        delete body[\"newEmail\"];\n      }\n      return await _request(this.fetch, \"POST\", `${this.url}/admin/generate_link`, {\n        body,\n        headers: this.headers,\n        xform: _generateLinkResponse,\n        redirectTo: options === null || options === void 0 ? void 0 : options.redirectTo\n      });\n    } catch (error) {\n      if (isAuthError(error)) {\n        return {\n          data: {\n            properties: null,\n            user: null\n          },\n          error\n        };\n      }\n      throw error;\n    }\n  }\n  async createUser(attributes) {\n    try {\n      return await _request(this.fetch, \"POST\", `${this.url}/admin/users`, {\n        body: attributes,\n        headers: this.headers,\n        xform: _userResponse\n      });\n    } catch (error) {\n      if (isAuthError(error)) {\n        return {data: {user: null}, error};\n      }\n      throw error;\n    }\n  }\n  async listUsers(params) {\n    var _a, _b, _c, _d, _e, _f, _g;\n    try {\n      const pagination = {nextPage: null, lastPage: 0, total: 0};\n      const response = await _request(this.fetch, \"GET\", `${this.url}/admin/users`, {\n        headers: this.headers,\n        noResolveJson: true,\n        query: {\n          page: (_b = (_a = params === null || params === void 0 ? void 0 : params.page) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : \"\",\n          per_page: (_d = (_c = params === null || params === void 0 ? void 0 : params.perPage) === null || _c === void 0 ? void 0 : _c.toString()) !== null && _d !== void 0 ? _d : \"\"\n        },\n        xform: _noResolveJsonResponse\n      });\n      if (response.error)\n        throw response.error;\n      const users = await response.json();\n      const total = (_e = response.headers.get(\"x-total-count\")) !== null && _e !== void 0 ? _e : 0;\n      const links = (_g = (_f = response.headers.get(\"link\")) === null || _f === void 0 ? void 0 : _f.split(\",\")) !== null && _g !== void 0 ? _g : [];\n      if (links.length > 0) {\n        links.forEach((link) => {\n          const page = parseInt(link.split(\";\")[0].split(\"=\")[1].substring(0, 1));\n          const rel = JSON.parse(link.split(\";\")[1].split(\"=\")[1]);\n          pagination[`${rel}Page`] = page;\n        });\n        pagination.total = parseInt(total);\n      }\n      return {data: Object.assign(Object.assign({}, users), pagination), error: null};\n    } catch (error) {\n      if (isAuthError(error)) {\n        return {data: {users: []}, error};\n      }\n      throw error;\n    }\n  }\n  async getUserById(uid) {\n    validateUUID(uid);\n    try {\n      return await _request(this.fetch, \"GET\", `${this.url}/admin/users/${uid}`, {\n        headers: this.headers,\n        xform: _userResponse\n      });\n    } catch (error) {\n      if (isAuthError(error)) {\n        return {data: {user: null}, error};\n      }\n      throw error;\n    }\n  }\n  async updateUserById(uid, attributes) {\n    validateUUID(uid);\n    try {\n      return await _request(this.fetch, \"PUT\", `${this.url}/admin/users/${uid}`, {\n        body: attributes,\n        headers: this.headers,\n        xform: _userResponse\n      });\n    } catch (error) {\n      if (isAuthError(error)) {\n        return {data: {user: null}, error};\n      }\n      throw error;\n    }\n  }\n  async deleteUser(id, shouldSoftDelete = false) {\n    validateUUID(id);\n    try {\n      return await _request(this.fetch, \"DELETE\", `${this.url}/admin/users/${id}`, {\n        headers: this.headers,\n        body: {\n          should_soft_delete: shouldSoftDelete\n        },\n        xform: _userResponse\n      });\n    } catch (error) {\n      if (isAuthError(error)) {\n        return {data: {user: null}, error};\n      }\n      throw error;\n    }\n  }\n  async _listFactors(params) {\n    validateUUID(params.userId);\n    try {\n      const {data, error} = await _request(this.fetch, \"GET\", `${this.url}/admin/users/${params.userId}/factors`, {\n        headers: this.headers,\n        xform: (factors) => {\n          return {data: {factors}, error: null};\n        }\n      });\n      return {data, error};\n    } catch (error) {\n      if (isAuthError(error)) {\n        return {data: null, error};\n      }\n      throw error;\n    }\n  }\n  async _deleteFactor(params) {\n    validateUUID(params.userId);\n    validateUUID(params.id);\n    try {\n      const data = await _request(this.fetch, \"DELETE\", `${this.url}/admin/users/${params.userId}/factors/${params.id}`, {\n        headers: this.headers\n      });\n      return {data, error: null};\n    } catch (error) {\n      if (isAuthError(error)) {\n        return {data: null, error};\n      }\n      throw error;\n    }\n  }\n  async _listOAuthClients(params) {\n    var _a, _b, _c, _d, _e, _f, _g;\n    try {\n      const pagination = {nextPage: null, lastPage: 0, total: 0};\n      const response = await _request(this.fetch, \"GET\", `${this.url}/admin/oauth/clients`, {\n        headers: this.headers,\n        noResolveJson: true,\n        query: {\n          page: (_b = (_a = params === null || params === void 0 ? void 0 : params.page) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : \"\",\n          per_page: (_d = (_c = params === null || params === void 0 ? void 0 : params.perPage) === null || _c === void 0 ? void 0 : _c.toString()) !== null && _d !== void 0 ? _d : \"\"\n        },\n        xform: _noResolveJsonResponse\n      });\n      if (response.error)\n        throw response.error;\n      const clients = await response.json();\n      const total = (_e = response.headers.get(\"x-total-count\")) !== null && _e !== void 0 ? _e : 0;\n      const links = (_g = (_f = response.headers.get(\"link\")) === null || _f === void 0 ? void 0 : _f.split(\",\")) !== null && _g !== void 0 ? _g : [];\n      if (links.length > 0) {\n        links.forEach((link) => {\n          const page = parseInt(link.split(\";\")[0].split(\"=\")[1].substring(0, 1));\n          const rel = JSON.parse(link.split(\";\")[1].split(\"=\")[1]);\n          pagination[`${rel}Page`] = page;\n        });\n        pagination.total = parseInt(total);\n      }\n      return {data: Object.assign(Object.assign({}, clients), pagination), error: null};\n    } catch (error) {\n      if (isAuthError(error)) {\n        return {data: {clients: []}, error};\n      }\n      throw error;\n    }\n  }\n  async _createOAuthClient(params) {\n    try {\n      return await _request(this.fetch, \"POST\", `${this.url}/admin/oauth/clients`, {\n        body: params,\n        headers: this.headers,\n        xform: (client) => {\n          return {data: client, error: null};\n        }\n      });\n    } catch (error) {\n      if (isAuthError(error)) {\n        return {data: null, error};\n      }\n      throw error;\n    }\n  }\n  async _getOAuthClient(clientId) {\n    try {\n      return await _request(this.fetch, \"GET\", `${this.url}/admin/oauth/clients/${clientId}`, {\n        headers: this.headers,\n        xform: (client) => {\n          return {data: client, error: null};\n        }\n      });\n    } catch (error) {\n      if (isAuthError(error)) {\n        return {data: null, error};\n      }\n      throw error;\n    }\n  }\n  async _updateOAuthClient(clientId, params) {\n    try {\n      return await _request(this.fetch, \"PUT\", `${this.url}/admin/oauth/clients/${clientId}`, {\n        body: params,\n        headers: this.headers,\n        xform: (client) => {\n          return {data: client, error: null};\n        }\n      });\n    } catch (error) {\n      if (isAuthError(error)) {\n        return {data: null, error};\n      }\n      throw error;\n    }\n  }\n  async _deleteOAuthClient(clientId) {\n    try {\n      await _request(this.fetch, \"DELETE\", `${this.url}/admin/oauth/clients/${clientId}`, {\n        headers: this.headers,\n        noResolveJson: true\n      });\n      return {data: null, error: null};\n    } catch (error) {\n      if (isAuthError(error)) {\n        return {data: null, error};\n      }\n      throw error;\n    }\n  }\n  async _regenerateOAuthClientSecret(clientId) {\n    try {\n      return await _request(this.fetch, \"POST\", `${this.url}/admin/oauth/clients/${clientId}/regenerate_secret`, {\n        headers: this.headers,\n        xform: (client) => {\n          return {data: client, error: null};\n        }\n      });\n    } catch (error) {\n      if (isAuthError(error)) {\n        return {data: null, error};\n      }\n      throw error;\n    }\n  }\n}\nfunction memoryLocalStorageAdapter(store = {}) {\n  return {\n    getItem: (key) => {\n      return store[key] || null;\n    },\n    setItem: (key, value) => {\n      store[key] = value;\n    },\n    removeItem: (key) => {\n      delete store[key];\n    }\n  };\n}\nconst internals = {\n  debug: !!(globalThis && supportsLocalStorage() && globalThis.localStorage && globalThis.localStorage.getItem(\"supabase.gotrue-js.locks.debug\") === \"true\")\n};\nclass LockAcquireTimeoutError extends Error {\n  constructor(message) {\n    super(message);\n    this.isAcquireTimeout = true;\n  }\n}\nclass NavigatorLockAcquireTimeoutError extends LockAcquireTimeoutError {\n}\nclass ProcessLockAcquireTimeoutError extends LockAcquireTimeoutError {\n}\nasync function navigatorLock(name, acquireTimeout, fn) {\n  if (internals.debug) {\n    console.log(\"@supabase/gotrue-js: navigatorLock: acquire lock\", name, acquireTimeout);\n  }\n  const abortController = new globalThis.AbortController();\n  if (acquireTimeout > 0) {\n    setTimeout(() => {\n      abortController.abort();\n      if (internals.debug) {\n        console.log(\"@supabase/gotrue-js: navigatorLock acquire timed out\", name);\n      }\n    }, acquireTimeout);\n  }\n  return await Promise.resolve().then(() => globalThis.navigator.locks.request(name, acquireTimeout === 0 ? {\n    mode: \"exclusive\",\n    ifAvailable: true\n  } : {\n    mode: \"exclusive\",\n    signal: abortController.signal\n  }, async (lock) => {\n    if (lock) {\n      if (internals.debug) {\n        console.log(\"@supabase/gotrue-js: navigatorLock: acquired\", name, lock.name);\n      }\n      try {\n        return await fn();\n      } finally {\n        if (internals.debug) {\n          console.log(\"@supabase/gotrue-js: navigatorLock: released\", name, lock.name);\n        }\n      }\n    } else {\n      if (acquireTimeout === 0) {\n        if (internals.debug) {\n          console.log(\"@supabase/gotrue-js: navigatorLock: not immediately available\", name);\n        }\n        throw new NavigatorLockAcquireTimeoutError(`Acquiring an exclusive Navigator LockManager lock \"${name}\" immediately failed`);\n      } else {\n        if (internals.debug) {\n          try {\n            const result = await globalThis.navigator.locks.query();\n            console.log(\"@supabase/gotrue-js: Navigator LockManager state\", JSON.stringify(result, null, \"  \"));\n          } catch (e) {\n            console.warn(\"@supabase/gotrue-js: Error when querying Navigator LockManager state\", e);\n          }\n        }\n        console.warn(\"@supabase/gotrue-js: Navigator LockManager returned a null lock when using #request without ifAvailable set to true, it appears this browser is not following the LockManager spec https://developer.mozilla.org/en-US/docs/Web/API/LockManager/request\");\n        return await fn();\n      }\n    }\n  }));\n}\nconst PROCESS_LOCKS = {};\nasync function processLock(name, acquireTimeout, fn) {\n  var _a;\n  const previousOperation = (_a = PROCESS_LOCKS[name]) !== null && _a !== void 0 ? _a : Promise.resolve();\n  const currentOperation = Promise.race([\n    previousOperation.catch(() => {\n      return null;\n    }),\n    acquireTimeout >= 0 ? new Promise((_, reject) => {\n      setTimeout(() => {\n        reject(new ProcessLockAcquireTimeoutError(`Acquiring process lock with name \"${name}\" timed out`));\n      }, acquireTimeout);\n    }) : null\n  ].filter((x) => x)).catch((e) => {\n    if (e && e.isAcquireTimeout) {\n      throw e;\n    }\n    return null;\n  }).then(async () => {\n    return await fn();\n  });\n  PROCESS_LOCKS[name] = currentOperation.catch(async (e) => {\n    if (e && e.isAcquireTimeout) {\n      await previousOperation;\n      return null;\n    }\n    throw e;\n  });\n  return await currentOperation;\n}\nfunction polyfillGlobalThis() {\n  if (typeof globalThis === \"object\")\n    return;\n  try {\n    Object.defineProperty(Object.prototype, \"__magic__\", {\n      get: function() {\n        return this;\n      },\n      configurable: true\n    });\n    __magic__.globalThis = __magic__;\n    delete Object.prototype.__magic__;\n  } catch (e) {\n    if (typeof self !== \"undefined\") {\n      self.globalThis = self;\n    }\n  }\n}\nfunction getAddress(address) {\n  if (!/^0x[a-fA-F0-9]{40}$/.test(address)) {\n    throw new Error(`@supabase/auth-js: Address \"${address}\" is invalid.`);\n  }\n  return address.toLowerCase();\n}\nfunction fromHex(hex) {\n  return parseInt(hex, 16);\n}\nfunction toHex(value) {\n  const bytes = new TextEncoder().encode(value);\n  const hex = Array.from(bytes, (byte) => byte.toString(16).padStart(2, \"0\")).join(\"\");\n  return \"0x\" + hex;\n}\nfunction createSiweMessage(parameters) {\n  var _a;\n  const {chainId, domain, expirationTime, issuedAt = new Date(), nonce, notBefore, requestId, resources, scheme, uri, version: version2} = parameters;\n  {\n    if (!Number.isInteger(chainId))\n      throw new Error(`@supabase/auth-js: Invalid SIWE message field \"chainId\". Chain ID must be a EIP-155 chain ID. Provided value: ${chainId}`);\n    if (!domain)\n      throw new Error(`@supabase/auth-js: Invalid SIWE message field \"domain\". Domain must be provided.`);\n    if (nonce && nonce.length < 8)\n      throw new Error(`@supabase/auth-js: Invalid SIWE message field \"nonce\". Nonce must be at least 8 characters. Provided value: ${nonce}`);\n    if (!uri)\n      throw new Error(`@supabase/auth-js: Invalid SIWE message field \"uri\". URI must be provided.`);\n    if (version2 !== \"1\")\n      throw new Error(`@supabase/auth-js: Invalid SIWE message field \"version\". Version must be '1'. Provided value: ${version2}`);\n    if ((_a = parameters.statement) === null || _a === void 0 ? void 0 : _a.includes(\"\\n\"))\n      throw new Error(`@supabase/auth-js: Invalid SIWE message field \"statement\". Statement must not include '\\\\n'. Provided value: ${parameters.statement}`);\n  }\n  const address = getAddress(parameters.address);\n  const origin = scheme ? `${scheme}://${domain}` : domain;\n  const statement = parameters.statement ? `${parameters.statement}\n` : \"\";\n  const prefix = `${origin} wants you to sign in with your Ethereum account:\n${address}\n\n${statement}`;\n  let suffix = `URI: ${uri}\nVersion: ${version2}\nChain ID: ${chainId}${nonce ? `\nNonce: ${nonce}` : \"\"}\nIssued At: ${issuedAt.toISOString()}`;\n  if (expirationTime)\n    suffix += `\nExpiration Time: ${expirationTime.toISOString()}`;\n  if (notBefore)\n    suffix += `\nNot Before: ${notBefore.toISOString()}`;\n  if (requestId)\n    suffix += `\nRequest ID: ${requestId}`;\n  if (resources) {\n    let content = \"\\nResources:\";\n    for (const resource of resources) {\n      if (!resource || typeof resource !== \"string\")\n        throw new Error(`@supabase/auth-js: Invalid SIWE message field \"resources\". Every resource must be a valid string. Provided value: ${resource}`);\n      content += `\n- ${resource}`;\n    }\n    suffix += content;\n  }\n  return `${prefix}\n${suffix}`;\n}\nclass WebAuthnError extends Error {\n  constructor({message, code, cause, name}) {\n    var _a;\n    super(message, {cause});\n    this.__isWebAuthnError = true;\n    this.name = (_a = name !== null && name !== void 0 ? name : cause instanceof Error ? cause.name : void 0) !== null && _a !== void 0 ? _a : \"Unknown Error\";\n    this.code = code;\n  }\n}\nclass WebAuthnUnknownError extends WebAuthnError {\n  constructor(message, originalError) {\n    super({\n      code: \"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY\",\n      cause: originalError,\n      message\n    });\n    this.name = \"WebAuthnUnknownError\";\n    this.originalError = originalError;\n  }\n}\nfunction identifyRegistrationError({error, options}) {\n  var _a, _b, _c;\n  const {publicKey} = options;\n  if (!publicKey) {\n    throw Error(\"options was missing required publicKey property\");\n  }\n  if (error.name === \"AbortError\") {\n    if (options.signal instanceof AbortSignal) {\n      return new WebAuthnError({\n        message: \"Registration ceremony was sent an abort signal\",\n        code: \"ERROR_CEREMONY_ABORTED\",\n        cause: error\n      });\n    }\n  } else if (error.name === \"ConstraintError\") {\n    if (((_a = publicKey.authenticatorSelection) === null || _a === void 0 ? void 0 : _a.requireResidentKey) === true) {\n      return new WebAuthnError({\n        message: \"Discoverable credentials were required but no available authenticator supported it\",\n        code: \"ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT\",\n        cause: error\n      });\n    } else if (options.mediation === \"conditional\" && ((_b = publicKey.authenticatorSelection) === null || _b === void 0 ? void 0 : _b.userVerification) === \"required\") {\n      return new WebAuthnError({\n        message: \"User verification was required during automatic registration but it could not be performed\",\n        code: \"ERROR_AUTO_REGISTER_USER_VERIFICATION_FAILURE\",\n        cause: error\n      });\n    } else if (((_c = publicKey.authenticatorSelection) === null || _c === void 0 ? void 0 : _c.userVerification) === \"required\") {\n      return new WebAuthnError({\n        message: \"User verification was required but no available authenticator supported it\",\n        code: \"ERROR_AUTHENTICATOR_MISSING_USER_VERIFICATION_SUPPORT\",\n        cause: error\n      });\n    }\n  } else if (error.name === \"InvalidStateError\") {\n    return new WebAuthnError({\n      message: \"The authenticator was previously registered\",\n      code: \"ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED\",\n      cause: error\n    });\n  } else if (error.name === \"NotAllowedError\") {\n    return new WebAuthnError({\n      message: error.message,\n      code: \"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY\",\n      cause: error\n    });\n  } else if (error.name === \"NotSupportedError\") {\n    const validPubKeyCredParams = publicKey.pubKeyCredParams.filter((param) => param.type === \"public-key\");\n    if (validPubKeyCredParams.length === 0) {\n      return new WebAuthnError({\n        message: 'No entry in pubKeyCredParams was of type \"public-key\"',\n        code: \"ERROR_MALFORMED_PUBKEYCREDPARAMS\",\n        cause: error\n      });\n    }\n    return new WebAuthnError({\n      message: \"No available authenticator supported any of the specified pubKeyCredParams algorithms\",\n      code: \"ERROR_AUTHENTICATOR_NO_SUPPORTED_PUBKEYCREDPARAMS_ALG\",\n      cause: error\n    });\n  } else if (error.name === \"SecurityError\") {\n    const effectiveDomain = window.location.hostname;\n    if (!isValidDomain(effectiveDomain)) {\n      return new WebAuthnError({\n        message: `${window.location.hostname} is an invalid domain`,\n        code: \"ERROR_INVALID_DOMAIN\",\n        cause: error\n      });\n    } else if (publicKey.rp.id !== effectiveDomain) {\n      return new WebAuthnError({\n        message: `The RP ID \"${publicKey.rp.id}\" is invalid for this domain`,\n        code: \"ERROR_INVALID_RP_ID\",\n        cause: error\n      });\n    }\n  } else if (error.name === \"TypeError\") {\n    if (publicKey.user.id.byteLength < 1 || publicKey.user.id.byteLength > 64) {\n      return new WebAuthnError({\n        message: \"User ID was not between 1 and 64 characters\",\n        code: \"ERROR_INVALID_USER_ID_LENGTH\",\n        cause: error\n      });\n    }\n  } else if (error.name === \"UnknownError\") {\n    return new WebAuthnError({\n      message: \"The authenticator was unable to process the specified options, or could not create a new credential\",\n      code: \"ERROR_AUTHENTICATOR_GENERAL_ERROR\",\n      cause: error\n    });\n  }\n  return new WebAuthnError({\n    message: \"a Non-Webauthn related error has occurred\",\n    code: \"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY\",\n    cause: error\n  });\n}\nfunction identifyAuthenticationError({error, options}) {\n  const {publicKey} = options;\n  if (!publicKey) {\n    throw Error(\"options was missing required publicKey property\");\n  }\n  if (error.name === \"AbortError\") {\n    if (options.signal instanceof AbortSignal) {\n      return new WebAuthnError({\n        message: \"Authentication ceremony was sent an abort signal\",\n        code: \"ERROR_CEREMONY_ABORTED\",\n        cause: error\n      });\n    }\n  } else if (error.name === \"NotAllowedError\") {\n    return new WebAuthnError({\n      message: error.message,\n      code: \"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY\",\n      cause: error\n    });\n  } else if (error.name === \"SecurityError\") {\n    const effectiveDomain = window.location.hostname;\n    if (!isValidDomain(effectiveDomain)) {\n      return new WebAuthnError({\n        message: `${window.location.hostname} is an invalid domain`,\n        code: \"ERROR_INVALID_DOMAIN\",\n        cause: error\n      });\n    } else if (publicKey.rpId !== effectiveDomain) {\n      return new WebAuthnError({\n        message: `The RP ID \"${publicKey.rpId}\" is invalid for this domain`,\n        code: \"ERROR_INVALID_RP_ID\",\n        cause: error\n      });\n    }\n  } else if (error.name === \"UnknownError\") {\n    return new WebAuthnError({\n      message: \"The authenticator was unable to process the specified options, or could not create a new assertion signature\",\n      code: \"ERROR_AUTHENTICATOR_GENERAL_ERROR\",\n      cause: error\n    });\n  }\n  return new WebAuthnError({\n    message: \"a Non-Webauthn related error has occurred\",\n    code: \"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY\",\n    cause: error\n  });\n}\nclass WebAuthnAbortService {\n  createNewAbortSignal() {\n    if (this.controller) {\n      const abortError = new Error(\"Cancelling existing WebAuthn API call for new one\");\n      abortError.name = \"AbortError\";\n      this.controller.abort(abortError);\n    }\n    const newController = new AbortController();\n    this.controller = newController;\n    return newController.signal;\n  }\n  cancelCeremony() {\n    if (this.controller) {\n      const abortError = new Error(\"Manually cancelling existing WebAuthn API call\");\n      abortError.name = \"AbortError\";\n      this.controller.abort(abortError);\n      this.controller = void 0;\n    }\n  }\n}\nconst webAuthnAbortService = new WebAuthnAbortService();\nfunction deserializeCredentialCreationOptions(options) {\n  if (!options) {\n    throw new Error(\"Credential creation options are required\");\n  }\n  if (typeof PublicKeyCredential !== \"undefined\" && \"parseCreationOptionsFromJSON\" in PublicKeyCredential && typeof PublicKeyCredential.parseCreationOptionsFromJSON === \"function\") {\n    return PublicKeyCredential.parseCreationOptionsFromJSON(options);\n  }\n  const {challenge: challengeStr, user: userOpts, excludeCredentials} = options, restOptions = __rest(options, [\"challenge\", \"user\", \"excludeCredentials\"]);\n  const challenge = base64UrlToUint8Array(challengeStr).buffer;\n  const user = Object.assign(Object.assign({}, userOpts), {id: base64UrlToUint8Array(userOpts.id).buffer});\n  const result = Object.assign(Object.assign({}, restOptions), {\n    challenge,\n    user\n  });\n  if (excludeCredentials && excludeCredentials.length > 0) {\n    result.excludeCredentials = new Array(excludeCredentials.length);\n    for (let i = 0; i < excludeCredentials.length; i++) {\n      const cred = excludeCredentials[i];\n      result.excludeCredentials[i] = Object.assign(Object.assign({}, cred), {\n        id: base64UrlToUint8Array(cred.id).buffer,\n        type: cred.type || \"public-key\",\n        transports: cred.transports\n      });\n    }\n  }\n  return result;\n}\nfunction deserializeCredentialRequestOptions(options) {\n  if (!options) {\n    throw new Error(\"Credential request options are required\");\n  }\n  if (typeof PublicKeyCredential !== \"undefined\" && \"parseRequestOptionsFromJSON\" in PublicKeyCredential && typeof PublicKeyCredential.parseRequestOptionsFromJSON === \"function\") {\n    return PublicKeyCredential.parseRequestOptionsFromJSON(options);\n  }\n  const {challenge: challengeStr, allowCredentials} = options, restOptions = __rest(options, [\"challenge\", \"allowCredentials\"]);\n  const challenge = base64UrlToUint8Array(challengeStr).buffer;\n  const result = Object.assign(Object.assign({}, restOptions), {challenge});\n  if (allowCredentials && allowCredentials.length > 0) {\n    result.allowCredentials = new Array(allowCredentials.length);\n    for (let i = 0; i < allowCredentials.length; i++) {\n      const cred = allowCredentials[i];\n      result.allowCredentials[i] = Object.assign(Object.assign({}, cred), {\n        id: base64UrlToUint8Array(cred.id).buffer,\n        type: cred.type || \"public-key\",\n        transports: cred.transports\n      });\n    }\n  }\n  return result;\n}\nfunction serializeCredentialCreationResponse(credential) {\n  var _a;\n  if (\"toJSON\" in credential && typeof credential.toJSON === \"function\") {\n    return credential.toJSON();\n  }\n  const credentialWithAttachment = credential;\n  return {\n    id: credential.id,\n    rawId: credential.id,\n    response: {\n      attestationObject: bytesToBase64URL(new Uint8Array(credential.response.attestationObject)),\n      clientDataJSON: bytesToBase64URL(new Uint8Array(credential.response.clientDataJSON))\n    },\n    type: \"public-key\",\n    clientExtensionResults: credential.getClientExtensionResults(),\n    authenticatorAttachment: (_a = credentialWithAttachment.authenticatorAttachment) !== null && _a !== void 0 ? _a : void 0\n  };\n}\nfunction serializeCredentialRequestResponse(credential) {\n  var _a;\n  if (\"toJSON\" in credential && typeof credential.toJSON === \"function\") {\n    return credential.toJSON();\n  }\n  const credentialWithAttachment = credential;\n  const clientExtensionResults = credential.getClientExtensionResults();\n  const assertionResponse = credential.response;\n  return {\n    id: credential.id,\n    rawId: credential.id,\n    response: {\n      authenticatorData: bytesToBase64URL(new Uint8Array(assertionResponse.authenticatorData)),\n      clientDataJSON: bytesToBase64URL(new Uint8Array(assertionResponse.clientDataJSON)),\n      signature: bytesToBase64URL(new Uint8Array(assertionResponse.signature)),\n      userHandle: assertionResponse.userHandle ? bytesToBase64URL(new Uint8Array(assertionResponse.userHandle)) : void 0\n    },\n    type: \"public-key\",\n    clientExtensionResults,\n    authenticatorAttachment: (_a = credentialWithAttachment.authenticatorAttachment) !== null && _a !== void 0 ? _a : void 0\n  };\n}\nfunction isValidDomain(hostname) {\n  return hostname === \"localhost\" || /^([a-z0-9]+(-[a-z0-9]+)*\\.)+[a-z]{2,}$/i.test(hostname);\n}\nfunction browserSupportsWebAuthn() {\n  var _a, _b;\n  return !!(isBrowser() && \"PublicKeyCredential\" in window && window.PublicKeyCredential && \"credentials\" in navigator && typeof ((_a = navigator === null || navigator === void 0 ? void 0 : navigator.credentials) === null || _a === void 0 ? void 0 : _a.create) === \"function\" && typeof ((_b = navigator === null || navigator === void 0 ? void 0 : navigator.credentials) === null || _b === void 0 ? void 0 : _b.get) === \"function\");\n}\nasync function createCredential(options) {\n  try {\n    const response = await navigator.credentials.create(options);\n    if (!response) {\n      return {\n        data: null,\n        error: new WebAuthnUnknownError(\"Empty credential response\", response)\n      };\n    }\n    if (!(response instanceof PublicKeyCredential)) {\n      return {\n        data: null,\n        error: new WebAuthnUnknownError(\"Browser returned unexpected credential type\", response)\n      };\n    }\n    return {data: response, error: null};\n  } catch (err) {\n    return {\n      data: null,\n      error: identifyRegistrationError({\n        error: err,\n        options\n      })\n    };\n  }\n}\nasync function getCredential(options) {\n  try {\n    const response = await navigator.credentials.get(options);\n    if (!response) {\n      return {\n        data: null,\n        error: new WebAuthnUnknownError(\"Empty credential response\", response)\n      };\n    }\n    if (!(response instanceof PublicKeyCredential)) {\n      return {\n        data: null,\n        error: new WebAuthnUnknownError(\"Browser returned unexpected credential type\", response)\n      };\n    }\n    return {data: response, error: null};\n  } catch (err) {\n    return {\n      data: null,\n      error: identifyAuthenticationError({\n        error: err,\n        options\n      })\n    };\n  }\n}\nconst DEFAULT_CREATION_OPTIONS = {\n  hints: [\"security-key\"],\n  authenticatorSelection: {\n    authenticatorAttachment: \"cross-platform\",\n    requireResidentKey: false,\n    userVerification: \"preferred\",\n    residentKey: \"discouraged\"\n  },\n  attestation: \"direct\"\n};\nconst DEFAULT_REQUEST_OPTIONS = {\n  userVerification: \"preferred\",\n  hints: [\"security-key\"],\n  attestation: \"direct\"\n};\nfunction deepMerge(...sources) {\n  const isObject = (val) => val !== null && typeof val === \"object\" && !Array.isArray(val);\n  const isArrayBufferLike = (val) => val instanceof ArrayBuffer || ArrayBuffer.isView(val);\n  const result = {};\n  for (const source of sources) {\n    if (!source)\n      continue;\n    for (const key in source) {\n      const value = source[key];\n      if (value === void 0)\n        continue;\n      if (Array.isArray(value)) {\n        result[key] = value;\n      } else if (isArrayBufferLike(value)) {\n        result[key] = value;\n      } else if (isObject(value)) {\n        const existing = result[key];\n        if (isObject(existing)) {\n          result[key] = deepMerge(existing, value);\n        } else {\n          result[key] = deepMerge(value);\n        }\n      } else {\n        result[key] = value;\n      }\n    }\n  }\n  return result;\n}\nfunction mergeCredentialCreationOptions(baseOptions, overrides) {\n  return deepMerge(DEFAULT_CREATION_OPTIONS, baseOptions, overrides || {});\n}\nfunction mergeCredentialRequestOptions(baseOptions, overrides) {\n  return deepMerge(DEFAULT_REQUEST_OPTIONS, baseOptions, overrides || {});\n}\nclass WebAuthnApi {\n  constructor(client) {\n    this.client = client;\n    this.enroll = this._enroll.bind(this);\n    this.challenge = this._challenge.bind(this);\n    this.verify = this._verify.bind(this);\n    this.authenticate = this._authenticate.bind(this);\n    this.register = this._register.bind(this);\n  }\n  async _enroll(params) {\n    return this.client.mfa.enroll(Object.assign(Object.assign({}, params), {factorType: \"webauthn\"}));\n  }\n  async _challenge({factorId, webauthn, friendlyName, signal}, overrides) {\n    try {\n      const {data: challengeResponse, error: challengeError} = await this.client.mfa.challenge({\n        factorId,\n        webauthn\n      });\n      if (!challengeResponse) {\n        return {data: null, error: challengeError};\n      }\n      const abortSignal = signal !== null && signal !== void 0 ? signal : webAuthnAbortService.createNewAbortSignal();\n      if (challengeResponse.webauthn.type === \"create\") {\n        const {user} = challengeResponse.webauthn.credential_options.publicKey;\n        if (!user.name) {\n          user.name = `${user.id}:${friendlyName}`;\n        }\n        if (!user.displayName) {\n          user.displayName = user.name;\n        }\n      }\n      switch (challengeResponse.webauthn.type) {\n        case \"create\": {\n          const options = mergeCredentialCreationOptions(challengeResponse.webauthn.credential_options.publicKey, overrides === null || overrides === void 0 ? void 0 : overrides.create);\n          const {data, error} = await createCredential({\n            publicKey: options,\n            signal: abortSignal\n          });\n          if (data) {\n            return {\n              data: {\n                factorId,\n                challengeId: challengeResponse.id,\n                webauthn: {\n                  type: challengeResponse.webauthn.type,\n                  credential_response: data\n                }\n              },\n              error: null\n            };\n          }\n          return {data: null, error};\n        }\n        case \"request\": {\n          const options = mergeCredentialRequestOptions(challengeResponse.webauthn.credential_options.publicKey, overrides === null || overrides === void 0 ? void 0 : overrides.request);\n          const {data, error} = await getCredential(Object.assign(Object.assign({}, challengeResponse.webauthn.credential_options), {publicKey: options, signal: abortSignal}));\n          if (data) {\n            return {\n              data: {\n                factorId,\n                challengeId: challengeResponse.id,\n                webauthn: {\n                  type: challengeResponse.webauthn.type,\n                  credential_response: data\n                }\n              },\n              error: null\n            };\n          }\n          return {data: null, error};\n        }\n      }\n    } catch (error) {\n      if (isAuthError(error)) {\n        return {data: null, error};\n      }\n      return {\n        data: null,\n        error: new AuthUnknownError(\"Unexpected error in challenge\", error)\n      };\n    }\n  }\n  async _verify({challengeId, factorId, webauthn}) {\n    return this.client.mfa.verify({\n      factorId,\n      challengeId,\n      webauthn\n    });\n  }\n  async _authenticate({factorId, webauthn: {rpId = typeof window !== \"undefined\" ? window.location.hostname : void 0, rpOrigins = typeof window !== \"undefined\" ? [window.location.origin] : void 0, signal} = {}}, overrides) {\n    if (!rpId) {\n      return {\n        data: null,\n        error: new AuthError(\"rpId is required for WebAuthn authentication\")\n      };\n    }\n    try {\n      if (!browserSupportsWebAuthn()) {\n        return {\n          data: null,\n          error: new AuthUnknownError(\"Browser does not support WebAuthn\", null)\n        };\n      }\n      const {data: challengeResponse, error: challengeError} = await this.challenge({\n        factorId,\n        webauthn: {rpId, rpOrigins},\n        signal\n      }, {request: overrides});\n      if (!challengeResponse) {\n        return {data: null, error: challengeError};\n      }\n      const {webauthn} = challengeResponse;\n      return this._verify({\n        factorId,\n        challengeId: challengeResponse.challengeId,\n        webauthn: {\n          type: webauthn.type,\n          rpId,\n          rpOrigins,\n          credential_response: webauthn.credential_response\n        }\n      });\n    } catch (error) {\n      if (isAuthError(error)) {\n        return {data: null, error};\n      }\n      return {\n        data: null,\n        error: new AuthUnknownError(\"Unexpected error in authenticate\", error)\n      };\n    }\n  }\n  async _register({friendlyName, webauthn: {rpId = typeof window !== \"undefined\" ? window.location.hostname : void 0, rpOrigins = typeof window !== \"undefined\" ? [window.location.origin] : void 0, signal} = {}}, overrides) {\n    if (!rpId) {\n      return {\n        data: null,\n        error: new AuthError(\"rpId is required for WebAuthn registration\")\n      };\n    }\n    try {\n      if (!browserSupportsWebAuthn()) {\n        return {\n          data: null,\n          error: new AuthUnknownError(\"Browser does not support WebAuthn\", null)\n        };\n      }\n      const {data: factor, error: enrollError} = await this._enroll({\n        friendlyName\n      });\n      if (!factor) {\n        await this.client.mfa.listFactors().then((factors) => {\n          var _a;\n          return (_a = factors.data) === null || _a === void 0 ? void 0 : _a.all.find((v) => v.factor_type === \"webauthn\" && v.friendly_name === friendlyName && v.status !== \"unverified\");\n        }).then((factor2) => factor2 ? this.client.mfa.unenroll({factorId: factor2 === null || factor2 === void 0 ? void 0 : factor2.id}) : void 0);\n        return {data: null, error: enrollError};\n      }\n      const {data: challengeResponse, error: challengeError} = await this._challenge({\n        factorId: factor.id,\n        friendlyName: factor.friendly_name,\n        webauthn: {rpId, rpOrigins},\n        signal\n      }, {\n        create: overrides\n      });\n      if (!challengeResponse) {\n        return {data: null, error: challengeError};\n      }\n      return this._verify({\n        factorId: factor.id,\n        challengeId: challengeResponse.challengeId,\n        webauthn: {\n          rpId,\n          rpOrigins,\n          type: challengeResponse.webauthn.type,\n          credential_response: challengeResponse.webauthn.credential_response\n        }\n      });\n    } catch (error) {\n      if (isAuthError(error)) {\n        return {data: null, error};\n      }\n      return {\n        data: null,\n        error: new AuthUnknownError(\"Unexpected error in register\", error)\n      };\n    }\n  }\n}\npolyfillGlobalThis();\nconst DEFAULT_OPTIONS = {\n  url: GOTRUE_URL,\n  storageKey: STORAGE_KEY,\n  autoRefreshToken: true,\n  persistSession: true,\n  detectSessionInUrl: true,\n  headers: DEFAULT_HEADERS,\n  flowType: \"implicit\",\n  debug: false,\n  hasCustomAuthorizationHeader: false,\n  throwOnError: false\n};\nasync function lockNoOp(name, acquireTimeout, fn) {\n  return await fn();\n}\nconst GLOBAL_JWKS = {};\nclass GoTrueClient {\n  get jwks() {\n    var _a, _b;\n    return (_b = (_a = GLOBAL_JWKS[this.storageKey]) === null || _a === void 0 ? void 0 : _a.jwks) !== null && _b !== void 0 ? _b : {keys: []};\n  }\n  set jwks(value) {\n    GLOBAL_JWKS[this.storageKey] = Object.assign(Object.assign({}, GLOBAL_JWKS[this.storageKey]), {jwks: value});\n  }\n  get jwks_cached_at() {\n    var _a, _b;\n    return (_b = (_a = GLOBAL_JWKS[this.storageKey]) === null || _a === void 0 ? void 0 : _a.cachedAt) !== null && _b !== void 0 ? _b : Number.MIN_SAFE_INTEGER;\n  }\n  set jwks_cached_at(value) {\n    GLOBAL_JWKS[this.storageKey] = Object.assign(Object.assign({}, GLOBAL_JWKS[this.storageKey]), {cachedAt: value});\n  }\n  constructor(options) {\n    var _a, _b, _c;\n    this.userStorage = null;\n    this.memoryStorage = null;\n    this.stateChangeEmitters = new Map();\n    this.autoRefreshTicker = null;\n    this.visibilityChangedCallback = null;\n    this.refreshingDeferred = null;\n    this.initializePromise = null;\n    this.detectSessionInUrl = true;\n    this.hasCustomAuthorizationHeader = false;\n    this.suppressGetSessionWarning = false;\n    this.lockAcquired = false;\n    this.pendingInLock = [];\n    this.broadcastChannel = null;\n    this.logger = console.log;\n    const settings = Object.assign(Object.assign({}, DEFAULT_OPTIONS), options);\n    this.storageKey = settings.storageKey;\n    this.instanceID = (_a = GoTrueClient.nextInstanceID[this.storageKey]) !== null && _a !== void 0 ? _a : 0;\n    GoTrueClient.nextInstanceID[this.storageKey] = this.instanceID + 1;\n    this.logDebugMessages = !!settings.debug;\n    if (typeof settings.debug === \"function\") {\n      this.logger = settings.debug;\n    }\n    if (this.instanceID > 0 && isBrowser()) {\n      const message = `${this._logPrefix()} Multiple GoTrueClient instances detected in the same browser context. It is not an error, but this should be avoided as it may produce undefined behavior when used concurrently under the same storage key.`;\n      console.warn(message);\n      if (this.logDebugMessages) {\n        console.trace(message);\n      }\n    }\n    this.persistSession = settings.persistSession;\n    this.autoRefreshToken = settings.autoRefreshToken;\n    this.admin = new GoTrueAdminApi({\n      url: settings.url,\n      headers: settings.headers,\n      fetch: settings.fetch\n    });\n    this.url = settings.url;\n    this.headers = settings.headers;\n    this.fetch = resolveFetch(settings.fetch);\n    this.lock = settings.lock || lockNoOp;\n    this.detectSessionInUrl = settings.detectSessionInUrl;\n    this.flowType = settings.flowType;\n    this.hasCustomAuthorizationHeader = settings.hasCustomAuthorizationHeader;\n    this.throwOnError = settings.throwOnError;\n    if (settings.lock) {\n      this.lock = settings.lock;\n    } else if (this.persistSession && isBrowser() && ((_b = globalThis === null || globalThis === void 0 ? void 0 : globalThis.navigator) === null || _b === void 0 ? void 0 : _b.locks)) {\n      this.lock = navigatorLock;\n    } else {\n      this.lock = lockNoOp;\n    }\n    if (!this.jwks) {\n      this.jwks = {keys: []};\n      this.jwks_cached_at = Number.MIN_SAFE_INTEGER;\n    }\n    this.mfa = {\n      verify: this._verify.bind(this),\n      enroll: this._enroll.bind(this),\n      unenroll: this._unenroll.bind(this),\n      challenge: this._challenge.bind(this),\n      listFactors: this._listFactors.bind(this),\n      challengeAndVerify: this._challengeAndVerify.bind(this),\n      getAuthenticatorAssuranceLevel: this._getAuthenticatorAssuranceLevel.bind(this),\n      webauthn: new WebAuthnApi(this)\n    };\n    this.oauth = {\n      getAuthorizationDetails: this._getAuthorizationDetails.bind(this),\n      approveAuthorization: this._approveAuthorization.bind(this),\n      denyAuthorization: this._denyAuthorization.bind(this),\n      listGrants: this._listOAuthGrants.bind(this),\n      revokeGrant: this._revokeOAuthGrant.bind(this)\n    };\n    if (this.persistSession) {\n      if (settings.storage) {\n        this.storage = settings.storage;\n      } else {\n        if (supportsLocalStorage()) {\n          this.storage = globalThis.localStorage;\n        } else {\n          this.memoryStorage = {};\n          this.storage = memoryLocalStorageAdapter(this.memoryStorage);\n        }\n      }\n      if (settings.userStorage) {\n        this.userStorage = settings.userStorage;\n      }\n    } else {\n      this.memoryStorage = {};\n      this.storage = memoryLocalStorageAdapter(this.memoryStorage);\n    }\n    if (isBrowser() && globalThis.BroadcastChannel && this.persistSession && this.storageKey) {\n      try {\n        this.broadcastChannel = new globalThis.BroadcastChannel(this.storageKey);\n      } catch (e) {\n        console.error(\"Failed to create a new BroadcastChannel, multi-tab state changes will not be available\", e);\n      }\n      (_c = this.broadcastChannel) === null || _c === void 0 ? void 0 : _c.addEventListener(\"message\", async (event) => {\n        this._debug(\"received broadcast notification from other tab or client\", event);\n        await this._notifyAllSubscribers(event.data.event, event.data.session, false);\n      });\n    }\n    this.initialize();\n  }\n  isThrowOnErrorEnabled() {\n    return this.throwOnError;\n  }\n  _returnResult(result) {\n    if (this.throwOnError && result && result.error) {\n      throw result.error;\n    }\n    return result;\n  }\n  _logPrefix() {\n    return `GoTrueClient@${this.storageKey}:${this.instanceID} (${version}) ${new Date().toISOString()}`;\n  }\n  _debug(...args) {\n    if (this.logDebugMessages) {\n      this.logger(this._logPrefix(), ...args);\n    }\n    return this;\n  }\n  async initialize() {\n    if (this.initializePromise) {\n      return await this.initializePromise;\n    }\n    this.initializePromise = (async () => {\n      return await this._acquireLock(-1, async () => {\n        return await this._initialize();\n      });\n    })();\n    return await this.initializePromise;\n  }\n  async _initialize() {\n    var _a;\n    try {\n      let params = {};\n      let callbackUrlType = \"none\";\n      if (isBrowser()) {\n        params = parseParametersFromURL(window.location.href);\n        if (this._isImplicitGrantCallback(params)) {\n          callbackUrlType = \"implicit\";\n        } else if (await this._isPKCECallback(params)) {\n          callbackUrlType = \"pkce\";\n        }\n      }\n      if (isBrowser() && this.detectSessionInUrl && callbackUrlType !== \"none\") {\n        const {data, error} = await this._getSessionFromURL(params, callbackUrlType);\n        if (error) {\n          this._debug(\"#_initialize()\", \"error detecting session from URL\", error);\n          if (isAuthImplicitGrantRedirectError(error)) {\n            const errorCode = (_a = error.details) === null || _a === void 0 ? void 0 : _a.code;\n            if (errorCode === \"identity_already_exists\" || errorCode === \"identity_not_found\" || errorCode === \"single_identity_not_deletable\") {\n              return {error};\n            }\n          }\n          await this._removeSession();\n          return {error};\n        }\n        const {session, redirectType} = data;\n        this._debug(\"#_initialize()\", \"detected session in URL\", session, \"redirect type\", redirectType);\n        await this._saveSession(session);\n        setTimeout(async () => {\n          if (redirectType === \"recovery\") {\n            await this._notifyAllSubscribers(\"PASSWORD_RECOVERY\", session);\n          } else {\n            await this._notifyAllSubscribers(\"SIGNED_IN\", session);\n          }\n        }, 0);\n        return {error: null};\n      }\n      await this._recoverAndRefresh();\n      return {error: null};\n    } catch (error) {\n      if (isAuthError(error)) {\n        return this._returnResult({error});\n      }\n      return this._returnResult({\n        error: new AuthUnknownError(\"Unexpected error during initialization\", error)\n      });\n    } finally {\n      await this._handleVisibilityChange();\n      this._debug(\"#_initialize()\", \"end\");\n    }\n  }\n  async signInAnonymously(credentials) {\n    var _a, _b, _c;\n    try {\n      const res = await _request(this.fetch, \"POST\", `${this.url}/signup`, {\n        headers: this.headers,\n        body: {\n          data: (_b = (_a = credentials === null || credentials === void 0 ? void 0 : credentials.options) === null || _a === void 0 ? void 0 : _a.data) !== null && _b !== void 0 ? _b : {},\n          gotrue_meta_security: {captcha_token: (_c = credentials === null || credentials === void 0 ? void 0 : credentials.options) === null || _c === void 0 ? void 0 : _c.captchaToken}\n        },\n        xform: _sessionResponse\n      });\n      const {data, error} = res;\n      if (error || !data) {\n        return this._returnResult({data: {user: null, session: null}, error});\n      }\n      const session = data.session;\n      const user = data.user;\n      if (data.session) {\n        await this._saveSession(data.session);\n        await this._notifyAllSubscribers(\"SIGNED_IN\", session);\n      }\n      return this._returnResult({data: {user, session}, error: null});\n    } catch (error) {\n      if (isAuthError(error)) {\n        return this._returnResult({data: {user: null, session: null}, error});\n      }\n      throw error;\n    }\n  }\n  async signUp(credentials) {\n    var _a, _b, _c;\n    try {\n      let res;\n      if (\"email\" in credentials) {\n        const {email, password, options} = credentials;\n        let codeChallenge = null;\n        let codeChallengeMethod = null;\n        if (this.flowType === \"pkce\") {\n          ;\n          [codeChallenge, codeChallengeMethod] = await getCodeChallengeAndMethod(this.storage, this.storageKey);\n        }\n        res = await _request(this.fetch, \"POST\", `${this.url}/signup`, {\n          headers: this.headers,\n          redirectTo: options === null || options === void 0 ? void 0 : options.emailRedirectTo,\n          body: {\n            email,\n            password,\n            data: (_a = options === null || options === void 0 ? void 0 : options.data) !== null && _a !== void 0 ? _a : {},\n            gotrue_meta_security: {captcha_token: options === null || options === void 0 ? void 0 : options.captchaToken},\n            code_challenge: codeChallenge,\n            code_challenge_method: codeChallengeMethod\n          },\n          xform: _sessionResponse\n        });\n      } else if (\"phone\" in credentials) {\n        const {phone, password, options} = credentials;\n        res = await _request(this.fetch, \"POST\", `${this.url}/signup`, {\n          headers: this.headers,\n          body: {\n            phone,\n            password,\n            data: (_b = options === null || options === void 0 ? void 0 : options.data) !== null && _b !== void 0 ? _b : {},\n            channel: (_c = options === null || options === void 0 ? void 0 : options.channel) !== null && _c !== void 0 ? _c : \"sms\",\n            gotrue_meta_security: {captcha_token: options === null || options === void 0 ? void 0 : options.captchaToken}\n          },\n          xform: _sessionResponse\n        });\n      } else {\n        throw new AuthInvalidCredentialsError(\"You must provide either an email or phone number and a password\");\n      }\n      const {data, error} = res;\n      if (error || !data) {\n        await removeItemAsync(this.storage, `${this.storageKey}-code-verifier`);\n        return this._returnResult({data: {user: null, session: null}, error});\n      }\n      const session = data.session;\n      const user = data.user;\n      if (data.session) {\n        await this._saveSession(data.session);\n        await this._notifyAllSubscribers(\"SIGNED_IN\", session);\n      }\n      return this._returnResult({data: {user, session}, error: null});\n    } catch (error) {\n      await removeItemAsync(this.storage, `${this.storageKey}-code-verifier`);\n      if (isAuthError(error)) {\n        return this._returnResult({data: {user: null, session: null}, error});\n      }\n      throw error;\n    }\n  }\n  async signInWithPassword(credentials) {\n    try {\n      let res;\n      if (\"email\" in credentials) {\n        const {email, password, options} = credentials;\n        res = await _request(this.fetch, \"POST\", `${this.url}/token?grant_type=password`, {\n          headers: this.headers,\n          body: {\n            email,\n            password,\n            gotrue_meta_security: {captcha_token: options === null || options === void 0 ? void 0 : options.captchaToken}\n          },\n          xform: _sessionResponsePassword\n        });\n      } else if (\"phone\" in credentials) {\n        const {phone, password, options} = credentials;\n        res = await _request(this.fetch, \"POST\", `${this.url}/token?grant_type=password`, {\n          headers: this.headers,\n          body: {\n            phone,\n            password,\n            gotrue_meta_security: {captcha_token: options === null || options === void 0 ? void 0 : options.captchaToken}\n          },\n          xform: _sessionResponsePassword\n        });\n      } else {\n        throw new AuthInvalidCredentialsError(\"You must provide either an email or phone number and a password\");\n      }\n      const {data, error} = res;\n      if (error) {\n        return this._returnResult({data: {user: null, session: null}, error});\n      } else if (!data || !data.session || !data.user) {\n        const invalidTokenError = new AuthInvalidTokenResponseError();\n        return this._returnResult({data: {user: null, session: null}, error: invalidTokenError});\n      }\n      if (data.session) {\n        await this._saveSession(data.session);\n        await this._notifyAllSubscribers(\"SIGNED_IN\", data.session);\n      }\n      return this._returnResult({\n        data: Object.assign({user: data.user, session: data.session}, data.weak_password ? {weakPassword: data.weak_password} : null),\n        error\n      });\n    } catch (error) {\n      if (isAuthError(error)) {\n        return this._returnResult({data: {user: null, session: null}, error});\n      }\n      throw error;\n    }\n  }\n  async signInWithOAuth(credentials) {\n    var _a, _b, _c, _d;\n    return await this._handleProviderSignIn(credentials.provider, {\n      redirectTo: (_a = credentials.options) === null || _a === void 0 ? void 0 : _a.redirectTo,\n      scopes: (_b = credentials.options) === null || _b === void 0 ? void 0 : _b.scopes,\n      queryParams: (_c = credentials.options) === null || _c === void 0 ? void 0 : _c.queryParams,\n      skipBrowserRedirect: (_d = credentials.options) === null || _d === void 0 ? void 0 : _d.skipBrowserRedirect\n    });\n  }\n  async exchangeCodeForSession(authCode) {\n    await this.initializePromise;\n    return this._acquireLock(-1, async () => {\n      return this._exchangeCodeForSession(authCode);\n    });\n  }\n  async signInWithWeb3(credentials) {\n    const {chain} = credentials;\n    switch (chain) {\n      case \"ethereum\":\n        return await this.signInWithEthereum(credentials);\n      case \"solana\":\n        return await this.signInWithSolana(credentials);\n      default:\n        throw new Error(`@supabase/auth-js: Unsupported chain \"${chain}\"`);\n    }\n  }\n  async signInWithEthereum(credentials) {\n    var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;\n    let message;\n    let signature;\n    if (\"message\" in credentials) {\n      message = credentials.message;\n      signature = credentials.signature;\n    } else {\n      const {chain, wallet, statement, options} = credentials;\n      let resolvedWallet;\n      if (!isBrowser()) {\n        if (typeof wallet !== \"object\" || !(options === null || options === void 0 ? void 0 : options.url)) {\n          throw new Error(\"@supabase/auth-js: Both wallet and url must be specified in non-browser environments.\");\n        }\n        resolvedWallet = wallet;\n      } else if (typeof wallet === \"object\") {\n        resolvedWallet = wallet;\n      } else {\n        const windowAny = window;\n        if (\"ethereum\" in windowAny && typeof windowAny.ethereum === \"object\" && \"request\" in windowAny.ethereum && typeof windowAny.ethereum.request === \"function\") {\n          resolvedWallet = windowAny.ethereum;\n        } else {\n          throw new Error(`@supabase/auth-js: No compatible Ethereum wallet interface on the window object (window.ethereum) detected. Make sure the user already has a wallet installed and connected for this app. Prefer passing the wallet interface object directly to signInWithWeb3({ chain: 'ethereum', wallet: resolvedUserWallet }) instead.`);\n        }\n      }\n      const url = new URL((_a = options === null || options === void 0 ? void 0 : options.url) !== null && _a !== void 0 ? _a : window.location.href);\n      const accounts = await resolvedWallet.request({\n        method: \"eth_requestAccounts\"\n      }).then((accs) => accs).catch(() => {\n        throw new Error(`@supabase/auth-js: Wallet method eth_requestAccounts is missing or invalid`);\n      });\n      if (!accounts || accounts.length === 0) {\n        throw new Error(`@supabase/auth-js: No accounts available. Please ensure the wallet is connected.`);\n      }\n      const address = getAddress(accounts[0]);\n      let chainId = (_b = options === null || options === void 0 ? void 0 : options.signInWithEthereum) === null || _b === void 0 ? void 0 : _b.chainId;\n      if (!chainId) {\n        const chainIdHex = await resolvedWallet.request({\n          method: \"eth_chainId\"\n        });\n        chainId = fromHex(chainIdHex);\n      }\n      const siweMessage = {\n        domain: url.host,\n        address,\n        statement,\n        uri: url.href,\n        version: \"1\",\n        chainId,\n        nonce: (_c = options === null || options === void 0 ? void 0 : options.signInWithEthereum) === null || _c === void 0 ? void 0 : _c.nonce,\n        issuedAt: (_e = (_d = options === null || options === void 0 ? void 0 : options.signInWithEthereum) === null || _d === void 0 ? void 0 : _d.issuedAt) !== null && _e !== void 0 ? _e : new Date(),\n        expirationTime: (_f = options === null || options === void 0 ? void 0 : options.signInWithEthereum) === null || _f === void 0 ? void 0 : _f.expirationTime,\n        notBefore: (_g = options === null || options === void 0 ? void 0 : options.signInWithEthereum) === null || _g === void 0 ? void 0 : _g.notBefore,\n        requestId: (_h = options === null || options === void 0 ? void 0 : options.signInWithEthereum) === null || _h === void 0 ? void 0 : _h.requestId,\n        resources: (_j = options === null || options === void 0 ? void 0 : options.signInWithEthereum) === null || _j === void 0 ? void 0 : _j.resources\n      };\n      message = createSiweMessage(siweMessage);\n      signature = await resolvedWallet.request({\n        method: \"personal_sign\",\n        params: [toHex(message), address]\n      });\n    }\n    try {\n      const {data, error} = await _request(this.fetch, \"POST\", `${this.url}/token?grant_type=web3`, {\n        headers: this.headers,\n        body: Object.assign({\n          chain: \"ethereum\",\n          message,\n          signature\n        }, ((_k = credentials.options) === null || _k === void 0 ? void 0 : _k.captchaToken) ? {gotrue_meta_security: {captcha_token: (_l = credentials.options) === null || _l === void 0 ? void 0 : _l.captchaToken}} : null),\n        xform: _sessionResponse\n      });\n      if (error) {\n        throw error;\n      }\n      if (!data || !data.session || !data.user) {\n        const invalidTokenError = new AuthInvalidTokenResponseError();\n        return this._returnResult({data: {user: null, session: null}, error: invalidTokenError});\n      }\n      if (data.session) {\n        await this._saveSession(data.session);\n        await this._notifyAllSubscribers(\"SIGNED_IN\", data.session);\n      }\n      return this._returnResult({data: Object.assign({}, data), error});\n    } catch (error) {\n      if (isAuthError(error)) {\n        return this._returnResult({data: {user: null, session: null}, error});\n      }\n      throw error;\n    }\n  }\n  async signInWithSolana(credentials) {\n    var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;\n    let message;\n    let signature;\n    if (\"message\" in credentials) {\n      message = credentials.message;\n      signature = credentials.signature;\n    } else {\n      const {chain, wallet, statement, options} = credentials;\n      let resolvedWallet;\n      if (!isBrowser()) {\n        if (typeof wallet !== \"object\" || !(options === null || options === void 0 ? void 0 : options.url)) {\n          throw new Error(\"@supabase/auth-js: Both wallet and url must be specified in non-browser environments.\");\n        }\n        resolvedWallet = wallet;\n      } else if (typeof wallet === \"object\") {\n        resolvedWallet = wallet;\n      } else {\n        const windowAny = window;\n        if (\"solana\" in windowAny && typeof windowAny.solana === \"object\" && (\"signIn\" in windowAny.solana && typeof windowAny.solana.signIn === \"function\" || \"signMessage\" in windowAny.solana && typeof windowAny.solana.signMessage === \"function\")) {\n          resolvedWallet = windowAny.solana;\n        } else {\n          throw new Error(`@supabase/auth-js: No compatible Solana wallet interface on the window object (window.solana) detected. Make sure the user already has a wallet installed and connected for this app. Prefer passing the wallet interface object directly to signInWithWeb3({ chain: 'solana', wallet: resolvedUserWallet }) instead.`);\n        }\n      }\n      const url = new URL((_a = options === null || options === void 0 ? void 0 : options.url) !== null && _a !== void 0 ? _a : window.location.href);\n      if (\"signIn\" in resolvedWallet && resolvedWallet.signIn) {\n        const output = await resolvedWallet.signIn(Object.assign(Object.assign(Object.assign({issuedAt: new Date().toISOString()}, options === null || options === void 0 ? void 0 : options.signInWithSolana), {\n          version: \"1\",\n          domain: url.host,\n          uri: url.href\n        }), statement ? {statement} : null));\n        let outputToProcess;\n        if (Array.isArray(output) && output[0] && typeof output[0] === \"object\") {\n          outputToProcess = output[0];\n        } else if (output && typeof output === \"object\" && \"signedMessage\" in output && \"signature\" in output) {\n          outputToProcess = output;\n        } else {\n          throw new Error(\"@supabase/auth-js: Wallet method signIn() returned unrecognized value\");\n        }\n        if (\"signedMessage\" in outputToProcess && \"signature\" in outputToProcess && (typeof outputToProcess.signedMessage === \"string\" || outputToProcess.signedMessage instanceof Uint8Array) && outputToProcess.signature instanceof Uint8Array) {\n          message = typeof outputToProcess.signedMessage === \"string\" ? outputToProcess.signedMessage : new TextDecoder().decode(outputToProcess.signedMessage);\n          signature = outputToProcess.signature;\n        } else {\n          throw new Error(\"@supabase/auth-js: Wallet method signIn() API returned object without signedMessage and signature fields\");\n        }\n      } else {\n        if (!(\"signMessage\" in resolvedWallet) || typeof resolvedWallet.signMessage !== \"function\" || !(\"publicKey\" in resolvedWallet) || typeof resolvedWallet !== \"object\" || !resolvedWallet.publicKey || !(\"toBase58\" in resolvedWallet.publicKey) || typeof resolvedWallet.publicKey.toBase58 !== \"function\") {\n          throw new Error(\"@supabase/auth-js: Wallet does not have a compatible signMessage() and publicKey.toBase58() API\");\n        }\n        message = [\n          `${url.host} wants you to sign in with your Solana account:`,\n          resolvedWallet.publicKey.toBase58(),\n          ...statement ? [\"\", statement, \"\"] : [\"\"],\n          \"Version: 1\",\n          `URI: ${url.href}`,\n          `Issued At: ${(_c = (_b = options === null || options === void 0 ? void 0 : options.signInWithSolana) === null || _b === void 0 ? void 0 : _b.issuedAt) !== null && _c !== void 0 ? _c : new Date().toISOString()}`,\n          ...((_d = options === null || options === void 0 ? void 0 : options.signInWithSolana) === null || _d === void 0 ? void 0 : _d.notBefore) ? [`Not Before: ${options.signInWithSolana.notBefore}`] : [],\n          ...((_e = options === null || options === void 0 ? void 0 : options.signInWithSolana) === null || _e === void 0 ? void 0 : _e.expirationTime) ? [`Expiration Time: ${options.signInWithSolana.expirationTime}`] : [],\n          ...((_f = options === null || options === void 0 ? void 0 : options.signInWithSolana) === null || _f === void 0 ? void 0 : _f.chainId) ? [`Chain ID: ${options.signInWithSolana.chainId}`] : [],\n          ...((_g = options === null || options === void 0 ? void 0 : options.signInWithSolana) === null || _g === void 0 ? void 0 : _g.nonce) ? [`Nonce: ${options.signInWithSolana.nonce}`] : [],\n          ...((_h = options === null || options === void 0 ? void 0 : options.signInWithSolana) === null || _h === void 0 ? void 0 : _h.requestId) ? [`Request ID: ${options.signInWithSolana.requestId}`] : [],\n          ...((_k = (_j = options === null || options === void 0 ? void 0 : options.signInWithSolana) === null || _j === void 0 ? void 0 : _j.resources) === null || _k === void 0 ? void 0 : _k.length) ? [\n            \"Resources\",\n            ...options.signInWithSolana.resources.map((resource) => `- ${resource}`)\n          ] : []\n        ].join(\"\\n\");\n        const maybeSignature = await resolvedWallet.signMessage(new TextEncoder().encode(message), \"utf8\");\n        if (!maybeSignature || !(maybeSignature instanceof Uint8Array)) {\n          throw new Error(\"@supabase/auth-js: Wallet signMessage() API returned an recognized value\");\n        }\n        signature = maybeSignature;\n      }\n    }\n    try {\n      const {data, error} = await _request(this.fetch, \"POST\", `${this.url}/token?grant_type=web3`, {\n        headers: this.headers,\n        body: Object.assign({chain: \"solana\", message, signature: bytesToBase64URL(signature)}, ((_l = credentials.options) === null || _l === void 0 ? void 0 : _l.captchaToken) ? {gotrue_meta_security: {captcha_token: (_m = credentials.options) === null || _m === void 0 ? void 0 : _m.captchaToken}} : null),\n        xform: _sessionResponse\n      });\n      if (error) {\n        throw error;\n      }\n      if (!data || !data.session || !data.user) {\n        const invalidTokenError = new AuthInvalidTokenResponseError();\n        return this._returnResult({data: {user: null, session: null}, error: invalidTokenError});\n      }\n      if (data.session) {\n        await this._saveSession(data.session);\n        await this._notifyAllSubscribers(\"SIGNED_IN\", data.session);\n      }\n      return this._returnResult({data: Object.assign({}, data), error});\n    } catch (error) {\n      if (isAuthError(error)) {\n        return this._returnResult({data: {user: null, session: null}, error});\n      }\n      throw error;\n    }\n  }\n  async _exchangeCodeForSession(authCode) {\n    const storageItem = await getItemAsync(this.storage, `${this.storageKey}-code-verifier`);\n    const [codeVerifier, redirectType] = (storageItem !== null && storageItem !== void 0 ? storageItem : \"\").split(\"/\");\n    try {\n      if (!codeVerifier && this.flowType === \"pkce\") {\n        throw new AuthPKCECodeVerifierMissingError();\n      }\n      const {data, error} = await _request(this.fetch, \"POST\", `${this.url}/token?grant_type=pkce`, {\n        headers: this.headers,\n        body: {\n          auth_code: authCode,\n          code_verifier: codeVerifier\n        },\n        xform: _sessionResponse\n      });\n      await removeItemAsync(this.storage, `${this.storageKey}-code-verifier`);\n      if (error) {\n        throw error;\n      }\n      if (!data || !data.session || !data.user) {\n        const invalidTokenError = new AuthInvalidTokenResponseError();\n        return this._returnResult({\n          data: {user: null, session: null, redirectType: null},\n          error: invalidTokenError\n        });\n      }\n      if (data.session) {\n        await this._saveSession(data.session);\n        await this._notifyAllSubscribers(\"SIGNED_IN\", data.session);\n      }\n      return this._returnResult({data: Object.assign(Object.assign({}, data), {redirectType: redirectType !== null && redirectType !== void 0 ? redirectType : null}), error});\n    } catch (error) {\n      await removeItemAsync(this.storage, `${this.storageKey}-code-verifier`);\n      if (isAuthError(error)) {\n        return this._returnResult({\n          data: {user: null, session: null, redirectType: null},\n          error\n        });\n      }\n      throw error;\n    }\n  }\n  async signInWithIdToken(credentials) {\n    try {\n      const {options, provider, token, access_token, nonce} = credentials;\n      const res = await _request(this.fetch, \"POST\", `${this.url}/token?grant_type=id_token`, {\n        headers: this.headers,\n        body: {\n          provider,\n          id_token: token,\n          access_token,\n          nonce,\n          gotrue_meta_security: {captcha_token: options === null || options === void 0 ? void 0 : options.captchaToken}\n        },\n        xform: _sessionResponse\n      });\n      const {data, error} = res;\n      if (error) {\n        return this._returnResult({data: {user: null, session: null}, error});\n      } else if (!data || !data.session || !data.user) {\n        const invalidTokenError = new AuthInvalidTokenResponseError();\n        return this._returnResult({data: {user: null, session: null}, error: invalidTokenError});\n      }\n      if (data.session) {\n        await this._saveSession(data.session);\n        await this._notifyAllSubscribers(\"SIGNED_IN\", data.session);\n      }\n      return this._returnResult({data, error});\n    } catch (error) {\n      if (isAuthError(error)) {\n        return this._returnResult({data: {user: null, session: null}, error});\n      }\n      throw error;\n    }\n  }\n  async signInWithOtp(credentials) {\n    var _a, _b, _c, _d, _e;\n    try {\n      if (\"email\" in credentials) {\n        const {email, options} = credentials;\n        let codeChallenge = null;\n        let codeChallengeMethod = null;\n        if (this.flowType === \"pkce\") {\n          ;\n          [codeChallenge, codeChallengeMethod] = await getCodeChallengeAndMethod(this.storage, this.storageKey);\n        }\n        const {error} = await _request(this.fetch, \"POST\", `${this.url}/otp`, {\n          headers: this.headers,\n          body: {\n            email,\n            data: (_a = options === null || options === void 0 ? void 0 : options.data) !== null && _a !== void 0 ? _a : {},\n            create_user: (_b = options === null || options === void 0 ? void 0 : options.shouldCreateUser) !== null && _b !== void 0 ? _b : true,\n            gotrue_meta_security: {captcha_token: options === null || options === void 0 ? void 0 : options.captchaToken},\n            code_challenge: codeChallenge,\n            code_challenge_method: codeChallengeMethod\n          },\n          redirectTo: options === null || options === void 0 ? void 0 : options.emailRedirectTo\n        });\n        return this._returnResult({data: {user: null, session: null}, error});\n      }\n      if (\"phone\" in credentials) {\n        const {phone, options} = credentials;\n        const {data, error} = await _request(this.fetch, \"POST\", `${this.url}/otp`, {\n          headers: this.headers,\n          body: {\n            phone,\n            data: (_c = options === null || options === void 0 ? void 0 : options.data) !== null && _c !== void 0 ? _c : {},\n            create_user: (_d = options === null || options === void 0 ? void 0 : options.shouldCreateUser) !== null && _d !== void 0 ? _d : true,\n            gotrue_meta_security: {captcha_token: options === null || options === void 0 ? void 0 : options.captchaToken},\n            channel: (_e = options === null || options === void 0 ? void 0 : options.channel) !== null && _e !== void 0 ? _e : \"sms\"\n          }\n        });\n        return this._returnResult({\n          data: {user: null, session: null, messageId: data === null || data === void 0 ? void 0 : data.message_id},\n          error\n        });\n      }\n      throw new AuthInvalidCredentialsError(\"You must provide either an email or phone number.\");\n    } catch (error) {\n      await removeItemAsync(this.storage, `${this.storageKey}-code-verifier`);\n      if (isAuthError(error)) {\n        return this._returnResult({data: {user: null, session: null}, error});\n      }\n      throw error;\n    }\n  }\n  async verifyOtp(params) {\n    var _a, _b;\n    try {\n      let redirectTo = void 0;\n      let captchaToken = void 0;\n      if (\"options\" in params) {\n        redirectTo = (_a = params.options) === null || _a === void 0 ? void 0 : _a.redirectTo;\n        captchaToken = (_b = params.options) === null || _b === void 0 ? void 0 : _b.captchaToken;\n      }\n      const {data, error} = await _request(this.fetch, \"POST\", `${this.url}/verify`, {\n        headers: this.headers,\n        body: Object.assign(Object.assign({}, params), {gotrue_meta_security: {captcha_token: captchaToken}}),\n        redirectTo,\n        xform: _sessionResponse\n      });\n      if (error) {\n        throw error;\n      }\n      if (!data) {\n        const tokenVerificationError = new Error(\"An error occurred on token verification.\");\n        throw tokenVerificationError;\n      }\n      const session = data.session;\n      const user = data.user;\n      if (session === null || session === void 0 ? void 0 : session.access_token) {\n        await this._saveSession(session);\n        await this._notifyAllSubscribers(params.type == \"recovery\" ? \"PASSWORD_RECOVERY\" : \"SIGNED_IN\", session);\n      }\n      return this._returnResult({data: {user, session}, error: null});\n    } catch (error) {\n      if (isAuthError(error)) {\n        return this._returnResult({data: {user: null, session: null}, error});\n      }\n      throw error;\n    }\n  }\n  async signInWithSSO(params) {\n    var _a, _b, _c, _d, _e;\n    try {\n      let codeChallenge = null;\n      let codeChallengeMethod = null;\n      if (this.flowType === \"pkce\") {\n        ;\n        [codeChallenge, codeChallengeMethod] = await getCodeChallengeAndMethod(this.storage, this.storageKey);\n      }\n      const result = await _request(this.fetch, \"POST\", `${this.url}/sso`, {\n        body: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, \"providerId\" in params ? {provider_id: params.providerId} : null), \"domain\" in params ? {domain: params.domain} : null), {redirect_to: (_b = (_a = params.options) === null || _a === void 0 ? void 0 : _a.redirectTo) !== null && _b !== void 0 ? _b : void 0}), ((_c = params === null || params === void 0 ? void 0 : params.options) === null || _c === void 0 ? void 0 : _c.captchaToken) ? {gotrue_meta_security: {captcha_token: params.options.captchaToken}} : null), {skip_http_redirect: true, code_challenge: codeChallenge, code_challenge_method: codeChallengeMethod}),\n        headers: this.headers,\n        xform: _ssoResponse\n      });\n      if (((_d = result.data) === null || _d === void 0 ? void 0 : _d.url) && isBrowser() && !((_e = params.options) === null || _e === void 0 ? void 0 : _e.skipBrowserRedirect)) {\n        window.location.assign(result.data.url);\n      }\n      return this._returnResult(result);\n    } catch (error) {\n      await removeItemAsync(this.storage, `${this.storageKey}-code-verifier`);\n      if (isAuthError(error)) {\n        return this._returnResult({data: null, error});\n      }\n      throw error;\n    }\n  }\n  async reauthenticate() {\n    await this.initializePromise;\n    return await this._acquireLock(-1, async () => {\n      return await this._reauthenticate();\n    });\n  }\n  async _reauthenticate() {\n    try {\n      return await this._useSession(async (result) => {\n        const {data: {session}, error: sessionError} = result;\n        if (sessionError)\n          throw sessionError;\n        if (!session)\n          throw new AuthSessionMissingError();\n        const {error} = await _request(this.fetch, \"GET\", `${this.url}/reauthenticate`, {\n          headers: this.headers,\n          jwt: session.access_token\n        });\n        return this._returnResult({data: {user: null, session: null}, error});\n      });\n    } catch (error) {\n      if (isAuthError(error)) {\n        return this._returnResult({data: {user: null, session: null}, error});\n      }\n      throw error;\n    }\n  }\n  async resend(credentials) {\n    try {\n      const endpoint = `${this.url}/resend`;\n      if (\"email\" in credentials) {\n        const {email, type, options} = credentials;\n        const {error} = await _request(this.fetch, \"POST\", endpoint, {\n          headers: this.headers,\n          body: {\n            email,\n            type,\n            gotrue_meta_security: {captcha_token: options === null || options === void 0 ? void 0 : options.captchaToken}\n          },\n          redirectTo: options === null || options === void 0 ? void 0 : options.emailRedirectTo\n        });\n        return this._returnResult({data: {user: null, session: null}, error});\n      } else if (\"phone\" in credentials) {\n        const {phone, type, options} = credentials;\n        const {data, error} = await _request(this.fetch, \"POST\", endpoint, {\n          headers: this.headers,\n          body: {\n            phone,\n            type,\n            gotrue_meta_security: {captcha_token: options === null || options === void 0 ? void 0 : options.captchaToken}\n          }\n        });\n        return this._returnResult({\n          data: {user: null, session: null, messageId: data === null || data === void 0 ? void 0 : data.message_id},\n          error\n        });\n      }\n      throw new AuthInvalidCredentialsError(\"You must provide either an email or phone number and a type\");\n    } catch (error) {\n      if (isAuthError(error)) {\n        return this._returnResult({data: {user: null, session: null}, error});\n      }\n      throw error;\n    }\n  }\n  async getSession() {\n    await this.initializePromise;\n    const result = await this._acquireLock(-1, async () => {\n      return this._useSession(async (result2) => {\n        return result2;\n      });\n    });\n    return result;\n  }\n  async _acquireLock(acquireTimeout, fn) {\n    this._debug(\"#_acquireLock\", \"begin\", acquireTimeout);\n    try {\n      if (this.lockAcquired) {\n        const last = this.pendingInLock.length ? this.pendingInLock[this.pendingInLock.length - 1] : Promise.resolve();\n        const result = (async () => {\n          await last;\n          return await fn();\n        })();\n        this.pendingInLock.push((async () => {\n          try {\n            await result;\n          } catch (e) {\n          }\n        })());\n        return result;\n      }\n      return await this.lock(`lock:${this.storageKey}`, acquireTimeout, async () => {\n        this._debug(\"#_acquireLock\", \"lock acquired for storage key\", this.storageKey);\n        try {\n          this.lockAcquired = true;\n          const result = fn();\n          this.pendingInLock.push((async () => {\n            try {\n              await result;\n            } catch (e) {\n            }\n          })());\n          await result;\n          while (this.pendingInLock.length) {\n            const waitOn = [...this.pendingInLock];\n            await Promise.all(waitOn);\n            this.pendingInLock.splice(0, waitOn.length);\n          }\n          return await result;\n        } finally {\n          this._debug(\"#_acquireLock\", \"lock released for storage key\", this.storageKey);\n          this.lockAcquired = false;\n        }\n      });\n    } finally {\n      this._debug(\"#_acquireLock\", \"end\");\n    }\n  }\n  async _useSession(fn) {\n    this._debug(\"#_useSession\", \"begin\");\n    try {\n      const result = await this.__loadSession();\n      return await fn(result);\n    } finally {\n      this._debug(\"#_useSession\", \"end\");\n    }\n  }\n  async __loadSession() {\n    this._debug(\"#__loadSession()\", \"begin\");\n    if (!this.lockAcquired) {\n      this._debug(\"#__loadSession()\", \"used outside of an acquired lock!\", new Error().stack);\n    }\n    try {\n      let currentSession = null;\n      const maybeSession = await getItemAsync(this.storage, this.storageKey);\n      this._debug(\"#getSession()\", \"session from storage\", maybeSession);\n      if (maybeSession !== null) {\n        if (this._isValidSession(maybeSession)) {\n          currentSession = maybeSession;\n        } else {\n          this._debug(\"#getSession()\", \"session from storage is not valid\");\n          await this._removeSession();\n        }\n      }\n      if (!currentSession) {\n        return {data: {session: null}, error: null};\n      }\n      const hasExpired = currentSession.expires_at ? currentSession.expires_at * 1e3 - Date.now() < EXPIRY_MARGIN_MS : false;\n      this._debug(\"#__loadSession()\", `session has${hasExpired ? \"\" : \" not\"} expired`, \"expires_at\", currentSession.expires_at);\n      if (!hasExpired) {\n        if (this.userStorage) {\n          const maybeUser = await getItemAsync(this.userStorage, this.storageKey + \"-user\");\n          if (maybeUser === null || maybeUser === void 0 ? void 0 : maybeUser.user) {\n            currentSession.user = maybeUser.user;\n          } else {\n            currentSession.user = userNotAvailableProxy();\n          }\n        }\n        if (this.storage.isServer && currentSession.user && !currentSession.user.__isUserNotAvailableProxy) {\n          const suppressWarningRef = {value: this.suppressGetSessionWarning};\n          currentSession.user = insecureUserWarningProxy(currentSession.user, suppressWarningRef);\n          if (suppressWarningRef.value) {\n            this.suppressGetSessionWarning = true;\n          }\n        }\n        return {data: {session: currentSession}, error: null};\n      }\n      const {data: session, error} = await this._callRefreshToken(currentSession.refresh_token);\n      if (error) {\n        return this._returnResult({data: {session: null}, error});\n      }\n      return this._returnResult({data: {session}, error: null});\n    } finally {\n      this._debug(\"#__loadSession()\", \"end\");\n    }\n  }\n  async getUser(jwt) {\n    if (jwt) {\n      return await this._getUser(jwt);\n    }\n    await this.initializePromise;\n    const result = await this._acquireLock(-1, async () => {\n      return await this._getUser();\n    });\n    if (result.data.user) {\n      this.suppressGetSessionWarning = true;\n    }\n    return result;\n  }\n  async _getUser(jwt) {\n    try {\n      if (jwt) {\n        return await _request(this.fetch, \"GET\", `${this.url}/user`, {\n          headers: this.headers,\n          jwt,\n          xform: _userResponse\n        });\n      }\n      return await this._useSession(async (result) => {\n        var _a, _b, _c;\n        const {data, error} = result;\n        if (error) {\n          throw error;\n        }\n        if (!((_a = data.session) === null || _a === void 0 ? void 0 : _a.access_token) && !this.hasCustomAuthorizationHeader) {\n          return {data: {user: null}, error: new AuthSessionMissingError()};\n        }\n        return await _request(this.fetch, \"GET\", `${this.url}/user`, {\n          headers: this.headers,\n          jwt: (_c = (_b = data.session) === null || _b === void 0 ? void 0 : _b.access_token) !== null && _c !== void 0 ? _c : void 0,\n          xform: _userResponse\n        });\n      });\n    } catch (error) {\n      if (isAuthError(error)) {\n        if (isAuthSessionMissingError(error)) {\n          await this._removeSession();\n          await removeItemAsync(this.storage, `${this.storageKey}-code-verifier`);\n        }\n        return this._returnResult({data: {user: null}, error});\n      }\n      throw error;\n    }\n  }\n  async updateUser(attributes, options = {}) {\n    await this.initializePromise;\n    return await this._acquireLock(-1, async () => {\n      return await this._updateUser(attributes, options);\n    });\n  }\n  async _updateUser(attributes, options = {}) {\n    try {\n      return await this._useSession(async (result) => {\n        const {data: sessionData, error: sessionError} = result;\n        if (sessionError) {\n          throw sessionError;\n        }\n        if (!sessionData.session) {\n          throw new AuthSessionMissingError();\n        }\n        const session = sessionData.session;\n        let codeChallenge = null;\n        let codeChallengeMethod = null;\n        if (this.flowType === \"pkce\" && attributes.email != null) {\n          ;\n          [codeChallenge, codeChallengeMethod] = await getCodeChallengeAndMethod(this.storage, this.storageKey);\n        }\n        const {data, error: userError} = await _request(this.fetch, \"PUT\", `${this.url}/user`, {\n          headers: this.headers,\n          redirectTo: options === null || options === void 0 ? void 0 : options.emailRedirectTo,\n          body: Object.assign(Object.assign({}, attributes), {code_challenge: codeChallenge, code_challenge_method: codeChallengeMethod}),\n          jwt: session.access_token,\n          xform: _userResponse\n        });\n        if (userError) {\n          throw userError;\n        }\n        session.user = data.user;\n        await this._saveSession(session);\n        await this._notifyAllSubscribers(\"USER_UPDATED\", session);\n        return this._returnResult({data: {user: session.user}, error: null});\n      });\n    } catch (error) {\n      await removeItemAsync(this.storage, `${this.storageKey}-code-verifier`);\n      if (isAuthError(error)) {\n        return this._returnResult({data: {user: null}, error});\n      }\n      throw error;\n    }\n  }\n  async setSession(currentSession) {\n    await this.initializePromise;\n    return await this._acquireLock(-1, async () => {\n      return await this._setSession(currentSession);\n    });\n  }\n  async _setSession(currentSession) {\n    try {\n      if (!currentSession.access_token || !currentSession.refresh_token) {\n        throw new AuthSessionMissingError();\n      }\n      const timeNow = Date.now() / 1e3;\n      let expiresAt2 = timeNow;\n      let hasExpired = true;\n      let session = null;\n      const {payload} = decodeJWT(currentSession.access_token);\n      if (payload.exp) {\n        expiresAt2 = payload.exp;\n        hasExpired = expiresAt2 <= timeNow;\n      }\n      if (hasExpired) {\n        const {data: refreshedSession, error} = await this._callRefreshToken(currentSession.refresh_token);\n        if (error) {\n          return this._returnResult({data: {user: null, session: null}, error});\n        }\n        if (!refreshedSession) {\n          return {data: {user: null, session: null}, error: null};\n        }\n        session = refreshedSession;\n      } else {\n        const {data, error} = await this._getUser(currentSession.access_token);\n        if (error) {\n          throw error;\n        }\n        session = {\n          access_token: currentSession.access_token,\n          refresh_token: currentSession.refresh_token,\n          user: data.user,\n          token_type: \"bearer\",\n          expires_in: expiresAt2 - timeNow,\n          expires_at: expiresAt2\n        };\n        await this._saveSession(session);\n        await this._notifyAllSubscribers(\"SIGNED_IN\", session);\n      }\n      return this._returnResult({data: {user: session.user, session}, error: null});\n    } catch (error) {\n      if (isAuthError(error)) {\n        return this._returnResult({data: {session: null, user: null}, error});\n      }\n      throw error;\n    }\n  }\n  async refreshSession(currentSession) {\n    await this.initializePromise;\n    return await this._acquireLock(-1, async () => {\n      return await this._refreshSession(currentSession);\n    });\n  }\n  async _refreshSession(currentSession) {\n    try {\n      return await this._useSession(async (result) => {\n        var _a;\n        if (!currentSession) {\n          const {data, error: error2} = result;\n          if (error2) {\n            throw error2;\n          }\n          currentSession = (_a = data.session) !== null && _a !== void 0 ? _a : void 0;\n        }\n        if (!(currentSession === null || currentSession === void 0 ? void 0 : currentSession.refresh_token)) {\n          throw new AuthSessionMissingError();\n        }\n        const {data: session, error} = await this._callRefreshToken(currentSession.refresh_token);\n        if (error) {\n          return this._returnResult({data: {user: null, session: null}, error});\n        }\n        if (!session) {\n          return this._returnResult({data: {user: null, session: null}, error: null});\n        }\n        return this._returnResult({data: {user: session.user, session}, error: null});\n      });\n    } catch (error) {\n      if (isAuthError(error)) {\n        return this._returnResult({data: {user: null, session: null}, error});\n      }\n      throw error;\n    }\n  }\n  async _getSessionFromURL(params, callbackUrlType) {\n    try {\n      if (!isBrowser())\n        throw new AuthImplicitGrantRedirectError(\"No browser detected.\");\n      if (params.error || params.error_description || params.error_code) {\n        throw new AuthImplicitGrantRedirectError(params.error_description || \"Error in URL with unspecified error_description\", {\n          error: params.error || \"unspecified_error\",\n          code: params.error_code || \"unspecified_code\"\n        });\n      }\n      switch (callbackUrlType) {\n        case \"implicit\":\n          if (this.flowType === \"pkce\") {\n            throw new AuthPKCEGrantCodeExchangeError(\"Not a valid PKCE flow url.\");\n          }\n          break;\n        case \"pkce\":\n          if (this.flowType === \"implicit\") {\n            throw new AuthImplicitGrantRedirectError(\"Not a valid implicit grant flow url.\");\n          }\n          break;\n        default:\n      }\n      if (callbackUrlType === \"pkce\") {\n        this._debug(\"#_initialize()\", \"begin\", \"is PKCE flow\", true);\n        if (!params.code)\n          throw new AuthPKCEGrantCodeExchangeError(\"No code detected.\");\n        const {data: data2, error: error2} = await this._exchangeCodeForSession(params.code);\n        if (error2)\n          throw error2;\n        const url = new URL(window.location.href);\n        url.searchParams.delete(\"code\");\n        window.history.replaceState(window.history.state, \"\", url.toString());\n        return {data: {session: data2.session, redirectType: null}, error: null};\n      }\n      const {provider_token, provider_refresh_token, access_token, refresh_token, expires_in, expires_at, token_type} = params;\n      if (!access_token || !expires_in || !refresh_token || !token_type) {\n        throw new AuthImplicitGrantRedirectError(\"No session defined in URL\");\n      }\n      const timeNow = Math.round(Date.now() / 1e3);\n      const expiresIn = parseInt(expires_in);\n      let expiresAt2 = timeNow + expiresIn;\n      if (expires_at) {\n        expiresAt2 = parseInt(expires_at);\n      }\n      const actuallyExpiresIn = expiresAt2 - timeNow;\n      if (actuallyExpiresIn * 1e3 <= AUTO_REFRESH_TICK_DURATION_MS) {\n        console.warn(`@supabase/gotrue-js: Session as retrieved from URL expires in ${actuallyExpiresIn}s, should have been closer to ${expiresIn}s`);\n      }\n      const issuedAt = expiresAt2 - expiresIn;\n      if (timeNow - issuedAt >= 120) {\n        console.warn(\"@supabase/gotrue-js: Session as retrieved from URL was issued over 120s ago, URL could be stale\", issuedAt, expiresAt2, timeNow);\n      } else if (timeNow - issuedAt < 0) {\n        console.warn(\"@supabase/gotrue-js: Session as retrieved from URL was issued in the future? Check the device clock for skew\", issuedAt, expiresAt2, timeNow);\n      }\n      const {data, error} = await this._getUser(access_token);\n      if (error)\n        throw error;\n      const session = {\n        provider_token,\n        provider_refresh_token,\n        access_token,\n        expires_in: expiresIn,\n        expires_at: expiresAt2,\n        refresh_token,\n        token_type,\n        user: data.user\n      };\n      window.location.hash = \"\";\n      this._debug(\"#_getSessionFromURL()\", \"clearing window.location.hash\");\n      return this._returnResult({data: {session, redirectType: params.type}, error: null});\n    } catch (error) {\n      if (isAuthError(error)) {\n        return this._returnResult({data: {session: null, redirectType: null}, error});\n      }\n      throw error;\n    }\n  }\n  _isImplicitGrantCallback(params) {\n    if (typeof this.detectSessionInUrl === \"function\") {\n      return this.detectSessionInUrl(new URL(window.location.href), params);\n    }\n    return Boolean(params.access_token || params.error_description);\n  }\n  async _isPKCECallback(params) {\n    const currentStorageContent = await getItemAsync(this.storage, `${this.storageKey}-code-verifier`);\n    return !!(params.code && currentStorageContent);\n  }\n  async signOut(options = {scope: \"global\"}) {\n    await this.initializePromise;\n    return await this._acquireLock(-1, async () => {\n      return await this._signOut(options);\n    });\n  }\n  async _signOut({scope} = {scope: \"global\"}) {\n    return await this._useSession(async (result) => {\n      var _a;\n      const {data, error: sessionError} = result;\n      if (sessionError) {\n        return this._returnResult({error: sessionError});\n      }\n      const accessToken = (_a = data.session) === null || _a === void 0 ? void 0 : _a.access_token;\n      if (accessToken) {\n        const {error} = await this.admin.signOut(accessToken, scope);\n        if (error) {\n          if (!(isAuthApiError(error) && (error.status === 404 || error.status === 401 || error.status === 403))) {\n            return this._returnResult({error});\n          }\n        }\n      }\n      if (scope !== \"others\") {\n        await this._removeSession();\n        await removeItemAsync(this.storage, `${this.storageKey}-code-verifier`);\n      }\n      return this._returnResult({error: null});\n    });\n  }\n  onAuthStateChange(callback) {\n    const id = generateCallbackId();\n    const subscription = {\n      id,\n      callback,\n      unsubscribe: () => {\n        this._debug(\"#unsubscribe()\", \"state change callback with id removed\", id);\n        this.stateChangeEmitters.delete(id);\n      }\n    };\n    this._debug(\"#onAuthStateChange()\", \"registered callback with id\", id);\n    this.stateChangeEmitters.set(id, subscription);\n    (async () => {\n      await this.initializePromise;\n      await this._acquireLock(-1, async () => {\n        this._emitInitialSession(id);\n      });\n    })();\n    return {data: {subscription}};\n  }\n  async _emitInitialSession(id) {\n    return await this._useSession(async (result) => {\n      var _a, _b;\n      try {\n        const {data: {session}, error} = result;\n        if (error)\n          throw error;\n        await ((_a = this.stateChangeEmitters.get(id)) === null || _a === void 0 ? void 0 : _a.callback(\"INITIAL_SESSION\", session));\n        this._debug(\"INITIAL_SESSION\", \"callback id\", id, \"session\", session);\n      } catch (err) {\n        await ((_b = this.stateChangeEmitters.get(id)) === null || _b === void 0 ? void 0 : _b.callback(\"INITIAL_SESSION\", null));\n        this._debug(\"INITIAL_SESSION\", \"callback id\", id, \"error\", err);\n        console.error(err);\n      }\n    });\n  }\n  async resetPasswordForEmail(email, options = {}) {\n    let codeChallenge = null;\n    let codeChallengeMethod = null;\n    if (this.flowType === \"pkce\") {\n      [codeChallenge, codeChallengeMethod] = await getCodeChallengeAndMethod(this.storage, this.storageKey, true);\n    }\n    try {\n      return await _request(this.fetch, \"POST\", `${this.url}/recover`, {\n        body: {\n          email,\n          code_challenge: codeChallenge,\n          code_challenge_method: codeChallengeMethod,\n          gotrue_meta_security: {captcha_token: options.captchaToken}\n        },\n        headers: this.headers,\n        redirectTo: options.redirectTo\n      });\n    } catch (error) {\n      await removeItemAsync(this.storage, `${this.storageKey}-code-verifier`);\n      if (isAuthError(error)) {\n        return this._returnResult({data: null, error});\n      }\n      throw error;\n    }\n  }\n  async getUserIdentities() {\n    var _a;\n    try {\n      const {data, error} = await this.getUser();\n      if (error)\n        throw error;\n      return this._returnResult({data: {identities: (_a = data.user.identities) !== null && _a !== void 0 ? _a : []}, error: null});\n    } catch (error) {\n      if (isAuthError(error)) {\n        return this._returnResult({data: null, error});\n      }\n      throw error;\n    }\n  }\n  async linkIdentity(credentials) {\n    if (\"token\" in credentials) {\n      return this.linkIdentityIdToken(credentials);\n    }\n    return this.linkIdentityOAuth(credentials);\n  }\n  async linkIdentityOAuth(credentials) {\n    var _a;\n    try {\n      const {data, error} = await this._useSession(async (result) => {\n        var _a2, _b, _c, _d, _e;\n        const {data: data2, error: error2} = result;\n        if (error2)\n          throw error2;\n        const url = await this._getUrlForProvider(`${this.url}/user/identities/authorize`, credentials.provider, {\n          redirectTo: (_a2 = credentials.options) === null || _a2 === void 0 ? void 0 : _a2.redirectTo,\n          scopes: (_b = credentials.options) === null || _b === void 0 ? void 0 : _b.scopes,\n          queryParams: (_c = credentials.options) === null || _c === void 0 ? void 0 : _c.queryParams,\n          skipBrowserRedirect: true\n        });\n        return await _request(this.fetch, \"GET\", url, {\n          headers: this.headers,\n          jwt: (_e = (_d = data2.session) === null || _d === void 0 ? void 0 : _d.access_token) !== null && _e !== void 0 ? _e : void 0\n        });\n      });\n      if (error)\n        throw error;\n      if (isBrowser() && !((_a = credentials.options) === null || _a === void 0 ? void 0 : _a.skipBrowserRedirect)) {\n        window.location.assign(data === null || data === void 0 ? void 0 : data.url);\n      }\n      return this._returnResult({\n        data: {provider: credentials.provider, url: data === null || data === void 0 ? void 0 : data.url},\n        error: null\n      });\n    } catch (error) {\n      if (isAuthError(error)) {\n        return this._returnResult({data: {provider: credentials.provider, url: null}, error});\n      }\n      throw error;\n    }\n  }\n  async linkIdentityIdToken(credentials) {\n    return await this._useSession(async (result) => {\n      var _a;\n      try {\n        const {error: sessionError, data: {session}} = result;\n        if (sessionError)\n          throw sessionError;\n        const {options, provider, token, access_token, nonce} = credentials;\n        const res = await _request(this.fetch, \"POST\", `${this.url}/token?grant_type=id_token`, {\n          headers: this.headers,\n          jwt: (_a = session === null || session === void 0 ? void 0 : session.access_token) !== null && _a !== void 0 ? _a : void 0,\n          body: {\n            provider,\n            id_token: token,\n            access_token,\n            nonce,\n            link_identity: true,\n            gotrue_meta_security: {captcha_token: options === null || options === void 0 ? void 0 : options.captchaToken}\n          },\n          xform: _sessionResponse\n        });\n        const {data, error} = res;\n        if (error) {\n          return this._returnResult({data: {user: null, session: null}, error});\n        } else if (!data || !data.session || !data.user) {\n          return this._returnResult({\n            data: {user: null, session: null},\n            error: new AuthInvalidTokenResponseError()\n          });\n        }\n        if (data.session) {\n          await this._saveSession(data.session);\n          await this._notifyAllSubscribers(\"USER_UPDATED\", data.session);\n        }\n        return this._returnResult({data, error});\n      } catch (error) {\n        await removeItemAsync(this.storage, `${this.storageKey}-code-verifier`);\n        if (isAuthError(error)) {\n          return this._returnResult({data: {user: null, session: null}, error});\n        }\n        throw error;\n      }\n    });\n  }\n  async unlinkIdentity(identity) {\n    try {\n      return await this._useSession(async (result) => {\n        var _a, _b;\n        const {data, error} = result;\n        if (error) {\n          throw error;\n        }\n        return await _request(this.fetch, \"DELETE\", `${this.url}/user/identities/${identity.identity_id}`, {\n          headers: this.headers,\n          jwt: (_b = (_a = data.session) === null || _a === void 0 ? void 0 : _a.access_token) !== null && _b !== void 0 ? _b : void 0\n        });\n      });\n    } catch (error) {\n      if (isAuthError(error)) {\n        return this._returnResult({data: null, error});\n      }\n      throw error;\n    }\n  }\n  async _refreshAccessToken(refreshToken) {\n    const debugName = `#_refreshAccessToken(${refreshToken.substring(0, 5)}...)`;\n    this._debug(debugName, \"begin\");\n    try {\n      const startedAt = Date.now();\n      return await retryable(async (attempt) => {\n        if (attempt > 0) {\n          await sleep(200 * Math.pow(2, attempt - 1));\n        }\n        this._debug(debugName, \"refreshing attempt\", attempt);\n        return await _request(this.fetch, \"POST\", `${this.url}/token?grant_type=refresh_token`, {\n          body: {refresh_token: refreshToken},\n          headers: this.headers,\n          xform: _sessionResponse\n        });\n      }, (attempt, error) => {\n        const nextBackOffInterval = 200 * Math.pow(2, attempt);\n        return error && isAuthRetryableFetchError(error) && Date.now() + nextBackOffInterval - startedAt < AUTO_REFRESH_TICK_DURATION_MS;\n      });\n    } catch (error) {\n      this._debug(debugName, \"error\", error);\n      if (isAuthError(error)) {\n        return this._returnResult({data: {session: null, user: null}, error});\n      }\n      throw error;\n    } finally {\n      this._debug(debugName, \"end\");\n    }\n  }\n  _isValidSession(maybeSession) {\n    const isValidSession = typeof maybeSession === \"object\" && maybeSession !== null && \"access_token\" in maybeSession && \"refresh_token\" in maybeSession && \"expires_at\" in maybeSession;\n    return isValidSession;\n  }\n  async _handleProviderSignIn(provider, options) {\n    const url = await this._getUrlForProvider(`${this.url}/authorize`, provider, {\n      redirectTo: options.redirectTo,\n      scopes: options.scopes,\n      queryParams: options.queryParams\n    });\n    this._debug(\"#_handleProviderSignIn()\", \"provider\", provider, \"options\", options, \"url\", url);\n    if (isBrowser() && !options.skipBrowserRedirect) {\n      window.location.assign(url);\n    }\n    return {data: {provider, url}, error: null};\n  }\n  async _recoverAndRefresh() {\n    var _a, _b;\n    const debugName = \"#_recoverAndRefresh()\";\n    this._debug(debugName, \"begin\");\n    try {\n      const currentSession = await getItemAsync(this.storage, this.storageKey);\n      if (currentSession && this.userStorage) {\n        let maybeUser = await getItemAsync(this.userStorage, this.storageKey + \"-user\");\n        if (!this.storage.isServer && Object.is(this.storage, this.userStorage) && !maybeUser) {\n          maybeUser = {user: currentSession.user};\n          await setItemAsync(this.userStorage, this.storageKey + \"-user\", maybeUser);\n        }\n        currentSession.user = (_a = maybeUser === null || maybeUser === void 0 ? void 0 : maybeUser.user) !== null && _a !== void 0 ? _a : userNotAvailableProxy();\n      } else if (currentSession && !currentSession.user) {\n        if (!currentSession.user) {\n          const separateUser = await getItemAsync(this.storage, this.storageKey + \"-user\");\n          if (separateUser && (separateUser === null || separateUser === void 0 ? void 0 : separateUser.user)) {\n            currentSession.user = separateUser.user;\n            await removeItemAsync(this.storage, this.storageKey + \"-user\");\n            await setItemAsync(this.storage, this.storageKey, currentSession);\n          } else {\n            currentSession.user = userNotAvailableProxy();\n          }\n        }\n      }\n      this._debug(debugName, \"session from storage\", currentSession);\n      if (!this._isValidSession(currentSession)) {\n        this._debug(debugName, \"session is not valid\");\n        if (currentSession !== null) {\n          await this._removeSession();\n        }\n        return;\n      }\n      const expiresWithMargin = ((_b = currentSession.expires_at) !== null && _b !== void 0 ? _b : Infinity) * 1e3 - Date.now() < EXPIRY_MARGIN_MS;\n      this._debug(debugName, `session has${expiresWithMargin ? \"\" : \" not\"} expired with margin of ${EXPIRY_MARGIN_MS}s`);\n      if (expiresWithMargin) {\n        if (this.autoRefreshToken && currentSession.refresh_token) {\n          const {error} = await this._callRefreshToken(currentSession.refresh_token);\n          if (error) {\n            console.error(error);\n            if (!isAuthRetryableFetchError(error)) {\n              this._debug(debugName, \"refresh failed with a non-retryable error, removing the session\", error);\n              await this._removeSession();\n            }\n          }\n        }\n      } else if (currentSession.user && currentSession.user.__isUserNotAvailableProxy === true) {\n        try {\n          const {data, error: userError} = await this._getUser(currentSession.access_token);\n          if (!userError && (data === null || data === void 0 ? void 0 : data.user)) {\n            currentSession.user = data.user;\n            await this._saveSession(currentSession);\n            await this._notifyAllSubscribers(\"SIGNED_IN\", currentSession);\n          } else {\n            this._debug(debugName, \"could not get user data, skipping SIGNED_IN notification\");\n          }\n        } catch (getUserError) {\n          console.error(\"Error getting user data:\", getUserError);\n          this._debug(debugName, \"error getting user data, skipping SIGNED_IN notification\", getUserError);\n        }\n      } else {\n        await this._notifyAllSubscribers(\"SIGNED_IN\", currentSession);\n      }\n    } catch (err) {\n      this._debug(debugName, \"error\", err);\n      console.error(err);\n      return;\n    } finally {\n      this._debug(debugName, \"end\");\n    }\n  }\n  async _callRefreshToken(refreshToken) {\n    var _a, _b;\n    if (!refreshToken) {\n      throw new AuthSessionMissingError();\n    }\n    if (this.refreshingDeferred) {\n      return this.refreshingDeferred.promise;\n    }\n    const debugName = `#_callRefreshToken(${refreshToken.substring(0, 5)}...)`;\n    this._debug(debugName, \"begin\");\n    try {\n      this.refreshingDeferred = new Deferred();\n      const {data, error} = await this._refreshAccessToken(refreshToken);\n      if (error)\n        throw error;\n      if (!data.session)\n        throw new AuthSessionMissingError();\n      await this._saveSession(data.session);\n      await this._notifyAllSubscribers(\"TOKEN_REFRESHED\", data.session);\n      const result = {data: data.session, error: null};\n      this.refreshingDeferred.resolve(result);\n      return result;\n    } catch (error) {\n      this._debug(debugName, \"error\", error);\n      if (isAuthError(error)) {\n        const result = {data: null, error};\n        if (!isAuthRetryableFetchError(error)) {\n          await this._removeSession();\n        }\n        (_a = this.refreshingDeferred) === null || _a === void 0 ? void 0 : _a.resolve(result);\n        return result;\n      }\n      (_b = this.refreshingDeferred) === null || _b === void 0 ? void 0 : _b.reject(error);\n      throw error;\n    } finally {\n      this.refreshingDeferred = null;\n      this._debug(debugName, \"end\");\n    }\n  }\n  async _notifyAllSubscribers(event, session, broadcast = true) {\n    const debugName = `#_notifyAllSubscribers(${event})`;\n    this._debug(debugName, \"begin\", session, `broadcast = ${broadcast}`);\n    try {\n      if (this.broadcastChannel && broadcast) {\n        this.broadcastChannel.postMessage({event, session});\n      }\n      const errors = [];\n      const promises = Array.from(this.stateChangeEmitters.values()).map(async (x) => {\n        try {\n          await x.callback(event, session);\n        } catch (e) {\n          errors.push(e);\n        }\n      });\n      await Promise.all(promises);\n      if (errors.length > 0) {\n        for (let i = 0; i < errors.length; i += 1) {\n          console.error(errors[i]);\n        }\n        throw errors[0];\n      }\n    } finally {\n      this._debug(debugName, \"end\");\n    }\n  }\n  async _saveSession(session) {\n    this._debug(\"#_saveSession()\", session);\n    this.suppressGetSessionWarning = true;\n    await removeItemAsync(this.storage, `${this.storageKey}-code-verifier`);\n    const sessionToProcess = Object.assign({}, session);\n    const userIsProxy = sessionToProcess.user && sessionToProcess.user.__isUserNotAvailableProxy === true;\n    if (this.userStorage) {\n      if (!userIsProxy && sessionToProcess.user) {\n        await setItemAsync(this.userStorage, this.storageKey + \"-user\", {\n          user: sessionToProcess.user\n        });\n      }\n      const mainSessionData = Object.assign({}, sessionToProcess);\n      delete mainSessionData.user;\n      const clonedMainSessionData = deepClone(mainSessionData);\n      await setItemAsync(this.storage, this.storageKey, clonedMainSessionData);\n    } else {\n      const clonedSession = deepClone(sessionToProcess);\n      await setItemAsync(this.storage, this.storageKey, clonedSession);\n    }\n  }\n  async _removeSession() {\n    this._debug(\"#_removeSession()\");\n    this.suppressGetSessionWarning = false;\n    await removeItemAsync(this.storage, this.storageKey);\n    await removeItemAsync(this.storage, this.storageKey + \"-code-verifier\");\n    await removeItemAsync(this.storage, this.storageKey + \"-user\");\n    if (this.userStorage) {\n      await removeItemAsync(this.userStorage, this.storageKey + \"-user\");\n    }\n    await this._notifyAllSubscribers(\"SIGNED_OUT\", null);\n  }\n  _removeVisibilityChangedCallback() {\n    this._debug(\"#_removeVisibilityChangedCallback()\");\n    const callback = this.visibilityChangedCallback;\n    this.visibilityChangedCallback = null;\n    try {\n      if (callback && isBrowser() && (window === null || window === void 0 ? void 0 : window.removeEventListener)) {\n        window.removeEventListener(\"visibilitychange\", callback);\n      }\n    } catch (e) {\n      console.error(\"removing visibilitychange callback failed\", e);\n    }\n  }\n  async _startAutoRefresh() {\n    await this._stopAutoRefresh();\n    this._debug(\"#_startAutoRefresh()\");\n    const ticker = setInterval(() => this._autoRefreshTokenTick(), AUTO_REFRESH_TICK_DURATION_MS);\n    this.autoRefreshTicker = ticker;\n    if (ticker && typeof ticker === \"object\" && typeof ticker.unref === \"function\") {\n      ticker.unref();\n    } else if (typeof Deno !== \"undefined\" && typeof Deno.unrefTimer === \"function\") {\n      Deno.unrefTimer(ticker);\n    }\n    setTimeout(async () => {\n      await this.initializePromise;\n      await this._autoRefreshTokenTick();\n    }, 0);\n  }\n  async _stopAutoRefresh() {\n    this._debug(\"#_stopAutoRefresh()\");\n    const ticker = this.autoRefreshTicker;\n    this.autoRefreshTicker = null;\n    if (ticker) {\n      clearInterval(ticker);\n    }\n  }\n  async startAutoRefresh() {\n    this._removeVisibilityChangedCallback();\n    await this._startAutoRefresh();\n  }\n  async stopAutoRefresh() {\n    this._removeVisibilityChangedCallback();\n    await this._stopAutoRefresh();\n  }\n  async _autoRefreshTokenTick() {\n    this._debug(\"#_autoRefreshTokenTick()\", \"begin\");\n    try {\n      await this._acquireLock(0, async () => {\n        try {\n          const now = Date.now();\n          try {\n            return await this._useSession(async (result) => {\n              const {data: {session}} = result;\n              if (!session || !session.refresh_token || !session.expires_at) {\n                this._debug(\"#_autoRefreshTokenTick()\", \"no session\");\n                return;\n              }\n              const expiresInTicks = Math.floor((session.expires_at * 1e3 - now) / AUTO_REFRESH_TICK_DURATION_MS);\n              this._debug(\"#_autoRefreshTokenTick()\", `access token expires in ${expiresInTicks} ticks, a tick lasts ${AUTO_REFRESH_TICK_DURATION_MS}ms, refresh threshold is ${AUTO_REFRESH_TICK_THRESHOLD} ticks`);\n              if (expiresInTicks <= AUTO_REFRESH_TICK_THRESHOLD) {\n                await this._callRefreshToken(session.refresh_token);\n              }\n            });\n          } catch (e) {\n            console.error(\"Auto refresh tick failed with error. This is likely a transient error.\", e);\n          }\n        } finally {\n          this._debug(\"#_autoRefreshTokenTick()\", \"end\");\n        }\n      });\n    } catch (e) {\n      if (e.isAcquireTimeout || e instanceof LockAcquireTimeoutError) {\n        this._debug(\"auto refresh token tick lock not available\");\n      } else {\n        throw e;\n      }\n    }\n  }\n  async _handleVisibilityChange() {\n    this._debug(\"#_handleVisibilityChange()\");\n    if (!isBrowser() || !(window === null || window === void 0 ? void 0 : window.addEventListener)) {\n      if (this.autoRefreshToken) {\n        this.startAutoRefresh();\n      }\n      return false;\n    }\n    try {\n      this.visibilityChangedCallback = async () => await this._onVisibilityChanged(false);\n      window === null || window === void 0 ? void 0 : window.addEventListener(\"visibilitychange\", this.visibilityChangedCallback);\n      await this._onVisibilityChanged(true);\n    } catch (error) {\n      console.error(\"_handleVisibilityChange\", error);\n    }\n  }\n  async _onVisibilityChanged(calledFromInitialize) {\n    const methodName = `#_onVisibilityChanged(${calledFromInitialize})`;\n    this._debug(methodName, \"visibilityState\", document.visibilityState);\n    if (document.visibilityState === \"visible\") {\n      if (this.autoRefreshToken) {\n        this._startAutoRefresh();\n      }\n      if (!calledFromInitialize) {\n        await this.initializePromise;\n        await this._acquireLock(-1, async () => {\n          if (document.visibilityState !== \"visible\") {\n            this._debug(methodName, \"acquired the lock to recover the session, but the browser visibilityState is no longer visible, aborting\");\n            return;\n          }\n          await this._recoverAndRefresh();\n        });\n      }\n    } else if (document.visibilityState === \"hidden\") {\n      if (this.autoRefreshToken) {\n        this._stopAutoRefresh();\n      }\n    }\n  }\n  async _getUrlForProvider(url, provider, options) {\n    const urlParams = [`provider=${encodeURIComponent(provider)}`];\n    if (options === null || options === void 0 ? void 0 : options.redirectTo) {\n      urlParams.push(`redirect_to=${encodeURIComponent(options.redirectTo)}`);\n    }\n    if (options === null || options === void 0 ? void 0 : options.scopes) {\n      urlParams.push(`scopes=${encodeURIComponent(options.scopes)}`);\n    }\n    if (this.flowType === \"pkce\") {\n      const [codeChallenge, codeChallengeMethod] = await getCodeChallengeAndMethod(this.storage, this.storageKey);\n      const flowParams = new URLSearchParams({\n        code_challenge: `${encodeURIComponent(codeChallenge)}`,\n        code_challenge_method: `${encodeURIComponent(codeChallengeMethod)}`\n      });\n      urlParams.push(flowParams.toString());\n    }\n    if (options === null || options === void 0 ? void 0 : options.queryParams) {\n      const query = new URLSearchParams(options.queryParams);\n      urlParams.push(query.toString());\n    }\n    if (options === null || options === void 0 ? void 0 : options.skipBrowserRedirect) {\n      urlParams.push(`skip_http_redirect=${options.skipBrowserRedirect}`);\n    }\n    return `${url}?${urlParams.join(\"&\")}`;\n  }\n  async _unenroll(params) {\n    try {\n      return await this._useSession(async (result) => {\n        var _a;\n        const {data: sessionData, error: sessionError} = result;\n        if (sessionError) {\n          return this._returnResult({data: null, error: sessionError});\n        }\n        return await _request(this.fetch, \"DELETE\", `${this.url}/factors/${params.factorId}`, {\n          headers: this.headers,\n          jwt: (_a = sessionData === null || sessionData === void 0 ? void 0 : sessionData.session) === null || _a === void 0 ? void 0 : _a.access_token\n        });\n      });\n    } catch (error) {\n      if (isAuthError(error)) {\n        return this._returnResult({data: null, error});\n      }\n      throw error;\n    }\n  }\n  async _enroll(params) {\n    try {\n      return await this._useSession(async (result) => {\n        var _a, _b;\n        const {data: sessionData, error: sessionError} = result;\n        if (sessionError) {\n          return this._returnResult({data: null, error: sessionError});\n        }\n        const body = Object.assign({friendly_name: params.friendlyName, factor_type: params.factorType}, params.factorType === \"phone\" ? {phone: params.phone} : params.factorType === \"totp\" ? {issuer: params.issuer} : {});\n        const {data, error} = await _request(this.fetch, \"POST\", `${this.url}/factors`, {\n          body,\n          headers: this.headers,\n          jwt: (_a = sessionData === null || sessionData === void 0 ? void 0 : sessionData.session) === null || _a === void 0 ? void 0 : _a.access_token\n        });\n        if (error) {\n          return this._returnResult({data: null, error});\n        }\n        if (params.factorType === \"totp\" && data.type === \"totp\" && ((_b = data === null || data === void 0 ? void 0 : data.totp) === null || _b === void 0 ? void 0 : _b.qr_code)) {\n          data.totp.qr_code = `data:image/svg+xml;utf-8,${data.totp.qr_code}`;\n        }\n        return this._returnResult({data, error: null});\n      });\n    } catch (error) {\n      if (isAuthError(error)) {\n        return this._returnResult({data: null, error});\n      }\n      throw error;\n    }\n  }\n  async _verify(params) {\n    return this._acquireLock(-1, async () => {\n      try {\n        return await this._useSession(async (result) => {\n          var _a;\n          const {data: sessionData, error: sessionError} = result;\n          if (sessionError) {\n            return this._returnResult({data: null, error: sessionError});\n          }\n          const body = Object.assign({challenge_id: params.challengeId}, \"webauthn\" in params ? {\n            webauthn: Object.assign(Object.assign({}, params.webauthn), {credential_response: params.webauthn.type === \"create\" ? serializeCredentialCreationResponse(params.webauthn.credential_response) : serializeCredentialRequestResponse(params.webauthn.credential_response)})\n          } : {code: params.code});\n          const {data, error} = await _request(this.fetch, \"POST\", `${this.url}/factors/${params.factorId}/verify`, {\n            body,\n            headers: this.headers,\n            jwt: (_a = sessionData === null || sessionData === void 0 ? void 0 : sessionData.session) === null || _a === void 0 ? void 0 : _a.access_token\n          });\n          if (error) {\n            return this._returnResult({data: null, error});\n          }\n          await this._saveSession(Object.assign({expires_at: Math.round(Date.now() / 1e3) + data.expires_in}, data));\n          await this._notifyAllSubscribers(\"MFA_CHALLENGE_VERIFIED\", data);\n          return this._returnResult({data, error});\n        });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return this._returnResult({data: null, error});\n        }\n        throw error;\n      }\n    });\n  }\n  async _challenge(params) {\n    return this._acquireLock(-1, async () => {\n      try {\n        return await this._useSession(async (result) => {\n          var _a;\n          const {data: sessionData, error: sessionError} = result;\n          if (sessionError) {\n            return this._returnResult({data: null, error: sessionError});\n          }\n          const response = await _request(this.fetch, \"POST\", `${this.url}/factors/${params.factorId}/challenge`, {\n            body: params,\n            headers: this.headers,\n            jwt: (_a = sessionData === null || sessionData === void 0 ? void 0 : sessionData.session) === null || _a === void 0 ? void 0 : _a.access_token\n          });\n          if (response.error) {\n            return response;\n          }\n          const {data} = response;\n          if (data.type !== \"webauthn\") {\n            return {data, error: null};\n          }\n          switch (data.webauthn.type) {\n            case \"create\":\n              return {\n                data: Object.assign(Object.assign({}, data), {webauthn: Object.assign(Object.assign({}, data.webauthn), {credential_options: Object.assign(Object.assign({}, data.webauthn.credential_options), {publicKey: deserializeCredentialCreationOptions(data.webauthn.credential_options.publicKey)})})}),\n                error: null\n              };\n            case \"request\":\n              return {\n                data: Object.assign(Object.assign({}, data), {webauthn: Object.assign(Object.assign({}, data.webauthn), {credential_options: Object.assign(Object.assign({}, data.webauthn.credential_options), {publicKey: deserializeCredentialRequestOptions(data.webauthn.credential_options.publicKey)})})}),\n                error: null\n              };\n          }\n        });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return this._returnResult({data: null, error});\n        }\n        throw error;\n      }\n    });\n  }\n  async _challengeAndVerify(params) {\n    const {data: challengeData, error: challengeError} = await this._challenge({\n      factorId: params.factorId\n    });\n    if (challengeError) {\n      return this._returnResult({data: null, error: challengeError});\n    }\n    return await this._verify({\n      factorId: params.factorId,\n      challengeId: challengeData.id,\n      code: params.code\n    });\n  }\n  async _listFactors() {\n    var _a;\n    const {data: {user}, error: userError} = await this.getUser();\n    if (userError) {\n      return {data: null, error: userError};\n    }\n    const data = {\n      all: [],\n      phone: [],\n      totp: [],\n      webauthn: []\n    };\n    for (const factor of (_a = user === null || user === void 0 ? void 0 : user.factors) !== null && _a !== void 0 ? _a : []) {\n      data.all.push(factor);\n      if (factor.status === \"verified\") {\n        data[factor.factor_type].push(factor);\n      }\n    }\n    return {\n      data,\n      error: null\n    };\n  }\n  async _getAuthenticatorAssuranceLevel() {\n    var _a, _b;\n    const {data: {session}, error: sessionError} = await this.getSession();\n    if (sessionError) {\n      return this._returnResult({data: null, error: sessionError});\n    }\n    if (!session) {\n      return {\n        data: {currentLevel: null, nextLevel: null, currentAuthenticationMethods: []},\n        error: null\n      };\n    }\n    const {payload} = decodeJWT(session.access_token);\n    let currentLevel = null;\n    if (payload.aal) {\n      currentLevel = payload.aal;\n    }\n    let nextLevel = currentLevel;\n    const verifiedFactors = (_b = (_a = session.user.factors) === null || _a === void 0 ? void 0 : _a.filter((factor) => factor.status === \"verified\")) !== null && _b !== void 0 ? _b : [];\n    if (verifiedFactors.length > 0) {\n      nextLevel = \"aal2\";\n    }\n    const currentAuthenticationMethods = payload.amr || [];\n    return {data: {currentLevel, nextLevel, currentAuthenticationMethods}, error: null};\n  }\n  async _getAuthorizationDetails(authorizationId) {\n    try {\n      return await this._useSession(async (result) => {\n        const {data: {session}, error: sessionError} = result;\n        if (sessionError) {\n          return this._returnResult({data: null, error: sessionError});\n        }\n        if (!session) {\n          return this._returnResult({data: null, error: new AuthSessionMissingError()});\n        }\n        return await _request(this.fetch, \"GET\", `${this.url}/oauth/authorizations/${authorizationId}`, {\n          headers: this.headers,\n          jwt: session.access_token,\n          xform: (data) => ({data, error: null})\n        });\n      });\n    } catch (error) {\n      if (isAuthError(error)) {\n        return this._returnResult({data: null, error});\n      }\n      throw error;\n    }\n  }\n  async _approveAuthorization(authorizationId, options) {\n    try {\n      return await this._useSession(async (result) => {\n        const {data: {session}, error: sessionError} = result;\n        if (sessionError) {\n          return this._returnResult({data: null, error: sessionError});\n        }\n        if (!session) {\n          return this._returnResult({data: null, error: new AuthSessionMissingError()});\n        }\n        const response = await _request(this.fetch, \"POST\", `${this.url}/oauth/authorizations/${authorizationId}/consent`, {\n          headers: this.headers,\n          jwt: session.access_token,\n          body: {action: \"approve\"},\n          xform: (data) => ({data, error: null})\n        });\n        if (response.data && response.data.redirect_url) {\n          if (isBrowser() && !(options === null || options === void 0 ? void 0 : options.skipBrowserRedirect)) {\n            window.location.assign(response.data.redirect_url);\n          }\n        }\n        return response;\n      });\n    } catch (error) {\n      if (isAuthError(error)) {\n        return this._returnResult({data: null, error});\n      }\n      throw error;\n    }\n  }\n  async _denyAuthorization(authorizationId, options) {\n    try {\n      return await this._useSession(async (result) => {\n        const {data: {session}, error: sessionError} = result;\n        if (sessionError) {\n          return this._returnResult({data: null, error: sessionError});\n        }\n        if (!session) {\n          return this._returnResult({data: null, error: new AuthSessionMissingError()});\n        }\n        const response = await _request(this.fetch, \"POST\", `${this.url}/oauth/authorizations/${authorizationId}/consent`, {\n          headers: this.headers,\n          jwt: session.access_token,\n          body: {action: \"deny\"},\n          xform: (data) => ({data, error: null})\n        });\n        if (response.data && response.data.redirect_url) {\n          if (isBrowser() && !(options === null || options === void 0 ? void 0 : options.skipBrowserRedirect)) {\n            window.location.assign(response.data.redirect_url);\n          }\n        }\n        return response;\n      });\n    } catch (error) {\n      if (isAuthError(error)) {\n        return this._returnResult({data: null, error});\n      }\n      throw error;\n    }\n  }\n  async _listOAuthGrants() {\n    try {\n      return await this._useSession(async (result) => {\n        const {data: {session}, error: sessionError} = result;\n        if (sessionError) {\n          return this._returnResult({data: null, error: sessionError});\n        }\n        if (!session) {\n          return this._returnResult({data: null, error: new AuthSessionMissingError()});\n        }\n        return await _request(this.fetch, \"GET\", `${this.url}/user/oauth/grants`, {\n          headers: this.headers,\n          jwt: session.access_token,\n          xform: (data) => ({data, error: null})\n        });\n      });\n    } catch (error) {\n      if (isAuthError(error)) {\n        return this._returnResult({data: null, error});\n      }\n      throw error;\n    }\n  }\n  async _revokeOAuthGrant(options) {\n    try {\n      return await this._useSession(async (result) => {\n        const {data: {session}, error: sessionError} = result;\n        if (sessionError) {\n          return this._returnResult({data: null, error: sessionError});\n        }\n        if (!session) {\n          return this._returnResult({data: null, error: new AuthSessionMissingError()});\n        }\n        await _request(this.fetch, \"DELETE\", `${this.url}/user/oauth/grants`, {\n          headers: this.headers,\n          jwt: session.access_token,\n          query: {client_id: options.clientId},\n          noResolveJson: true\n        });\n        return {data: {}, error: null};\n      });\n    } catch (error) {\n      if (isAuthError(error)) {\n        return this._returnResult({data: null, error});\n      }\n      throw error;\n    }\n  }\n  async fetchJwk(kid, jwks = {keys: []}) {\n    let jwk = jwks.keys.find((key) => key.kid === kid);\n    if (jwk) {\n      return jwk;\n    }\n    const now = Date.now();\n    jwk = this.jwks.keys.find((key) => key.kid === kid);\n    if (jwk && this.jwks_cached_at + JWKS_TTL > now) {\n      return jwk;\n    }\n    const {data, error} = await _request(this.fetch, \"GET\", `${this.url}/.well-known/jwks.json`, {\n      headers: this.headers\n    });\n    if (error) {\n      throw error;\n    }\n    if (!data.keys || data.keys.length === 0) {\n      return null;\n    }\n    this.jwks = data;\n    this.jwks_cached_at = now;\n    jwk = data.keys.find((key) => key.kid === kid);\n    if (!jwk) {\n      return null;\n    }\n    return jwk;\n  }\n  async getClaims(jwt, options = {}) {\n    try {\n      let token = jwt;\n      if (!token) {\n        const {data, error} = await this.getSession();\n        if (error || !data.session) {\n          return this._returnResult({data: null, error});\n        }\n        token = data.session.access_token;\n      }\n      const {header, payload, signature, raw: {header: rawHeader, payload: rawPayload}} = decodeJWT(token);\n      if (!(options === null || options === void 0 ? void 0 : options.allowExpired)) {\n        validateExp(payload.exp);\n      }\n      const signingKey = !header.alg || header.alg.startsWith(\"HS\") || !header.kid || !(\"crypto\" in globalThis && \"subtle\" in globalThis.crypto) ? null : await this.fetchJwk(header.kid, (options === null || options === void 0 ? void 0 : options.keys) ? {keys: options.keys} : options === null || options === void 0 ? void 0 : options.jwks);\n      if (!signingKey) {\n        const {error} = await this.getUser(token);\n        if (error) {\n          throw error;\n        }\n        return {\n          data: {\n            claims: payload,\n            header,\n            signature\n          },\n          error: null\n        };\n      }\n      const algorithm = getAlgorithm(header.alg);\n      const publicKey = await crypto.subtle.importKey(\"jwk\", signingKey, algorithm, true, [\n        \"verify\"\n      ]);\n      const isValid = await crypto.subtle.verify(algorithm, publicKey, signature, stringToUint8Array(`${rawHeader}.${rawPayload}`));\n      if (!isValid) {\n        throw new AuthInvalidJwtError(\"Invalid JWT signature\");\n      }\n      return {\n        data: {\n          claims: payload,\n          header,\n          signature\n        },\n        error: null\n      };\n    } catch (error) {\n      if (isAuthError(error)) {\n        return this._returnResult({data: null, error});\n      }\n      throw error;\n    }\n  }\n}\nGoTrueClient.nextInstanceID = {};\nconst AuthAdminApi = GoTrueAdminApi;\nconst AuthClient = GoTrueClient;\nexport {AuthAdminApi, AuthApiError, AuthClient, AuthError, AuthImplicitGrantRedirectError, AuthInvalidCredentialsError, AuthInvalidJwtError, AuthInvalidTokenResponseError, AuthPKCECodeVerifierMissingError, AuthPKCEGrantCodeExchangeError, AuthRetryableFetchError, AuthSessionMissingError, AuthUnknownError, AuthWeakPasswordError, CustomAuthError, GoTrueAdminApi, GoTrueClient, NavigatorLockAcquireTimeoutError, SIGN_OUT_SCOPES, isAuthApiError, isAuthError, isAuthImplicitGrantRedirectError, isAuthPKCECodeVerifierMissingError, isAuthRetryableFetchError, isAuthSessionMissingError, isAuthWeakPasswordError, internals as lockInternals, navigatorLock, processLock};\nexport default null;\n","import {p as process} from \"../common/process-2545f00a.js\";\nimport {FunctionsClient} from \"/-/@supabase/functions-js@v2.89.0-VPdSgQggOqAfkKQ1QQKt/dist=es2019,mode=imports/optimized/@supabase/functions-js.js\";\nexport {FunctionRegion, FunctionsError, FunctionsFetchError, FunctionsHttpError, FunctionsRelayError} from \"/-/@supabase/functions-js@v2.89.0-VPdSgQggOqAfkKQ1QQKt/dist=es2019,mode=imports/optimized/@supabase/functions-js.js\";\nimport {PostgrestClient} from \"/-/@supabase/postgrest-js@v2.89.0-nIVrTazQRvb9ArOeHqWq/dist=es2019,mode=imports/optimized/@supabase/postgrest-js.js\";\nexport {PostgrestError} from \"/-/@supabase/postgrest-js@v2.89.0-nIVrTazQRvb9ArOeHqWq/dist=es2019,mode=imports/optimized/@supabase/postgrest-js.js\";\nimport {RealtimeClient} from \"/-/@supabase/realtime-js@v2.89.0-kSnamBvKNTnn5J9v6DZ0/dist=es2019,mode=imports/optimized/@supabase/realtime-js.js\";\nexport * from \"/-/@supabase/realtime-js@v2.89.0-kSnamBvKNTnn5J9v6DZ0/dist=es2019,mode=imports/optimized/@supabase/realtime-js.js\";\nimport {StorageClient} from \"/-/@supabase/storage-js@v2.89.0-lA6hoSs9hLGCVTHsQfe8/dist=es2019,mode=imports/optimized/@supabase/storage-js.js\";\nimport {AuthClient} from \"/-/@supabase/auth-js@v2.89.0-tpOqWvH8EAX8bMbNapEL/dist=es2019,mode=imports/optimized/@supabase/auth-js.js\";\nexport * from \"/-/@supabase/auth-js@v2.89.0-tpOqWvH8EAX8bMbNapEL/dist=es2019,mode=imports/optimized/@supabase/auth-js.js\";\nconst version = \"2.89.0\";\nlet JS_ENV = \"\";\nif (typeof Deno !== \"undefined\")\n  JS_ENV = \"deno\";\nelse if (typeof document !== \"undefined\")\n  JS_ENV = \"web\";\nelse if (typeof navigator !== \"undefined\" && navigator.product === \"ReactNative\")\n  JS_ENV = \"react-native\";\nelse\n  JS_ENV = \"node\";\nconst DEFAULT_HEADERS = {\"X-Client-Info\": `supabase-js-${JS_ENV}/${version}`};\nconst DEFAULT_GLOBAL_OPTIONS = {headers: DEFAULT_HEADERS};\nconst DEFAULT_DB_OPTIONS = {schema: \"public\"};\nconst DEFAULT_AUTH_OPTIONS = {\n  autoRefreshToken: true,\n  persistSession: true,\n  detectSessionInUrl: true,\n  flowType: \"implicit\"\n};\nconst DEFAULT_REALTIME_OPTIONS = {};\nfunction _typeof(o) {\n  \"@babel/helpers - typeof\";\n  return _typeof = typeof Symbol == \"function\" && typeof Symbol.iterator == \"symbol\" ? function(o$1) {\n    return typeof o$1;\n  } : function(o$1) {\n    return o$1 && typeof Symbol == \"function\" && o$1.constructor === Symbol && o$1 !== Symbol.prototype ? \"symbol\" : typeof o$1;\n  }, _typeof(o);\n}\nfunction toPrimitive(t, r) {\n  if (_typeof(t) != \"object\" || !t)\n    return t;\n  var e = t[Symbol.toPrimitive];\n  if (e !== void 0) {\n    var i = e.call(t, r || \"default\");\n    if (_typeof(i) != \"object\")\n      return i;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (r === \"string\" ? String : Number)(t);\n}\nfunction toPropertyKey(t) {\n  var i = toPrimitive(t, \"string\");\n  return _typeof(i) == \"symbol\" ? i : i + \"\";\n}\nfunction _defineProperty(e, r, t) {\n  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n    value: t,\n    enumerable: true,\n    configurable: true,\n    writable: true\n  }) : e[r] = t, e;\n}\nfunction ownKeys(e, r) {\n  var t = Object.keys(e);\n  if (Object.getOwnPropertySymbols) {\n    var o = Object.getOwnPropertySymbols(e);\n    r && (o = o.filter(function(r$1) {\n      return Object.getOwnPropertyDescriptor(e, r$1).enumerable;\n    })), t.push.apply(t, o);\n  }\n  return t;\n}\nfunction _objectSpread2(e) {\n  for (var r = 1; r < arguments.length; r++) {\n    var t = arguments[r] != null ? arguments[r] : {};\n    r % 2 ? ownKeys(Object(t), true).forEach(function(r$1) {\n      _defineProperty(e, r$1, t[r$1]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r$1) {\n      Object.defineProperty(e, r$1, Object.getOwnPropertyDescriptor(t, r$1));\n    });\n  }\n  return e;\n}\nconst resolveFetch = (customFetch) => {\n  if (customFetch)\n    return (...args) => customFetch(...args);\n  return (...args) => fetch(...args);\n};\nconst resolveHeadersConstructor = () => {\n  return Headers;\n};\nconst fetchWithAuth = (supabaseKey, getAccessToken, customFetch) => {\n  const fetch$1 = resolveFetch(customFetch);\n  const HeadersConstructor = resolveHeadersConstructor();\n  return async (input, init) => {\n    var _await$getAccessToken;\n    const accessToken = (_await$getAccessToken = await getAccessToken()) !== null && _await$getAccessToken !== void 0 ? _await$getAccessToken : supabaseKey;\n    let headers = new HeadersConstructor(init === null || init === void 0 ? void 0 : init.headers);\n    if (!headers.has(\"apikey\"))\n      headers.set(\"apikey\", supabaseKey);\n    if (!headers.has(\"Authorization\"))\n      headers.set(\"Authorization\", `Bearer ${accessToken}`);\n    return fetch$1(input, _objectSpread2(_objectSpread2({}, init), {}, {headers}));\n  };\n};\nfunction ensureTrailingSlash(url) {\n  return url.endsWith(\"/\") ? url : url + \"/\";\n}\nfunction applySettingDefaults(options, defaults) {\n  var _DEFAULT_GLOBAL_OPTIO, _globalOptions$header;\n  const {db: dbOptions, auth: authOptions, realtime: realtimeOptions, global: globalOptions} = options;\n  const {db: DEFAULT_DB_OPTIONS$1, auth: DEFAULT_AUTH_OPTIONS$1, realtime: DEFAULT_REALTIME_OPTIONS$1, global: DEFAULT_GLOBAL_OPTIONS$1} = defaults;\n  const result = {\n    db: _objectSpread2(_objectSpread2({}, DEFAULT_DB_OPTIONS$1), dbOptions),\n    auth: _objectSpread2(_objectSpread2({}, DEFAULT_AUTH_OPTIONS$1), authOptions),\n    realtime: _objectSpread2(_objectSpread2({}, DEFAULT_REALTIME_OPTIONS$1), realtimeOptions),\n    storage: {},\n    global: _objectSpread2(_objectSpread2(_objectSpread2({}, DEFAULT_GLOBAL_OPTIONS$1), globalOptions), {}, {headers: _objectSpread2(_objectSpread2({}, (_DEFAULT_GLOBAL_OPTIO = DEFAULT_GLOBAL_OPTIONS$1 === null || DEFAULT_GLOBAL_OPTIONS$1 === void 0 ? void 0 : DEFAULT_GLOBAL_OPTIONS$1.headers) !== null && _DEFAULT_GLOBAL_OPTIO !== void 0 ? _DEFAULT_GLOBAL_OPTIO : {}), (_globalOptions$header = globalOptions === null || globalOptions === void 0 ? void 0 : globalOptions.headers) !== null && _globalOptions$header !== void 0 ? _globalOptions$header : {})}),\n    accessToken: async () => \"\"\n  };\n  if (options.accessToken)\n    result.accessToken = options.accessToken;\n  else\n    delete result.accessToken;\n  return result;\n}\nfunction validateSupabaseUrl(supabaseUrl) {\n  const trimmedUrl = supabaseUrl === null || supabaseUrl === void 0 ? void 0 : supabaseUrl.trim();\n  if (!trimmedUrl)\n    throw new Error(\"supabaseUrl is required.\");\n  if (!trimmedUrl.match(/^https?:\\/\\//i))\n    throw new Error(\"Invalid supabaseUrl: Must be a valid HTTP or HTTPS URL.\");\n  try {\n    return new URL(ensureTrailingSlash(trimmedUrl));\n  } catch (_unused) {\n    throw Error(\"Invalid supabaseUrl: Provided URL is malformed.\");\n  }\n}\nvar SupabaseAuthClient = class extends AuthClient {\n  constructor(options) {\n    super(options);\n  }\n};\nvar SupabaseClient = class {\n  constructor(supabaseUrl, supabaseKey, options) {\n    var _settings$auth$storag, _settings$global$head;\n    this.supabaseUrl = supabaseUrl;\n    this.supabaseKey = supabaseKey;\n    const baseUrl = validateSupabaseUrl(supabaseUrl);\n    if (!supabaseKey)\n      throw new Error(\"supabaseKey is required.\");\n    this.realtimeUrl = new URL(\"realtime/v1\", baseUrl);\n    this.realtimeUrl.protocol = this.realtimeUrl.protocol.replace(\"http\", \"ws\");\n    this.authUrl = new URL(\"auth/v1\", baseUrl);\n    this.storageUrl = new URL(\"storage/v1\", baseUrl);\n    this.functionsUrl = new URL(\"functions/v1\", baseUrl);\n    const defaultStorageKey = `sb-${baseUrl.hostname.split(\".\")[0]}-auth-token`;\n    const DEFAULTS = {\n      db: DEFAULT_DB_OPTIONS,\n      realtime: DEFAULT_REALTIME_OPTIONS,\n      auth: _objectSpread2(_objectSpread2({}, DEFAULT_AUTH_OPTIONS), {}, {storageKey: defaultStorageKey}),\n      global: DEFAULT_GLOBAL_OPTIONS\n    };\n    const settings = applySettingDefaults(options !== null && options !== void 0 ? options : {}, DEFAULTS);\n    this.storageKey = (_settings$auth$storag = settings.auth.storageKey) !== null && _settings$auth$storag !== void 0 ? _settings$auth$storag : \"\";\n    this.headers = (_settings$global$head = settings.global.headers) !== null && _settings$global$head !== void 0 ? _settings$global$head : {};\n    if (!settings.accessToken) {\n      var _settings$auth;\n      this.auth = this._initSupabaseAuthClient((_settings$auth = settings.auth) !== null && _settings$auth !== void 0 ? _settings$auth : {}, this.headers, settings.global.fetch);\n    } else {\n      this.accessToken = settings.accessToken;\n      this.auth = new Proxy({}, {get: (_, prop) => {\n        throw new Error(`@supabase/supabase-js: Supabase Client is configured with the accessToken option, accessing supabase.auth.${String(prop)} is not possible`);\n      }});\n    }\n    this.fetch = fetchWithAuth(supabaseKey, this._getAccessToken.bind(this), settings.global.fetch);\n    this.realtime = this._initRealtimeClient(_objectSpread2({\n      headers: this.headers,\n      accessToken: this._getAccessToken.bind(this)\n    }, settings.realtime));\n    if (this.accessToken)\n      this.accessToken().then((token) => this.realtime.setAuth(token)).catch((e) => console.warn(\"Failed to set initial Realtime auth token:\", e));\n    this.rest = new PostgrestClient(new URL(\"rest/v1\", baseUrl).href, {\n      headers: this.headers,\n      schema: settings.db.schema,\n      fetch: this.fetch\n    });\n    this.storage = new StorageClient(this.storageUrl.href, this.headers, this.fetch, options === null || options === void 0 ? void 0 : options.storage);\n    if (!settings.accessToken)\n      this._listenForAuthEvents();\n  }\n  get functions() {\n    return new FunctionsClient(this.functionsUrl.href, {\n      headers: this.headers,\n      customFetch: this.fetch\n    });\n  }\n  from(relation) {\n    return this.rest.from(relation);\n  }\n  schema(schema) {\n    return this.rest.schema(schema);\n  }\n  rpc(fn, args = {}, options = {\n    head: false,\n    get: false,\n    count: void 0\n  }) {\n    return this.rest.rpc(fn, args, options);\n  }\n  channel(name, opts = {config: {}}) {\n    return this.realtime.channel(name, opts);\n  }\n  getChannels() {\n    return this.realtime.getChannels();\n  }\n  removeChannel(channel) {\n    return this.realtime.removeChannel(channel);\n  }\n  removeAllChannels() {\n    return this.realtime.removeAllChannels();\n  }\n  async _getAccessToken() {\n    var _this = this;\n    var _data$session$access_, _data$session;\n    if (_this.accessToken)\n      return await _this.accessToken();\n    const {data} = await _this.auth.getSession();\n    return (_data$session$access_ = (_data$session = data.session) === null || _data$session === void 0 ? void 0 : _data$session.access_token) !== null && _data$session$access_ !== void 0 ? _data$session$access_ : _this.supabaseKey;\n  }\n  _initSupabaseAuthClient({autoRefreshToken, persistSession, detectSessionInUrl, storage, userStorage, storageKey, flowType, lock, debug, throwOnError}, headers, fetch$1) {\n    const authHeaders = {\n      Authorization: `Bearer ${this.supabaseKey}`,\n      apikey: `${this.supabaseKey}`\n    };\n    return new SupabaseAuthClient({\n      url: this.authUrl.href,\n      headers: _objectSpread2(_objectSpread2({}, authHeaders), headers),\n      storageKey,\n      autoRefreshToken,\n      persistSession,\n      detectSessionInUrl,\n      storage,\n      userStorage,\n      flowType,\n      lock,\n      debug,\n      throwOnError,\n      fetch: fetch$1,\n      hasCustomAuthorizationHeader: Object.keys(this.headers).some((key) => key.toLowerCase() === \"authorization\")\n    });\n  }\n  _initRealtimeClient(options) {\n    return new RealtimeClient(this.realtimeUrl.href, _objectSpread2(_objectSpread2({}, options), {}, {params: _objectSpread2(_objectSpread2({}, {apikey: this.supabaseKey}), options === null || options === void 0 ? void 0 : options.params)}));\n  }\n  _listenForAuthEvents() {\n    return this.auth.onAuthStateChange((event, session) => {\n      this._handleTokenChanged(event, \"CLIENT\", session === null || session === void 0 ? void 0 : session.access_token);\n    });\n  }\n  _handleTokenChanged(event, source, token) {\n    if ((event === \"TOKEN_REFRESHED\" || event === \"SIGNED_IN\") && this.changedAccessToken !== token) {\n      this.changedAccessToken = token;\n      this.realtime.setAuth(token);\n    } else if (event === \"SIGNED_OUT\") {\n      this.realtime.setAuth();\n      if (source == \"STORAGE\")\n        this.auth.signOut();\n      this.changedAccessToken = void 0;\n    }\n  }\n};\nconst createClient = (supabaseUrl, supabaseKey, options) => {\n  return new SupabaseClient(supabaseUrl, supabaseKey, options);\n};\nfunction shouldShowDeprecationWarning() {\n  if (typeof window !== \"undefined\")\n    return false;\n  if (typeof process === \"undefined\")\n    return false;\n  const processVersion = process[\"version\"];\n  const versionMatch = processVersion.match(/^v(\\d+)\\./);\n  if (!versionMatch)\n    return false;\n  return parseInt(versionMatch[1], 10) <= 18;\n}\nif (shouldShowDeprecationWarning())\n  console.warn(\"\\u26A0\\uFE0F  Node.js 18 and below are deprecated and will no longer be supported in future versions of @supabase/supabase-js. Please upgrade to Node.js 20 or later. For more information, visit: https://github.com/orgs/supabase/discussions/37217\");\nexport {SupabaseClient, createClient};\nexport default null;\n","function getDefaultExportFromCjs(x) {\n  return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, \"default\") ? x[\"default\"] : x;\n}\nfunction createCommonjsModule(fn, basedir, module) {\n  return module = {\n    path: basedir,\n    exports: {},\n    require: function(path, base) {\n      return commonjsRequire(path, base === void 0 || base === null ? module.path : base);\n    }\n  }, fn(module, module.exports), module.exports;\n}\nfunction commonjsRequire() {\n  throw new Error(\"Dynamic requires are not currently supported by @rollup/plugin-commonjs\");\n}\nvar dist = createCommonjsModule(function(module, exports) {\n  Object.defineProperty(exports, \"__esModule\", {value: true});\n  exports.parseCookie = parseCookie2;\n  exports.parse = parseCookie2;\n  exports.stringifyCookie = stringifyCookie2;\n  exports.stringifySetCookie = stringifySetCookie2;\n  exports.serialize = stringifySetCookie2;\n  exports.parseSetCookie = parseSetCookie2;\n  exports.stringifySetCookie = stringifySetCookie2;\n  exports.serialize = stringifySetCookie2;\n  const cookieNameRegExp = /^[\\u0021-\\u003A\\u003C\\u003E-\\u007E]+$/;\n  const cookieValueRegExp = /^[\\u0021-\\u003A\\u003C-\\u007E]*$/;\n  const domainValueRegExp = /^([.]?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)([.][a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*$/i;\n  const pathValueRegExp = /^[\\u0020-\\u003A\\u003D-\\u007E]*$/;\n  const maxAgeRegExp = /^-?\\d+$/;\n  const __toString = Object.prototype.toString;\n  const NullObject = /* @__PURE__ */ (() => {\n    const C = function() {\n    };\n    C.prototype = Object.create(null);\n    return C;\n  })();\n  function parseCookie2(str, options) {\n    const obj = new NullObject();\n    const len = str.length;\n    if (len < 2)\n      return obj;\n    const dec = (options == null ? void 0 : options.decode) || decode;\n    let index = 0;\n    do {\n      const eqIdx = eqIndex(str, index, len);\n      if (eqIdx === -1)\n        break;\n      const endIdx = endIndex(str, index, len);\n      if (eqIdx > endIdx) {\n        index = str.lastIndexOf(\";\", eqIdx - 1) + 1;\n        continue;\n      }\n      const key = valueSlice(str, index, eqIdx);\n      if (obj[key] === void 0) {\n        obj[key] = dec(valueSlice(str, eqIdx + 1, endIdx));\n      }\n      index = endIdx + 1;\n    } while (index < len);\n    return obj;\n  }\n  function stringifyCookie2(cookie, options) {\n    const enc = (options == null ? void 0 : options.encode) || encodeURIComponent;\n    const cookieStrings = [];\n    for (const name of Object.keys(cookie)) {\n      const val = cookie[name];\n      if (val === void 0)\n        continue;\n      if (!cookieNameRegExp.test(name)) {\n        throw new TypeError(`cookie name is invalid: ${name}`);\n      }\n      const value = enc(val);\n      if (!cookieValueRegExp.test(value)) {\n        throw new TypeError(`cookie val is invalid: ${val}`);\n      }\n      cookieStrings.push(`${name}=${value}`);\n    }\n    return cookieStrings.join(\"; \");\n  }\n  function stringifySetCookie2(_name, _val, _opts) {\n    const cookie = typeof _name === \"object\" ? _name : {..._opts, name: _name, value: String(_val)};\n    const options = typeof _val === \"object\" ? _val : _opts;\n    const enc = (options == null ? void 0 : options.encode) || encodeURIComponent;\n    if (!cookieNameRegExp.test(cookie.name)) {\n      throw new TypeError(`argument name is invalid: ${cookie.name}`);\n    }\n    const value = cookie.value ? enc(cookie.value) : \"\";\n    if (!cookieValueRegExp.test(value)) {\n      throw new TypeError(`argument val is invalid: ${cookie.value}`);\n    }\n    let str = cookie.name + \"=\" + value;\n    if (cookie.maxAge !== void 0) {\n      if (!Number.isInteger(cookie.maxAge)) {\n        throw new TypeError(`option maxAge is invalid: ${cookie.maxAge}`);\n      }\n      str += \"; Max-Age=\" + cookie.maxAge;\n    }\n    if (cookie.domain) {\n      if (!domainValueRegExp.test(cookie.domain)) {\n        throw new TypeError(`option domain is invalid: ${cookie.domain}`);\n      }\n      str += \"; Domain=\" + cookie.domain;\n    }\n    if (cookie.path) {\n      if (!pathValueRegExp.test(cookie.path)) {\n        throw new TypeError(`option path is invalid: ${cookie.path}`);\n      }\n      str += \"; Path=\" + cookie.path;\n    }\n    if (cookie.expires) {\n      if (!isDate(cookie.expires) || !Number.isFinite(cookie.expires.valueOf())) {\n        throw new TypeError(`option expires is invalid: ${cookie.expires}`);\n      }\n      str += \"; Expires=\" + cookie.expires.toUTCString();\n    }\n    if (cookie.httpOnly) {\n      str += \"; HttpOnly\";\n    }\n    if (cookie.secure) {\n      str += \"; Secure\";\n    }\n    if (cookie.partitioned) {\n      str += \"; Partitioned\";\n    }\n    if (cookie.priority) {\n      const priority = typeof cookie.priority === \"string\" ? cookie.priority.toLowerCase() : void 0;\n      switch (priority) {\n        case \"low\":\n          str += \"; Priority=Low\";\n          break;\n        case \"medium\":\n          str += \"; Priority=Medium\";\n          break;\n        case \"high\":\n          str += \"; Priority=High\";\n          break;\n        default:\n          throw new TypeError(`option priority is invalid: ${cookie.priority}`);\n      }\n    }\n    if (cookie.sameSite) {\n      const sameSite = typeof cookie.sameSite === \"string\" ? cookie.sameSite.toLowerCase() : cookie.sameSite;\n      switch (sameSite) {\n        case true:\n        case \"strict\":\n          str += \"; SameSite=Strict\";\n          break;\n        case \"lax\":\n          str += \"; SameSite=Lax\";\n          break;\n        case \"none\":\n          str += \"; SameSite=None\";\n          break;\n        default:\n          throw new TypeError(`option sameSite is invalid: ${cookie.sameSite}`);\n      }\n    }\n    return str;\n  }\n  function parseSetCookie2(str, options) {\n    const dec = (options == null ? void 0 : options.decode) || decode;\n    const len = str.length;\n    const endIdx = endIndex(str, 0, len);\n    const eqIdx = eqIndex(str, 0, endIdx);\n    const setCookie = eqIdx === -1 ? {name: \"\", value: dec(valueSlice(str, 0, endIdx))} : {\n      name: valueSlice(str, 0, eqIdx),\n      value: dec(valueSlice(str, eqIdx + 1, endIdx))\n    };\n    let index = endIdx + 1;\n    while (index < len) {\n      const endIdx2 = endIndex(str, index, len);\n      const eqIdx2 = eqIndex(str, index, endIdx2);\n      const attr = eqIdx2 === -1 ? valueSlice(str, index, endIdx2) : valueSlice(str, index, eqIdx2);\n      const val = eqIdx2 === -1 ? void 0 : valueSlice(str, eqIdx2 + 1, endIdx2);\n      switch (attr.toLowerCase()) {\n        case \"httponly\":\n          setCookie.httpOnly = true;\n          break;\n        case \"secure\":\n          setCookie.secure = true;\n          break;\n        case \"partitioned\":\n          setCookie.partitioned = true;\n          break;\n        case \"domain\":\n          setCookie.domain = val;\n          break;\n        case \"path\":\n          setCookie.path = val;\n          break;\n        case \"max-age\":\n          if (val && maxAgeRegExp.test(val))\n            setCookie.maxAge = Number(val);\n          break;\n        case \"expires\":\n          if (!val)\n            break;\n          const date = new Date(val);\n          if (Number.isFinite(date.valueOf()))\n            setCookie.expires = date;\n          break;\n        case \"priority\":\n          if (!val)\n            break;\n          const priority = val.toLowerCase();\n          if (priority === \"low\" || priority === \"medium\" || priority === \"high\") {\n            setCookie.priority = priority;\n          }\n          break;\n        case \"samesite\":\n          if (!val)\n            break;\n          const sameSite = val.toLowerCase();\n          if (sameSite === \"lax\" || sameSite === \"strict\" || sameSite === \"none\") {\n            setCookie.sameSite = sameSite;\n          }\n          break;\n      }\n      index = endIdx2 + 1;\n    }\n    return setCookie;\n  }\n  function endIndex(str, min, len) {\n    const index = str.indexOf(\";\", min);\n    return index === -1 ? len : index;\n  }\n  function eqIndex(str, min, max) {\n    const index = str.indexOf(\"=\", min);\n    return index < max ? index : -1;\n  }\n  function valueSlice(str, min, max) {\n    let start = min;\n    let end = max;\n    do {\n      const code = str.charCodeAt(start);\n      if (code !== 32 && code !== 9)\n        break;\n    } while (++start < end);\n    while (end > start) {\n      const code = str.charCodeAt(end - 1);\n      if (code !== 32 && code !== 9)\n        break;\n      end--;\n    }\n    return str.slice(start, end);\n  }\n  function decode(str) {\n    if (str.indexOf(\"%\") === -1)\n      return str;\n    try {\n      return decodeURIComponent(str);\n    } catch (e) {\n      return str;\n    }\n  }\n  function isDate(val) {\n    return __toString.call(val) === \"[object Date]\";\n  }\n});\nvar __pika_web_default_export_for_treeshaking__ = /* @__PURE__ */ getDefaultExportFromCjs(dist);\nexport default __pika_web_default_export_for_treeshaking__;\nvar parse = dist.parse;\nvar parseCookie = dist.parseCookie;\nvar parseSetCookie = dist.parseSetCookie;\nvar serialize = dist.serialize;\nvar stringifyCookie = dist.stringifyCookie;\nvar stringifySetCookie = dist.stringifySetCookie;\nexport {dist as __moduleExports, parse, parseCookie, parseSetCookie, serialize, stringifyCookie, stringifySetCookie};\n","var _a;\nimport {createClient} from \"/-/@supabase/supabase-js@v2.89.0-VPq8vSMLrgfaWsifSWsm/dist=es2019,mode=imports/optimized/@supabase/supabase-js.js\";\nimport __commonjs_module0 from \"/-/cookie@v1.1.1-hJ7DLLyYXBQaJ0ibmXVz/dist=es2019,mode=imports/optimized/cookie.js\";\nconst {parse: parse$1} = __commonjs_module0;\nconst {serialize: serialize$1} = __commonjs_module0;\n;\nfunction defaultSetTimout() {\n  throw new Error(\"setTimeout has not been defined\");\n}\nfunction defaultClearTimeout() {\n  throw new Error(\"clearTimeout has not been defined\");\n}\nvar cachedSetTimeout = defaultSetTimout;\nvar cachedClearTimeout = defaultClearTimeout;\nvar globalContext;\nif (typeof window !== \"undefined\") {\n  globalContext = window;\n} else if (typeof self !== \"undefined\") {\n  globalContext = self;\n} else {\n  globalContext = {};\n}\nif (typeof globalContext.setTimeout === \"function\") {\n  cachedSetTimeout = setTimeout;\n}\nif (typeof globalContext.clearTimeout === \"function\") {\n  cachedClearTimeout = clearTimeout;\n}\nfunction runTimeout(fun) {\n  if (cachedSetTimeout === setTimeout) {\n    return setTimeout(fun, 0);\n  }\n  if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n    cachedSetTimeout = setTimeout;\n    return setTimeout(fun, 0);\n  }\n  try {\n    return cachedSetTimeout(fun, 0);\n  } catch (e) {\n    try {\n      return cachedSetTimeout.call(null, fun, 0);\n    } catch (e2) {\n      return cachedSetTimeout.call(this, fun, 0);\n    }\n  }\n}\nfunction runClearTimeout(marker) {\n  if (cachedClearTimeout === clearTimeout) {\n    return clearTimeout(marker);\n  }\n  if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n    cachedClearTimeout = clearTimeout;\n    return clearTimeout(marker);\n  }\n  try {\n    return cachedClearTimeout(marker);\n  } catch (e) {\n    try {\n      return cachedClearTimeout.call(null, marker);\n    } catch (e2) {\n      return cachedClearTimeout.call(this, marker);\n    }\n  }\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\nfunction cleanUpNextTick() {\n  if (!draining || !currentQueue) {\n    return;\n  }\n  draining = false;\n  if (currentQueue.length) {\n    queue = currentQueue.concat(queue);\n  } else {\n    queueIndex = -1;\n  }\n  if (queue.length) {\n    drainQueue();\n  }\n}\nfunction drainQueue() {\n  if (draining) {\n    return;\n  }\n  var timeout = runTimeout(cleanUpNextTick);\n  draining = true;\n  var len = queue.length;\n  while (len) {\n    currentQueue = queue;\n    queue = [];\n    while (++queueIndex < len) {\n      if (currentQueue) {\n        currentQueue[queueIndex].run();\n      }\n    }\n    queueIndex = -1;\n    len = queue.length;\n  }\n  currentQueue = null;\n  draining = false;\n  runClearTimeout(timeout);\n}\nfunction nextTick(fun) {\n  var args = new Array(arguments.length - 1);\n  if (arguments.length > 1) {\n    for (var i = 1; i < arguments.length; i++) {\n      args[i - 1] = arguments[i];\n    }\n  }\n  queue.push(new Item(fun, args));\n  if (queue.length === 1 && !draining) {\n    runTimeout(drainQueue);\n  }\n}\nfunction Item(fun, array) {\n  this.fun = fun;\n  this.array = array;\n}\nItem.prototype.run = function() {\n  this.fun.apply(null, this.array);\n};\nvar title = \"browser\";\nvar platform = \"browser\";\nvar browser = true;\nvar argv = [];\nvar version = \"\";\nvar versions = {};\nvar release = {};\nvar config = {};\nfunction noop() {\n}\nvar on = noop;\nvar addListener = noop;\nvar once = noop;\nvar off = noop;\nvar removeListener = noop;\nvar removeAllListeners = noop;\nvar emit = noop;\nfunction binding(name) {\n  throw new Error(\"process.binding is not supported\");\n}\nfunction cwd() {\n  return \"/\";\n}\nfunction chdir(dir) {\n  throw new Error(\"process.chdir is not supported\");\n}\nfunction umask() {\n  return 0;\n}\nvar performance = globalContext.performance || {};\nvar performanceNow = performance.now || performance.mozNow || performance.msNow || performance.oNow || performance.webkitNow || function() {\n  return new Date().getTime();\n};\nfunction hrtime(previousTimestamp) {\n  var clocktime = performanceNow.call(performance) * 1e-3;\n  var seconds = Math.floor(clocktime);\n  var nanoseconds = Math.floor(clocktime % 1 * 1e9);\n  if (previousTimestamp) {\n    seconds = seconds - previousTimestamp[0];\n    nanoseconds = nanoseconds - previousTimestamp[1];\n    if (nanoseconds < 0) {\n      seconds--;\n      nanoseconds += 1e9;\n    }\n  }\n  return [seconds, nanoseconds];\n}\nvar startTime = new Date();\nfunction uptime() {\n  var currentTime = new Date();\n  var dif = currentTime - startTime;\n  return dif / 1e3;\n}\nvar process = {\n  nextTick,\n  title,\n  browser,\n  env: {NODE_ENV: \"production\"},\n  argv,\n  version,\n  versions,\n  on,\n  addListener,\n  once,\n  off,\n  removeListener,\n  removeAllListeners,\n  emit,\n  binding,\n  cwd,\n  chdir,\n  umask,\n  hrtime,\n  platform,\n  release,\n  config,\n  uptime\n};\nconst VERSION = \"0.8.0\";\nconst parse = parse$1;\nconst serialize = serialize$1;\nfunction parseCookieHeader(header) {\n  const parsed = parse$1(header);\n  return Object.keys(parsed != null ? parsed : {}).map((name) => ({\n    name,\n    value: parsed[name]\n  }));\n}\nfunction serializeCookieHeader(name, value, options) {\n  return serialize$1(name, value, options);\n}\nfunction isBrowser() {\n  return typeof window !== \"undefined\" && typeof window.document !== \"undefined\";\n}\nfunction memoryLocalStorageAdapter(store = {}) {\n  return {\n    getItem: (key) => {\n      return store[key] || null;\n    },\n    setItem: (key, value) => {\n      store[key] = value;\n    },\n    removeItem: (key) => {\n      delete store[key];\n    }\n  };\n}\nconst DEFAULT_COOKIE_OPTIONS = {\n  path: \"/\",\n  sameSite: \"lax\",\n  httpOnly: false,\n  maxAge: 400 * 24 * 60 * 60\n};\nconst MAX_CHUNK_SIZE = 3180;\nconst CHUNK_LIKE_REGEX = /^(.*)[.](0|[1-9][0-9]*)$/;\nfunction isChunkLike(cookieName, key) {\n  if (cookieName === key) {\n    return true;\n  }\n  const chunkLike = cookieName.match(CHUNK_LIKE_REGEX);\n  if (chunkLike && chunkLike[1] === key) {\n    return true;\n  }\n  return false;\n}\nfunction createChunks(key, value, chunkSize) {\n  const resolvedChunkSize = chunkSize != null ? chunkSize : MAX_CHUNK_SIZE;\n  let encodedValue = encodeURIComponent(value);\n  if (encodedValue.length <= resolvedChunkSize) {\n    return [{name: key, value}];\n  }\n  const chunks = [];\n  while (encodedValue.length > 0) {\n    let encodedChunkHead = encodedValue.slice(0, resolvedChunkSize);\n    const lastEscapePos = encodedChunkHead.lastIndexOf(\"%\");\n    if (lastEscapePos > resolvedChunkSize - 3) {\n      encodedChunkHead = encodedChunkHead.slice(0, lastEscapePos);\n    }\n    let valueHead = \"\";\n    while (encodedChunkHead.length > 0) {\n      try {\n        valueHead = decodeURIComponent(encodedChunkHead);\n        break;\n      } catch (error) {\n        if (error instanceof URIError && encodedChunkHead.at(-3) === \"%\" && encodedChunkHead.length > 3) {\n          encodedChunkHead = encodedChunkHead.slice(0, encodedChunkHead.length - 3);\n        } else {\n          throw error;\n        }\n      }\n    }\n    chunks.push(valueHead);\n    encodedValue = encodedValue.slice(encodedChunkHead.length);\n  }\n  return chunks.map((value2, i) => ({name: `${key}.${i}`, value: value2}));\n}\nasync function combineChunks(key, retrieveChunk) {\n  const value = await retrieveChunk(key);\n  if (value) {\n    return value;\n  }\n  let values = [];\n  for (let i = 0; ; i++) {\n    const chunkName = `${key}.${i}`;\n    const chunk = await retrieveChunk(chunkName);\n    if (!chunk) {\n      break;\n    }\n    values.push(chunk);\n  }\n  if (values.length > 0) {\n    return values.join(\"\");\n  }\n  return null;\n}\nasync function deleteChunks(key, retrieveChunk, removeChunk) {\n  const value = await retrieveChunk(key);\n  if (value) {\n    await removeChunk(key);\n  }\n  for (let i = 0; ; i++) {\n    const chunkName = `${key}.${i}`;\n    const chunk = await retrieveChunk(chunkName);\n    if (!chunk) {\n      break;\n    }\n    await removeChunk(chunkName);\n  }\n}\nconst TO_BASE64URL = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_\".split(\"\");\nconst IGNORE_BASE64URL = \" \t\\n\\r=\".split(\"\");\nconst FROM_BASE64URL = (() => {\n  const charMap = new Array(128);\n  for (let i = 0; i < charMap.length; i += 1) {\n    charMap[i] = -1;\n  }\n  for (let i = 0; i < IGNORE_BASE64URL.length; i += 1) {\n    charMap[IGNORE_BASE64URL[i].charCodeAt(0)] = -2;\n  }\n  for (let i = 0; i < TO_BASE64URL.length; i += 1) {\n    charMap[TO_BASE64URL[i].charCodeAt(0)] = i;\n  }\n  return charMap;\n})();\nfunction stringToBase64URL(str) {\n  const base64 = [];\n  let queue2 = 0;\n  let queuedBits = 0;\n  const emitter = (byte) => {\n    queue2 = queue2 << 8 | byte;\n    queuedBits += 8;\n    while (queuedBits >= 6) {\n      const pos = queue2 >> queuedBits - 6 & 63;\n      base64.push(TO_BASE64URL[pos]);\n      queuedBits -= 6;\n    }\n  };\n  stringToUTF8(str, emitter);\n  if (queuedBits > 0) {\n    queue2 = queue2 << 6 - queuedBits;\n    queuedBits = 6;\n    while (queuedBits >= 6) {\n      const pos = queue2 >> queuedBits - 6 & 63;\n      base64.push(TO_BASE64URL[pos]);\n      queuedBits -= 6;\n    }\n  }\n  return base64.join(\"\");\n}\nfunction stringFromBase64URL(str) {\n  const conv = [];\n  const emit2 = (codepoint) => {\n    conv.push(String.fromCodePoint(codepoint));\n  };\n  const state = {\n    utf8seq: 0,\n    codepoint: 0\n  };\n  let queue2 = 0;\n  let queuedBits = 0;\n  for (let i = 0; i < str.length; i += 1) {\n    const codepoint = str.charCodeAt(i);\n    const bits = FROM_BASE64URL[codepoint];\n    if (bits > -1) {\n      queue2 = queue2 << 6 | bits;\n      queuedBits += 6;\n      while (queuedBits >= 8) {\n        stringFromUTF8(queue2 >> queuedBits - 8 & 255, state, emit2);\n        queuedBits -= 8;\n      }\n    } else if (bits === -2) {\n      continue;\n    } else {\n      throw new Error(`Invalid Base64-URL character \"${str.at(i)}\" at position ${i}`);\n    }\n  }\n  return conv.join(\"\");\n}\nfunction codepointToUTF8(codepoint, emit2) {\n  if (codepoint <= 127) {\n    emit2(codepoint);\n    return;\n  } else if (codepoint <= 2047) {\n    emit2(192 | codepoint >> 6);\n    emit2(128 | codepoint & 63);\n    return;\n  } else if (codepoint <= 65535) {\n    emit2(224 | codepoint >> 12);\n    emit2(128 | codepoint >> 6 & 63);\n    emit2(128 | codepoint & 63);\n    return;\n  } else if (codepoint <= 1114111) {\n    emit2(240 | codepoint >> 18);\n    emit2(128 | codepoint >> 12 & 63);\n    emit2(128 | codepoint >> 6 & 63);\n    emit2(128 | codepoint & 63);\n    return;\n  }\n  throw new Error(`Unrecognized Unicode codepoint: ${codepoint.toString(16)}`);\n}\nfunction stringToUTF8(str, emit2) {\n  for (let i = 0; i < str.length; i += 1) {\n    let codepoint = str.charCodeAt(i);\n    if (codepoint > 55295 && codepoint <= 56319) {\n      const highSurrogate = (codepoint - 55296) * 1024 & 65535;\n      const lowSurrogate = str.charCodeAt(i + 1) - 56320 & 65535;\n      codepoint = (lowSurrogate | highSurrogate) + 65536;\n      i += 1;\n    }\n    codepointToUTF8(codepoint, emit2);\n  }\n}\nfunction stringFromUTF8(byte, state, emit2) {\n  if (state.utf8seq === 0) {\n    if (byte <= 127) {\n      emit2(byte);\n      return;\n    }\n    for (let leadingBit = 1; leadingBit < 6; leadingBit += 1) {\n      if ((byte >> 7 - leadingBit & 1) === 0) {\n        state.utf8seq = leadingBit;\n        break;\n      }\n    }\n    if (state.utf8seq === 2) {\n      state.codepoint = byte & 31;\n    } else if (state.utf8seq === 3) {\n      state.codepoint = byte & 15;\n    } else if (state.utf8seq === 4) {\n      state.codepoint = byte & 7;\n    } else {\n      throw new Error(\"Invalid UTF-8 sequence\");\n    }\n    state.utf8seq -= 1;\n  } else if (state.utf8seq > 0) {\n    if (byte <= 127) {\n      throw new Error(\"Invalid UTF-8 sequence\");\n    }\n    state.codepoint = state.codepoint << 6 | byte & 63;\n    state.utf8seq -= 1;\n    if (state.utf8seq === 0) {\n      emit2(state.codepoint);\n    }\n  }\n}\nconst BASE64_PREFIX = \"base64-\";\nfunction createStorageFromOptions(options, isServerClient) {\n  var _a2;\n  const cookies = (_a2 = options.cookies) != null ? _a2 : null;\n  const cookieEncoding = options.cookieEncoding;\n  const setItems = {};\n  const removedItems = {};\n  let getAll;\n  let setAll;\n  if (cookies) {\n    if (\"get\" in cookies) {\n      const getWithHints = async (keyHints) => {\n        const chunkNames = keyHints.flatMap((keyHint) => [\n          keyHint,\n          ...Array.from({length: 5}).map((_, i) => `${keyHint}.${i}`)\n        ]);\n        const chunks = [];\n        for (let i = 0; i < chunkNames.length; i += 1) {\n          const value = await cookies.get(chunkNames[i]);\n          if (!value && typeof value !== \"string\") {\n            continue;\n          }\n          chunks.push({name: chunkNames[i], value});\n        }\n        return chunks;\n      };\n      getAll = async (keyHints) => await getWithHints(keyHints);\n      if (\"set\" in cookies && \"remove\" in cookies) {\n        setAll = async (setCookies) => {\n          for (let i = 0; i < setCookies.length; i += 1) {\n            const {name, value, options: options2} = setCookies[i];\n            if (value) {\n              await cookies.set(name, value, options2);\n            } else {\n              await cookies.remove(name, options2);\n            }\n          }\n        };\n      } else if (isServerClient) {\n        setAll = async () => {\n          console.warn(\"@supabase/ssr: createServerClient was configured without set and remove cookie methods, but the client needs to set cookies. This can lead to issues such as random logouts, early session termination or increased token refresh requests. If in NextJS, check your middleware.ts file, route handlers and server actions for correctness. Consider switching to the getAll and setAll cookie methods instead of get, set and remove which are deprecated and can be difficult to use correctly.\");\n        };\n      } else {\n        throw new Error(\"@supabase/ssr: createBrowserClient requires configuring a getAll and setAll cookie method (deprecated: alternatively both get, set and remove can be used)\");\n      }\n    } else if (\"getAll\" in cookies) {\n      getAll = async () => await cookies.getAll();\n      if (\"setAll\" in cookies) {\n        setAll = cookies.setAll;\n      } else if (isServerClient) {\n        setAll = async () => {\n          console.warn(\"@supabase/ssr: createServerClient was configured without the setAll cookie method, but the client needs to set cookies. This can lead to issues such as random logouts, early session termination or increased token refresh requests. If in NextJS, check your middleware.ts file, route handlers and server actions for correctness.\");\n        };\n      } else {\n        throw new Error(\"@supabase/ssr: createBrowserClient requires configuring both getAll and setAll cookie methods (deprecated: alternatively both get, set and remove can be used)\");\n      }\n    } else {\n      throw new Error(`@supabase/ssr: ${isServerClient ? \"createServerClient\" : \"createBrowserClient\"} requires configuring getAll and setAll cookie methods (deprecated: alternatively use get, set and remove).${isBrowser() ? \" As this is called in a browser runtime, consider removing the cookies option object to use the document.cookie API automatically.\" : \"\"}`);\n    }\n  } else if (!isServerClient && isBrowser()) {\n    const noHintGetAll = () => {\n      const parsed = parse$1(document.cookie);\n      return Object.keys(parsed).map((name) => {\n        var _a3;\n        return {\n          name,\n          value: (_a3 = parsed[name]) != null ? _a3 : \"\"\n        };\n      });\n    };\n    getAll = () => noHintGetAll();\n    setAll = (setCookies) => {\n      setCookies.forEach(({name, value, options: options2}) => {\n        document.cookie = serialize$1(name, value, options2);\n      });\n    };\n  } else if (isServerClient) {\n    throw new Error(\"@supabase/ssr: createServerClient must be initialized with cookie options that specify getAll and setAll functions (deprecated, not recommended: alternatively use get, set and remove)\");\n  } else {\n    getAll = () => {\n      return [];\n    };\n    setAll = () => {\n      throw new Error(\"@supabase/ssr: createBrowserClient in non-browser runtimes (including Next.js pre-rendering mode) was not initialized cookie options that specify getAll and setAll functions (deprecated: alternatively use get, set and remove), but they were needed\");\n    };\n  }\n  if (!isServerClient) {\n    return {\n      getAll,\n      setAll,\n      setItems,\n      removedItems,\n      storage: {\n        isServer: false,\n        getItem: async (key) => {\n          const allCookies = await getAll([key]);\n          const chunkedCookie = await combineChunks(key, async (chunkName) => {\n            const cookie2 = (allCookies == null ? void 0 : allCookies.find(({name}) => name === chunkName)) || null;\n            if (!cookie2) {\n              return null;\n            }\n            return cookie2.value;\n          });\n          if (!chunkedCookie) {\n            return null;\n          }\n          let decoded = chunkedCookie;\n          if (chunkedCookie.startsWith(BASE64_PREFIX)) {\n            decoded = stringFromBase64URL(chunkedCookie.substring(BASE64_PREFIX.length));\n          }\n          return decoded;\n        },\n        setItem: async (key, value) => {\n          const allCookies = await getAll([key]);\n          const cookieNames = (allCookies == null ? void 0 : allCookies.map(({name}) => name)) || [];\n          const removeCookies = new Set(cookieNames.filter((name) => isChunkLike(name, key)));\n          let encoded = value;\n          if (cookieEncoding === \"base64url\") {\n            encoded = BASE64_PREFIX + stringToBase64URL(value);\n          }\n          const setCookies = createChunks(key, encoded);\n          setCookies.forEach(({name}) => {\n            removeCookies.delete(name);\n          });\n          const removeCookieOptions = {\n            ...DEFAULT_COOKIE_OPTIONS,\n            ...options == null ? void 0 : options.cookieOptions,\n            maxAge: 0\n          };\n          const setCookieOptions = {\n            ...DEFAULT_COOKIE_OPTIONS,\n            ...options == null ? void 0 : options.cookieOptions,\n            maxAge: DEFAULT_COOKIE_OPTIONS.maxAge\n          };\n          delete removeCookieOptions.name;\n          delete setCookieOptions.name;\n          const allToSet = [\n            ...[...removeCookies].map((name) => ({\n              name,\n              value: \"\",\n              options: removeCookieOptions\n            })),\n            ...setCookies.map(({name, value: value2}) => ({\n              name,\n              value: value2,\n              options: setCookieOptions\n            }))\n          ];\n          if (allToSet.length > 0) {\n            await setAll(allToSet);\n          }\n        },\n        removeItem: async (key) => {\n          const allCookies = await getAll([key]);\n          const cookieNames = (allCookies == null ? void 0 : allCookies.map(({name}) => name)) || [];\n          const removeCookies = cookieNames.filter((name) => isChunkLike(name, key));\n          const removeCookieOptions = {\n            ...DEFAULT_COOKIE_OPTIONS,\n            ...options == null ? void 0 : options.cookieOptions,\n            maxAge: 0\n          };\n          delete removeCookieOptions.name;\n          if (removeCookies.length > 0) {\n            await setAll(removeCookies.map((name) => ({\n              name,\n              value: \"\",\n              options: removeCookieOptions\n            })));\n          }\n        }\n      }\n    };\n  }\n  return {\n    getAll,\n    setAll,\n    setItems,\n    removedItems,\n    storage: {\n      isServer: true,\n      getItem: async (key) => {\n        if (typeof setItems[key] === \"string\") {\n          return setItems[key];\n        }\n        if (removedItems[key]) {\n          return null;\n        }\n        const allCookies = await getAll([key]);\n        const chunkedCookie = await combineChunks(key, async (chunkName) => {\n          const cookie2 = (allCookies == null ? void 0 : allCookies.find(({name}) => name === chunkName)) || null;\n          if (!cookie2) {\n            return null;\n          }\n          return cookie2.value;\n        });\n        if (!chunkedCookie) {\n          return null;\n        }\n        let decoded = chunkedCookie;\n        if (typeof chunkedCookie === \"string\" && chunkedCookie.startsWith(BASE64_PREFIX)) {\n          decoded = stringFromBase64URL(chunkedCookie.substring(BASE64_PREFIX.length));\n        }\n        return decoded;\n      },\n      setItem: async (key, value) => {\n        var _a3;\n        if (key.endsWith(\"-code-verifier\")) {\n          await applyServerStorage({\n            getAll,\n            setAll,\n            setItems: {[key]: value},\n            removedItems: {}\n          }, {\n            cookieOptions: (_a3 = options == null ? void 0 : options.cookieOptions) != null ? _a3 : null,\n            cookieEncoding\n          });\n        }\n        setItems[key] = value;\n        delete removedItems[key];\n      },\n      removeItem: async (key) => {\n        delete setItems[key];\n        removedItems[key] = true;\n      }\n    }\n  };\n}\nasync function applyServerStorage({getAll, setAll, setItems, removedItems}, options) {\n  var _a2;\n  const cookieEncoding = options.cookieEncoding;\n  const cookieOptions = (_a2 = options.cookieOptions) != null ? _a2 : null;\n  const allCookies = await getAll([\n    ...setItems ? Object.keys(setItems) : [],\n    ...removedItems ? Object.keys(removedItems) : []\n  ]);\n  const cookieNames = (allCookies == null ? void 0 : allCookies.map(({name}) => name)) || [];\n  const removeCookies = Object.keys(removedItems).flatMap((itemName) => {\n    return cookieNames.filter((name) => isChunkLike(name, itemName));\n  });\n  const setCookies = Object.keys(setItems).flatMap((itemName) => {\n    const removeExistingCookiesForItem = new Set(cookieNames.filter((name) => isChunkLike(name, itemName)));\n    let encoded = setItems[itemName];\n    if (cookieEncoding === \"base64url\") {\n      encoded = BASE64_PREFIX + stringToBase64URL(encoded);\n    }\n    const chunks = createChunks(itemName, encoded);\n    chunks.forEach((chunk) => {\n      removeExistingCookiesForItem.delete(chunk.name);\n    });\n    removeCookies.push(...removeExistingCookiesForItem);\n    return chunks;\n  });\n  const removeCookieOptions = {\n    ...DEFAULT_COOKIE_OPTIONS,\n    ...cookieOptions,\n    maxAge: 0\n  };\n  const setCookieOptions = {\n    ...DEFAULT_COOKIE_OPTIONS,\n    ...cookieOptions,\n    maxAge: DEFAULT_COOKIE_OPTIONS.maxAge\n  };\n  delete removeCookieOptions.name;\n  delete setCookieOptions.name;\n  await setAll([\n    ...removeCookies.map((name) => ({\n      name,\n      value: \"\",\n      options: removeCookieOptions\n    })),\n    ...setCookies.map(({name, value}) => ({\n      name,\n      value,\n      options: setCookieOptions\n    }))\n  ]);\n}\nlet cachedBrowserClient;\nfunction createBrowserClient(supabaseUrl, supabaseKey, options) {\n  var _a2, _b, _c, _d, _e;\n  const shouldUseSingleton = (options == null ? void 0 : options.isSingleton) === true || (!options || !(\"isSingleton\" in options)) && isBrowser();\n  if (shouldUseSingleton && cachedBrowserClient) {\n    return cachedBrowserClient;\n  }\n  if (!supabaseUrl || !supabaseKey) {\n    throw new Error(`@supabase/ssr: Your project's URL and API key are required to create a Supabase client!\n\nCheck your Supabase project's API settings to find these values\n\nhttps://supabase.com/dashboard/project/_/settings/api`);\n  }\n  const {storage} = createStorageFromOptions({\n    ...options,\n    cookieEncoding: (_a2 = options == null ? void 0 : options.cookieEncoding) != null ? _a2 : \"base64url\"\n  }, false);\n  const client = createClient(supabaseUrl, supabaseKey, {\n    ...options,\n    global: {\n      ...options == null ? void 0 : options.global,\n      headers: {\n        ...(_b = options == null ? void 0 : options.global) == null ? void 0 : _b.headers,\n        \"X-Client-Info\": `supabase-ssr/${VERSION} createBrowserClient`\n      }\n    },\n    auth: {\n      ...options == null ? void 0 : options.auth,\n      ...((_c = options == null ? void 0 : options.cookieOptions) == null ? void 0 : _c.name) ? {storageKey: options.cookieOptions.name} : null,\n      flowType: \"pkce\",\n      autoRefreshToken: isBrowser(),\n      detectSessionInUrl: isBrowser(),\n      persistSession: true,\n      storage,\n      ...(options == null ? void 0 : options.cookies) && \"encode\" in options.cookies && options.cookies.encode === \"tokens-only\" ? {\n        userStorage: (_e = (_d = options == null ? void 0 : options.auth) == null ? void 0 : _d.userStorage) != null ? _e : window.localStorage\n      } : null\n    }\n  });\n  if (shouldUseSingleton) {\n    cachedBrowserClient = client;\n  }\n  return client;\n}\nfunction createServerClient(supabaseUrl, supabaseKey, options) {\n  var _a2, _b, _c, _d, _e;\n  if (!supabaseUrl || !supabaseKey) {\n    throw new Error(`Your project's URL and Key are required to create a Supabase client!\n\nCheck your Supabase project's API settings to find these values\n\nhttps://supabase.com/dashboard/project/_/settings/api`);\n  }\n  const {storage, getAll, setAll, setItems, removedItems} = createStorageFromOptions({\n    ...options,\n    cookieEncoding: (_a2 = options == null ? void 0 : options.cookieEncoding) != null ? _a2 : \"base64url\"\n  }, true);\n  const client = createClient(supabaseUrl, supabaseKey, {\n    ...options,\n    global: {\n      ...options == null ? void 0 : options.global,\n      headers: {\n        ...(_b = options == null ? void 0 : options.global) == null ? void 0 : _b.headers,\n        \"X-Client-Info\": `supabase-ssr/${VERSION} createServerClient`\n      }\n    },\n    auth: {\n      ...((_c = options == null ? void 0 : options.cookieOptions) == null ? void 0 : _c.name) ? {storageKey: options.cookieOptions.name} : null,\n      ...options == null ? void 0 : options.auth,\n      flowType: \"pkce\",\n      autoRefreshToken: false,\n      detectSessionInUrl: false,\n      persistSession: true,\n      storage,\n      ...(options == null ? void 0 : options.cookies) && \"encode\" in options.cookies && options.cookies.encode === \"tokens-only\" ? {\n        userStorage: (_e = (_d = options == null ? void 0 : options.auth) == null ? void 0 : _d.userStorage) != null ? _e : memoryLocalStorageAdapter()\n      } : null\n    }\n  });\n  client.auth.onAuthStateChange(async (event) => {\n    var _a3, _b2;\n    const hasStorageChanges = Object.keys(setItems).length > 0 || Object.keys(removedItems).length > 0;\n    if (hasStorageChanges && (event === \"SIGNED_IN\" || event === \"TOKEN_REFRESHED\" || event === \"USER_UPDATED\" || event === \"PASSWORD_RECOVERY\" || event === \"SIGNED_OUT\" || event === \"MFA_CHALLENGE_VERIFIED\")) {\n      await applyServerStorage({getAll, setAll, setItems, removedItems}, {\n        cookieOptions: (_a3 = options == null ? void 0 : options.cookieOptions) != null ? _a3 : null,\n        cookieEncoding: (_b2 = options == null ? void 0 : options.cookieEncoding) != null ? _b2 : \"base64url\"\n      });\n    }\n  });\n  return client;\n}\nif (typeof process !== \"undefined\" && ((_a = process.env) == null ? void 0 : _a.npm_package_name)) {\n  const packageName = process.env.npm_package_name;\n  const deprecatedPackages = [\n    \"@supabase/auth-helpers-nextjs\",\n    \"@supabase/auth-helpers-react\",\n    \"@supabase/auth-helpers-remix\",\n    \"@supabase/auth-helpers-sveltekit\"\n  ];\n  if (deprecatedPackages.includes(packageName)) {\n    console.warn(`\n\\u2554\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2557\n\\u2551 \\u26A0\\uFE0F  IMPORTANT: Package Consolidation Notice                                \\u2551\n\\u2551                                                                            \\u2551\n\\u2551 The ${packageName.padEnd(35)} package name is deprecated.  \\u2551\n\\u2551                                                                            \\u2551\n\\u2551 You are now using @supabase/ssr - a unified solution for all frameworks.  \\u2551\n\\u2551                                                                            \\u2551\n\\u2551 The auth-helpers packages have been consolidated into @supabase/ssr       \\u2551\n\\u2551 to provide better maintenance and consistent APIs across frameworks.      \\u2551\n\\u2551                                                                            \\u2551\n\\u2551 Please update your package.json to use @supabase/ssr directly:            \\u2551\n\\u2551   npm uninstall ${packageName.padEnd(42)} \\u2551\n\\u2551   npm install @supabase/ssr                                               \\u2551\n\\u2551                                                                            \\u2551\n\\u2551 For more information, visit:                                              \\u2551\n\\u2551 https://supabase.com/docs/guides/auth/server-side                         \\u2551\n\\u255A\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u2550\\u255D\n    `);\n  }\n}\nexport {DEFAULT_COOKIE_OPTIONS, MAX_CHUNK_SIZE, codepointToUTF8, combineChunks, createBrowserClient, createChunks, createServerClient, deleteChunks, isBrowser, isChunkLike, memoryLocalStorageAdapter, parse, parseCookieHeader, serialize, serializeCookieHeader, stringFromBase64URL, stringFromUTF8, stringToBase64URL, stringToUTF8};\nexport default null;\n","/*\n * Skypack CDN - @supabase/ssr@0.8.0\n *\n * Learn more:\n *   📙 Package Documentation: https://www.skypack.dev/view/@supabase/ssr\n *   📘 Skypack Documentation: https://www.skypack.dev/docs\n *\n * Pinned URL: (Optimized for Production)\n *   ▶️ Normal: https://cdn.skypack.dev/pin/@supabase/ssr@v0.8.0-ESgoSXe004EGh6FajnBn/mode=imports/optimized/@supabase/ssr.js\n *   ⏩ Minified: https://cdn.skypack.dev/pin/@supabase/ssr@v0.8.0-ESgoSXe004EGh6FajnBn/mode=imports,min/optimized/@supabase/ssr.js\n *\n */\n\n// Browser-Optimized Imports (Don't directly import the URLs below in your application!)\nexport * from '/-/@supabase/ssr@v0.8.0-ESgoSXe004EGh6FajnBn/dist=es2019,mode=imports/optimized/@supabase/ssr.js';\nexport {default} from '/-/@supabase/ssr@v0.8.0-ESgoSXe004EGh6FajnBn/dist=es2019,mode=imports/optimized/@supabase/ssr.js';\n","import{jsx as _jsx}from\"react/jsx-runtime\";import{createStore}from\"https://framer.com/m/framer/store.js@^1.0.0\";import{createBrowserClient}from\"https://cdn.skypack.dev/@supabase/ssr\";const SUPABASE_URL=\"https://sogdlnsybnkdplnpfsdq.supabase.co\";const SUPABASE_API_KEY=\"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InNvZ2RsbnN5Ym5rZHBsbnBmc2RxIiwicm9sZSI6ImFub24iLCJpYXQiOjE2OTg4NjQ2OTAsImV4cCI6MjAxNDQ0MDY5MH0.o_RkEGtkrbQ2YewaMq-O1tKn7BcUdiqtNQwCwv9R-hc\";export const supabase=createBrowserClient(SUPABASE_URL,SUPABASE_API_KEY,{auth:{flowType:\"pkce\"}});const useStore=createStore({password:\"\",confirmPassword:\"\"});export function withPasswordLabelOverride(Component){return props=>{const[store,setStore]=useStore();const handleChange=event=>{setStore({password:event.target.value});};return /*#__PURE__*/_jsx(Component,{...props,onChange:handleChange,value:store.password});};}export function confirmPasswordLabelOverride(Component){return props=>{const[store,setStore]=useStore();const handleChange=event=>{setStore({confirmPassword:event.target.value});};return /*#__PURE__*/_jsx(Component,{...props,onChange:handleChange,value:store.confirmPassword});};}const extractToken=()=>{let accessToken=null;// Check if the access token or code is in the query string (after ?)\nlet urlParams=new URLSearchParams(window.location.search);accessToken=urlParams.get(\"access_token\")||urlParams.get(\"code\");// If not found, check if it's in the fragment (after #)\nif(!accessToken){const fragment=window.location.hash.substring(1)// remove the leading #\n;urlParams=new URLSearchParams(fragment);accessToken=urlParams.get(\"access_token\")||urlParams.get(\"code\");}console.log(\"Extracted token:\",accessToken)// Debugging\n;return accessToken;};export function setPasswordOverride(Component){return props=>{const[store]=useStore();// Function to extract query parameters from the URL\nconst extractQueryParams=()=>{const urlParams=new URLSearchParams(window.location.search);const fragment=window.location.hash.substring(1);const fragmentParams=new URLSearchParams(fragment);return{code:urlParams.get(\"code\"),accessToken:fragmentParams.get(\"access_token\")};};// Function to exchange the code for an access_token\nconst exchangeCodeForToken=async auth_code=>{try{const code_verifier=localStorage.getItem(\"pkce_code_verifier\");if(!code_verifier){throw new Error(\"Code verifier not found.\");}const response=await fetch(`${SUPABASE_URL}/auth/v1/token?grant_type=pkce`,{method:\"POST\",headers:{\"Content-Type\":\"application/json\",apikey:SUPABASE_API_KEY},body:{auth_code:auth_code,code_verifier:code_verifier}});let data;console.log(response);try{console.log(\"verifier\",code_verifier);data=await supabase.auth.exchangeCodeForSession(auth_code,code_verifier);console.log(data);console.log(\"token\");}catch(error){console.log(error);}// const data = await response.json()\nif(data===null){throw new Error(data.error_description||\"Error exchanging code for access token\");}console.log(data);return data;}catch(error){alert(`Error: ${error.message}`);return null;}};const handleSetPassword=async event=>{event.preventDefault();// Extract the code or access_token from the URL\nconst{code,accessToken}=extractQueryParams();console.log(code);console.log(accessToken);let token=accessToken;if(!accessToken&&code){// If access_token is not available but code is, exchange the code for the access_token\ntoken=await exchangeCodeForToken(code);}if(!token){alert(\"Access token or code not found in the URL.\");return;}const{password,confirmPassword}=store;if(!password||!confirmPassword){alert(\"Please fill in both fields.\");return;}if(password!==confirmPassword){alert(\"Passwords do not match!\");return;}try{const response=await fetch(`${SUPABASE_URL}/auth/v1/user`,{method:\"PUT\",headers:{apikey:SUPABASE_API_KEY,Authorization:`Bearer ${token}`,\"Content-Type\":\"application/json\"},body:JSON.stringify({password:password})});// const status = await supabase.auth.updateUser({\n//     password: password,\n// })\nif(!response.ok){const error=await response.json();alert(`Error: ${error.message}`);return;}alert(\"Password has been set successfully!\");}catch(error){alert(`Error: ${error.message}`);}};return /*#__PURE__*/_jsx(Component,{...props,onClick:handleSetPassword});};}export function withPasswordConfirmOverride(Component){return props=>{const[store,setStore]=useStore();// Function to extract the confirmation_url from the query string\nconst extractConfirmationUrl=()=>{const urlParams=new URLSearchParams(window.location.search);return urlParams.get(\"confirmation_url\");};const extractTokenHash=()=>{const urlParams=new URLSearchParams(window.location.search);return urlParams.get(\"token_hash\");};// Handle confirmation by redirecting the user to the confirmation URL\nconst handleConfirm=async()=>{// event.preventDefault()\nconst confirmationUrl=extractConfirmationUrl();const tokenHash=extractTokenHash();localStorage.setItem(\"pkce_code_verifier\",tokenHash);console.log(\"tokenHash\",tokenHash);if(!confirmationUrl){alert(\"Confirmation URL not found.\");return;}// Redirect to the confirmation URL to consume the token\nwindow.location.href=confirmationUrl+\"&\"+extractTokenHash;};return /*#__PURE__*/_jsx(Component,{...props,onClick:handleConfirm});};}\nexport const __FramerMetadata__ = {\"exports\":{\"setPasswordOverride\":{\"type\":\"reactHoc\",\"name\":\"setPasswordOverride\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withPasswordConfirmOverride\":{\"type\":\"reactHoc\",\"name\":\"withPasswordConfirmOverride\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withPasswordLabelOverride\":{\"type\":\"reactHoc\",\"name\":\"withPasswordLabelOverride\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"confirmPasswordLabelOverride\":{\"type\":\"reactHoc\",\"name\":\"confirmPasswordLabelOverride\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"supabase\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./SetPassword.map"],"mappings":"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"}