{
  "version": 3,
  "sources": ["../../../node_modules/@rails/actioncable/src/adapters.js", "../../../node_modules/@rails/actioncable/src/logger.js", "../../../node_modules/@rails/actioncable/src/connection_monitor.js", "../../../node_modules/@rails/actioncable/src/internal.js", "../../../node_modules/@rails/actioncable/src/connection.js", "../../../node_modules/@rails/actioncable/src/subscription.js", "../../../node_modules/@rails/actioncable/src/subscription_guarantor.js", "../../../node_modules/@rails/actioncable/src/subscriptions.js", "../../../node_modules/@rails/actioncable/src/consumer.js", "../../../node_modules/@rails/actioncable/src/index.js", "../../../node_modules/tslib/tslib.es6.js", "../../../node_modules/@segment/analytics-core/dist/esm/emitter/interface.js", "../../../node_modules/@segment/analytics-core/dist/esm/plugins/index.js", "../../../node_modules/@segment/analytics-core/dist/esm/events/interfaces.js", "../../../node_modules/dset/dist/index.mjs", "../../../node_modules/@segment/analytics-core/src/utils/pick.ts", "../../../node_modules/@segment/analytics-core/src/validation/errors.ts", "../../../node_modules/@segment/analytics-core/src/validation/helpers.ts", "../../../node_modules/@segment/analytics-core/src/validation/assertions.ts", "../../../node_modules/@segment/analytics-core/src/events/index.ts", "../../../node_modules/@segment/analytics-core/src/callback/index.ts", "../../../node_modules/@segment/analytics-generic-utils/src/create-deferred/create-deferred.ts", "../../../node_modules/@segment/analytics-generic-utils/src/create-deferred/index.ts", "../../../node_modules/@segment/analytics-generic-utils/src/emitter/emitter.ts", "../../../node_modules/@segment/analytics-generic-utils/src/emitter/index.ts", "../../../node_modules/@segment/analytics-generic-utils/src/index.ts", "../../../node_modules/@segment/analytics-core/src/priority-queue/backoff.ts", "../../../node_modules/@segment/analytics-core/src/priority-queue/index.ts", "../../../node_modules/@lukeed/uuid/dist/index.mjs", "../../../node_modules/@segment/analytics-core/src/logger/index.ts", "../../../node_modules/@segment/analytics-core/src/stats/index.ts", "../../../node_modules/@segment/analytics-core/src/context/index.ts", "../../../node_modules/@segment/analytics-core/src/utils/group-by.ts", "../../../node_modules/@segment/analytics-core/src/utils/is-thenable.ts", "../../../node_modules/@segment/analytics-core/src/task/task-group.ts", "../../../node_modules/@segment/analytics-core/src/queue/delivery.ts", "../../../node_modules/@segment/analytics-core/src/queue/event-queue.ts", "../../../node_modules/@segment/analytics-core/dist/esm/analytics/index.js", "../../../node_modules/@segment/analytics-core/src/analytics/dispatch.ts", "../../../node_modules/@segment/analytics-core/src/utils/bind-all.ts", "../../../node_modules/@segment/analytics-core/src/index.ts", "../../../node_modules/@segment/analytics-next/src/core/environment/index.ts", "../../../node_modules/@segment/analytics-next/src/core/connection/index.ts", "../../../node_modules/unfetch/src/index.mjs", "../../../node_modules/@segment/analytics-next/src/lib/get-global.ts", "../../../node_modules/@segment/analytics-next/src/lib/fetch.ts", "../../../node_modules/@segment/analytics-next/src/generated/version.ts", "../../../node_modules/@segment/analytics-next/src/lib/version-type.ts", "../../../node_modules/@segment/analytics-next/src/core/constants/index.ts", "../../../node_modules/@segment/analytics-next/src/core/stats/remote-metrics.ts", "../../../node_modules/@segment/analytics-next/src/core/stats/index.ts", "../../../node_modules/@segment/analytics-next/src/core/context/index.ts", "../../../node_modules/@segment/analytics-next/src/lib/priority-queue/index.ts", "../../../node_modules/@segment/analytics-next/src/lib/priority-queue/persisted.ts", "../../../node_modules/@segment/analytics-next/src/lib/global-analytics-helper.ts", "../../../node_modules/obj-case/index.js", "../../../node_modules/@segment/facade/lib/address.js", "../../../node_modules/@segment/facade/lib/clone.js", "../../../node_modules/@segment/facade/lib/is-enabled.js", "../../../node_modules/@segment/isodate/lib/index.js", "../../../node_modules/new-date/lib/milliseconds.js", "../../../node_modules/new-date/lib/seconds.js", "../../../node_modules/new-date/lib/index.js", "../../../node_modules/@segment/isodate-traverse/lib/index.js", "../../../node_modules/@segment/facade/lib/facade.js", "../../../node_modules/inherits/inherits_browser.js", "../../../node_modules/@segment/facade/lib/alias.js", "../../../node_modules/@segment/facade/lib/is-email.js", "../../../node_modules/@segment/facade/lib/group.js", "../../../node_modules/@segment/facade/lib/identify.js", "../../../node_modules/@segment/facade/lib/track.js", "../../../node_modules/@segment/facade/lib/page.js", "../../../node_modules/@segment/facade/lib/screen.js", "../../../node_modules/@segment/facade/lib/delete.js", "../../../node_modules/@segment/facade/lib/index.js", "../../../node_modules/@segment/analytics-next/src/lib/to-facade.ts", "../../../node_modules/@segment/analytics-next/src/lib/p-while.ts", "../../../node_modules/@segment/analytics-next/src/core/callback/index.ts", "../../../node_modules/@segment/analytics-next/src/core/auto-track.ts", "../../../node_modules/@segment/analytics-next/src/plugins/middleware/index.ts", "../../../node_modules/@segment/analytics-next/src/core/query-string/pickPrefix.ts", "../../../node_modules/@segment/analytics-next/src/core/query-string/gracefulDecodeURIComponent.ts", "../../../node_modules/@segment/analytics-next/src/core/query-string/index.ts", "../../../node_modules/@segment/analytics-next/src/lib/parse-cdn.ts", "../../../node_modules/@segment/analytics-next/src/lib/merged-options.ts", "../../../node_modules/@segment/analytics-next/src/lib/load-script.ts", "../../../node_modules/@segment/analytics-next/src/core/stats/metric-helpers.ts", "../../../node_modules/@segment/analytics-next/src/vendor/tsub/tsub.ts", "../../../node_modules/@segment/analytics-next/src/plugins/routing-middleware/index.ts", "../../../node_modules/@segment/analytics-next/src/lib/is-plan-event-enabled.ts", "../../../node_modules/@segment/analytics-next/src/plugins/ajs-destination/loader.ts", "../../../node_modules/@segment/analytics-next/src/plugins/ajs-destination/utils.ts", "../../../node_modules/@segment/analytics-next/src/plugins/ajs-destination/index.ts", "../../../node_modules/@segment/analytics.js-video-plugins/dist/index.umd.js", "../../../node_modules/@segment/analytics-next/src/plugins/legacy-video-plugins/index.ts", "../../../node_modules/@segment/analytics-next/src/plugins/schema-filter/index.ts", "../../../node_modules/@segment/analytics-next/src/plugins/remote-middleware/index.ts", "webpack://QRCodeStyling/webpack/universalModuleDefinition", "webpack://QRCodeStyling/node_modules/qrcode-generator/qrcode.js", "webpack://QRCodeStyling/src/tools/merge.ts", "webpack://QRCodeStyling/src/tools/downloadURI.ts", "webpack://QRCodeStyling/src/tools/calculateImageSize.ts", "webpack://QRCodeStyling/src/constants/errorCorrectionPercents.ts", "webpack://QRCodeStyling/src/constants/dotTypes.ts", "webpack://QRCodeStyling/src/figures/dot/canvas/QRDot.ts", "webpack://QRCodeStyling/src/constants/cornerSquareTypes.ts", "webpack://QRCodeStyling/src/figures/cornerSquare/canvas/QRCornerSquare.ts", "webpack://QRCodeStyling/src/constants/cornerDotTypes.ts", "webpack://QRCodeStyling/src/figures/cornerDot/canvas/QRCornerDot.ts", "webpack://QRCodeStyling/src/constants/gradientTypes.ts", "webpack://QRCodeStyling/src/core/QRCanvas.ts", "webpack://QRCodeStyling/src/figures/dot/svg/QRDot.ts", "webpack://QRCodeStyling/src/figures/cornerSquare/svg/QRCornerSquare.ts", "webpack://QRCodeStyling/src/figures/cornerDot/svg/QRCornerDot.ts", "webpack://QRCodeStyling/src/core/QRSVG.ts", "webpack://QRCodeStyling/src/constants/drawTypes.ts", "webpack://QRCodeStyling/src/constants/qrTypes.ts", "webpack://QRCodeStyling/src/core/QROptions.ts", "webpack://QRCodeStyling/src/constants/errorCorrectionLevels.ts", "webpack://QRCodeStyling/src/tools/sanitizeOptions.ts", "webpack://QRCodeStyling/src/index.ts", "webpack://QRCodeStyling/src/core/QRCodeStyling.ts", "webpack://QRCodeStyling/src/tools/getMode.ts", "webpack://QRCodeStyling/src/constants/modes.ts", "webpack://QRCodeStyling/webpack/bootstrap", "webpack://QRCodeStyling/webpack/startup", "webpack://QRCodeStyling/webpack/runtime/compat%20get%20default%20export", "webpack://QRCodeStyling/webpack/runtime/define%20property%20getters", "webpack://QRCodeStyling/webpack/runtime/hasOwnProperty%20shorthand", "../../../node_modules/jsbarcode/bin/barcodes/Barcode.js", "../../../node_modules/jsbarcode/bin/barcodes/CODE39/index.js", "../../../node_modules/jsbarcode/bin/barcodes/CODE128/constants.js", "../../../node_modules/jsbarcode/bin/barcodes/CODE128/CODE128.js", "../../../node_modules/jsbarcode/bin/barcodes/CODE128/auto.js", "../../../node_modules/jsbarcode/bin/barcodes/CODE128/CODE128_AUTO.js", "../../../node_modules/jsbarcode/bin/barcodes/CODE128/CODE128A.js", "../../../node_modules/jsbarcode/bin/barcodes/CODE128/CODE128B.js", "../../../node_modules/jsbarcode/bin/barcodes/CODE128/CODE128C.js", "../../../node_modules/jsbarcode/bin/barcodes/CODE128/index.js", "../../../node_modules/jsbarcode/bin/barcodes/EAN_UPC/constants.js", "../../../node_modules/jsbarcode/bin/barcodes/EAN_UPC/encoder.js", "../../../node_modules/jsbarcode/bin/barcodes/EAN_UPC/EAN.js", "../../../node_modules/jsbarcode/bin/barcodes/EAN_UPC/EAN13.js", "../../../node_modules/jsbarcode/bin/barcodes/EAN_UPC/EAN8.js", "../../../node_modules/jsbarcode/bin/barcodes/EAN_UPC/EAN5.js", "../../../node_modules/jsbarcode/bin/barcodes/EAN_UPC/EAN2.js", "../../../node_modules/jsbarcode/bin/barcodes/EAN_UPC/UPC.js", "../../../node_modules/jsbarcode/bin/barcodes/EAN_UPC/UPCE.js", "../../../node_modules/jsbarcode/bin/barcodes/EAN_UPC/index.js", "../../../node_modules/jsbarcode/bin/barcodes/ITF/constants.js", "../../../node_modules/jsbarcode/bin/barcodes/ITF/ITF.js", "../../../node_modules/jsbarcode/bin/barcodes/ITF/ITF14.js", "../../../node_modules/jsbarcode/bin/barcodes/ITF/index.js", "../../../node_modules/jsbarcode/bin/barcodes/MSI/MSI.js", "../../../node_modules/jsbarcode/bin/barcodes/MSI/checksums.js", "../../../node_modules/jsbarcode/bin/barcodes/MSI/MSI10.js", "../../../node_modules/jsbarcode/bin/barcodes/MSI/MSI11.js", "../../../node_modules/jsbarcode/bin/barcodes/MSI/MSI1010.js", "../../../node_modules/jsbarcode/bin/barcodes/MSI/MSI1110.js", "../../../node_modules/jsbarcode/bin/barcodes/MSI/index.js", "../../../node_modules/jsbarcode/bin/barcodes/pharmacode/index.js", "../../../node_modules/jsbarcode/bin/barcodes/codabar/index.js", "../../../node_modules/jsbarcode/bin/barcodes/CODE93/constants.js", "../../../node_modules/jsbarcode/bin/barcodes/CODE93/CODE93.js", "../../../node_modules/jsbarcode/bin/barcodes/CODE93/CODE93FullASCII.js", "../../../node_modules/jsbarcode/bin/barcodes/CODE93/index.js", "../../../node_modules/jsbarcode/bin/barcodes/GenericBarcode/index.js", "../../../node_modules/jsbarcode/bin/barcodes/index.js", "../../../node_modules/jsbarcode/bin/help/merge.js", "../../../node_modules/jsbarcode/bin/help/linearizeEncodings.js", "../../../node_modules/jsbarcode/bin/help/fixOptions.js", "../../../node_modules/jsbarcode/bin/help/optionsFromStrings.js", "../../../node_modules/jsbarcode/bin/options/defaults.js", "../../../node_modules/jsbarcode/bin/help/getOptionsFromElement.js", "../../../node_modules/jsbarcode/bin/renderers/shared.js", "../../../node_modules/jsbarcode/bin/renderers/canvas.js", "../../../node_modules/jsbarcode/bin/renderers/svg.js", "../../../node_modules/jsbarcode/bin/renderers/object.js", "../../../node_modules/jsbarcode/bin/renderers/index.js", "../../../node_modules/jsbarcode/bin/exceptions/exceptions.js", "../../../node_modules/jsbarcode/bin/help/getRenderProperties.js", "../../../node_modules/jsbarcode/bin/exceptions/ErrorHandler.js", "../../../node_modules/jsbarcode/bin/JsBarcode.js", "../../../node_modules/@hotwired/turbo/dist/turbo.es2017-esm.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/snakeize.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable_stream_source_element.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/fetch_requests.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/index.js", "../../../node_modules/@hotwired/stimulus/dist/stimulus.js", "../../../node_modules/@rails/actioncable/app/assets/javascripts/actioncable.esm.js", "../../../node_modules/@appsignal/javascript/src/error.ts", "../../../node_modules/@appsignal/javascript/src/hashmap.ts", "../../../node_modules/@appsignal/javascript/src/version.ts", "../../../node_modules/@appsignal/javascript/src/environment.ts", "../../../node_modules/@appsignal/javascript/src/transports/xdomain.ts", "../../../node_modules/@appsignal/javascript/src/transports/xhr.ts", "../../../node_modules/@appsignal/javascript/src/transports/fetch.ts", "../../../node_modules/@appsignal/javascript/src/transports/node.ts", "../../../node_modules/@appsignal/javascript/src/api.ts", "../../../node_modules/@appsignal/javascript/src/serializable.ts", "../../../node_modules/@appsignal/javascript/src/span.ts", "../../../node_modules/@appsignal/javascript/src/queue.ts", "../../../node_modules/@appsignal/javascript/src/dispatcher.ts", "../../../node_modules/@appsignal/javascript/src/index.ts", "../../../node_modules/@appsignal/stimulus/src/index.ts", "../../javascript/controllers/application.js", "../../../node_modules/tailwindcss-stimulus-components/dist/tailwindcss-stimulus-components.module.js", "../../javascript/controllers/admin/payment_searches_controller.js", "../../../node_modules/@segment/analytics-next/src/core/arguments-resolver/index.ts", "../../../node_modules/@segment/analytics-next/src/core/analytics/index.ts", "../../../node_modules/@segment/analytics-next/src/core/events/index.ts", "../../../node_modules/@segment/analytics-page-tools/dist/esm/index.mjs", "../../../node_modules/@segment/analytics-next/src/lib/pick.ts", "../../../node_modules/@segment/analytics-next/src/core/page/add-page-context.ts", "../../../node_modules/@segment/analytics-next/src/core/plugin/index.ts", "../../../node_modules/@segment/analytics-next/src/core/queue/event-queue.ts", "../../../node_modules/@segment/analytics-next/src/core/user/index.ts", "../../../node_modules/@segment/analytics-next/src/lib/bind-all.ts", "../../../node_modules/js-cookie/dist/js.cookie.mjs", "../../../node_modules/@segment/analytics-next/src/core/user/tld.ts", "../../../node_modules/@segment/analytics-next/src/core/storage/cookieStorage.ts", "../../../node_modules/@segment/analytics-next/src/core/storage/localStorage.ts", "../../../node_modules/@segment/analytics-next/src/core/storage/memoryStorage.ts", "../../../node_modules/@segment/analytics-next/src/core/storage/types.ts", "../../../node_modules/@segment/analytics-next/src/core/storage/settings.ts", "../../../node_modules/@segment/analytics-next/src/core/storage/universalStorage.ts", "../../../node_modules/@segment/analytics-next/src/core/storage/index.ts", "../../../node_modules/@segment/analytics-next/src/lib/is-thenable.ts", "../../../node_modules/@segment/analytics-next/src/core/buffer/index.ts", "../../../node_modules/@segment/analytics-next/src/plugins/segmentio/index.ts", "../../../node_modules/@segment/analytics-next/src/plugins/segmentio/batched-dispatcher.ts", "../../../node_modules/@segment/analytics-next/src/lib/on-page-change.ts", "../../../node_modules/@segment/analytics-next/src/plugins/segmentio/ratelimit-error.ts", "../../../node_modules/@segment/analytics-next/src/plugins/segmentio/shared-dispatcher.ts", "../../../node_modules/@segment/analytics-next/src/plugins/segmentio/fetch-dispatcher.ts", "../../../node_modules/@segment/analytics-next/src/plugins/segmentio/normalize.ts", "../../../node_modules/@segment/analytics-next/src/plugins/segmentio/schedule-flush.ts", "../../../node_modules/@segment/analytics-next/src/lib/get-process-env.ts", "../../../node_modules/@segment/analytics-next/src/browser/index.ts", "../../../node_modules/@segment/analytics-next/src/plugins/env-enrichment/index.ts", "../../../node_modules/@segment/analytics-next/src/lib/client-hints/index.ts", "../../../node_modules/@segment/analytics-next/src/plugins/remote-loader/index.ts", "../../../node_modules/@segment/analytics-next/src/core/inspector/index.ts", "../../../node_modules/@segment/analytics-next/src/index.ts", "../../javascript/controllers/analytics_controller.js", "../../javascript/controllers/banks_list_controller.js", "../../javascript/controllers/pay/open_banking_callback_controller.js", "../../javascript/channels/consumer.js", "../../javascript/controllers/pay/payment_controller.js", "../../javascript/controllers/pay/payment_request_controller.js", "../../javascript/controllers/localtime_format_controller.js", "../../javascript/controllers/popup_controller.js", "../../javascript/controllers/qr_code_controller.js", "../../javascript/controllers/resize_controller.js", "../../javascript/controllers/promotion_controller.js", "../../javascript/controllers/toggle_controller.js", "../../javascript/controllers/overscroll_color_controler.js", "../../javascript/controllers/in_view_controller.js", "../../javascript/controllers/barcode_controller.js", "../../javascript/controllers/clipboard_controller.js", "../../javascript/controllers/index.js"],
  "sourcesContent": ["export default {\n  logger: typeof console !== \"undefined\" ? console : undefined,\n  WebSocket: typeof WebSocket !== \"undefined\" ? WebSocket : undefined,\n}\n", "import adapters from \"./adapters\"\n\n// The logger is disabled by default. You can enable it with:\n//\n//   ActionCable.logger.enabled = true\n//\n//   Example:\n//\n//   import * as ActionCable from '@rails/actioncable'\n//\n//   ActionCable.logger.enabled = true\n//   ActionCable.logger.log('Connection Established.')\n//\n\nexport default {\n  log(...messages) {\n    if (this.enabled) {\n      messages.push(Date.now())\n      adapters.logger.log(\"[ActionCable]\", ...messages)\n    }\n  },\n}\n", "import logger from \"./logger\"\n\n// Responsible for ensuring the cable connection is in good health by validating the heartbeat pings sent from the server, and attempting\n// revival reconnections if things go astray. Internal class, not intended for direct user manipulation.\n\nconst now = () => new Date().getTime()\n\nconst secondsSince = time => (now() - time) / 1000\n\nclass ConnectionMonitor {\n  constructor(connection) {\n    this.visibilityDidChange = this.visibilityDidChange.bind(this)\n    this.connection = connection\n    this.reconnectAttempts = 0\n  }\n\n  start() {\n    if (!this.isRunning()) {\n      this.startedAt = now()\n      delete this.stoppedAt\n      this.startPolling()\n      addEventListener(\"visibilitychange\", this.visibilityDidChange)\n      logger.log(`ConnectionMonitor started. stale threshold = ${this.constructor.staleThreshold} s`)\n    }\n  }\n\n  stop() {\n    if (this.isRunning()) {\n      this.stoppedAt = now()\n      this.stopPolling()\n      removeEventListener(\"visibilitychange\", this.visibilityDidChange)\n      logger.log(\"ConnectionMonitor stopped\")\n    }\n  }\n\n  isRunning() {\n    return this.startedAt && !this.stoppedAt\n  }\n\n  recordMessage() {\n    this.pingedAt = now()\n  }\n\n  recordConnect() {\n    this.reconnectAttempts = 0\n    delete this.disconnectedAt\n    logger.log(\"ConnectionMonitor recorded connect\")\n  }\n\n  recordDisconnect() {\n    this.disconnectedAt = now()\n    logger.log(\"ConnectionMonitor recorded disconnect\")\n  }\n\n  // Private\n\n  startPolling() {\n    this.stopPolling()\n    this.poll()\n  }\n\n  stopPolling() {\n    clearTimeout(this.pollTimeout)\n  }\n\n  poll() {\n    this.pollTimeout = setTimeout(() => {\n      this.reconnectIfStale()\n      this.poll()\n    }\n    , this.getPollInterval())\n  }\n\n  getPollInterval() {\n    const { staleThreshold, reconnectionBackoffRate } = this.constructor\n    const backoff = Math.pow(1 + reconnectionBackoffRate, Math.min(this.reconnectAttempts, 10))\n    const jitterMax = this.reconnectAttempts === 0 ? 1.0 : reconnectionBackoffRate\n    const jitter = jitterMax * Math.random()\n    return staleThreshold * 1000 * backoff * (1 + jitter)\n  }\n\n  reconnectIfStale() {\n    if (this.connectionIsStale()) {\n      logger.log(`ConnectionMonitor detected stale connection. reconnectAttempts = ${this.reconnectAttempts}, time stale = ${secondsSince(this.refreshedAt)} s, stale threshold = ${this.constructor.staleThreshold} s`)\n      this.reconnectAttempts++\n      if (this.disconnectedRecently()) {\n        logger.log(`ConnectionMonitor skipping reopening recent disconnect. time disconnected = ${secondsSince(this.disconnectedAt)} s`)\n      } else {\n        logger.log(\"ConnectionMonitor reopening\")\n        this.connection.reopen()\n      }\n    }\n  }\n\n  get refreshedAt() {\n    return this.pingedAt ? this.pingedAt : this.startedAt\n  }\n\n  connectionIsStale() {\n    return secondsSince(this.refreshedAt) > this.constructor.staleThreshold\n  }\n\n  disconnectedRecently() {\n    return this.disconnectedAt && (secondsSince(this.disconnectedAt) < this.constructor.staleThreshold)\n  }\n\n  visibilityDidChange() {\n    if (document.visibilityState === \"visible\") {\n      setTimeout(() => {\n        if (this.connectionIsStale() || !this.connection.isOpen()) {\n          logger.log(`ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = ${document.visibilityState}`)\n          this.connection.reopen()\n        }\n      }\n      , 200)\n    }\n  }\n\n}\n\nConnectionMonitor.staleThreshold = 6 // Server::Connections::BEAT_INTERVAL * 2 (missed two pings)\nConnectionMonitor.reconnectionBackoffRate = 0.15\n\nexport default ConnectionMonitor\n", "export default {\n  \"message_types\": {\n    \"welcome\": \"welcome\",\n    \"disconnect\": \"disconnect\",\n    \"ping\": \"ping\",\n    \"confirmation\": \"confirm_subscription\",\n    \"rejection\": \"reject_subscription\"\n  },\n  \"disconnect_reasons\": {\n    \"unauthorized\": \"unauthorized\",\n    \"invalid_request\": \"invalid_request\",\n    \"server_restart\": \"server_restart\",\n    \"remote\": \"remote\"\n  },\n  \"default_mount_path\": \"/cable\",\n  \"protocols\": [\n    \"actioncable-v1-json\",\n    \"actioncable-unsupported\"\n  ]\n}\n", "import adapters from \"./adapters\"\nimport ConnectionMonitor from \"./connection_monitor\"\nimport INTERNAL from \"./internal\"\nimport logger from \"./logger\"\n\n// Encapsulate the cable connection held by the consumer. This is an internal class not intended for direct user manipulation.\n\nconst {message_types, protocols} = INTERNAL\nconst supportedProtocols = protocols.slice(0, protocols.length - 1)\n\nconst indexOf = [].indexOf\n\nclass Connection {\n  constructor(consumer) {\n    this.open = this.open.bind(this)\n    this.consumer = consumer\n    this.subscriptions = this.consumer.subscriptions\n    this.monitor = new ConnectionMonitor(this)\n    this.disconnected = true\n  }\n\n  send(data) {\n    if (this.isOpen()) {\n      this.webSocket.send(JSON.stringify(data))\n      return true\n    } else {\n      return false\n    }\n  }\n\n  open() {\n    if (this.isActive()) {\n      logger.log(`Attempted to open WebSocket, but existing socket is ${this.getState()}`)\n      return false\n    } else {\n      const socketProtocols = [...protocols, ...this.consumer.subprotocols || []]\n      logger.log(`Opening WebSocket, current state is ${this.getState()}, subprotocols: ${socketProtocols}`)\n      if (this.webSocket) { this.uninstallEventHandlers() }\n      this.webSocket = new adapters.WebSocket(this.consumer.url, socketProtocols)\n      this.installEventHandlers()\n      this.monitor.start()\n      return true\n    }\n  }\n\n  close({allowReconnect} = {allowReconnect: true}) {\n    if (!allowReconnect) { this.monitor.stop() }\n    // Avoid closing websockets in a \"connecting\" state due to Safari 15.1+ bug. See: https://github.com/rails/rails/issues/43835#issuecomment-1002288478\n    if (this.isOpen()) {\n      return this.webSocket.close()\n    }\n  }\n\n  reopen() {\n    logger.log(`Reopening WebSocket, current state is ${this.getState()}`)\n    if (this.isActive()) {\n      try {\n        return this.close()\n      } catch (error) {\n        logger.log(\"Failed to reopen WebSocket\", error)\n      }\n      finally {\n        logger.log(`Reopening WebSocket in ${this.constructor.reopenDelay}ms`)\n        setTimeout(this.open, this.constructor.reopenDelay)\n      }\n    } else {\n      return this.open()\n    }\n  }\n\n  getProtocol() {\n    if (this.webSocket) {\n      return this.webSocket.protocol\n    }\n  }\n\n  isOpen() {\n    return this.isState(\"open\")\n  }\n\n  isActive() {\n    return this.isState(\"open\", \"connecting\")\n  }\n\n  triedToReconnect() {\n    return this.monitor.reconnectAttempts > 0\n  }\n\n  // Private\n\n  isProtocolSupported() {\n    return indexOf.call(supportedProtocols, this.getProtocol()) >= 0\n  }\n\n  isState(...states) {\n    return indexOf.call(states, this.getState()) >= 0\n  }\n\n  getState() {\n    if (this.webSocket) {\n      for (let state in adapters.WebSocket) {\n        if (adapters.WebSocket[state] === this.webSocket.readyState) {\n          return state.toLowerCase()\n        }\n      }\n    }\n    return null\n  }\n\n  installEventHandlers() {\n    for (let eventName in this.events) {\n      const handler = this.events[eventName].bind(this)\n      this.webSocket[`on${eventName}`] = handler\n    }\n  }\n\n  uninstallEventHandlers() {\n    for (let eventName in this.events) {\n      this.webSocket[`on${eventName}`] = function() {}\n    }\n  }\n\n}\n\nConnection.reopenDelay = 500\n\nConnection.prototype.events = {\n  message(event) {\n    if (!this.isProtocolSupported()) { return }\n    const {identifier, message, reason, reconnect, type} = JSON.parse(event.data)\n    this.monitor.recordMessage()\n    switch (type) {\n      case message_types.welcome:\n        if (this.triedToReconnect()) {\n          this.reconnectAttempted = true\n        }\n        this.monitor.recordConnect()\n        return this.subscriptions.reload()\n      case message_types.disconnect:\n        logger.log(`Disconnecting. Reason: ${reason}`)\n        return this.close({allowReconnect: reconnect})\n      case message_types.ping:\n        return null\n      case message_types.confirmation:\n        this.subscriptions.confirmSubscription(identifier)\n        if (this.reconnectAttempted) {\n          this.reconnectAttempted = false\n          return this.subscriptions.notify(identifier, \"connected\", {reconnected: true})\n        } else {\n          return this.subscriptions.notify(identifier, \"connected\", {reconnected: false})\n        }\n      case message_types.rejection:\n        return this.subscriptions.reject(identifier)\n      default:\n        return this.subscriptions.notify(identifier, \"received\", message)\n    }\n  },\n\n  open() {\n    logger.log(`WebSocket onopen event, using '${this.getProtocol()}' subprotocol`)\n    this.disconnected = false\n    if (!this.isProtocolSupported()) {\n      logger.log(\"Protocol is unsupported. Stopping monitor and disconnecting.\")\n      return this.close({allowReconnect: false})\n    }\n  },\n\n  close(event) {\n    logger.log(\"WebSocket onclose event\")\n    if (this.disconnected) { return }\n    this.disconnected = true\n    this.monitor.recordDisconnect()\n    return this.subscriptions.notifyAll(\"disconnected\", {willAttemptReconnect: this.monitor.isRunning()})\n  },\n\n  error() {\n    logger.log(\"WebSocket onerror event\")\n  }\n}\n\nexport default Connection\n", "// A new subscription is created through the ActionCable.Subscriptions instance available on the consumer.\n// It provides a number of callbacks and a method for calling remote procedure calls on the corresponding\n// Channel instance on the server side.\n//\n// An example demonstrates the basic functionality:\n//\n//   App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\", {\n//     connected() {\n//       // Called once the subscription has been successfully completed\n//     },\n//\n//     disconnected({ willAttemptReconnect: boolean }) {\n//       // Called when the client has disconnected with the server.\n//       // The object will have an `willAttemptReconnect` property which\n//       // says whether the client has the intention of attempting\n//       // to reconnect.\n//     },\n//\n//     appear() {\n//       this.perform('appear', {appearing_on: this.appearingOn()})\n//     },\n//\n//     away() {\n//       this.perform('away')\n//     },\n//\n//     appearingOn() {\n//       $('main').data('appearing-on')\n//     }\n//   })\n//\n// The methods #appear and #away forward their intent to the remote AppearanceChannel instance on the server\n// by calling the `perform` method with the first parameter being the action (which maps to AppearanceChannel#appear/away).\n// The second parameter is a hash that'll get JSON encoded and made available on the server in the data parameter.\n//\n// This is how the server component would look:\n//\n//   class AppearanceChannel < ApplicationActionCable::Channel\n//     def subscribed\n//       current_user.appear\n//     end\n//\n//     def unsubscribed\n//       current_user.disappear\n//     end\n//\n//     def appear(data)\n//       current_user.appear on: data['appearing_on']\n//     end\n//\n//     def away\n//       current_user.away\n//     end\n//   end\n//\n// The \"AppearanceChannel\" name is automatically mapped between the client-side subscription creation and the server-side Ruby class name.\n// The AppearanceChannel#appear/away public methods are exposed automatically to client-side invocation through the perform method.\n\nconst extend = function(object, properties) {\n  if (properties != null) {\n    for (let key in properties) {\n      const value = properties[key]\n      object[key] = value\n    }\n  }\n  return object\n}\n\nexport default class Subscription {\n  constructor(consumer, params = {}, mixin) {\n    this.consumer = consumer\n    this.identifier = JSON.stringify(params)\n    extend(this, mixin)\n  }\n\n  // Perform a channel action with the optional data passed as an attribute\n  perform(action, data = {}) {\n    data.action = action\n    return this.send(data)\n  }\n\n  send(data) {\n    return this.consumer.send({command: \"message\", identifier: this.identifier, data: JSON.stringify(data)})\n  }\n\n  unsubscribe() {\n    return this.consumer.subscriptions.remove(this)\n  }\n}\n", "import logger from \"./logger\"\n\n// Responsible for ensuring channel subscribe command is confirmed, retrying until confirmation is received.\n// Internal class, not intended for direct user manipulation.\n\nclass SubscriptionGuarantor {\n  constructor(subscriptions) {\n    this.subscriptions = subscriptions\n    this.pendingSubscriptions = []\n  }\n\n  guarantee(subscription) {\n    if(this.pendingSubscriptions.indexOf(subscription) == -1){ \n      logger.log(`SubscriptionGuarantor guaranteeing ${subscription.identifier}`)\n      this.pendingSubscriptions.push(subscription) \n    }\n    else {\n      logger.log(`SubscriptionGuarantor already guaranteeing ${subscription.identifier}`)\n    }\n    this.startGuaranteeing()\n  }\n\n  forget(subscription) {\n    logger.log(`SubscriptionGuarantor forgetting ${subscription.identifier}`)\n    this.pendingSubscriptions = (this.pendingSubscriptions.filter((s) => s !== subscription))\n  }\n\n  startGuaranteeing() {\n    this.stopGuaranteeing()\n    this.retrySubscribing()\n  }\n  \n  stopGuaranteeing() {\n    clearTimeout(this.retryTimeout)\n  }\n\n  retrySubscribing() {\n    this.retryTimeout = setTimeout(() => {\n      if (this.subscriptions && typeof(this.subscriptions.subscribe) === \"function\") {\n        this.pendingSubscriptions.map((subscription) => {\n          logger.log(`SubscriptionGuarantor resubscribing ${subscription.identifier}`)\n          this.subscriptions.subscribe(subscription)\n        })\n      }\n    }\n    , 500)\n  }\n}\n\nexport default SubscriptionGuarantor", "import logger from \"./logger\"\nimport Subscription from \"./subscription\"\nimport SubscriptionGuarantor from \"./subscription_guarantor\"\n\n// Collection class for creating (and internally managing) channel subscriptions.\n// The only method intended to be triggered by the user is ActionCable.Subscriptions#create,\n// and it should be called through the consumer like so:\n//\n//   App = {}\n//   App.cable = ActionCable.createConsumer(\"ws://example.com/accounts/1\")\n//   App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\")\n//\n// For more details on how you'd configure an actual channel subscription, see ActionCable.Subscription.\n\nexport default class Subscriptions {\n  constructor(consumer) {\n    this.consumer = consumer\n    this.guarantor = new SubscriptionGuarantor(this)\n    this.subscriptions = []\n  }\n\n  create(channelName, mixin) {\n    const channel = channelName\n    const params = typeof channel === \"object\" ? channel : {channel}\n    const subscription = new Subscription(this.consumer, params, mixin)\n    return this.add(subscription)\n  }\n\n  // Private\n\n  add(subscription) {\n    this.subscriptions.push(subscription)\n    this.consumer.ensureActiveConnection()\n    this.notify(subscription, \"initialized\")\n    this.subscribe(subscription)\n    return subscription\n  }\n\n  remove(subscription) {\n    this.forget(subscription)\n    if (!this.findAll(subscription.identifier).length) {\n      this.sendCommand(subscription, \"unsubscribe\")\n    }\n    return subscription\n  }\n\n  reject(identifier) {\n    return this.findAll(identifier).map((subscription) => {\n      this.forget(subscription)\n      this.notify(subscription, \"rejected\")\n      return subscription\n    })\n  }\n\n  forget(subscription) {\n    this.guarantor.forget(subscription)\n    this.subscriptions = (this.subscriptions.filter((s) => s !== subscription))\n    return subscription\n  }\n\n  findAll(identifier) {\n    return this.subscriptions.filter((s) => s.identifier === identifier)\n  }\n\n  reload() {\n    return this.subscriptions.map((subscription) =>\n      this.subscribe(subscription))\n  }\n\n  notifyAll(callbackName, ...args) {\n    return this.subscriptions.map((subscription) =>\n      this.notify(subscription, callbackName, ...args))\n  }\n\n  notify(subscription, callbackName, ...args) {\n    let subscriptions\n    if (typeof subscription === \"string\") {\n      subscriptions = this.findAll(subscription)\n    } else {\n      subscriptions = [subscription]\n    }\n\n    return subscriptions.map((subscription) =>\n      (typeof subscription[callbackName] === \"function\" ? subscription[callbackName](...args) : undefined))\n  }\n\n  subscribe(subscription) {\n    if (this.sendCommand(subscription, \"subscribe\")) {\n      this.guarantor.guarantee(subscription)\n    }\n  }\n\n  confirmSubscription(identifier) {\n    logger.log(`Subscription confirmed ${identifier}`)\n    this.findAll(identifier).map((subscription) =>\n      this.guarantor.forget(subscription))\n  }\n\n  sendCommand(subscription, command) {\n    const {identifier} = subscription\n    return this.consumer.send({command, identifier})\n  }\n}\n", "import Connection from \"./connection\"\nimport Subscriptions from \"./subscriptions\"\n\n// The ActionCable.Consumer establishes the connection to a server-side Ruby Connection object. Once established,\n// the ActionCable.ConnectionMonitor will ensure that its properly maintained through heartbeats and checking for stale updates.\n// The Consumer instance is also the gateway to establishing subscriptions to desired channels through the #createSubscription\n// method.\n//\n// The following example shows how this can be set up:\n//\n//   App = {}\n//   App.cable = ActionCable.createConsumer(\"ws://example.com/accounts/1\")\n//   App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\")\n//\n// For more details on how you'd configure an actual channel subscription, see ActionCable.Subscription.\n//\n// When a consumer is created, it automatically connects with the server.\n//\n// To disconnect from the server, call\n//\n//   App.cable.disconnect()\n//\n// and to restart the connection:\n//\n//   App.cable.connect()\n//\n// Any channel subscriptions which existed prior to disconnecting will\n// automatically resubscribe.\n\nexport default class Consumer {\n  constructor(url) {\n    this._url = url\n    this.subscriptions = new Subscriptions(this)\n    this.connection = new Connection(this)\n    this.subprotocols = []\n  }\n\n  get url() {\n    return createWebSocketURL(this._url)\n  }\n\n  send(data) {\n    return this.connection.send(data)\n  }\n\n  connect() {\n    return this.connection.open()\n  }\n\n  disconnect() {\n    return this.connection.close({allowReconnect: false})\n  }\n\n  ensureActiveConnection() {\n    if (!this.connection.isActive()) {\n      return this.connection.open()\n    }\n  }\n\n  addSubProtocol(subprotocol) {\n    this.subprotocols = [...this.subprotocols, subprotocol]\n  }\n}\n\nexport function createWebSocketURL(url) {\n  if (typeof url === \"function\") {\n    url = url()\n  }\n\n  if (url && !/^wss?:/i.test(url)) {\n    const a = document.createElement(\"a\")\n    a.href = url\n    // Fix populating Location properties in IE. Otherwise, protocol will be blank.\n    a.href = a.href // eslint-disable-line\n    a.protocol = a.protocol.replace(\"http\", \"ws\")\n    return a.href\n  } else {\n    return url\n  }\n}\n", "import adapters from \"./adapters\"\nimport Connection from \"./connection\"\nimport ConnectionMonitor from \"./connection_monitor\"\nimport Consumer, { createWebSocketURL } from \"./consumer\"\nimport INTERNAL from \"./internal\"\nimport logger from \"./logger\"\nimport Subscription from \"./subscription\"\nimport SubscriptionGuarantor from \"./subscription_guarantor\"\nimport Subscriptions from \"./subscriptions\"\n\nexport {\n  Connection,\n  ConnectionMonitor,\n  Consumer,\n  INTERNAL,\n  Subscription,\n  Subscriptions,\n  SubscriptionGuarantor,\n  adapters,\n  createWebSocketURL,\n  logger,\n}\n\nexport function createConsumer(url = getConfig(\"url\") || INTERNAL.default_mount_path) {\n  return new Consumer(url)\n}\n\nexport function getConfig(name) {\n  const element = document.head.querySelector(`meta[name='action-cable-${name}']`)\n  if (element) {\n    return element.getAttribute(\"content\")\n  }\n}\n", "/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    if (typeof b !== \"function\" && b !== null)\r\n        throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\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) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    var desc = Object.getOwnPropertyDescriptor(m, k);\r\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n        desc = { enumerable: true, get: function() { return m[k]; } };\r\n    }\r\n    Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n        if (ar || !(i in from)) {\r\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n            ar[i] = from[i];\r\n        }\r\n    }\r\n    return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\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 () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n    o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n    __setModuleDefault(result, mod);\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n    if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n    return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n    if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n    return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n", "export {};\n//# sourceMappingURL=interface.js.map", "export {};\n//# sourceMappingURL=index.js.map", "export {};\n//# sourceMappingURL=interfaces.js.map", "export function dset(obj, keys, val) {\n\tkeys.split && (keys=keys.split('.'));\n\tvar i=0, l=keys.length, t=obj, x, k;\n\twhile (i < l) {\n\t\tk = ''+keys[i++];\n\t\tif (k === '__proto__' || k === 'constructor' || k === 'prototype') break;\n\t\tt = t[k] = (i === l) ? val : (typeof(x=t[k])===typeof(keys)) ? x : (keys[i]*0 !== 0 || !!~(''+keys[i]).indexOf('.')) ? {} : [];\n\t}\n}\n", "export const pickBy = <T extends object, K extends keyof T>(\n  obj: T,\n  fn: (key: K, v: T[K]) => boolean\n) => {\n  return (Object.keys(obj) as K[])\n    .filter((k) => fn(k, obj[k]))\n    .reduce((acc, key) => ((acc[key] = obj[key]), acc), {} as Partial<T>)\n}\n", "export class ValidationError extends Error {\n  field: string\n\n  constructor(field: string, message: string) {\n    super(`${field} ${message}`)\n    this.field = field\n  }\n}\n", "export function isString(obj: unknown): obj is string {\n  return typeof obj === 'string'\n}\n\nexport function isNumber(obj: unknown): obj is number {\n  return typeof obj === 'number'\n}\n\nexport function isFunction(obj: unknown): obj is Function {\n  return typeof obj === 'function'\n}\n\nexport function exists<T>(val: unknown): val is NonNullable<T> {\n  return val !== undefined && val !== null\n}\n\nexport function isPlainObject(\n  obj: unknown\n): obj is Record<string | symbol | number, unknown> {\n  return (\n    Object.prototype.toString.call(obj).slice(8, -1).toLowerCase() === 'object'\n  )\n}\n", "import { CoreSegmentEvent } from '../events'\nimport { ValidationError } from './errors'\nimport { isString, isPlainObject, exists } from './helpers'\n\nconst stringError = 'is not a string'\nconst objError = 'is not an object'\nconst nilError = 'is nil'\n\n// user identity check could hypothetically could be used in the browser event factory, but not 100% sure -- so this is node only for now\nexport function assertUserIdentity(event: CoreSegmentEvent): void {\n  const USER_FIELD_NAME = '.userId/anonymousId/previousId/groupId'\n\n  const getAnyUserId = (event: CoreSegmentEvent) =>\n    event.userId ?? event.anonymousId ?? event.groupId ?? event.previousId\n\n  const id = getAnyUserId(event)\n  if (!exists(id)) {\n    throw new ValidationError(USER_FIELD_NAME, nilError)\n  } else if (!isString(id)) {\n    throw new ValidationError(USER_FIELD_NAME, stringError)\n  }\n}\n\nexport function assertEventExists(\n  event?: CoreSegmentEvent | null\n): asserts event is CoreSegmentEvent {\n  if (!exists(event)) {\n    throw new ValidationError('Event', nilError)\n  }\n  if (typeof event !== 'object') {\n    throw new ValidationError('Event', objError)\n  }\n}\n\nexport function assertEventType(event: CoreSegmentEvent): void {\n  if (!isString(event.type)) {\n    throw new ValidationError('.type', stringError)\n  }\n}\n\nexport function assertTrackEventName(event: CoreSegmentEvent): void {\n  if (!isString(event.event)) {\n    throw new ValidationError('.event', stringError)\n  }\n}\n\nexport function assertTrackEventProperties(event: CoreSegmentEvent): void {\n  if (!isPlainObject(event.properties)) {\n    throw new ValidationError('.properties', objError)\n  }\n}\n\nexport function assertTraits(event: CoreSegmentEvent): void {\n  if (!isPlainObject(event.traits)) {\n    throw new ValidationError('.traits', objError)\n  }\n}\n\nexport function assertMessageId(event: CoreSegmentEvent): void {\n  if (!isString(event.messageId)) {\n    throw new ValidationError('.messageId', stringError)\n  }\n}\n\nexport function validateEvent(event?: CoreSegmentEvent | null) {\n  assertEventExists(event)\n  assertEventType(event)\n  assertMessageId(event)\n\n  if (event.type === 'track') {\n    assertTrackEventName(event)\n    assertTrackEventProperties(event)\n  }\n\n  if (['group', 'identify'].includes(event.type)) {\n    assertTraits(event)\n  }\n}\n", "export * from './interfaces'\nimport { dset } from 'dset'\nimport { ID } from '../user'\nimport {\n  IntegrationsOptions,\n  EventProperties,\n  CoreSegmentEvent,\n  CoreOptions,\n  CoreExtraContext,\n  UserTraits,\n  GroupTraits,\n} from './interfaces'\nimport { pickBy } from '../utils/pick'\nimport type { RemoveIndexSignature } from '../utils/ts-helpers'\nimport { validateEvent } from '../validation/assertions'\n\nexport type EventMethodCallHook = ({\n  type,\n  options,\n}: {\n  type: 'track' | 'identify' | 'page' | 'group' | 'alias' | 'screen'\n  options?: CoreOptions\n}) => void\n\nexport type EventHook = (event: CoreSegmentEvent) => void\n\nexport interface EventFactorySettings {\n  /**\n   * Universal `messageId` builder for all events (these must be unique)\n   */\n  createMessageId: () => string\n  /**\n   * Hook to do something with an event right before they are returned from the factory.\n   * This includes event modification or additional validation.\n   */\n  onFinishedEvent?: EventHook\n  /**\n   * Hook whenever an event method is called (track, page, etc.)\n   * Can be used to update Options (or just listen)\n   */\n  onEventMethodCall?: EventMethodCallHook\n}\n\n/**\n * Internal settings object that is used internally by the factory\n */\nclass InternalEventFactorySettings {\n  public createMessageId: EventFactorySettings['createMessageId']\n  public onEventMethodCall: EventMethodCallHook\n  public onFinishedEvent: EventHook\n\n  constructor(public settings: EventFactorySettings) {\n    this.createMessageId = settings.createMessageId\n    this.onEventMethodCall = settings.onEventMethodCall ?? (() => {})\n    this.onFinishedEvent = settings.onFinishedEvent ?? (() => {})\n  }\n}\n\nexport abstract class CoreEventFactory {\n  private settings: InternalEventFactorySettings\n\n  constructor(settings: EventFactorySettings) {\n    this.settings = new InternalEventFactorySettings(settings)\n  }\n\n  track(\n    event: string,\n    properties?: EventProperties,\n    options?: CoreOptions,\n    integrationOptions?: IntegrationsOptions\n  ) {\n    this.settings.onEventMethodCall({ type: 'track', options })\n    return this.normalize({\n      ...this.baseEvent(),\n      event,\n      type: 'track',\n      properties: properties ?? {}, // TODO: why is this not a shallow copy like everywhere else?\n      options: { ...options },\n      integrations: { ...integrationOptions },\n    })\n  }\n\n  page(\n    category: string | null,\n    page: string | null,\n    properties?: EventProperties,\n    options?: CoreOptions,\n    integrationOptions?: IntegrationsOptions\n  ): CoreSegmentEvent {\n    this.settings.onEventMethodCall({ type: 'page', options })\n    const event: CoreSegmentEvent = {\n      type: 'page',\n      properties: { ...properties },\n      options: { ...options },\n      integrations: { ...integrationOptions },\n    }\n\n    if (category !== null) {\n      event.category = category\n      event.properties = event.properties ?? {}\n      event.properties.category = category\n    }\n\n    if (page !== null) {\n      event.name = page\n    }\n\n    return this.normalize({\n      ...this.baseEvent(),\n      ...event,\n    })\n  }\n\n  screen(\n    category: string | null,\n    screen: string | null,\n    properties?: EventProperties,\n    options?: CoreOptions,\n    integrationOptions?: IntegrationsOptions\n  ): CoreSegmentEvent {\n    this.settings.onEventMethodCall({ type: 'screen', options })\n    const event: CoreSegmentEvent = {\n      type: 'screen',\n      properties: { ...properties },\n      options: { ...options },\n      integrations: { ...integrationOptions },\n    }\n\n    if (category !== null) {\n      event.category = category\n    }\n\n    if (screen !== null) {\n      event.name = screen\n    }\n\n    return this.normalize({\n      ...this.baseEvent(),\n      ...event,\n    })\n  }\n\n  identify(\n    userId: ID,\n    traits?: UserTraits,\n    options?: CoreOptions,\n    integrationsOptions?: IntegrationsOptions\n  ): CoreSegmentEvent {\n    this.settings.onEventMethodCall({ type: 'identify', options })\n    return this.normalize({\n      ...this.baseEvent(),\n      type: 'identify',\n      userId,\n      traits: traits ?? {},\n      options: { ...options },\n      integrations: integrationsOptions,\n    })\n  }\n\n  group(\n    groupId: ID,\n    traits?: GroupTraits,\n    options?: CoreOptions,\n    integrationOptions?: IntegrationsOptions\n  ): CoreSegmentEvent {\n    this.settings.onEventMethodCall({ type: 'group', options })\n    return this.normalize({\n      ...this.baseEvent(),\n      type: 'group',\n      traits: traits ?? {},\n      options: { ...options }, // this spreading is intentional\n      integrations: { ...integrationOptions }, //\n      groupId,\n    })\n  }\n\n  alias(\n    to: string,\n    from: string | null, // TODO: can we make this undefined?\n    options?: CoreOptions,\n    integrationOptions?: IntegrationsOptions\n  ): CoreSegmentEvent {\n    this.settings.onEventMethodCall({ type: 'alias', options })\n    const base: CoreSegmentEvent = {\n      userId: to,\n      type: 'alias',\n      options: { ...options },\n      integrations: { ...integrationOptions },\n    }\n\n    if (from !== null) {\n      base.previousId = from\n    }\n\n    if (to === undefined) {\n      return this.normalize({\n        ...base,\n        ...this.baseEvent(),\n      })\n    }\n\n    return this.normalize({\n      ...this.baseEvent(),\n      ...base,\n    })\n  }\n\n  private baseEvent(): Partial<CoreSegmentEvent> {\n    return {\n      integrations: {},\n      options: {},\n    }\n  }\n\n  /**\n   * Builds the context part of an event based on \"foreign\" keys that\n   * are provided in the `Options` parameter for an Event\n   */\n  private context(\n    options: CoreOptions\n  ): [CoreExtraContext, Partial<CoreSegmentEvent>] {\n    type CoreOptionKeys = keyof RemoveIndexSignature<CoreOptions>\n    /**\n     * If the event options are known keys from this list, we move them to the top level of the event.\n     * Any other options are moved to context.\n     */\n    const eventOverrideKeys: CoreOptionKeys[] = [\n      'userId',\n      'anonymousId',\n      'timestamp',\n      'messageId',\n    ]\n\n    delete options['integrations']\n    const providedOptionsKeys = Object.keys(options) as Exclude<\n      CoreOptionKeys,\n      'integrations'\n    >[]\n\n    const context = options.context ?? {}\n    const eventOverrides = {}\n\n    providedOptionsKeys.forEach((key) => {\n      if (key === 'context') {\n        return\n      }\n\n      if (eventOverrideKeys.includes(key)) {\n        dset(eventOverrides, key, options[key])\n      } else {\n        dset(context, key, options[key])\n      }\n    })\n\n    return [context, eventOverrides]\n  }\n\n  private normalize(event: CoreSegmentEvent): CoreSegmentEvent {\n    const integrationBooleans = Object.keys(event.integrations ?? {}).reduce(\n      (integrationNames, name) => {\n        return {\n          ...integrationNames,\n          [name]: Boolean(event.integrations?.[name]),\n        }\n      },\n      {} as Record<string, boolean>\n    )\n\n    // filter out any undefined options\n    event.options = pickBy(event.options || {}, (_, value) => {\n      return value !== undefined\n    })\n\n    // This is pretty trippy, but here's what's going on:\n    // - a) We don't pass initial integration options as part of the event, only if they're true or false\n    // - b) We do accept per integration overrides (like integrations.Amplitude.sessionId) at the event level\n    // Hence the need to convert base integration options to booleans, but maintain per event integration overrides\n    const allIntegrations = {\n      // Base config integrations object as booleans\n      ...integrationBooleans,\n\n      // Per event overrides, for things like amplitude sessionId, for example\n      ...event.options?.integrations,\n    }\n\n    const [context, overrides] = event.options\n      ? this.context(event.options)\n      : []\n\n    const { options, ...rest } = event\n\n    const evt: CoreSegmentEvent = {\n      timestamp: new Date(),\n      ...rest,\n      context,\n      integrations: allIntegrations,\n      ...overrides,\n      messageId: options.messageId || this.settings.createMessageId(),\n    }\n\n    this.settings.onFinishedEvent(evt)\n    validateEvent(evt)\n\n    return evt\n  }\n}\n", "import { CoreContext } from '../context'\nimport type { Callback } from '../events'\n\nexport function pTimeout<T>(promise: Promise<T>, timeout: number): Promise<T> {\n  return new Promise((resolve, reject) => {\n    const timeoutId = setTimeout(() => {\n      reject(Error('Promise timed out'))\n    }, timeout)\n\n    promise\n      .then((val) => {\n        clearTimeout(timeoutId)\n        return resolve(val)\n      })\n      .catch(reject)\n  })\n}\n\nexport function sleep(timeoutInMs: number): Promise<void> {\n  return new Promise((resolve) => setTimeout(resolve, timeoutInMs))\n}\n\n/**\n * @param ctx\n * @param callback - the function to invoke\n * @param delay - aka \"timeout\". The amount of time in ms to wait before invoking the callback.\n */\nexport function invokeCallback<Ctx extends CoreContext>(\n  ctx: Ctx,\n  callback: Callback<Ctx>,\n  delay: number\n): Promise<Ctx> {\n  const cb = () => {\n    try {\n      return Promise.resolve(callback(ctx))\n    } catch (err) {\n      return Promise.reject(err)\n    }\n  }\n\n  return (\n    sleep(delay)\n      // pTimeout ensures that the callback can't cause the context to hang\n      .then(() => pTimeout(cb(), 1000))\n      .catch((err) => {\n        ctx?.log('warn', 'Callback Error', { error: err })\n        ctx?.stats.increment('callback_error')\n      })\n      .then(() => ctx)\n  )\n}\n", "/**\n * Return a promise that can be externally resolved\n */\nexport const createDeferred = <T>() => {\n  let resolve!: (value: T | PromiseLike<T>) => void\n  let reject!: (reason: any) => void\n  let settled = false\n  const promise = new Promise<T>((_resolve, _reject) => {\n    resolve = (...args) => {\n      settled = true\n      _resolve(...args)\n    }\n    reject = (...args) => {\n      settled = true\n      _reject(...args)\n    }\n  })\n\n  return {\n    resolve,\n    reject,\n    promise,\n    isSettled: () => settled,\n  }\n}\n", "export * from './create-deferred'\n", "type EventName = string\ntype EventFnArgs = any[]\ntype EmitterContract = Record<EventName, EventFnArgs>\n\nexport interface EmitterOptions {\n  /** How many event listeners for a particular event before emitting a warning (0 = disabled)\n   *  @default 10\n   **/\n  maxListeners?: number\n}\n\n/**\n * Event Emitter that takes the expected contract as a generic\n * @example\n * ```ts\n *  type Contract = {\n *    delivery_success: [DeliverySuccessResponse, Metrics],\n *    delivery_failure: [DeliveryError]\n * }\n *  new Emitter<Contract>()\n *  .on('delivery_success', (res, metrics) => ...)\n *  .on('delivery_failure', (err) => ...)\n * ```\n */\nexport class Emitter<Contract extends EmitterContract = EmitterContract> {\n  maxListeners: number\n  constructor(options?: EmitterOptions) {\n    this.maxListeners = options?.maxListeners ?? 10\n  }\n  private callbacks: Partial<Contract> = {}\n  private warned = false\n\n  private warnIfPossibleMemoryLeak<EventName extends keyof Contract>(\n    event: EventName\n  ) {\n    if (this.warned) {\n      return\n    }\n    if (\n      this.maxListeners &&\n      this.callbacks[event]!.length > this.maxListeners\n    ) {\n      console.warn(\n        `Event Emitter: Possible memory leak detected; ${String(\n          event\n        )} has exceeded ${this.maxListeners} listeners.`\n      )\n      this.warned = true\n    }\n  }\n\n  on<EventName extends keyof Contract>(\n    event: EventName,\n    callback: (...args: Contract[EventName]) => void\n  ): this {\n    if (!this.callbacks[event]) {\n      this.callbacks[event] = [callback] as Contract[EventName]\n    } else {\n      this.callbacks[event]!.push(callback)\n      this.warnIfPossibleMemoryLeak(event)\n    }\n    return this\n  }\n\n  once<EventName extends keyof Contract>(\n    event: EventName,\n    callback: (...args: Contract[EventName]) => void\n  ): this {\n    const on = (...args: Contract[EventName]): void => {\n      this.off(event, on)\n      callback.apply(this, args)\n    }\n\n    this.on(event, on)\n    return this\n  }\n\n  off<EventName extends keyof Contract>(\n    event: EventName,\n    callback: (...args: Contract[EventName]) => void\n  ): this {\n    const fns = this.callbacks[event] ?? []\n    const without = fns.filter((fn) => fn !== callback) as Contract[EventName]\n    this.callbacks[event] = without\n    return this\n  }\n\n  emit<EventName extends keyof Contract>(\n    event: EventName,\n    ...args: Contract[EventName]\n  ): this {\n    const callbacks = this.callbacks[event] ?? []\n    callbacks.forEach((callback) => {\n      callback.apply(this, args)\n    })\n    return this\n  }\n}\n", "export * from './emitter'\n", "export * from './create-deferred'\nexport * from './emitter'\n", "type BackoffParams = {\n  /** The number of milliseconds before starting the first retry. Default is 500 */\n  minTimeout?: number\n\n  /** The maximum number of milliseconds between two retries. Default is Infinity */\n  maxTimeout?: number\n\n  /** The exponential factor to use. Default is 2. */\n  factor?: number\n\n  /** The current attempt */\n  attempt: number\n}\n\nexport function backoff(params: BackoffParams): number {\n  const random = Math.random() + 1\n  const {\n    minTimeout = 500,\n    factor = 2,\n    attempt,\n    maxTimeout = Infinity,\n  } = params\n  return Math.min(random * minTimeout * Math.pow(factor, attempt), maxTimeout)\n}\n", "import { Emitter } from '@segment/analytics-generic-utils'\nimport { backoff } from './backoff'\n\n/**\n * @internal\n */\nexport const ON_REMOVE_FROM_FUTURE = 'onRemoveFromFuture'\n\ninterface QueueItem {\n  id: string\n}\n\nexport class PriorityQueue<Item extends QueueItem = QueueItem> extends Emitter {\n  protected future: Item[] = []\n  protected queue: Item[]\n  protected seen: Record<string, number>\n\n  public maxAttempts: number\n\n  constructor(\n    maxAttempts: number,\n    queue: Item[],\n    seen?: Record<string, number>\n  ) {\n    super()\n    this.maxAttempts = maxAttempts\n    this.queue = queue\n    this.seen = seen ?? {}\n  }\n\n  push(...items: Item[]): boolean[] {\n    const accepted = items.map((operation) => {\n      const attempts = this.updateAttempts(operation)\n\n      if (attempts > this.maxAttempts || this.includes(operation)) {\n        return false\n      }\n\n      this.queue.push(operation)\n      return true\n    })\n\n    this.queue = this.queue.sort(\n      (a, b) => this.getAttempts(a) - this.getAttempts(b)\n    )\n    return accepted\n  }\n\n  pushWithBackoff(item: Item, minTimeout = 0): boolean {\n    // One immediate retry unless we have a minimum timeout (e.g. for rate limiting)\n    if (minTimeout == 0 && this.getAttempts(item) === 0) {\n      return this.push(item)[0]\n    }\n\n    const attempt = this.updateAttempts(item)\n\n    if (attempt > this.maxAttempts || this.includes(item)) {\n      return false\n    }\n\n    let timeout = backoff({ attempt: attempt - 1 })\n    if (minTimeout > 0 && timeout < minTimeout) {\n      timeout = minTimeout\n    }\n\n    setTimeout(() => {\n      this.queue.push(item)\n      // remove from future list\n      this.future = this.future.filter((f) => f.id !== item.id)\n      // Lets listeners know that a 'future' message is now available in the queue\n      this.emit(ON_REMOVE_FROM_FUTURE)\n    }, timeout)\n\n    this.future.push(item)\n    return true\n  }\n\n  public getAttempts(item: Item): number {\n    return this.seen[item.id] ?? 0\n  }\n\n  public updateAttempts(item: Item): number {\n    this.seen[item.id] = this.getAttempts(item) + 1\n    return this.getAttempts(item)\n  }\n\n  includes(item: Item): boolean {\n    return (\n      this.queue.includes(item) ||\n      this.future.includes(item) ||\n      Boolean(this.queue.find((i) => i.id === item.id)) ||\n      Boolean(this.future.find((i) => i.id === item.id))\n    )\n  }\n\n  pop(): Item | undefined {\n    return this.queue.shift()\n  }\n\n  public get length(): number {\n    return this.queue.length\n  }\n\n  public get todo(): number {\n    return this.queue.length + this.future.length\n  }\n}\n", "var IDX=256, HEX=[], BUFFER;\nwhile (IDX--) HEX[IDX] = (IDX + 256).toString(16).substring(1);\n\nexport function v4() {\n\tvar i=0, num, out='';\n\n\tif (!BUFFER || ((IDX + 16) > 256)) {\n\t\tBUFFER = Array(i=256);\n\t\twhile (i--) BUFFER[i] = 256 * Math.random() | 0;\n\t\ti = IDX = 0;\n\t}\n\n\tfor (; i < 16; i++) {\n\t\tnum = BUFFER[IDX + i];\n\t\tif (i==6) out += HEX[num & 15 | 64];\n\t\telse if (i==8) out += HEX[num & 63 | 128];\n\t\telse out += HEX[num];\n\n\t\tif (i & 1 && i > 1 && i < 11) out += '-';\n\t}\n\n\tIDX++;\n\treturn out;\n}\n", "export type LogLevel = 'debug' | 'info' | 'warn' | 'error'\nexport type LogMessage = {\n  level: LogLevel\n  message: string\n  time?: Date\n  extras?: Record<string, any>\n}\n\nexport interface GenericLogger {\n  log(level: LogLevel, message: string, extras?: object): void\n  flush(): void\n  logs: LogMessage[]\n}\n\nexport class CoreLogger implements GenericLogger {\n  private _logs: LogMessage[] = []\n\n  log(level: LogLevel, message: string, extras?: object) {\n    const time = new Date()\n    this._logs.push({\n      level,\n      message,\n      time,\n      extras,\n    })\n  }\n\n  public get logs(): LogMessage[] {\n    return this._logs\n  }\n\n  public flush(): void {\n    if (this.logs.length > 1) {\n      const formatted = this._logs.reduce((logs, log) => {\n        const line = {\n          ...log,\n          json: JSON.stringify(log.extras, null, ' '),\n          extras: log.extras,\n        }\n\n        delete line['time']\n\n        let key = log.time?.toISOString() ?? ''\n        if (logs[key]) {\n          key = `${key}-${Math.random()}`\n        }\n\n        return {\n          ...logs,\n          [key]: line,\n        }\n      }, {} as Record<string, LogMessage>)\n\n      // ie doesn't like console.table\n      if (console.table) {\n        console.table(formatted)\n      } else {\n        console.log(formatted)\n      }\n    } else {\n      this.logs.forEach((logEntry) => {\n        const { level, message, extras } = logEntry\n\n        if (level === 'info' || level === 'debug') {\n          console.log(message, extras ?? '')\n        } else {\n          console[level](message, extras ?? '')\n        }\n      })\n    }\n\n    this._logs = []\n  }\n}\n", "type CompactMetricType = 'g' | 'c'\n\nexport type CoreMetricType = 'gauge' | 'counter'\n\nexport interface CoreMetric {\n  metric: string\n  value: number\n  type: CoreMetricType\n  tags: string[]\n  timestamp: number // unit milliseconds\n}\n\nexport interface CompactMetric {\n  m: string // metric name\n  v: number // value\n  k: CompactMetricType\n  t: string[] // tags\n  e: number // timestamp in unit milliseconds\n}\n\nconst compactMetricType = (type: CoreMetricType): CompactMetricType => {\n  const enums: Record<CoreMetricType, CompactMetricType> = {\n    gauge: 'g',\n    counter: 'c',\n  }\n  return enums[type]\n}\n\nexport abstract class CoreStats {\n  metrics: CoreMetric[] = []\n  increment(metric: string, by = 1, tags?: string[]): void {\n    this.metrics.push({\n      metric,\n      value: by,\n      tags: tags ?? [],\n      type: 'counter',\n      timestamp: Date.now(),\n    })\n  }\n\n  gauge(metric: string, value: number, tags?: string[]): void {\n    this.metrics.push({\n      metric,\n      value,\n      tags: tags ?? [],\n      type: 'gauge',\n      timestamp: Date.now(),\n    })\n  }\n\n  flush(): void {\n    const formatted = this.metrics.map((m) => ({\n      ...m,\n      tags: m.tags.join(','),\n    }))\n    // ie doesn't like console.table\n    if (console.table) {\n      console.table(formatted)\n    } else {\n      console.log(formatted)\n    }\n    this.metrics = []\n  }\n\n  /**\n   * compact keys for smaller payload\n   */\n  serialize(): CompactMetric[] {\n    return this.metrics.map((m) => {\n      return {\n        m: m.metric,\n        v: m.value,\n        t: m.tags,\n        k: compactMetricType(m.type),\n        e: m.timestamp,\n      }\n    })\n  }\n}\n\nexport class NullStats extends CoreStats {\n  override gauge(..._args: Parameters<CoreStats['gauge']>) {}\n  override increment(..._args: Parameters<CoreStats['increment']>) {}\n  override flush(..._args: Parameters<CoreStats['flush']>) {}\n  override serialize(..._args: Parameters<CoreStats['serialize']>) {\n    return []\n  }\n}\n", "import { CoreSegmentEvent } from '../events/interfaces'\n\nimport { v4 as uuid } from '@lukeed/uuid'\nimport { dset } from 'dset'\nimport { CoreLogger, LogLevel, LogMessage } from '../logger'\nimport { CoreStats, CoreMetric, NullStats } from '../stats'\n\nexport interface SerializedContext {\n  id: string\n  event: CoreSegmentEvent\n  logs: LogMessage[]\n  metrics?: CoreMetric[]\n}\n\nexport interface ContextFailedDelivery {\n  reason: unknown\n}\n\nexport interface CancelationOptions {\n  retry?: boolean\n  reason?: string\n  type?: string\n}\n\nexport class ContextCancelation {\n  retry: boolean\n  type: string\n  reason?: string\n\n  constructor(options: CancelationOptions) {\n    this.retry = options.retry ?? true\n    this.type = options.type ?? 'plugin Error'\n    this.reason = options.reason ?? ''\n  }\n}\n\nexport abstract class CoreContext<\n  Event extends CoreSegmentEvent = CoreSegmentEvent\n> {\n  event: Event\n  logger: CoreLogger\n  stats: CoreStats\n  attempts = 0\n\n  private _failedDelivery?: ContextFailedDelivery\n  private _id: string\n\n  constructor(\n    event: Event,\n    id = uuid(),\n    stats: CoreStats = new NullStats(),\n    logger = new CoreLogger()\n  ) {\n    this.event = event\n    this._id = id\n    this.logger = logger\n    this.stats = stats\n  }\n\n  static system(): void {\n    // This should be overridden by the subclass to return an instance of the subclass.\n  }\n\n  isSame(other: CoreContext): boolean {\n    return other.id === this.id\n  }\n\n  cancel(error?: Error | ContextCancelation): never {\n    if (error) {\n      throw error\n    }\n\n    throw new ContextCancelation({ reason: 'Context Cancel' })\n  }\n\n  log(level: LogLevel, message: string, extras?: object): void {\n    this.logger.log(level, message, extras)\n  }\n\n  get id(): string {\n    return this._id\n  }\n\n  updateEvent(path: string, val: unknown): Event {\n    // Don't allow integrations that are set to false to be overwritten with integration settings.\n    if (path.split('.')[0] === 'integrations') {\n      const integrationName = path.split('.')[1]\n\n      if (this.event.integrations?.[integrationName] === false) {\n        return this.event\n      }\n    }\n\n    dset(this.event, path, val)\n    return this.event\n  }\n\n  failedDelivery(): ContextFailedDelivery | undefined {\n    return this._failedDelivery\n  }\n\n  setFailedDelivery(options: ContextFailedDelivery) {\n    this._failedDelivery = options\n  }\n\n  logs(): LogMessage[] {\n    return this.logger.logs\n  }\n\n  flush(): void {\n    this.logger.flush()\n    this.stats.flush()\n  }\n\n  toJSON(): SerializedContext {\n    return {\n      id: this._id,\n      event: this.event,\n      logs: this.logger.logs,\n      metrics: this.stats.metrics,\n    }\n  }\n}\n", "type Grouper<T> = (obj: T) => string | number\n\nexport function groupBy<T>(\n  collection: T[],\n  grouper: keyof T | Grouper<T>\n): Record<string, T[]> {\n  const results: Record<string, T[]> = {}\n\n  collection.forEach((item) => {\n    let key: string | number | undefined = undefined\n\n    if (typeof grouper === 'string') {\n      const suggestedKey = item[grouper]\n      key =\n        typeof suggestedKey !== 'string'\n          ? JSON.stringify(suggestedKey)\n          : suggestedKey\n    } else if (grouper instanceof Function) {\n      key = grouper(item)\n    }\n\n    if (key === undefined) {\n      return\n    }\n\n    results[key] = [...(results[key] ?? []), item]\n  })\n\n  return results\n}\n", "/**\n *  Check if  thenable\n *  (instanceof Promise doesn't respect realms)\n */\nexport const isThenable = (value: unknown): boolean =>\n  typeof value === 'object' &&\n  value !== null &&\n  'then' in value &&\n  typeof (value as any).then === 'function'\n", "import { isThenable } from '../utils/is-thenable'\n\nexport type TaskGroup = {\n  done: () => Promise<void>\n  run: <Operation extends (...args: any[]) => any>(\n    op: Operation\n  ) => ReturnType<Operation>\n}\n\nexport const createTaskGroup = (): TaskGroup => {\n  let taskCompletionPromise: Promise<void>\n  let resolvePromise: () => void\n  let count = 0\n\n  return {\n    done: () => taskCompletionPromise,\n    run: (op) => {\n      const returnValue = op()\n\n      if (isThenable(returnValue)) {\n        if (++count === 1) {\n          taskCompletionPromise = new Promise((res) => (resolvePromise = res))\n        }\n\n        returnValue.finally(() => --count === 0 && resolvePromise())\n      }\n\n      return returnValue\n    },\n  }\n}\n", "import { CoreContext, ContextCancelation } from '../context'\nimport { CorePlugin } from '../plugins'\n\nasync function tryAsync<T>(fn: () => T | Promise<T>): Promise<T> {\n  try {\n    return await fn()\n  } catch (err) {\n    return Promise.reject(err)\n  }\n}\n\nexport function attempt<Ctx extends CoreContext = CoreContext>(\n  ctx: Ctx,\n  plugin: CorePlugin<Ctx>\n): Promise<Ctx | ContextCancelation | Error> {\n  ctx.log('debug', 'plugin', { plugin: plugin.name })\n  const start = new Date().getTime()\n\n  const hook = plugin[ctx.event.type]\n  if (hook === undefined) {\n    return Promise.resolve(ctx)\n  }\n\n  const newCtx = tryAsync(() => hook.apply(plugin, [ctx]))\n    .then((ctx) => {\n      const done = new Date().getTime() - start\n      ctx.stats.gauge('plugin_time', done, [`plugin:${plugin.name}`])\n\n      return ctx\n    })\n    .catch((err: Error | ContextCancelation) => {\n      if (\n        err instanceof ContextCancelation &&\n        err.type === 'middleware_cancellation'\n      ) {\n        throw err\n      }\n\n      if (err instanceof ContextCancelation) {\n        ctx.log('warn', err.type, {\n          plugin: plugin.name,\n          error: err,\n        })\n\n        return err\n      }\n\n      ctx.log('error', 'plugin Error', {\n        plugin: plugin.name,\n        error: err,\n      })\n      ctx.stats.increment('plugin_error', 1, [`plugin:${plugin.name}`])\n\n      return err\n    })\n\n  return newCtx\n}\n\nexport function ensure<Ctx extends CoreContext = CoreContext>(\n  ctx: Ctx,\n  plugin: CorePlugin<Ctx>\n): Promise<Ctx | undefined> {\n  return attempt(ctx, plugin).then((newContext) => {\n    if (newContext instanceof CoreContext) {\n      return newContext\n    }\n\n    ctx.log('debug', 'Context canceled')\n    ctx.stats.increment('context_canceled')\n    ctx.cancel(newContext)\n  })\n}\n", "import { CoreAnalytics } from '../analytics'\nimport { groupBy } from '../utils/group-by'\nimport { ON_REMOVE_FROM_FUTURE, PriorityQueue } from '../priority-queue'\n\nimport { CoreContext, ContextCancelation } from '../context'\nimport { Emitter } from '@segment/analytics-generic-utils'\nimport { IntegrationsOptions } from '../events/interfaces'\nimport { CorePlugin } from '../plugins'\nimport { createTaskGroup, TaskGroup } from '../task/task-group'\nimport { attempt, ensure } from './delivery'\n\nexport type EventQueueEmitterContract<Ctx extends CoreContext> = {\n  message_delivered: [ctx: Ctx]\n  message_enriched: [ctx: Ctx, plugin: CorePlugin<Ctx>]\n  delivery_success: [ctx: Ctx]\n  delivery_retry: [ctx: Ctx]\n  delivery_failure: [ctx: Ctx, err: Ctx | Error | ContextCancelation]\n  flush: [ctx: Ctx, delivered: boolean]\n  initialization_failure: [CorePlugin<Ctx>]\n}\n\nexport abstract class CoreEventQueue<\n  Ctx extends CoreContext = CoreContext,\n  Plugin extends CorePlugin<Ctx> = CorePlugin<Ctx>\n> extends Emitter<EventQueueEmitterContract<Ctx>> {\n  /**\n   * All event deliveries get suspended until all the tasks in this task group are complete.\n   * For example: a middleware that augments the event object should be loaded safely as a\n   * critical task, this way, event queue will wait for it to be ready before sending events.\n   *\n   * This applies to all the events already in the queue, and the upcoming ones\n   */\n  criticalTasks: TaskGroup = createTaskGroup()\n  queue: PriorityQueue<Ctx>\n  plugins: Plugin[] = []\n  failedInitializations: string[] = []\n  private flushing = false\n\n  constructor(priorityQueue: PriorityQueue<Ctx>) {\n    super()\n\n    this.queue = priorityQueue\n    this.queue.on(ON_REMOVE_FROM_FUTURE, () => {\n      this.scheduleFlush(0)\n    })\n  }\n\n  async register(\n    ctx: Ctx,\n    plugin: Plugin,\n    instance: CoreAnalytics\n  ): Promise<void> {\n    this.plugins.push(plugin)\n\n    const handleLoadError = (err: any) => {\n      this.failedInitializations.push(plugin.name)\n      this.emit('initialization_failure', plugin)\n      console.warn(plugin.name, err)\n\n      ctx.log('warn', 'Failed to load destination', {\n        plugin: plugin.name,\n        error: err,\n      })\n\n      // Filter out the failed plugin by excluding it from the list\n      this.plugins = this.plugins.filter((p) => p !== plugin)\n    }\n\n    if (plugin.type === 'destination' && plugin.name !== 'Segment.io') {\n      plugin.load(ctx, instance).catch(handleLoadError)\n    } else {\n      // for non-destinations plugins, we do need to wait for them to load\n      // reminder: action destinations can require plugins that are not of type \"destination\".\n      // For example, GA4 loads a type 'before' plugins and addition to a type 'destination' plugin\n      try {\n        await plugin.load(ctx, instance)\n      } catch (err) {\n        handleLoadError(err)\n      }\n    }\n  }\n\n  async deregister(\n    ctx: Ctx,\n    plugin: CorePlugin<Ctx>,\n    instance: CoreAnalytics\n  ): Promise<void> {\n    try {\n      if (plugin.unload) {\n        await Promise.resolve(plugin.unload(ctx, instance))\n      }\n\n      this.plugins = this.plugins.filter((p) => p.name !== plugin.name)\n    } catch (e) {\n      ctx.log('warn', 'Failed to unload destination', {\n        plugin: plugin.name,\n        error: e,\n      })\n    }\n  }\n\n  async dispatch(ctx: Ctx): Promise<Ctx> {\n    ctx.log('debug', 'Dispatching')\n    ctx.stats.increment('message_dispatched')\n\n    this.queue.push(ctx)\n    const willDeliver = this.subscribeToDelivery(ctx)\n    this.scheduleFlush(0)\n    return willDeliver\n  }\n\n  private async subscribeToDelivery(ctx: Ctx): Promise<Ctx> {\n    return new Promise((resolve) => {\n      const onDeliver = (flushed: Ctx, delivered: boolean): void => {\n        if (flushed.isSame(ctx)) {\n          this.off('flush', onDeliver)\n          if (delivered) {\n            resolve(flushed)\n          } else {\n            resolve(flushed)\n          }\n        }\n      }\n\n      this.on('flush', onDeliver)\n    })\n  }\n\n  async dispatchSingle(ctx: Ctx): Promise<Ctx> {\n    ctx.log('debug', 'Dispatching')\n    ctx.stats.increment('message_dispatched')\n\n    this.queue.updateAttempts(ctx)\n    ctx.attempts = 1\n\n    return this.deliver(ctx).catch((err) => {\n      const accepted = this.enqueuRetry(err, ctx)\n      if (!accepted) {\n        ctx.setFailedDelivery({ reason: err })\n        return ctx\n      }\n\n      return this.subscribeToDelivery(ctx)\n    })\n  }\n\n  isEmpty(): boolean {\n    return this.queue.length === 0\n  }\n\n  private scheduleFlush(timeout = 500): void {\n    if (this.flushing) {\n      return\n    }\n\n    this.flushing = true\n\n    setTimeout(() => {\n      // eslint-disable-next-line @typescript-eslint/no-floating-promises\n      this.flush().then(() => {\n        setTimeout(() => {\n          this.flushing = false\n\n          if (this.queue.length) {\n            this.scheduleFlush(0)\n          }\n        }, 0)\n      })\n    }, timeout)\n  }\n\n  private async deliver(ctx: Ctx): Promise<Ctx> {\n    await this.criticalTasks.done()\n\n    const start = Date.now()\n    try {\n      ctx = await this.flushOne(ctx)\n      const done = Date.now() - start\n      this.emit('delivery_success', ctx)\n      ctx.stats.gauge('delivered', done)\n      ctx.log('debug', 'Delivered', ctx.event)\n      return ctx\n    } catch (err: any) {\n      const error = err as Ctx | Error | ContextCancelation\n      ctx.log('error', 'Failed to deliver', error)\n      this.emit('delivery_failure', ctx, error)\n      ctx.stats.increment('delivery_failed')\n      throw err\n    }\n  }\n\n  private enqueuRetry(err: Error, ctx: Ctx): boolean {\n    const retriable = !(err instanceof ContextCancelation) || err.retry\n    if (!retriable) {\n      return false\n    }\n\n    return this.queue.pushWithBackoff(ctx)\n  }\n\n  async flush(): Promise<Ctx[]> {\n    if (this.queue.length === 0) {\n      return []\n    }\n\n    let ctx = this.queue.pop()\n    if (!ctx) {\n      return []\n    }\n\n    ctx.attempts = this.queue.getAttempts(ctx)\n\n    try {\n      ctx = await this.deliver(ctx)\n      this.emit('flush', ctx, true)\n    } catch (err: any) {\n      const accepted = this.enqueuRetry(err, ctx)\n\n      if (!accepted) {\n        ctx.setFailedDelivery({ reason: err })\n        this.emit('flush', ctx, false)\n      }\n\n      return []\n    }\n\n    return [ctx]\n  }\n\n  private isReady(): boolean {\n    // return this.plugins.every((p) => p.isLoaded())\n    // should we wait for every plugin to load?\n    return true\n  }\n\n  private availableExtensions(denyList: IntegrationsOptions) {\n    const available = this.plugins.filter((p) => {\n      // Only filter out destination plugins or the Segment.io plugin\n      if (p.type !== 'destination' && p.name !== 'Segment.io') {\n        return true\n      }\n\n      let alternativeNameMatch: boolean | Record<string, unknown> | undefined =\n        undefined\n      p.alternativeNames?.forEach((name) => {\n        if (denyList[name] !== undefined) {\n          alternativeNameMatch = denyList[name]\n        }\n      })\n\n      // Explicit integration option takes precedence, `All: false` does not apply to Segment.io\n      return (\n        denyList[p.name] ??\n        alternativeNameMatch ??\n        (p.name === 'Segment.io' ? true : denyList.All) !== false\n      )\n    })\n\n    const {\n      before = [],\n      enrichment = [],\n      destination = [],\n      after = [],\n    } = groupBy(available, 'type')\n\n    return {\n      before,\n      enrichment,\n      destinations: destination,\n      after,\n    }\n  }\n\n  private async flushOne(ctx: Ctx): Promise<Ctx> {\n    if (!this.isReady()) {\n      throw new Error('Not ready')\n    }\n\n    if (ctx.attempts > 1) {\n      this.emit('delivery_retry', ctx)\n    }\n\n    const { before, enrichment } = this.availableExtensions(\n      ctx.event.integrations ?? {}\n    )\n\n    for (const beforeWare of before) {\n      const temp = await ensure(ctx, beforeWare)\n      if (temp instanceof CoreContext) {\n        ctx = temp\n      }\n\n      this.emit('message_enriched', ctx, beforeWare)\n    }\n\n    for (const enrichmentWare of enrichment) {\n      const temp = await attempt(ctx, enrichmentWare)\n      if (temp instanceof CoreContext) {\n        ctx = temp\n      }\n\n      this.emit('message_enriched', ctx, enrichmentWare)\n    }\n\n    // Enrichment and before plugins can re-arrange the deny list dynamically\n    // so we need to pluck them at the end\n    const { destinations, after } = this.availableExtensions(\n      ctx.event.integrations ?? {}\n    )\n\n    await new Promise((resolve, reject) => {\n      setTimeout(() => {\n        const attempts = destinations.map((destination) =>\n          attempt(ctx, destination)\n        )\n        Promise.all(attempts).then(resolve).catch(reject)\n      }, 0)\n    })\n\n    ctx.stats.increment('message_delivered')\n\n    this.emit('message_delivered', ctx)\n\n    const afterCalls = after.map((after) => attempt(ctx, after))\n    await Promise.all(afterCalls)\n\n    return ctx\n  }\n}\n", "export {};\n//# sourceMappingURL=index.js.map", "import { CoreContext } from '../context'\nimport { Callback } from '../events/interfaces'\nimport { CoreEventQueue } from '../queue/event-queue'\nimport { invokeCallback } from '../callback'\nimport { Emitter } from '@segment/analytics-generic-utils'\n\nexport type DispatchOptions<Ctx extends CoreContext = CoreContext> = {\n  timeout?: number\n  debug?: boolean\n  callback?: Callback<Ctx>\n}\n\n/* The amount of time in ms to wait before invoking the callback. */\nexport const getDelay = (startTimeInEpochMS: number, timeoutInMS?: number) => {\n  const elapsedTime = Date.now() - startTimeInEpochMS\n  // increasing the timeout increases the delay by almost the same amount -- this is weird legacy behavior.\n  return Math.max((timeoutInMS ?? 300) - elapsedTime, 0)\n}\n/**\n * Push an event into the dispatch queue and invoke any callbacks.\n *\n * @param event - Segment event to enqueue.\n * @param queue - Queue to dispatch against.\n * @param emitter - This is typically an instance of \"Analytics\" -- used for metrics / progress information.\n * @param options\n */\nexport async function dispatch<\n  Ctx extends CoreContext,\n  EQ extends CoreEventQueue<Ctx>\n>(\n  ctx: Ctx,\n  queue: EQ,\n  emitter: Emitter,\n  options?: DispatchOptions<Ctx>\n): Promise<Ctx> {\n  emitter.emit('dispatch_start', ctx)\n\n  const startTime = Date.now()\n  let dispatched: Ctx\n  if (queue.isEmpty()) {\n    dispatched = await queue.dispatchSingle(ctx)\n  } else {\n    dispatched = await queue.dispatch(ctx)\n  }\n\n  if (options?.callback) {\n    dispatched = await invokeCallback(\n      dispatched,\n      options.callback,\n      getDelay(startTime, options.timeout)\n    )\n  }\n  if (options?.debug) {\n    dispatched.flush()\n  }\n\n  return dispatched\n}\n", "export function bindAll<\n  ObjType extends { [key: string]: any },\n  KeyType extends keyof ObjType\n>(obj: ObjType): ObjType {\n  const proto = obj.constructor.prototype\n  for (const key of Object.getOwnPropertyNames(proto)) {\n    if (key !== 'constructor') {\n      const desc = Object.getOwnPropertyDescriptor(\n        obj.constructor.prototype,\n        key\n      )\n      if (!!desc && typeof desc.value === 'function') {\n        obj[key as KeyType] = obj[key].bind(obj)\n      }\n    }\n  }\n\n  return obj\n}\n", "export * from './emitter/interface'\nexport * from './plugins'\nexport * from './events/interfaces'\nexport * from './events'\nexport * from './callback'\nexport * from './priority-queue'\nexport { backoff } from './priority-queue/backoff'\nexport * from './context'\nexport * from './queue/event-queue'\nexport * from './analytics'\nexport * from './analytics/dispatch'\nexport * from './validation/helpers'\nexport * from './validation/errors'\nexport * from './validation/assertions'\nexport * from './utils/bind-all'\nexport * from './stats'\nexport { CoreLogger } from './logger'\nexport * from './queue/delivery'\n", "export function isBrowser(): boolean {\n  return typeof window !== 'undefined'\n}\n\nexport function isServer(): boolean {\n  return !isBrowser()\n}\n", "import { isBrowser } from '../environment'\n\nexport function isOnline(): boolean {\n  if (isBrowser()) {\n    return window.navigator.onLine\n  }\n\n  return true\n}\n\nexport function isOffline(): boolean {\n  return !isOnline()\n}\n", "export default function(url, options) {\n\toptions = options || {};\n\treturn new Promise( (resolve, reject) => {\n\t\tconst request = new XMLHttpRequest();\n\t\tconst keys = [];\n\t\tconst all = [];\n\t\tconst headers = {};\n\n\t\tconst response = () => ({\n\t\t\tok: (request.status/100|0) == 2,\t\t// 200-299\n\t\t\tstatusText: request.statusText,\n\t\t\tstatus: request.status,\n\t\t\turl: request.responseURL,\n\t\t\ttext: () => Promise.resolve(request.responseText),\n\t\t\tjson: () => Promise.resolve(request.responseText).then(JSON.parse),\n\t\t\tblob: () => Promise.resolve(new Blob([request.response])),\n\t\t\tclone: response,\n\t\t\theaders: {\n\t\t\t\tkeys: () => keys,\n\t\t\t\tentries: () => all,\n\t\t\t\tget: n => headers[n.toLowerCase()],\n\t\t\t\thas: n => n.toLowerCase() in headers\n\t\t\t}\n\t\t});\n\n\t\trequest.open(options.method || 'get', url, true);\n\n\t\trequest.onload = () => {\n\t\t\trequest.getAllResponseHeaders().replace(/^(.*?):[^\\S\\n]*([\\s\\S]*?)$/gm, (m, key, value) => {\n\t\t\t\tkeys.push(key = key.toLowerCase());\n\t\t\t\tall.push([key, value]);\n\t\t\t\theaders[key] = headers[key] ? `${headers[key]},${value}` : value;\n\t\t\t});\n\t\t\tresolve(response());\n\t\t};\n\n\t\trequest.onerror = reject;\n\n\t\trequest.withCredentials = options.credentials=='include';\n\n\t\tfor (const i in options.headers) {\n\t\t\trequest.setRequestHeader(i, options.headers[i]);\n\t\t}\n\n\t\trequest.send(options.body || null);\n\t});\n}\n", "// This an imperfect polyfill for globalThis\nexport const getGlobal = () => {\n  if (typeof globalThis !== 'undefined') {\n    return globalThis\n  }\n  if (typeof self !== 'undefined') {\n    return self\n  }\n  if (typeof window !== 'undefined') {\n    return window\n  }\n  if (typeof global !== 'undefined') {\n    return global\n  }\n  return null\n}\n", "import unfetch from 'unfetch'\nimport { getGlobal } from './get-global'\n\n/**\n * Wrapper around native `fetch` containing `unfetch` fallback.\n */\nexport const fetch: typeof global.fetch = (...args) => {\n  const global = getGlobal()\n  return ((global && global.fetch) || unfetch)(...args)\n}\n", "// This file is generated.\nexport const version = '1.81.1'\n", "// Default value will be updated to 'web' in `bundle-umd.ts` for web build.\nlet _version: 'web' | 'npm' = 'npm'\n\nexport function setVersionType(version: typeof _version) {\n  _version = version\n}\n\nexport function getVersionType(): typeof _version {\n  return _version\n}\n", "export const SEGMENT_API_HOST = 'api.segment.io/v1'\n", "import { fetch } from '../../lib/fetch'\nimport { version } from '../../generated/version'\nimport { getVersionType } from '../../lib/version-type'\nimport { SEGMENT_API_HOST } from '../constants'\n\nexport interface MetricsOptions {\n  host?: string\n  sampleRate?: number\n  flushTimer?: number\n  maxQueueSize?: number\n  protocol?: 'http' | 'https'\n}\n\n/**\n * Type expected by the segment metrics API endpoint\n */\ntype RemoteMetric = {\n  type: 'Counter'\n  metric: string\n  value: 1\n  tags: {\n    library: string\n    library_version: string\n    [key: string]: string\n  }\n}\n\nconst createRemoteMetric = (\n  metric: string,\n  tags: string[],\n  versionType: 'web' | 'npm'\n): RemoteMetric => {\n  const formattedTags = tags.reduce((acc, t) => {\n    const [k, v] = t.split(':')\n    acc[k] = v\n    return acc\n  }, {} as Record<string, string>)\n\n  return {\n    type: 'Counter',\n    metric,\n    value: 1,\n    tags: {\n      ...formattedTags,\n      library: 'analytics.js',\n      library_version:\n        versionType === 'web' ? `next-${version}` : `npm:next-${version}`,\n    },\n  }\n}\n\nfunction logError(err: unknown): void {\n  console.error('Error sending segment performance metrics', err)\n}\n\nexport class RemoteMetrics {\n  private host: string\n  private flushTimer: number\n  private maxQueueSize: number\n  private protocol: string\n\n  sampleRate: number\n  queue: RemoteMetric[]\n\n  constructor(options?: MetricsOptions) {\n    this.host = options?.host ?? SEGMENT_API_HOST\n    this.sampleRate = options?.sampleRate ?? 1\n    this.flushTimer = options?.flushTimer ?? 30 * 1000 /* 30s */\n    this.maxQueueSize = options?.maxQueueSize ?? 20\n    this.protocol = options?.protocol ?? 'https'\n\n    this.queue = []\n\n    if (this.sampleRate > 0) {\n      let flushing = false\n\n      const run = (): void => {\n        if (flushing) {\n          return\n        }\n\n        flushing = true\n        this.flush().catch(logError)\n\n        flushing = false\n\n        setTimeout(run, this.flushTimer)\n      }\n      run()\n    }\n  }\n\n  increment(metric: string, tags: string[]): void {\n    // All metrics are part of an allow list in Tracking API\n    if (!metric.includes('analytics_js.')) {\n      return\n    }\n\n    // /m doesn't like empty tags\n    if (tags.length === 0) {\n      return\n    }\n\n    if (Math.random() > this.sampleRate) {\n      return\n    }\n\n    if (this.queue.length >= this.maxQueueSize) {\n      return\n    }\n\n    const remoteMetric = createRemoteMetric(metric, tags, getVersionType())\n    this.queue.push(remoteMetric)\n\n    if (metric.includes('error')) {\n      this.flush().catch(logError)\n    }\n  }\n\n  async flush(): Promise<void> {\n    if (this.queue.length <= 0) {\n      return\n    }\n\n    await this.send().catch((error) => {\n      logError(error)\n      this.sampleRate = 0\n    })\n  }\n\n  private async send(): Promise<Response> {\n    const payload = { series: this.queue }\n    this.queue = []\n\n    const headers = { 'Content-Type': 'text/plain' }\n    const url = `${this.protocol}://${this.host}/m`\n\n    return fetch(url, {\n      headers,\n      body: JSON.stringify(payload),\n      method: 'POST',\n    })\n  }\n}\n", "import { CoreStats } from '@segment/analytics-core'\nimport { MetricsOptions, RemoteMetrics } from './remote-metrics'\n\nlet remoteMetrics: RemoteMetrics | undefined\n\nexport class Stats extends CoreStats {\n  static initRemoteMetrics(options?: MetricsOptions) {\n    remoteMetrics = new RemoteMetrics(options)\n  }\n\n  override increment(metric: string, by?: number, tags?: string[]): void {\n    super.increment(metric, by, tags)\n    remoteMetrics?.increment(metric, tags ?? [])\n  }\n}\n", "import {\n  CoreContext,\n  ContextCancelation,\n  ContextFailedDelivery,\n  SerializedContext,\n  CancelationOptions,\n} from '@segment/analytics-core'\nimport { SegmentEvent } from '../events/interfaces'\nimport { Stats } from '../stats'\n\nexport class Context extends CoreContext<SegmentEvent> {\n  static override system() {\n    return new this({ type: 'track', event: 'system' })\n  }\n  constructor(event: SegmentEvent, id?: string) {\n    super(event, id, new Stats())\n  }\n}\n\nexport { ContextCancelation }\nexport type { ContextFailedDelivery, SerializedContext, CancelationOptions }\n", "import { PriorityQueue, ON_REMOVE_FROM_FUTURE } from '@segment/analytics-core'\n\nexport { PriorityQueue, ON_REMOVE_FROM_FUTURE }\n", "import { PriorityQueue } from '.'\nimport { Context, SerializedContext } from '../../core/context'\nimport { isBrowser } from '../../core/environment'\n\nlet loc:\n  | Storage\n  | { getItem: () => void; setItem: () => void; removeItem: () => void } = {\n  getItem() {},\n  setItem() {},\n  removeItem() {},\n}\n\ntry {\n  loc = isBrowser() && window.localStorage ? window.localStorage : loc\n} catch (err) {\n  console.warn('Unable to access localStorage', err)\n}\n\nfunction persisted(key: string): Context[] {\n  const items = loc.getItem(key)\n  return (items ? JSON.parse(items) : []).map(\n    (p: SerializedContext) => new Context(p.event, p.id)\n  )\n}\n\nfunction persistItems(key: string, items: Context[]): void {\n  const existing = persisted(key)\n  const all = [...items, ...existing]\n\n  const merged = all.reduce((acc, item) => {\n    return {\n      ...acc,\n      [item.id]: item,\n    }\n  }, {} as Record<string, Context>)\n\n  loc.setItem(key, JSON.stringify(Object.values(merged)))\n}\n\nfunction seen(key: string): Record<string, number> {\n  const stored = loc.getItem(key)\n  return stored ? JSON.parse(stored) : {}\n}\n\nfunction persistSeen(key: string, memory: Record<string, number>): void {\n  const stored = seen(key)\n\n  loc.setItem(\n    key,\n    JSON.stringify({\n      ...stored,\n      ...memory,\n    })\n  )\n}\n\nfunction remove(key: string): void {\n  loc.removeItem(key)\n}\n\nconst now = (): number => new Date().getTime()\n\nfunction mutex(key: string, onUnlock: Function, attempt = 0): void {\n  const lockTimeout = 50\n  const lockKey = `persisted-queue:v1:${key}:lock`\n\n  const expired = (lock: number): boolean => new Date().getTime() > lock\n  const rawLock = loc.getItem(lockKey)\n  const lock = rawLock ? (JSON.parse(rawLock) as number) : null\n\n  const allowed = lock === null || expired(lock)\n  if (allowed) {\n    loc.setItem(lockKey, JSON.stringify(now() + lockTimeout))\n    onUnlock()\n    loc.removeItem(lockKey)\n    return\n  }\n\n  if (!allowed && attempt < 3) {\n    setTimeout(() => {\n      mutex(key, onUnlock, attempt + 1)\n    }, lockTimeout)\n  } else {\n    console.error('Unable to retrieve lock')\n  }\n}\n\nexport class PersistedPriorityQueue extends PriorityQueue<Context> {\n  constructor(maxAttempts: number, key: string) {\n    super(maxAttempts, [])\n\n    const itemsKey = `persisted-queue:v1:${key}:items`\n    const seenKey = `persisted-queue:v1:${key}:seen`\n\n    let saved: Context[] = []\n    let lastSeen: Record<string, number> = {}\n\n    mutex(key, () => {\n      try {\n        saved = persisted(itemsKey)\n        lastSeen = seen(seenKey)\n        remove(itemsKey)\n        remove(seenKey)\n\n        this.queue = [...saved, ...this.queue]\n        this.seen = { ...lastSeen, ...this.seen }\n      } catch (err) {\n        console.error(err)\n      }\n    })\n\n    window.addEventListener('pagehide', () => {\n      // we deliberately want to use the less powerful 'pagehide' API to only persist on events where the analytics instance gets destroyed, and not on tab away.\n      if (this.todo > 0) {\n        const items = [...this.queue, ...this.future]\n        try {\n          mutex(key, () => {\n            persistItems(itemsKey, items)\n            persistSeen(seenKey, this.seen)\n          })\n        } catch (err) {\n          console.error(err)\n        }\n      }\n    })\n  }\n}\n", "import { AnalyticsSnippet } from '../browser/standalone-interface'\n\n/**\n * Stores the global window analytics key\n */\nlet _globalAnalyticsKey = 'analytics'\n\n/**\n * Gets the global analytics/buffer\n * @param key name of the window property where the buffer is stored (default: analytics)\n * @returns AnalyticsSnippet\n */\nexport function getGlobalAnalytics(): AnalyticsSnippet | undefined {\n  return (window as any)[_globalAnalyticsKey]\n}\n\n/**\n * Replaces the global window key for the analytics/buffer object\n * @param key key name\n */\nexport function setGlobalAnalyticsKey(key: string) {\n  _globalAnalyticsKey = key\n}\n\n/**\n * Sets the global analytics object\n * @param analytics analytics snippet\n */\nexport function setGlobalAnalytics(analytics: AnalyticsSnippet): void {\n  ;(window as any)[_globalAnalyticsKey] = analytics\n}\n", "\nvar identity = function(_){ return _; };\n\n\n/**\n * Module exports, export\n */\n\nmodule.exports = multiple(find);\nmodule.exports.find = module.exports;\n\n\n/**\n * Export the replacement function, return the modified object\n */\n\nmodule.exports.replace = function (obj, key, val, options) {\n  multiple(replace).call(this, obj, key, val, options);\n  return obj;\n};\n\n\n/**\n * Export the delete function, return the modified object\n */\n\nmodule.exports.del = function (obj, key, options) {\n  multiple(del).call(this, obj, key, null, options);\n  return obj;\n};\n\n\n/**\n * Compose applying the function to a nested key\n */\n\nfunction multiple (fn) {\n  return function (obj, path, val, options) {\n    var normalize = options && isFunction(options.normalizer) ? options.normalizer : defaultNormalize;\n    path = normalize(path);\n\n    var key;\n    var finished = false;\n\n    while (!finished) loop();\n\n    function loop() {\n      for (key in obj) {\n        var normalizedKey = normalize(key);\n        if (0 === path.indexOf(normalizedKey)) {\n          var temp = path.substr(normalizedKey.length);\n          if (temp.charAt(0) === '.' || temp.length === 0) {\n            path = temp.substr(1);\n            var child = obj[key];\n\n            // we're at the end and there is nothing.\n            if (null == child) {\n              finished = true;\n              return;\n            }\n\n            // we're at the end and there is something.\n            if (!path.length) {\n              finished = true;\n              return;\n            }\n\n            // step into child\n            obj = child;\n\n            // but we're done here\n            return;\n          }\n        }\n      }\n\n      key = undefined;\n      // if we found no matching properties\n      // on the current object, there's no match.\n      finished = true;\n    }\n\n    if (!key) return;\n    if (null == obj) return obj;\n\n    // the `obj` and `key` is one above the leaf object and key, so\n    // start object: { a: { 'b.c': 10 } }\n    // end object: { 'b.c': 10 }\n    // end key: 'b.c'\n    // this way, you can do `obj[key]` and get `10`.\n    return fn(obj, key, val);\n  };\n}\n\n\n/**\n * Find an object by its key\n *\n * find({ first_name : 'Calvin' }, 'firstName')\n */\n\nfunction find (obj, key) {\n  if (obj.hasOwnProperty(key)) return obj[key];\n}\n\n\n/**\n * Delete a value for a given key\n *\n * del({ a : 'b', x : 'y' }, 'X' }) -> { a : 'b' }\n */\n\nfunction del (obj, key) {\n  if (obj.hasOwnProperty(key)) delete obj[key];\n  return obj;\n}\n\n\n/**\n * Replace an objects existing value with a new one\n *\n * replace({ a : 'b' }, 'a', 'c') -> { a : 'c' }\n */\n\nfunction replace (obj, key, val) {\n  if (obj.hasOwnProperty(key)) obj[key] = val;\n  return obj;\n}\n\n/**\n * Normalize a `dot.separated.path`.\n *\n * A.HELL(!*&#(!)O_WOR   LD.bar => ahelloworldbar\n *\n * @param {String} path\n * @return {String}\n */\n\nfunction defaultNormalize(path) {\n  return path.replace(/[^a-zA-Z0-9\\.]+/g, '').toLowerCase();\n}\n\n/**\n * Check if a value is a function.\n *\n * @param {*} val\n * @return {boolean} Returns `true` if `val` is a function, otherwise `false`.\n */\n\nfunction isFunction(val) {\n  return typeof val === 'function';\n}\n", "\"use strict\";\n\nimport get from \"obj-case\";\n\nfunction trait(a, b) {\n  return function () {\n    // @ts-ignore\n    let traits = this.traits();\n    // @ts-ignore\n    let props = this.properties ? this.properties() : {};\n\n    return (\n      get(traits, \"address.\" + a) ||\n      get(traits, a) ||\n      (b ? get(traits, \"address.\" + b) : null) ||\n      (b ? get(traits, b) : null) ||\n      get(props, \"address.\" + a) ||\n      get(props, a) ||\n      (b ? get(props, \"address.\" + b) : null) ||\n      (b ? get(props, b) : null)\n    );\n  };\n}\n\n/**\n * Add address getters to `proto`.\n *\n * @ignore\n * @param {Function} proto\n */\nexport default function (proto) {\n  proto.zip = trait(\"postalCode\", \"zip\");\n  proto.country = trait(\"country\");\n  proto.street = trait(\"street\");\n  proto.state = trait(\"state\");\n  proto.city = trait(\"city\");\n  proto.region = trait(\"region\");\n}\n", "export function clone(properties) {\n    if (Object.prototype.toString.call(properties) === '[object Object]') {\n      let temp = {};\n      for (const key in properties) {\n        temp[key] = clone(properties[key]);\n      }\n      return temp;\n    } else if (Array.isArray(properties)) {\n      return properties.map(clone);\n    } else {\n      return properties;\n    }\n  }", "\"use strict\";\n\n// A few integrations are disabled by default. They must be explicitly enabled\n// by setting options[Provider] = true.\nlet disabled = {\n  Salesforce: true,\n};\n\n/**\n * Check whether an integration should be enabled by default.\n *\n * @ignore\n * @param {string} integration\n * @return {boolean}\n */\nexport default function (integration) {\n  return !disabled[integration];\n}\n", "'use strict';\n\n/**\n * Matcher, slightly modified from:\n *\n * https://github.com/csnover/js-iso8601/blob/lax/iso8601.js\n */\n\nvar matcher = /^(\\d{4})(?:-?(\\d{2})(?:-?(\\d{2}))?)?(?:([ T])(\\d{2}):?(\\d{2})(?::?(\\d{2})(?:[,\\.](\\d{1,}))?)?(?:(Z)|([+\\-])(\\d{2})(?::?(\\d{2}))?)?)?$/;\n\n/**\n * Convert an ISO date string to a date. Fallback to native `Date.parse`.\n *\n * https://github.com/csnover/js-iso8601/blob/lax/iso8601.js\n *\n * @param {String} iso\n * @return {Date}\n */\n\nexports.parse = function(iso) {\n  var numericKeys = [1, 5, 6, 7, 11, 12];\n  var arr = matcher.exec(iso);\n  var offset = 0;\n\n  // fallback to native parsing\n  if (!arr) {\n    return new Date(iso);\n  }\n\n  /* eslint-disable no-cond-assign */\n  // remove undefined values\n  for (var i = 0, val; val = numericKeys[i]; i++) {\n    arr[val] = parseInt(arr[val], 10) || 0;\n  }\n  /* eslint-enable no-cond-assign */\n\n  // allow undefined days and months\n  arr[2] = parseInt(arr[2], 10) || 1;\n  arr[3] = parseInt(arr[3], 10) || 1;\n\n  // month is 0-11\n  arr[2]--;\n\n  // allow abitrary sub-second precision\n  arr[8] = arr[8] ? (arr[8] + '00').substring(0, 3) : 0;\n\n  // apply timezone if one exists\n  if (arr[4] === ' ') {\n    offset = new Date().getTimezoneOffset();\n  } else if (arr[9] !== 'Z' && arr[10]) {\n    offset = arr[11] * 60 + arr[12];\n    if (arr[10] === '+') {\n      offset = 0 - offset;\n    }\n  }\n\n  var millis = Date.UTC(arr[1], arr[2], arr[3], arr[5], arr[6] + offset, arr[7], arr[8]);\n  return new Date(millis);\n};\n\n\n/**\n * Checks whether a `string` is an ISO date string. `strict` mode requires that\n * the date string at least have a year, month and date.\n *\n * @param {String} string\n * @param {Boolean} strict\n * @return {Boolean}\n */\n\nexports.is = function(string, strict) {\n  if (typeof string !== 'string') {\n    return false;\n  }\n  if (strict && (/^\\d{4}-\\d{2}-\\d{2}/).test(string) === false) {\n    return false;\n  }\n  return matcher.test(string);\n};\n", "\"use strict\";\n\n/**\n * Matcher.\n */\n\nvar matcher = /\\d{13}/;\n\n/**\n * Check whether a string is a millisecond date string.\n *\n * @param {string} string\n * @return {boolean}\n */\nexports.is = function (string) {\n  return matcher.test(string);\n};\n\n/**\n * Convert a millisecond string to a date.\n *\n * @param {string} millis\n * @return {Date}\n */\nexports.parse = function (millis) {\n  millis = parseInt(millis, 10);\n  return new Date(millis);\n};\n", "\"use strict\";\n\n/**\n * Matcher.\n */\n\nvar matcher = /\\d{10}/;\n\n/**\n * Check whether a string is a second date string.\n *\n * @param {string} string\n * @return {Boolean}\n */\nexports.is = function (string) {\n  return matcher.test(string);\n};\n\n/**\n * Convert a second string to a date.\n *\n * @param {string} seconds\n * @return {Date}\n */\nexports.parse = function (seconds) {\n  var millis = parseInt(seconds, 10) * 1000;\n  return new Date(millis);\n};\n", "\"use strict\";\n\nvar isodate = require(\"@segment/isodate\");\nvar milliseconds = require(\"./milliseconds\");\nvar seconds = require(\"./seconds\");\n\nvar objProto = Object.prototype;\nvar toStr = objProto.toString;\n\nfunction isDate(value) {\n  return toStr.call(value) === \"[object Date]\";\n}\n\nfunction isNumber(value) {\n  return toStr.call(value) === \"[object Number]\";\n}\n\n/**\n * Returns a new Javascript Date object, allowing a variety of extra input types\n * over the native Date constructor.\n *\n * @param {Date|string|number} val\n */\nmodule.exports = function newDate(val) {\n  if (isDate(val)) return val;\n  if (isNumber(val)) return new Date(toMs(val));\n\n  // date strings\n  if (isodate.is(val)) {\n    return isodate.parse(val);\n  }\n  if (milliseconds.is(val)) {\n    return milliseconds.parse(val);\n  }\n  if (seconds.is(val)) {\n    return seconds.parse(val);\n  }\n\n  // fallback to Date.parse\n  return new Date(val);\n};\n\n/**\n * If the number passed val is seconds from the epoch, turn it into milliseconds.\n * Milliseconds would be greater than 31557600000 (December 31, 1970).\n *\n * @param {number} num\n */\nfunction toMs(num) {\n  if (num < 31557600000) return num * 1000;\n  return num;\n}\n", "'use strict';\n\nvar isodate = require('@segment/isodate');\n\n/**\n * Expose `traverse`.\n */\nmodule.exports = traverse;\n\n/**\n * Recursively traverse an object or array, and convert\n * all ISO date strings parse into Date objects.\n *\n * @param {Object} input - object, array, or string to convert\n * @param {Boolean} strict - only convert strings with year, month, and date\n * @return {Object}\n */\nfunction traverse(input, strict) {\n  if (strict === undefined) strict = true;\n  if (input && typeof input === 'object') {\n    return traverseObject(input, strict);\n  } else if (Array.isArray(input)) {\n    return traverseArray(input, strict);\n  } else if (isodate.is(input, strict)) {\n    return isodate.parse(input);\n  }\n  return input;\n}\n\n/**\n * Object traverser helper function.\n *\n * @param {Object} obj - object to traverse\n * @param {Boolean} strict - only convert strings with year, month, and date\n * @return {Object}\n */\nfunction traverseObject(obj, strict) {\n  Object.keys(obj).forEach(function(key) {\n    obj[key] = traverse(obj[key], strict);\n  });\n  return obj;\n}\n\n/**\n * Array traverser helper function\n *\n * @param {Array} arr - array to traverse\n * @param {Boolean} strict - only convert strings with year, month, and date\n * @return {Array}\n */\nfunction traverseArray(arr, strict) {\n  arr.forEach(function(value, index) {\n    arr[index] = traverse(value, strict);\n  });\n  return arr;\n}\n", "\"use strict\";\n\nimport address from \"./address\";\nimport { clone } from \"./clone\";\nimport isEnabled from \"./is-enabled\";\nimport newDate from \"new-date\";\nimport objCase from \"obj-case\";\nimport traverse from \"@segment/isodate-traverse\";\n\n/**\n * A *Facade* is an object meant for creating convience wrappers around\n * objects. When developing integrations, you probably want to look at its\n * subclasses, such as {@link Track} or {@link Identify}, rather than this\n * general-purpose class.\n *\n * This letructor will initialize a new `Facade` with an `obj` of arguments.\n *\n * If the inputted `obj` doesn't have a `timestamp` property, one will be added\n * with the value `new Date()`. Otherwise, the `timestamp` property will be\n * converted to a Date using the `new-date` package.\n *\n * By default, the inputted object will be defensively copied, and all ISO\n * strings present in the string will be converted into Dates.\n *\n * @param {Object} obj - The object to wrap.\n * @param {Object} opts - Options about what kind of Facade to create.\n * @param {boolean} [opts.clone=true] - Whether to make defensive clones. If enabled,\n * the inputted object will be cloned, and any objects derived from this facade\n * will be cloned before being returned.\n * @param {boolean} [opts.traverse=true] - Whether to perform ISODate-Traverse\n * on the inputted object.\n *\n * @see {@link https://github.com/segmentio/new-date|new-date}\n * @see {@link https://github.com/segmentio/isodate-traverse|isodate-traverse}\n */\nexport function Facade (obj, opts) {\n  opts = opts || {};\n  this.raw = clone(obj);\n  if (!(\"clone\" in opts)) opts.clone = true;\n  if (opts.clone) obj = clone(obj);\n  if (!(\"traverse\" in opts)) opts.traverse = true;\n  if (!(\"timestamp\" in obj)) obj.timestamp = new Date();\n  else obj.timestamp = newDate(obj.timestamp);\n  if (opts.traverse) traverse(obj);\n  this.opts = opts;\n  this.obj = obj;\n}\n\nconst f = Facade.prototype;\n\n/**\n * Get a potentially-nested field in this facade. `field` should be a\n * period-separated sequence of properties.\n *\n * If the first field passed in points to a function (e.g. the `field` passed\n * in is `a.b.c` and this facade's `obj.a` is a function), then that function\n * will be called, and then the deeper fields will be fetched (using obj-case)\n * from what that function returns. If the first field isn't a function, then\n * this function works just like obj-case.\n *\n * Because this function uses obj-case, the camel- or snake-case of the input\n * is irrelevant.\n *\n * @example\n * YourClass.prototype.height = function() {\n *   return this.proxy('getDimensions.height') ||\n *     this.proxy('props.size.side_length');\n * }\n * @param {string} field - A sequence of properties, joined by periods (`.`).\n * @return {*} - A property of the inputted object.\n * @see {@link https://github.com/segmentio/obj-case|obj-case}\n */\nf.proxy = function(field) {\n  let fields = field.split(\".\");\n  field = fields.shift();\n\n  // Call a function at the beginning to take advantage of facaded fields\n  let obj = this[field] || this.field(field);\n  if (!obj) return obj;\n  if (typeof obj === \"function\") obj = obj.call(this) || {};\n  if (fields.length === 0) return this.opts.clone ? transform(obj) : obj;\n\n  obj = objCase(obj, fields.join(\".\"));\n  return this.opts.clone ? transform(obj) : obj;\n};\n\n/**\n * Directly access a specific `field` from the underlying object. Only\n * \"top-level\" fields will work with this function. \"Nested\" fields *will not\n * work* with this function.\n *\n * @param {string} field\n * @return {*}\n */\nf.field = function(field) {\n  let obj = this.obj[field];\n  return this.opts.clone ? transform(obj) : obj;\n};\n\n/**\n * Utility method to always proxy a particular `field`. In other words, it\n * returns a function that will always return `this.proxy(field)`.\n *\n * @example\n * MyClass.prototype.height = Facade.proxy('options.dimensions.height');\n *\n * @param {string} field\n * @return {Function}\n */\nFacade.proxy = function(field) {\n  return function() {\n    return this.proxy(field);\n  };\n};\n\n/**\n * Utility method to always access a `field`. In other words, it returns a\n * function that will always return `this.field(field)`.\n *\n * @param {string} field\n * @return {Function}\n */\nFacade.field = function(field) {\n  return function() {\n    return this.field(field);\n  };\n};\n\n/**\n * Create a helper function for fetching a \"plural\" thing.\n *\n * The generated method will take the inputted `path` and append an \"s\" to it\n * and calls `this.proxy` with this \"pluralized\" path. If that produces an\n * array, that will be returned. Otherwise, a one-element array containing\n * `this.proxy(path)` will be returned.\n *\n * @example\n * MyClass.prototype.birds = Facade.multi('animals.bird');\n *\n * @param {string} path\n * @return {Function}\n */\nFacade.multi = function(path) {\n  return function() {\n    let multi = this.proxy(path + \"s\");\n    if (Array.isArray(multi)) return multi;\n    let one = this.proxy(path);\n    if (one) one = [this.opts.clone ? clone(one) : one];\n    return one || [];\n  };\n};\n\n/**\n * Create a helper function for getting a \"singular\" thing.\n *\n * The generated method will take the inputted path and call\n * `this.proxy(path)`. If a truthy thing is produced, it will be returned.\n * Otherwise, `this.proxy(path + 's')` will be called, and if that produces an\n * array the first element of that array will be returned. Otherwise,\n * `undefined` is returned.\n *\n * @example\n * MyClass.prototype.bird = Facade.one('animals.bird');\n *\n * @param {string} path\n * @return {Function}\n */\nFacade.one = function(path) {\n  return function() {\n    let one = this.proxy(path);\n    if (one) return one;\n    let multi = this.proxy(path + \"s\");\n    if (Array.isArray(multi)) return multi[0];\n  };\n};\n\n/**\n * Gets the underlying object this facade wraps around.\n *\n * If this facade has a property `type`, it will be invoked as a function and\n * will be assigned as the property `type` of the outputted object.\n *\n * @return {Object}\n */\nf.json = function() {\n  let ret = this.opts.clone ? clone(this.obj) : this.obj;\n  if (this.type) ret.type = this.type();\n  return ret;\n};\n\n/**\n * Gets a copy of the unmodified input object this facade wraps around.\n * \n * Unlike the `json` method which does make some subtle modifications \n * to datetime values and the `type` property. This method returns a copy of \n * the unmodified input object\n * \n * @return {Object}\n */\nf.rawEvent = function() {\n  return this.raw;\n};\n\n/**\n * Get the options of a call. If an integration is passed, only the options for\n * that integration are included. If the integration is not enabled, then\n * `undefined` is returned.\n *\n * Options are taken from the `options` property of the underlying object,\n * falling back to the object's `context` or simply `{}`.\n *\n * @param {string} integration - The name of the integration to get settings\n * for. Casing does not matter.\n * @return {Object|undefined}\n */\nf.options = function(integration) {\n  let obj = this.obj.options || this.obj.context || {};\n  let options = this.opts.clone ? clone(obj) : obj;\n  if (!integration) return options;\n  if (!this.enabled(integration)) return;\n  let integrations = this.integrations();\n  let value = integrations[integration] || objCase(integrations, integration);\n  if (typeof value !== \"object\") value = objCase(this.options(), integration);\n  return typeof value === \"object\" ? value : {};\n};\n\n/**\n * An alias for {@link Facade#options}.\n */\nf.context = f.options;\n\n/**\n * Check whether an integration is enabled.\n *\n * Basically, this method checks whether this integration is explicitly\n * enabled. If it isn'texplicitly mentioned, it checks whether it has been\n * enabled at the global level. Some integrations (e.g. Salesforce), cannot\n * enabled by these global event settings.\n *\n * More concretely, the deciding factors here are:\n *\n * 1. If `this.integrations()` has the integration set to `true`, return `true`.\n * 2. If `this.integrations().providers` has the integration set to `true`, return `true`.\n * 3. If integrations are set to default-disabled via global parameters (i.e.\n * `options.providers.all`, `options.all`, or `integrations.all`), then return\n * false.\n * 4. If the integration is one of the special default-deny integrations\n * (currently, only Salesforce), then return false.\n * 5. Else, return true.\n *\n * @param {string} integration\n * @return {boolean}\n */\nf.enabled = function(integration) {\n  let allEnabled = this.proxy(\"options.providers.all\");\n  if (typeof allEnabled !== \"boolean\") allEnabled = this.proxy(\"options.all\");\n  if (typeof allEnabled !== \"boolean\")\n    allEnabled = this.proxy(\"integrations.all\");\n  if (typeof allEnabled !== \"boolean\") allEnabled = true;\n\n  let enabled = allEnabled && isEnabled(integration);\n  let options = this.integrations();\n\n  // If the integration is explicitly enabled or disabled, use that\n  // First, check options.providers for backwards compatibility\n  if (options.providers && options.providers.hasOwnProperty(integration)) {\n    enabled = options.providers[integration];\n  }\n\n  // Next, check for the integration's existence in 'options' to enable it.\n  // If the settings are a boolean, use that, otherwise it should be enabled.\n  if (options.hasOwnProperty(integration)) {\n    let settings = options[integration];\n    if (typeof settings === \"boolean\") {\n      enabled = settings;\n    } else {\n      enabled = true;\n    }\n  }\n\n  return !!enabled;\n};\n\n/**\n * Get all `integration` options.\n *\n * @ignore\n * @param {string} integration\n * @return {Object}\n */\nf.integrations = function() {\n  return (\n    this.obj.integrations || this.proxy(\"options.providers\") || this.options()\n  );\n};\n\n/**\n * Check whether the user is active.\n *\n * @return {boolean}\n */\nf.active = function() {\n  let active = this.proxy(\"options.active\");\n  if (active === null || active === undefined) active = true;\n  return active;\n};\n\n/**\n * Get `sessionId / anonymousId`.\n *\n * @return {*}\n */\nf.anonymousId = function() {\n  return this.field(\"anonymousId\") || this.field(\"sessionId\");\n};\n\n/**\n * An alias for {@link Facade#anonymousId}.\n *\n * @function\n * @return {string}\n */\nf.sessionId = f.anonymousId;\n\n/**\n * Get `groupId` from `context.groupId`.\n *\n * @function\n * @return {string}\n */\nf.groupId = Facade.proxy(\"options.groupId\");\n\n/**\n * Get the call's \"traits\". All event types can pass in traits, though {@link\n * Identify} and {@link Group} override this implementation.\n *\n * Traits are gotten from `options.traits`, augmented with a property `id` with\n * the event's `userId`.\n *\n * The parameter `aliases` is meant to transform keys in `options.traits` into\n * new keys. Each alias like `{ \"xxx\": \"yyy\" }` will take whatever is at `xxx`\n * in the traits, and move it to `yyy`. If `xxx` is a method of this facade,\n * it'll be called as a function instead of treated as a key into the traits.\n *\n * @example\n * let obj = { options: { traits: { foo: \"bar\" } }, anonymousId: \"xxx\" }\n * let facade = new Facade(obj)\n *\n * facade.traits() // { \"foo\": \"bar\" }\n * facade.traits({ \"foo\": \"asdf\" }) // { \"asdf\": \"bar\" }\n * facade.traits({ \"sessionId\": \"rofl\" }) // { \"rofl\": \"xxx\" }\n *\n * @param {Object} aliases - A mapping from keys to the new keys they should be\n * transformed to.\n * @return {Object}\n */\nf.traits = function(aliases) {\n  let ret = this.proxy(\"options.traits\") || {};\n  let id = this.userId();\n  aliases = aliases || {};\n\n  if (id) ret.id = id;\n\n  for (let alias in aliases) {\n    let value =\n      this[alias] == null\n        ? this.proxy(\"options.traits.\" + alias)\n        : this[alias]();\n    if (value == null) continue;\n    ret[aliases[alias]] = value;\n    delete ret[alias];\n  }\n\n  return ret;\n};\n\n/**\n * The library and version of the client used to produce the message.\n *\n * If the library name cannot be determined, it is set to `\"unknown\"`. If the\n * version cannot be determined, it is set to `null`.\n *\n * @return {{name: string, version: string}}\n */\nf.library = function() {\n  let library = this.proxy(\"options.library\");\n  if (!library) return { name: \"unknown\", version: null };\n  if (typeof library === \"string\") return { name: library, version: null };\n  return library;\n};\n\n/**\n * Return the device information, falling back to an empty object.\n *\n * Interesting values of `type` are `\"ios\"` and `\"android\"`, but other values\n * are possible if the client is doing something unusual with `context.device`.\n *\n * @return {{type: string}}\n */\nf.device = function() {\n  let device = this.proxy(\"context.device\");\n  if (typeof device !== \"object\" || device === null) {\n    device = {};\n  }\n  let library = this.library().name;\n  if (device.type) return device;\n\n  if (library.indexOf(\"ios\") > -1) device.type = \"ios\";\n  if (library.indexOf(\"android\") > -1) device.type = \"android\";\n  return device;\n};\n\n/**\n * Get the User-Agent from `context.userAgent`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return string\n */\nf.userAgent = Facade.proxy(\"context.userAgent\");\n\n/**\n * Get the timezone from `context.timezone`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return string\n */\nf.timezone = Facade.proxy(\"context.timezone\");\n\n/**\n * Get the timestamp from `context.timestamp`.\n *\n * @function\n * @return string\n */\nf.timestamp = Facade.field(\"timestamp\");\n\n/**\n * Get the channel from `channel`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return string\n */\nf.channel = Facade.field(\"channel\");\n\n/**\n * Get the IP address from `context.ip`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return string\n */\nf.ip = Facade.proxy(\"context.ip\");\n\n/**\n * Get the user ID from `userId`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return string\n */\nf.userId = Facade.field(\"userId\");\n\n/**\n * Get the ZIP/Postal code from `traits`, `traits.address`, `properties`, or\n * `properties.address`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @name zip\n * @function\n * @memberof f\n * @return {string}\n */\n\n/**\n * Get the country from `traits`, `traits.address`, `properties`, or\n * `properties.address`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @name country\n * @function\n * @memberof f\n * @return {string}\n */\n\n/**\n * Get the street from `traits`, `traits.address`, `properties`, or\n * `properties.address`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @name street\n * @function\n * @memberof f\n * @return {string}\n */\n\n/**\n * Get the state from `traits`, `traits.address`, `properties`, or\n * `properties.address`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @name state\n * @function\n * @memberof f\n * @return {string}\n */\n\n/**\n * Get the city from `traits`, `traits.address`, `properties`, or\n * `properties.address`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @name city\n * @function\n * @memberof f\n * @return {string}\n */\n\n/**\n * Get the region from `traits`, `traits.address`, `properties`, or\n * `properties.address`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @name region\n * @function\n * @memberof f\n * @return {string}\n */\n\naddress(f);\n\n/**\n * Return the cloned and traversed object\n *\n * @ignore\n * @param {*} obj\n * @return {*}\n */\nfunction transform (obj) {\n  return clone(obj);\n}\n", "if (typeof Object.create === 'function') {\n  // implementation from standard node.js 'util' module\n  module.exports = function inherits(ctor, superCtor) {\n    if (superCtor) {\n      ctor.super_ = superCtor\n      ctor.prototype = Object.create(superCtor.prototype, {\n        constructor: {\n          value: ctor,\n          enumerable: false,\n          writable: true,\n          configurable: true\n        }\n      })\n    }\n  };\n} else {\n  // old school shim for old browsers\n  module.exports = function inherits(ctor, superCtor) {\n    if (superCtor) {\n      ctor.super_ = superCtor\n      var TempCtor = function () {}\n      TempCtor.prototype = superCtor.prototype\n      ctor.prototype = new TempCtor()\n      ctor.prototype.constructor = ctor\n    }\n  }\n}\n", "\"use strict\";\n\nimport inherit from \"inherits\";\nimport { Facade } from \"./facade\";\n\n/**\n * Initialize a new `Alias` facade with a `dictionary` of arguments.\n *\n * @param {Object} dictionary - The object to wrap.\n * @param {string} [dictionary.from] - The previous ID of the user.\n * @param {string} [dictionary.to] - The new ID of the user.\n * @param {Object} opts - Options about what kind of Facade to create.\n *\n * @augments Facade\n */\nexport function Alias(dictionary, opts) {\n  Facade.call(this, dictionary, opts);\n}\n\ninherit(Alias, Facade);\n\n/**\n * Return the type of facade this is. This will always return `\"alias\"`.\n *\n * @return {string}\n */\nAlias.prototype.action = function () {\n  return \"alias\";\n};\n\n/**\n * An alias for {@link Alias#action}.\n *\n * @function\n * @return {string}\n */\nAlias.prototype.type = Alias.prototype.action;\n\n/**\n * Get the user's previous ID from `previousId` or `from`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\nAlias.prototype.previousId = function () {\n  return this.field(\"previousId\") || this.field(\"from\");\n};\n\n/**\n * An alias for {@link Alias#previousId}.\n *\n * @function\n * @return {string}\n */\nAlias.prototype.from = Alias.prototype.previousId;\n\n/**\n * Get the user's new ID from `userId` or `to`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\nAlias.prototype.userId = function () {\n  return this.field(\"userId\") || this.field(\"to\");\n};\n\n/**\n * An alias for {@link Alias#userId}.\n *\n * @function\n * @return {string}\n */\nAlias.prototype.to = Alias.prototype.userId;\n", "const matcher = /.+\\@.+\\..+/;\n\nexport default function isEmail(string) {\n  return matcher.test(string);\n}\n", "\"use strict\";\n\nimport inherit from \"inherits\";\nimport isEmail from \"./is-email\";\nimport newDate from \"new-date\";\nimport { Facade } from \"./facade\";\n\n/**\n * Initialize a new `Group` facade with a `dictionary` of arguments.\n *\n * @param {Object} dictionary - The object to wrap.\n * @param {string} [dictionary.userId] - The user to add to the group.\n * @param {string} [dictionary.groupId] - The ID of the group.\n * @param {Object} [dictionary.traits] - The traits of the group.\n * @param {Object} opts - Options about what kind of Facade to create.\n *\n * @augments Facade\n */\nexport function Group(dictionary, opts) {\n  Facade.call(this, dictionary, opts);\n}\n\ninherit(Group, Facade);\n\nconst g = Group.prototype;\n\n/**\n * Return the type of facade this is. This will always return `\"group\"`.\n *\n * @return {string}\n */\ng.action = function () {\n  return \"group\";\n};\n\n/**\n * An alias for {@link Group#action}.\n *\n * @function\n * @return {string}\n */\ng.type = g.action;\n\n/**\n * Get the group ID from `groupId`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\ng.groupId = Facade.field(\"groupId\");\n\n/**\n * Get the time of creation of the group from `traits.createdAt`,\n * `traits.created`, `properties.createdAt`, or `properties.created`.\n *\n * @return {Date}\n */\ng.created = function () {\n  var created =\n    this.proxy(\"traits.createdAt\") ||\n    this.proxy(\"traits.created\") ||\n    this.proxy(\"properties.createdAt\") ||\n    this.proxy(\"properties.created\");\n\n  if (created) return newDate(created);\n};\n\n/**\n * Get the group's email from `traits.email`, falling back to `groupId` only if\n * it looks like a valid email.\n *\n * @return {string}\n */\ng.email = function () {\n  var email = this.proxy(\"traits.email\");\n  if (email) return email;\n  var groupId = this.groupId();\n  if (isEmail(groupId)) return groupId;\n};\n\n/**\n * Get the group's traits. This is identical to how {@link Facade#traits}\n * works, except it looks at `traits.*` instead of `options.traits.*`.\n *\n * Traits are gotten from `traits`, augmented with a property `id` with\n * the event's `groupId`.\n *\n * The parameter `aliases` is meant to transform keys in `traits` into new\n * keys. Each alias like `{ \"xxx\": \"yyy\" }` will take whatever is at `xxx` in\n * the traits, and move it to `yyy`. If `xxx` is a method of this facade, it'll\n * be called as a function instead of treated as a key into the traits.\n *\n * @example\n * var obj = { traits: { foo: \"bar\" }, anonymousId: \"xxx\" }\n * var group = new Group(obj)\n *\n * group.traits() // { \"foo\": \"bar\" }\n * group.traits({ \"foo\": \"asdf\" }) // { \"asdf\": \"bar\" }\n * group.traits({ \"sessionId\": \"rofl\" }) // { \"rofl\": \"xxx\" }\n *\n * @param {Object} aliases - A mapping from keys to the new keys they should be\n * transformed to.\n * @return {Object}\n */\ng.traits = function (aliases) {\n  var ret = this.properties();\n  var id = this.groupId();\n  aliases = aliases || {};\n\n  if (id) ret.id = id;\n\n  for (var alias in aliases) {\n    var value =\n      this[alias] == null ? this.proxy(\"traits.\" + alias) : this[alias]();\n    if (value == null) continue;\n    ret[aliases[alias]] = value;\n    delete ret[alias];\n  }\n\n  return ret;\n};\n\n/**\n * Get the group's name from `traits.name`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return {string}\n */\ng.name = Facade.proxy(\"traits.name\");\n\n/**\n * Get the group's industry from `traits.industry`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return {string}\n */\ng.industry = Facade.proxy(\"traits.industry\");\n\n/**\n * Get the group's employee count from `traits.employees`.\n *\n * This *should* be a number, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return {number}\n */\ng.employees = Facade.proxy(\"traits.employees\");\n\n/**\n * Get the group's properties from `traits` or `properties`, falling back to\n * simply an empty object.\n *\n * @return {Object}\n */\ng.properties = function () {\n  // TODO remove this function\n  return this.field(\"traits\") || this.field(\"properties\") || {};\n};\n", "\"use strict\";\n\nimport { Facade } from \"./facade\";\nimport get from \"obj-case\";\nimport inherit from \"inherits\";\nimport isEmail from \"./is-email\";\nimport newDate from \"new-date\";\n\nlet trim = (str) => str.trim();\n\n/**\n * Initialize a new `Identify` facade with a `dictionary` of arguments.\n *\n * @param {Object} dictionary - The object to wrap.\n * @param {string} [dictionary.userId] - The ID of the user.\n * @param {string} [dictionary.anonymousId] - The anonymous ID of the user.\n * @param {string} [dictionary.traits] - The user's traits.\n * @param {Object} opts - Options about what kind of Facade to create.\n *\n * @augments Facade\n */\nexport function Identify(dictionary, opts) {\n  Facade.call(this, dictionary, opts);\n}\n\ninherit(Identify, Facade);\n\nconst i = Identify.prototype;\n\n/**\n * Return the type of facade this is. This will always return `\"identify\"`.\n *\n * @return {string}\n */\ni.action = function () {\n  return \"identify\";\n};\n\n/**\n * An alias for {@link Identify#action}.\n *\n * @function\n * @return {string}\n */\ni.type = i.action;\n\n/**\n * Get the user's traits. This is identical to how {@link Facade#traits} works,\n * except it looks at `traits.*` instead of `options.traits.*`.\n *\n * Traits are gotten from `traits`, augmented with a property `id` with\n * the event's `userId`.\n *\n * The parameter `aliases` is meant to transform keys in `traits` into new\n * keys. Each alias like `{ \"xxx\": \"yyy\" }` will take whatever is at `xxx` in\n * the traits, and move it to `yyy`. If `xxx` is a method of this facade, it'll\n * be called as a function instead of treated as a key into the traits.\n *\n * @example\n * let obj = { traits: { foo: \"bar\" }, anonymousId: \"xxx\" }\n * let identify = new Identify(obj)\n *\n * identify.traits() // { \"foo\": \"bar\" }\n * identify.traits({ \"foo\": \"asdf\" }) // { \"asdf\": \"bar\" }\n * identify.traits({ \"sessionId\": \"rofl\" }) // { \"rofl\": \"xxx\" }\n *\n * @param {Object} aliases - A mapping from keys to the new keys they should be\n * transformed to.\n * @return {Object}\n */\ni.traits = function (aliases) {\n  let ret = this.field(\"traits\") || {};\n  let id = this.userId();\n  aliases = aliases || {};\n\n  if (id) ret.id = id;\n\n  for (let alias in aliases) {\n    let value =\n      this[alias] == null ? this.proxy(\"traits.\" + alias) : this[alias]();\n    if (value == null) continue;\n    ret[aliases[alias]] = value;\n    if (alias !== aliases[alias]) delete ret[alias];\n  }\n\n  return ret;\n};\n\n/**\n * Get the user's email from `traits.email`, falling back to `userId` only if\n * it looks like a valid email.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\ni.email = function () {\n  let email = this.proxy(\"traits.email\");\n  if (email) return email;\n\n  let userId = this.userId();\n  if (isEmail(userId)) return userId;\n};\n\n/**\n * Get the time of creation of the user from `traits.created` or\n * `traits.createdAt`.\n *\n * @return {Date}\n */\ni.created = function () {\n  let created = this.proxy(\"traits.created\") || this.proxy(\"traits.createdAt\");\n  if (created) return newDate(created);\n};\n\n/**\n * Get the time of creation of the user's company from `traits.company.created`\n * or `traits.company.createdAt`.\n *\n * @return {Date}\n */\ni.companyCreated = function () {\n  let created =\n    this.proxy(\"traits.company.created\") ||\n    this.proxy(\"traits.company.createdAt\");\n\n  if (created) {\n    return newDate(created);\n  }\n};\n\n/**\n * Get the user's company name from `traits.company.name`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\ni.companyName = function () {\n  return this.proxy(\"traits.company.name\");\n};\n\n/**\n * Get the user's name `traits.name`, falling back to combining {@link\n * Identify#firstName} and {@link Identify#lastName} if possible.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\ni.name = function () {\n  let name = this.proxy(\"traits.name\");\n  if (typeof name === \"string\") {\n    return trim(name);\n  }\n\n  let firstName = this.firstName();\n  let lastName = this.lastName();\n  if (firstName && lastName) {\n    return trim(firstName + \" \" + lastName);\n  }\n};\n\n/**\n * Get the user's first name from `traits.firstName`, optionally splitting it\n * out of a the full name if that's all that was provided.\n *\n * Splitting the full name works on the assumption that the full name is of the\n * form \"FirstName LastName\"; it will not work for non-Western names.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\ni.firstName = function () {\n  let firstName = this.proxy(\"traits.firstName\");\n  if (typeof firstName === \"string\") {\n    return trim(firstName);\n  }\n\n  let name = this.proxy(\"traits.name\");\n  if (typeof name === \"string\") {\n    return trim(name).split(\" \")[0];\n  }\n};\n\n/**\n * Get the user's last name from `traits.lastName`, optionally splitting it out\n * of a the full name if that's all that was provided.\n *\n * Splitting the full name works on the assumption that the full name is of the\n * form \"FirstName LastName\"; it will not work for non-Western names.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\ni.lastName = function () {\n  let lastName = this.proxy(\"traits.lastName\");\n  if (typeof lastName === \"string\") {\n    return trim(lastName);\n  }\n\n  let name = this.proxy(\"traits.name\");\n  if (typeof name !== \"string\") {\n    return;\n  }\n\n  let space = trim(name).indexOf(\" \");\n  if (space === -1) {\n    return;\n  }\n\n  return trim(name.substr(space + 1));\n};\n\n/**\n * Get the user's \"unique id\" from `userId`, `traits.username`, or\n * `traits.email`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\ni.uid = function () {\n  return this.userId() || this.username() || this.email();\n};\n\n/**\n * Get the user's description from `traits.description` or `traits.background`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\ni.description = function () {\n  return this.proxy(\"traits.description\") || this.proxy(\"traits.background\");\n};\n\n/**\n * Get the user's age from `traits.age`, falling back to computing it from\n * `traits.birthday` and the current time.\n *\n * @return {number}\n */\ni.age = function () {\n  let date = this.birthday();\n  let age = get(this.traits(), \"age\");\n  if (age != null) return age;\n  if (!(date instanceof Date)) return;\n  let now = new Date();\n  return now.getFullYear() - date.getFullYear();\n};\n\n/**\n * Get the URL of the user's avatar from `traits.avatar`, `traits.photoUrl`, or\n * `traits.avatarUrl`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\ni.avatar = function () {\n  let traits = this.traits();\n  return (\n    get(traits, \"avatar\") || get(traits, \"photoUrl\") || get(traits, \"avatarUrl\")\n  );\n};\n\n/**\n * Get the user's job position from `traits.position` or `traits.jobTitle`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\ni.position = function () {\n  let traits = this.traits();\n  return get(traits, \"position\") || get(traits, \"jobTitle\");\n};\n\n/**\n * Get the user's username from `traits.username`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return {string}\n */\ni.username = Facade.proxy(\"traits.username\");\n\n/**\n * Get the user's website from `traits.website`, or if there are multiple in\n * `traits.websites`, return the first one.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return {string}\n */\ni.website = Facade.one(\"traits.website\");\n\n/**\n * Get the user's websites from `traits.websites`, or if there is only one in\n * `traits.website`, then wrap it in an array.\n *\n * This *should* be an array of strings, but may not be if the client isn't\n * adhering to the spec.\n *\n * @function\n * @return {array}\n */\ni.websites = Facade.multi(\"traits.website\");\n\n/**\n * Get the user's phone number from `traits.phone`, or if there are multiple in\n * `traits.phones`, return the first one.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return {string}\n */\ni.phone = Facade.one(\"traits.phone\");\n\n/**\n * Get the user's phone numbers from `traits.phones`, or if there is only one\n * in `traits.phone`, then wrap it in an array.\n *\n * This *should* be an array of strings, but may not be if the client isn't\n * adhering to the spec.\n *\n * @function\n * @return {array}\n */\ni.phones = Facade.multi(\"traits.phone\");\n\n/**\n * Get the user's address from `traits.address`.\n *\n * This *should* be an object, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return {object}\n */\ni.address = Facade.proxy(\"traits.address\");\n\n/**\n * Get the user's gender from `traits.gender`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return {string}\n */\ni.gender = Facade.proxy(\"traits.gender\");\n\n/**\n * Get the user's birthday from `traits.birthday`.\n *\n * This *should* be a Date if `opts.traverse` was enabled (it is by default)\n * when letructing this Identify. Otherwise, it should be a string. But it\n * may be neither if the client isn't adhering to the spec.\n * spec.\n *\n * @function\n * @return {object}\n */\ni.birthday = Facade.proxy(\"traits.birthday\");\n", "\"use strict\";\n\nimport inherit from \"inherits\";\nimport { Facade } from \"./facade\";\nimport { Identify } from \"./identify\";\nimport isEmail from \"./is-email\";\nimport get from \"obj-case\";\n\n/**\n * Initialize a new `Track` facade with a `dictionary` of arguments.\n *\n * @param {Object} dictionary - The object to wrap.\n * @param {string} [dictionary.event] - The name of the event being tracked.\n * @param {string} [dictionary.userId] - The ID of the user being tracked.\n * @param {string} [dictionary.anonymousId] - The anonymous ID of the user.\n * @param {string} [dictionary.properties] - Properties of the track event.\n * @param {Object} opts - Options about what kind of Facade to create.\n *\n * @augments Facade\n */\nexport function Track(dictionary, opts) {\n  Facade.call(this, dictionary, opts);\n}\n\ninherit(Track, Facade);\n\nlet t = Track.prototype;\n\n/**\n * Return the type of facade this is. This will always return `\"track\"`.\n *\n * @return {string}\n */\nt.action = function () {\n  return \"track\";\n};\n\n/**\n * An alias for {@link Track#action}.\n *\n * @function\n * @return {string}\n */\nt.type = t.action;\n\n/**\n * Get the event name from `event`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return {string}\n */\nt.event = Facade.field(\"event\");\n\n/**\n * Get the event value, usually the monetary value, from `properties.value`.\n *\n * This *should* be a number, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return {number}\n */\nt.value = Facade.proxy(\"properties.value\");\n\n/**\n * Get the event cateogry from `properties.category`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return {string}\n */\nt.category = Facade.proxy(\"properties.category\");\n\n/**\n * Get the event ID from `properties.id`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return {string}\n */\nt.id = Facade.proxy(\"properties.id\");\n\n/**\n * Get the product ID from `properties.productId`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\nt.productId = function () {\n  return (\n    this.proxy(\"properties.product_id\") || this.proxy(\"properties.productId\")\n  );\n};\n\n/**\n * Get the promotion ID from `properties.promotionId`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\nt.promotionId = function () {\n  return (\n    this.proxy(\"properties.promotion_id\") ||\n    this.proxy(\"properties.promotionId\")\n  );\n};\n\n/**\n * Get the cart ID from `properties.cartId`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\nt.cartId = function () {\n  return this.proxy(\"properties.cart_id\") || this.proxy(\"properties.cartId\");\n};\n\n/**\n * Get the checkout ID from `properties.checkoutId`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\nt.checkoutId = function () {\n  return (\n    this.proxy(\"properties.checkout_id\") || this.proxy(\"properties.checkoutId\")\n  );\n};\n\n/**\n * Get the payment ID from `properties.paymentId`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\nt.paymentId = function () {\n  return (\n    this.proxy(\"properties.payment_id\") || this.proxy(\"properties.paymentId\")\n  );\n};\n\n/**\n * Get the coupon ID from `properties.couponId`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\nt.couponId = function () {\n  return (\n    this.proxy(\"properties.coupon_id\") || this.proxy(\"properties.couponId\")\n  );\n};\n\n/**\n * Get the wishlist ID from `properties.wishlistId`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\nt.wishlistId = function () {\n  return (\n    this.proxy(\"properties.wishlist_id\") || this.proxy(\"properties.wishlistId\")\n  );\n};\n\n/**\n * Get the review ID from `properties.reviewId`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\nt.reviewId = function () {\n  return (\n    this.proxy(\"properties.review_id\") || this.proxy(\"properties.reviewId\")\n  );\n};\n\n/**\n * Get the order ID from `properties.id` or `properties.orderId`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\nt.orderId = function () {\n  // doesn't follow above convention since this fallback order was how it used to be\n  return (\n    this.proxy(\"properties.id\") ||\n    this.proxy(\"properties.order_id\") ||\n    this.proxy(\"properties.orderId\")\n  );\n};\n\n/**\n * Get the SKU from `properties.sku`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return {string}\n */\nt.sku = Facade.proxy(\"properties.sku\");\n\n/**\n * Get the amount of tax for this purchase from `properties.tax`.\n *\n * This *should* be a number, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return {number}\n */\nt.tax = Facade.proxy(\"properties.tax\");\n\n/**\n * Get the name of this event from `properties.name`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return {string}\n */\nt.name = Facade.proxy(\"properties.name\");\n\n/**\n * Get the price of this purchase from `properties.price`.\n *\n * This *should* be a number, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return {number}\n */\nt.price = Facade.proxy(\"properties.price\");\n\n/**\n * Get the total for this purchase from `properties.total`.\n *\n * This *should* be a number, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return {number}\n */\nt.total = Facade.proxy(\"properties.total\");\n\n/**\n * Whether this is a repeat purchase from `properties.repeat`.\n *\n * This *should* be a boolean, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return {boolean}\n */\nt.repeat = Facade.proxy(\"properties.repeat\");\n\n/**\n * Get the coupon for this purchase from `properties.coupon`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return {string}\n */\nt.coupon = Facade.proxy(\"properties.coupon\");\n\n/**\n * Get the shipping for this purchase from `properties.shipping`.\n *\n * This *should* be a number, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return {number}\n */\nt.shipping = Facade.proxy(\"properties.shipping\");\n\n/**\n * Get the discount for this purchase from `properties.discount`.\n *\n * This *should* be a number, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return {number}\n */\nt.discount = Facade.proxy(\"properties.discount\");\n\n/**\n * Get the shipping method for this purchase from `properties.shippingMethod`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\nt.shippingMethod = function () {\n  return (\n    this.proxy(\"properties.shipping_method\") ||\n    this.proxy(\"properties.shippingMethod\")\n  );\n};\n\n/**\n * Get the payment method for this purchase from `properties.paymentMethod`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\nt.paymentMethod = function () {\n  return (\n    this.proxy(\"properties.payment_method\") ||\n    this.proxy(\"properties.paymentMethod\")\n  );\n};\n\n/**\n * Get a description for this event from `properties.description`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return {string}\n */\nt.description = Facade.proxy(\"properties.description\");\n\n/**\n * Get a plan, as in the plan the user is on, for this event from\n * `properties.plan`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return {string}\n */\nt.plan = Facade.proxy(\"properties.plan\");\n\n/**\n * Get the subtotal for this purchase from `properties.subtotal`.\n *\n * If `properties.subtotal` isn't available, then fall back to computing the\n * total from `properties.total` or `properties.revenue`, and then subtracting\n * tax, shipping, and discounts.\n *\n * If neither subtotal, total, nor revenue are available, then return 0.\n *\n * @return {number}\n */\nt.subtotal = function () {\n  let subtotal = get(this.properties(), \"subtotal\");\n  let total = this.total() || this.revenue();\n\n  if (subtotal) return subtotal;\n  if (!total) return 0;\n\n  if (this.total()) {\n    let n = this.tax();\n    if (n) total -= n;\n    n = this.shipping();\n    if (n) total -= n;\n    n = this.discount();\n    if (n) total += n;\n  }\n\n  return total;\n};\n\n/**\n * Get the products for this event from `properties.products` if it's an\n * array, falling back to an empty array.\n *\n * @return {Array}\n */\nt.products = function () {\n  let props = this.properties();\n  let products = get(props, \"products\");\n  if (Array.isArray(products)) {\n    return products.filter(item => item !== null)\n  }\n  return [];\n};\n\n/**\n * Get the quantity for this event from `properties.quantity`, falling back to\n * a quantity of one.\n *\n * @return {number}\n */\nt.quantity = function () {\n  let props = this.obj.properties || {};\n  return props.quantity || 1;\n};\n\n/**\n * Get the currency for this event from `properties.currency`, falling back to\n * \"USD\".\n *\n * @return {string}\n */\nt.currency = function () {\n  let props = this.obj.properties || {};\n  return props.currency || \"USD\";\n};\n\n/**\n * Get the referrer for this event from `context.referrer.url`,\n * `context.page.referrer`, or `properties.referrer`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\nt.referrer = function () {\n  // TODO re-examine whether this function is necessary\n  return (\n    this.proxy(\"context.referrer.url\") ||\n    this.proxy(\"context.page.referrer\") ||\n    this.proxy(\"properties.referrer\")\n  );\n};\n\n/**\n * Get the query for this event from `options.query`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return {string|object}\n */\nt.query = Facade.proxy(\"options.query\");\n\n/**\n * Get the page's properties. This is identical to how {@link Facade#traits}\n * works, except it looks at `properties.*` instead of `options.traits.*`.\n *\n * Properties are gotten from `properties`.\n *\n * The parameter `aliases` is meant to transform keys in `properties` into new\n * keys. Each alias like `{ \"xxx\": \"yyy\" }` will take whatever is at `xxx` in\n * the traits, and move it to `yyy`. If `xxx` is a method of this facade, it'll\n * be called as a function instead of treated as a key into the traits.\n *\n * @example\n * let obj = { properties: { foo: \"bar\" }, anonymousId: \"xxx\" }\n * let track = new Track(obj)\n *\n * track.traits() // { \"foo\": \"bar\" }\n * track.traits({ \"foo\": \"asdf\" }) // { \"asdf\": \"bar\" }\n * track.traits({ \"sessionId\": \"rofl\" }) // { \"rofl\": \"xxx\" }\n *\n * @param {Object} aliases - A mapping from keys to the new keys they should be\n * transformed to.\n * @return {Object}\n */\nt.properties = function (aliases) {\n  let ret = this.field(\"properties\") || {};\n  aliases = aliases || {};\n\n  for (let alias in aliases) {\n    let value =\n      this[alias] == null ? this.proxy(\"properties.\" + alias) : this[alias]();\n    if (value == null) continue;\n    ret[aliases[alias]] = value;\n    delete ret[alias];\n  }\n\n  return ret;\n};\n\n/**\n * Get the username of the user for this event from `traits.username`,\n * `properties.username`, `userId`, or `anonymousId`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string|undefined}\n */\nt.username = function () {\n  return (\n    this.proxy(\"traits.username\") ||\n    this.proxy(\"properties.username\") ||\n    this.userId() ||\n    this.sessionId()\n  );\n};\n\n/**\n * Get the email of the user for this event from `trais.email`,\n * `properties.email`, or `options.traits.email`, falling back to `userId` if\n * it looks like a valid email.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string|undefined}\n */\nt.email = function () {\n  let email =\n    this.proxy(\"traits.email\") ||\n    this.proxy(\"properties.email\") ||\n    this.proxy(\"options.traits.email\");\n  if (email) return email;\n\n  let userId = this.userId();\n  if (isEmail(userId)) return userId;\n};\n\n/**\n * Get the revenue for this event.\n *\n * If this is an \"Order Completed\" event, this will be the `properties.total`\n * falling back to the `properties.revenue`. For all other events, this is\n * simply taken from `properties.revenue`.\n *\n * If there are dollar signs in these properties, they will be removed. The\n * result will be parsed into a number.\n *\n * @return {number}\n */\nt.revenue = function () {\n  let revenue = this.proxy(\"properties.revenue\");\n  let event = this.event();\n  let orderCompletedRegExp = /^[ _]?completed[ _]?order[ _]?|^[ _]?order[ _]?completed[ _]?$/i;\n\n  // it's always revenue, unless it's called during an order completion.\n  if (!revenue && event && event.match(orderCompletedRegExp)) {\n    revenue = this.proxy(\"properties.total\");\n  }\n\n  return currency(revenue);\n};\n\n/**\n * Get the revenue for this event in \"cents\" -- in other words, multiply the\n * {@link Track#revenue} by 100, or return 0 if there isn't a numerical revenue\n * for this event.\n *\n * @return {number}\n */\nt.cents = function () {\n  let revenue = this.revenue();\n  return typeof revenue !== \"number\" ? this.value() || 0 : revenue * 100;\n};\n\n/**\n * Convert this event into an {@link Identify} facade.\n *\n * This works by taking this event's underlying object and creating an Identify\n * from it. This event's traits, taken from `options.traits`, will be used as\n * the Identify's traits.\n *\n * @return {Identify}\n */\nt.identify = function () {\n  // TODO: remove me.\n  let json = this.json();\n  json.traits = this.traits();\n  return new Identify(json, this.opts);\n};\n\n/**\n * Get float from currency value.\n *\n * @ignore\n * @param {*} val\n * @return {number}\n */\nfunction currency(val) {\n  if (!val) return;\n  if (typeof val === \"number\") {\n    return val;\n  }\n  if (typeof val !== \"string\") {\n    return;\n  }\n\n  val = val.replace(/\\$/g, \"\");\n  val = parseFloat(val);\n\n  if (!isNaN(val)) {\n    return val;\n  }\n}\n", "\"use strict\";\n\nimport inherit from \"inherits\";\nimport { Facade } from \"./facade\";\nimport { Track } from \"./track\";\nimport isEmail from \"./is-email\";\n\n/**\n * Initialize a new `Page` facade with a `dictionary` of arguments.\n *\n * @param {Object} dictionary - The object to wrap.\n * @param {string} [dictionary.category] - The page category.\n * @param {string} [dictionary.name] - The page name.\n * @param {string} [dictionary.properties] - The page properties.\n * @param {Object} opts - Options about what kind of Facade to create.\n *\n * @augments Facade\n */\nexport function Page(dictionary, opts) {\n  Facade.call(this, dictionary, opts);\n}\n\ninherit(Page, Facade);\n\nconst p = Page.prototype;\n\n/**\n * Return the type of facade this is. This will always return `\"page\"`.\n *\n * @return {string}\n */\np.action = function () {\n  return \"page\";\n};\n\n/**\n * An alias for {@link Page#action}.\n *\n * @function\n * @return {string}\n */\np.type = p.action;\n\n/**\n * Get the page category from `category`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\np.category = Facade.field(\"category\");\n\n/**\n * Get the page name from `name`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\np.name = Facade.field(\"name\");\n\n/**\n * Get the page title from `properties.title`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\np.title = Facade.proxy(\"properties.title\");\n\n/**\n * Get the page path from `properties.path`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\np.path = Facade.proxy(\"properties.path\");\n\n/**\n * Get the page URL from `properties.url`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\np.url = Facade.proxy(\"properties.url\");\n\n/**\n * Get the HTTP referrer from `context.referrer.url`, `context.page.referrer`,\n * or `properties.referrer`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\np.referrer = function () {\n  return (\n    this.proxy(\"context.referrer.url\") ||\n    this.proxy(\"context.page.referrer\") ||\n    this.proxy(\"properties.referrer\")\n  );\n};\n\n/**\n * Get the page's properties. This is identical to how {@link Facade#traits}\n * works, except it looks at `properties.*` instead of `options.traits.*`.\n *\n * Properties are gotten from `properties`, augmented with the page's `name`\n * and `category`.\n *\n * The parameter `aliases` is meant to transform keys in `properties` into new\n * keys. Each alias like `{ \"xxx\": \"yyy\" }` will take whatever is at `xxx` in\n * the traits, and move it to `yyy`. If `xxx` is a method of this facade, it'll\n * be called as a function instead of treated as a key into the traits.\n *\n * @example\n * let obj = { properties: { foo: \"bar\" }, anonymousId: \"xxx\" }\n * let page = new Page(obj)\n *\n * page.traits() // { \"foo\": \"bar\" }\n * page.traits({ \"foo\": \"asdf\" }) // { \"asdf\": \"bar\" }\n * page.traits({ \"sessionId\": \"rofl\" }) // { \"rofl\": \"xxx\" }\n *\n * @param {Object} aliases - A mapping from keys to the new keys they should be\n * transformed to.\n * @return {Object}\n */\np.properties = function (aliases) {\n  let props = this.field(\"properties\") || {};\n  let category = this.category();\n  let name = this.name();\n  aliases = aliases || {};\n\n  if (category) props.category = category;\n  if (name) props.name = name;\n\n  for (let alias in aliases) {\n    let value =\n      this[alias] == null ? this.proxy(\"properties.\" + alias) : this[alias]();\n    if (value == null) continue;\n    props[aliases[alias]] = value;\n    if (alias !== aliases[alias]) delete props[alias];\n  }\n\n  return props;\n};\n\n/**\n * Get the user's email from `context.traits.email` or `properties.email`,\n * falling back to `userId` if it's a valid email.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\np.email = function () {\n  let email =\n    this.proxy(\"context.traits.email\") || this.proxy(\"properties.email\");\n  if (email) return email;\n\n  let userId = this.userId();\n  if (isEmail(userId)) return userId;\n};\n\n/**\n * Get the page fullName. This is `$category $name` if both are present, and\n * just `name` otherwiser.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\np.fullName = function () {\n  let category = this.category();\n  let name = this.name();\n  return name && category ? category + \" \" + name : name;\n};\n\n/**\n * Get an event name from this page call. If `name` is present, this will be\n * `Viewed $name Page`; otherwise, it will be `Loaded a Page`.\n *\n * @param {string} name - The name of this page.\n * @return {string}\n */\np.event = function (name) {\n  return name ? \"Viewed \" + name + \" Page\" : \"Loaded a Page\";\n};\n\n/**\n * Convert this Page to a {@link Track} facade. The inputted `name` will be\n * converted to the Track's event name via {@link Page#event}.\n *\n * @param {string} name\n * @return {Track}\n */\np.track = function (name) {\n  let json = this.json();\n  json.event = this.event(name);\n  json.timestamp = this.timestamp();\n  json.properties = this.properties();\n  return new Track(json, this.opts);\n};\n", "\"use strict\";\n\nimport inherit from \"inherits\";\nimport { Page } from \"./page\";\nimport { Track } from \"./track\";\n\n/**\n * Initialize a new `Screen` facade with a `dictionary` of arguments.\n *\n * Note that this class extends {@link Page}, so its methods are available to\n * instances of this class as well.\n *\n * @param {Object} dictionary - The object to wrap.\n * @param {string} [dictionary.category] - The page category.\n * @param {string} [dictionary.name] - The page name.\n * @param {string} [dictionary.properties] - The page properties.\n * @param {Object} opts - Options about what kind of Facade to create.\n *\n * @augments Page\n */\nexport function Screen(dictionary, opts) {\n  Page.call(this, dictionary, opts);\n}\n\ninherit(Screen, Page);\n\n/**\n * Return the type of facade this is. This will always return `\"screen\"`.\n *\n * @return {string}\n */\nScreen.prototype.action = function () {\n  return \"screen\";\n};\n\n/**\n * An alias for {@link Screen#action}.\n *\n * @function\n * @return {string}\n */\nScreen.prototype.type = Screen.prototype.action;\n\n/**\n * Get an event name from this screen call. If `name` is present, this will be\n * `Viewed $name Screen`; otherwise, it will be `Loaded a Screen`.\n *\n * @param {string} name - The name of this screen.\n * @return {string}\n */\nScreen.prototype.event = function (name) {\n  return name ? \"Viewed \" + name + \" Screen\" : \"Loaded a Screen\";\n};\n\n/**\n * Convert this Screen to a {@link Track} facade. The inputted `name` will be\n * converted to the Track's event name via {@link Screen#event}.\n *\n * @param {string} name\n * @return {Track}\n */\nScreen.prototype.track = function (name) {\n  let json = this.json();\n  json.event = this.event(name);\n  json.timestamp = this.timestamp();\n  json.properties = this.properties();\n  return new Track(json, this.opts);\n};\n", "\"use strict\";\n\nimport inherit from \"inherits\";\nimport { Facade } from \"./facade\";\n\n/**\n * Initialize a new `Delete` facade with a `dictionary` of arguments.\n *\n * @param {Object} dictionary - The object to wrap.\n * @param {string} [dictionary.category] - The delete category.\n * @param {string} [dictionary.name] - The delete name.\n * @param {string} [dictionary.properties] - The delete properties.\n * @param {Object} opts - Options about what kind of Facade to create.\n *\n * @augments Facade\n */\nexport function Delete(dictionary, opts) {\n  Facade.call(this, dictionary, opts);\n}\n\ninherit(Delete, Facade);\n\n/**\n * Return the type of facade this is. This will always return `\"delete\"`.\n *\n * @return {string}\n */\nDelete.prototype.type = function () {\n  return \"delete\";\n};\n", "\"use strict\";\n\nimport { Facade } from \"./facade\";\nimport { Alias } from \"./alias\";\nimport { Group } from \"./group\";\nimport { Identify } from \"./identify\";\nimport { Track } from \"./track\";\nimport { Page } from \"./page\";\nimport { Screen } from \"./screen\";\nimport { Delete } from \"./delete\";\n\nexport default {\n  ...Facade,\n  Alias,\n  Group,\n  Identify,\n  Track,\n  Page,\n  Screen,\n  Delete,\n};\n\nexport { Facade, Alias, Group, Identify, Track, Page, Screen, Delete };\n", "import {\n  Alias,\n  Facade,\n  Group,\n  Identify,\n  Options,\n  Page,\n  Screen,\n  Track,\n} from '@segment/facade'\nimport { SegmentEvent } from '../core/events'\n\nexport type SegmentFacade = Facade<SegmentEvent> & {\n  obj: SegmentEvent\n}\n\nexport function toFacade(evt: SegmentEvent, options?: Options): SegmentFacade {\n  let fcd = new Facade(evt, options)\n\n  if (evt.type === 'track') {\n    fcd = new Track(evt, options)\n  }\n\n  if (evt.type === 'identify') {\n    fcd = new Identify(evt, options)\n  }\n\n  if (evt.type === 'page') {\n    fcd = new Page(evt, options)\n  }\n\n  if (evt.type === 'alias') {\n    fcd = new Alias(evt, options)\n  }\n\n  if (evt.type === 'group') {\n    fcd = new Group(evt, options)\n  }\n\n  if (evt.type === 'screen') {\n    fcd = new Screen(evt, options)\n  }\n\n  Object.defineProperty(fcd, 'obj', {\n    value: evt,\n    writable: true,\n  })\n\n  return fcd as SegmentFacade\n}\n", "export const pWhile = async <T>(\n  condition: (value: T | undefined) => boolean,\n  action: () => T | PromiseLike<T>\n): Promise<void> => {\n  const loop = async (actionResult: T | undefined): Promise<void> => {\n    if (condition(actionResult)) {\n      return loop(await action())\n    }\n  }\n\n  return loop(undefined)\n}\n", "export { invokeCallback, pTimeout } from '@segment/analytics-core'\n", "import { Analytics } from './analytics'\nimport { EventProperties, Options } from './events'\nimport { pTimeout } from './callback'\n\n// Check if a user is opening the link in a new tab\nfunction userNewTab(event: Event): boolean {\n  const typedEvent = event as Event & {\n    ctrlKey: boolean\n    shiftKey: boolean\n    metaKey: boolean\n    button: number\n  }\n  if (\n    typedEvent.ctrlKey ||\n    typedEvent.shiftKey ||\n    typedEvent.metaKey ||\n    (typedEvent.button && typedEvent.button == 1)\n  ) {\n    return true\n  }\n  return false\n}\n\n// Check if the link opens in new tab\nfunction linkNewTab(element: HTMLAnchorElement, href: string | null): boolean {\n  if (element.target === '_blank' && href) {\n    return true\n  }\n  return false\n}\n\nexport interface JQueryShim<TElement = HTMLElement> {\n  toArray(): TElement[]\n}\n\nexport function link(\n  this: Analytics,\n  links: Element | Array<Element> | JQueryShim | null,\n  event: string | Function,\n  properties?: EventProperties | Function,\n  options?: Options\n): Analytics {\n  let elements: Array<Element> = []\n  // always arrays, handles jquery\n  if (!links) {\n    return this\n  }\n  if (links instanceof Element) {\n    elements = [links]\n  } else if ('toArray' in links) {\n    elements = links.toArray()\n  } else {\n    elements = links\n  }\n\n  elements.forEach((el: Element) => {\n    el.addEventListener(\n      'click',\n      (elementEvent: Event) => {\n        const ev = event instanceof Function ? event(el) : event\n        const props =\n          properties instanceof Function ? properties(el) : properties\n        const href =\n          el.getAttribute('href') ||\n          el.getAttributeNS('http://www.w3.org/1999/xlink', 'href') ||\n          el.getAttribute('xlink:href') ||\n          el.getElementsByTagName('a')[0]?.getAttribute('href')\n\n        const trackEvent = pTimeout(\n          this.track(ev, props, options ?? {}),\n          this.settings.timeout ?? 500\n        )\n\n        if (\n          !linkNewTab(el as HTMLAnchorElement, href) &&\n          !userNewTab(elementEvent)\n        ) {\n          if (href) {\n            elementEvent.preventDefault\n              ? elementEvent.preventDefault()\n              : (elementEvent.returnValue = false)\n            trackEvent\n              .catch(console.error)\n              .then(() => {\n                window.location.href = href\n              })\n              .catch(console.error)\n          }\n        }\n      },\n      false\n    )\n  })\n\n  return this\n}\n\nexport type LinkArgs = Parameters<typeof link>\n\nexport function form(\n  this: Analytics,\n  forms: HTMLFormElement | Array<HTMLFormElement> | null,\n  event: string | Function,\n  properties?: EventProperties | Function,\n  options?: Options\n): Analytics {\n  // always arrays, handles jquery\n  if (!forms) return this\n  if (forms instanceof HTMLFormElement) forms = [forms]\n\n  const elements = forms\n\n  elements.forEach((el) => {\n    if (!(el instanceof Element))\n      throw new TypeError('Must pass HTMLElement to trackForm/trackSubmit.')\n    const handler = (elementEvent: Event): void => {\n      elementEvent.preventDefault\n        ? elementEvent.preventDefault()\n        : (elementEvent.returnValue = false)\n\n      const ev = event instanceof Function ? event(el) : event\n      const props = properties instanceof Function ? properties(el) : properties\n\n      const trackEvent = pTimeout(\n        this.track(ev, props, options ?? {}),\n        this.settings.timeout ?? 500\n      )\n\n      trackEvent\n        .catch(console.error)\n        .then(() => {\n          el.submit()\n        })\n        .catch(console.error)\n    }\n\n    // Support the events happening through jQuery or Zepto instead of through\n    // the normal DOM API, because `el.submit` doesn't bubble up events...\n\n    const $ = (window as any).jQuery || (window as any).Zepto\n    if ($) {\n      $(el).submit(handler)\n    } else {\n      // eslint-disable-next-line @typescript-eslint/no-misused-promises\n      el.addEventListener('submit', handler, false)\n    }\n  })\n\n  return this\n}\n\nexport type FormArgs = Parameters<typeof form>\n", "import { Context, ContextCancelation } from '../../core/context'\nimport { SegmentEvent } from '../../core/events'\nimport { Plugin } from '../../core/plugin'\nimport { SegmentFacade, toFacade } from '../../lib/to-facade'\n\nexport interface MiddlewareParams {\n  payload: SegmentFacade\n\n  integrations?: SegmentEvent['integrations']\n  next: (payload: MiddlewareParams['payload'] | null) => void\n}\n\nexport interface DestinationMiddlewareParams {\n  payload: SegmentFacade\n  integration: string\n  next: (payload: MiddlewareParams['payload'] | null) => void\n}\n\nexport type MiddlewareFunction = (\n  middleware: MiddlewareParams\n) => void | Promise<void>\n\nexport type DestinationMiddlewareFunction = (\n  middleware: DestinationMiddlewareParams\n) => void | Promise<void>\n\nexport async function applyDestinationMiddleware(\n  destination: string,\n  evt: SegmentEvent,\n  middleware: DestinationMiddlewareFunction[]\n): Promise<SegmentEvent | null> {\n  // Clone the event so mutations are localized to a single destination.\n  let modifiedEvent = toFacade(evt, {\n    clone: true,\n    traverse: false,\n  }).rawEvent() as SegmentEvent\n  async function applyMiddleware(\n    event: SegmentEvent,\n    fn: DestinationMiddlewareFunction\n  ): Promise<SegmentEvent | null> {\n    let nextCalled = false\n    let returnedEvent: SegmentEvent | null = null\n\n    await fn({\n      payload: toFacade(event, {\n        clone: true,\n        traverse: false,\n      }),\n      integration: destination,\n      next(evt) {\n        nextCalled = true\n\n        if (evt === null) {\n          returnedEvent = null\n        }\n\n        if (evt) {\n          returnedEvent = evt.obj\n        }\n      },\n    })\n\n    if (!nextCalled && returnedEvent !== null) {\n      returnedEvent = returnedEvent as SegmentEvent\n      returnedEvent.integrations = {\n        ...event.integrations,\n        [destination]: false,\n      }\n    }\n\n    return returnedEvent\n  }\n\n  for (const md of middleware) {\n    const result = await applyMiddleware(modifiedEvent, md)\n    if (result === null) {\n      return null\n    }\n    modifiedEvent = result\n  }\n\n  return modifiedEvent\n}\n\nexport function sourceMiddlewarePlugin(\n  fn: MiddlewareFunction,\n  integrations: SegmentEvent['integrations']\n): Plugin {\n  async function apply(ctx: Context): Promise<Context> {\n    let nextCalled = false\n\n    await fn({\n      payload: toFacade(ctx.event, {\n        clone: true,\n        traverse: false,\n      }),\n      integrations: integrations ?? {},\n      next(evt) {\n        nextCalled = true\n        if (evt) {\n          ctx.event = evt.obj\n        }\n      },\n    })\n\n    if (!nextCalled) {\n      throw new ContextCancelation({\n        retry: false,\n        type: 'middleware_cancellation',\n        reason: 'Middleware `next` function skipped',\n      })\n    }\n\n    return ctx\n  }\n\n  return {\n    name: `Source Middleware ${fn.name}`,\n    type: 'before',\n    version: '0.1.0',\n\n    isLoaded: (): boolean => true,\n    load: (ctx): Promise<Context> => Promise.resolve(ctx),\n\n    track: apply,\n    page: apply,\n    screen: apply,\n    identify: apply,\n    alias: apply,\n    group: apply,\n  }\n}\n", "import { QueryStringParams } from '.'\n\n/**\n * Returns an object containing only the properties prefixed by the input\n * string.\n * Ex: prefix('ajs_traits_', { ajs_traits_address: '123 St' })\n * will return { address: '123 St' }\n **/\nexport function pickPrefix(\n  prefix: string,\n  object: QueryStringParams\n): QueryStringParams {\n  return Object.keys(object).reduce((acc: QueryStringParams, key: string) => {\n    if (key.startsWith(prefix)) {\n      const field = key.substr(prefix.length)\n      acc[field] = object[key]!\n    }\n    return acc\n  }, {})\n}\n", "/**\n * Tries to gets the unencoded version of an encoded component of a\n * Uniform Resource Identifier (URI). If input string is malformed,\n * returns it back as-is.\n *\n * Note: All occurences of the `+` character become ` ` (spaces).\n **/\nexport function gracefulDecodeURIComponent(\n  encodedURIComponent: string\n): string {\n  try {\n    return decodeURIComponent(encodedURIComponent.replace(/\\+/g, ' '))\n  } catch {\n    return encodedURIComponent\n  }\n}\n", "import { pickPrefix } from './pickPrefix'\nimport { gracefulDecodeURIComponent } from './gracefulDecodeURIComponent'\nimport { Analytics } from '../analytics'\nimport { Context } from '../context'\nimport { isPlainObject } from '@segment/analytics-core'\n\nexport interface QueryStringParams {\n  [key: string]: string | null\n}\n\nexport function queryString(\n  analytics: Analytics,\n  query: string\n): Promise<Context[]> {\n  const a = document.createElement('a')\n  a.href = query\n  const parsed = a.search.slice(1)\n  const params = parsed.split('&').reduce((acc: QueryStringParams, str) => {\n    const [k, v] = str.split('=')\n    acc[k] = gracefulDecodeURIComponent(v)\n    return acc\n  }, {})\n\n  const calls = []\n\n  const { ajs_uid, ajs_event, ajs_aid } = params\n  const { aid: aidPattern = /.+/, uid: uidPattern = /.+/ } = isPlainObject(\n    analytics.options.useQueryString\n  )\n    ? analytics.options.useQueryString\n    : {}\n\n  if (ajs_aid) {\n    const anonId = Array.isArray(params.ajs_aid)\n      ? params.ajs_aid[0]\n      : params.ajs_aid\n\n    if (aidPattern.test(anonId)) {\n      analytics.setAnonymousId(anonId)\n    }\n  }\n\n  if (ajs_uid) {\n    const uid = Array.isArray(params.ajs_uid)\n      ? params.ajs_uid[0]\n      : params.ajs_uid\n\n    if (uidPattern.test(uid)) {\n      const traits = pickPrefix('ajs_trait_', params)\n\n      calls.push(analytics.identify(uid, traits))\n    }\n  }\n\n  if (ajs_event) {\n    const event = Array.isArray(params.ajs_event)\n      ? params.ajs_event[0]\n      : params.ajs_event\n    const props = pickPrefix('ajs_prop_', params)\n    calls.push(analytics.track(event, props))\n  }\n\n  return Promise.all(calls)\n}\n", "import { getGlobalAnalytics } from './global-analytics-helper'\nimport { embeddedWriteKey } from './embedded-write-key'\n\nconst analyticsScriptRegex =\n  /(https:\\/\\/.*)\\/analytics\\.js\\/v1\\/(?:.*?)\\/(?:platform|analytics.*)?/\nconst getCDNUrlFromScriptTag = (): string | undefined => {\n  let cdn: string | undefined\n  const scripts = Array.prototype.slice.call(\n    document.querySelectorAll('script')\n  )\n  scripts.forEach((s) => {\n    const src = s.getAttribute('src') ?? ''\n    const result = analyticsScriptRegex.exec(src)\n\n    if (result && result[1]) {\n      cdn = result[1]\n    }\n  })\n  return cdn\n}\n\nlet _globalCDN: string | undefined // set globalCDN as in-memory singleton\nconst getGlobalCDNUrl = (): string | undefined => {\n  const result = _globalCDN ?? getGlobalAnalytics()?._cdn\n  return result\n}\n\nexport const setGlobalCDNUrl = (cdn: string) => {\n  const globalAnalytics = getGlobalAnalytics()\n  if (globalAnalytics) {\n    globalAnalytics._cdn = cdn\n  }\n  _globalCDN = cdn\n}\n\nexport const getCDN = (): string => {\n  const globalCdnUrl = getGlobalCDNUrl()\n\n  if (globalCdnUrl) return globalCdnUrl\n\n  const cdnFromScriptTag = getCDNUrlFromScriptTag()\n\n  if (cdnFromScriptTag) {\n    return cdnFromScriptTag\n  } else {\n    // it's possible that the CDN is not found in the page because:\n    // - the script is loaded through a proxy\n    // - the script is removed after execution\n    // in this case, we fall back to the default Segment CDN\n    return `https://cdn.segment.com`\n  }\n}\n\nexport const getNextIntegrationsURL = () => {\n  const cdn = getCDN()\n  return `${cdn}/next-integrations`\n}\n\n/**\n * Replaces the CDN URL in the script tag with the one from Analytics.js 1.0\n *\n * @returns the path to Analytics JS 1.0\n **/\nexport function getLegacyAJSPath(): string {\n  const writeKey = embeddedWriteKey() ?? getGlobalAnalytics()?._writeKey\n\n  const scripts = Array.prototype.slice.call(\n    document.querySelectorAll('script')\n  )\n  let path: string | undefined = undefined\n\n  for (const s of scripts) {\n    const src = s.getAttribute('src') ?? ''\n    const result = analyticsScriptRegex.exec(src)\n\n    if (result && result[1]) {\n      path = src\n      break\n    }\n  }\n\n  if (path) {\n    return path.replace('analytics.min.js', 'analytics.classic.js')\n  }\n\n  return `https://cdn.segment.com/analytics.js/v1/${writeKey}/analytics.classic.js`\n}\n", "import { Options } from '../core/events/interfaces'\nimport { CDNSettings } from '../browser'\n\n/**\n * Merge legacy settings and initialized Integration option overrides.\n *\n * This will merge any options that were passed from initialization into\n * overrides for settings that are returned by the Segment CDN.\n *\n * i.e. this allows for passing options directly into destinations from\n * the Analytics constructor.\n */\nexport function mergedOptions(\n  cdnSettings: CDNSettings,\n  options: Options\n): Record<string, any> {\n  const optionOverrides = Object.entries(options.integrations ?? {}).reduce(\n    (overrides, [integration, options]) => {\n      if (typeof options === 'object') {\n        return {\n          ...overrides,\n          [integration]: options,\n        }\n      }\n\n      return {\n        ...overrides,\n        [integration]: {},\n      }\n    },\n    {} as Record<string, any>\n  )\n\n  return Object.entries(cdnSettings.integrations).reduce(\n    (integrationSettings, [integration, settings]) => {\n      return {\n        ...integrationSettings,\n        [integration]: {\n          ...settings,\n          ...optionOverrides[integration],\n        },\n      }\n    },\n    {} as Record<string, any>\n  )\n}\n", "function findScript(src: string): HTMLScriptElement | undefined {\n  const scripts = Array.prototype.slice.call(\n    window.document.querySelectorAll('script')\n  )\n  return scripts.find((s) => s.src === src)\n}\n\n/**\n * Load a script from a URL and append it to the document.\n */\nexport function loadScript(\n  src: string,\n  attributes?: Record<string, string>\n): Promise<HTMLScriptElement> {\n  const found = findScript(src)\n\n  if (found !== undefined) {\n    const status = found?.getAttribute('status')\n\n    if (status === 'loaded') {\n      return Promise.resolve(found)\n    }\n\n    if (status === 'loading') {\n      return new Promise((resolve, reject) => {\n        found.addEventListener('load', () => resolve(found))\n        found.addEventListener('error', (err) => reject(err))\n      })\n    }\n  }\n\n  return new Promise((resolve, reject) => {\n    const script = window.document.createElement('script')\n\n    script.type = 'text/javascript'\n    script.src = src\n    script.async = true\n\n    script.setAttribute('status', 'loading')\n    for (const [k, v] of Object.entries(attributes ?? {})) {\n      script.setAttribute(k, v)\n    }\n\n    script.onload = (): void => {\n      script.onerror = script.onload = null\n      script.setAttribute('status', 'loaded')\n      resolve(script)\n    }\n\n    script.onerror = (): void => {\n      script.onerror = script.onload = null\n      script.setAttribute('status', 'error')\n      reject(new Error(`Failed to load ${src}`))\n    }\n\n    const firstExistingScript = window.document.querySelector('script')\n    if (!firstExistingScript) {\n      window.document.head.appendChild(script)\n    } else {\n      firstExistingScript.parentElement?.insertBefore(\n        script,\n        firstExistingScript\n      )\n    }\n  })\n}\n\nexport function unloadScript(src: string): Promise<void> {\n  const found = findScript(src)\n\n  if (found !== undefined) {\n    found.remove()\n  }\n\n  return Promise.resolve()\n}\n", "import { Context } from '../context'\n\nexport interface RecordIntegrationMetricProps {\n  integrationName: string\n  methodName: string\n  didError?: boolean\n  type: 'classic' | 'action'\n}\n\nexport function recordIntegrationMetric(\n  ctx: Context,\n  {\n    methodName,\n    integrationName,\n    type,\n    didError = false,\n  }: RecordIntegrationMetricProps\n): void {\n  ctx.stats.increment(\n    `analytics_js.integration.invoke${didError ? '.error' : ''}`,\n    1,\n    [\n      `method:${methodName}`,\n      `integration_name:${integrationName}`,\n      `type:${type}`,\n    ]\n  )\n}\n", "// @ts-nocheck\n// prettier-ignore\n/* eslint-disable */\n// @segment/tsub 2.0.0 - GENERATED DO NOT MODIFY\n\n/*! For license information please see tsub.js.LICENSE.txt */\n!function(t,r){if(\"object\"==typeof exports&&\"object\"==typeof module)module.exports=r();else if(\"function\"==typeof define&&define.amd)define([],r);else{var e=r();for(var n in e)(\"object\"==typeof exports?exports:t)[n]=e[n]}}(self,(()=>(()=>{var t={2870:function(t,r,e){\"use strict\";var n=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(r,\"__esModule\",{value:!0}),r.Store=r.matches=r.transform=void 0;var o=e(4303);Object.defineProperty(r,\"transform\",{enumerable:!0,get:function(){return n(o).default}});var s=e(2370);Object.defineProperty(r,\"matches\",{enumerable:!0,get:function(){return n(s).default}});var i=e(1444);Object.defineProperty(r,\"Store\",{enumerable:!0,get:function(){return n(i).default}})},2370:function(t,r,e){\"use strict\";var n=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(r,\"__esModule\",{value:!0});var o=n(e(7843));function s(t,r){if(!Array.isArray(t))return!0===i(t,r);var e,n,o,f,p=t[0];switch(p){case\"!\":return!s(t[1],r);case\"or\":for(var l=1;l<t.length;l++)if(s(t[l],r))return!0;return!1;case\"and\":for(l=1;l<t.length;l++)if(!s(t[l],r))return!1;return!0;case\"=\":case\"!=\":return function(t,r,e,n){switch(u(t)&&(t=s(t,n)),u(r)&&(r=s(r,n)),\"object\"==typeof t&&\"object\"==typeof r&&(t=JSON.stringify(t),r=JSON.stringify(r)),e){case\"=\":return t===r;case\"!=\":return t!==r;default:throw new Error(\"Invalid operator in compareItems: \".concat(e))}}(i(t[1],r),i(t[2],r),p,r);case\"<=\":case\"<\":case\">\":case\">=\":return function(t,r,e,n){if(u(t)&&(t=s(t,n)),u(r)&&(r=s(r,n)),\"number\"!=typeof t||\"number\"!=typeof r)return!1;switch(e){case\"<=\":return t<=r;case\">=\":return t>=r;case\"<\":return t<r;case\">\":return t>r;default:throw new Error(\"Invalid operator in compareNumbers: \".concat(e))}}(i(t[1],r),i(t[2],r),p,r);case\"in\":return function(t,r,e){return void 0!==r.find((function(r){return i(r,e)===t}))}(i(t[1],r),i(t[2],r),r);case\"contains\":return o=i(t[1],r),f=i(t[2],r),\"string\"==typeof o&&\"string\"==typeof f&&-1!==o.indexOf(f);case\"match\":return e=i(t[1],r),n=i(t[2],r),\"string\"==typeof e&&\"string\"==typeof n&&function(t,r){var e,n;t:for(;t.length>0;){var o,s;if(o=(e=a(t)).star,s=e.chunk,t=e.pattern,o&&\"\"===s)return!0;var i=c(s,r),u=i.t,f=i.ok,p=i.err;if(p)return!1;if(!f||!(0===u.length||t.length>0)){if(o)for(var l=0;l<r.length;l++){if(u=(n=c(s,r.slice(l+1))).t,f=n.ok,p=n.err,f){if(0===t.length&&u.length>0)continue;r=u;continue t}if(p)return!1}return!1}r=u}return 0===r.length}(n,e);case\"lowercase\":var v=i(t[1],r);return\"string\"!=typeof v?null:v.toLowerCase();case\"typeof\":return typeof i(t[1],r);case\"length\":return function(t){return null===t?0:Array.isArray(t)||\"string\"==typeof t?t.length:NaN}(i(t[1],r));default:throw new Error(\"FQL IR could not evaluate for token: \".concat(p))}}function i(t,r){return Array.isArray(t)?t:\"object\"==typeof t?t.value:(0,o.default)(r,t)}function u(t){return!!Array.isArray(t)&&((\"lowercase\"===t[0]||\"length\"===t[0]||\"typeof\"===t[0])&&2===t.length||(\"contains\"===t[0]||\"match\"===t[0])&&3===t.length)}function a(t){for(var r={star:!1,chunk:\"\",pattern:\"\"};t.length>0&&\"*\"===t[0];)t=t.slice(1),r.star=!0;var e,n=!1;t:for(e=0;e<t.length;e++)switch(t[e]){case\"\\\\\":e+1<t.length&&e++;break;case\"[\":n=!0;break;case\"]\":n=!1;break;case\"*\":if(!n)break t}return r.chunk=t.slice(0,e),r.pattern=t.slice(e),r}function c(t,r){for(var e,n,o={t:\"\",ok:!1,err:!1};t.length>0;){if(0===r.length)return o;switch(t[0]){case\"[\":var s=r[0];r=r.slice(1);var i=!0;(t=t.slice(1)).length>0&&\"^\"===t[0]&&(i=!1,t=t.slice(1));for(var u=!1,a=0;;){if(t.length>0&&\"]\"===t[0]&&a>0){t=t.slice(1);break}var c,p=\"\";if(c=(e=f(t)).char,t=e.newChunk,e.err)return o;if(p=c,\"-\"===t[0]&&(p=(n=f(t.slice(1))).char,t=n.newChunk,n.err))return o;c<=s&&s<=p&&(u=!0),a++}if(u!==i)return o;break;case\"?\":r=r.slice(1),t=t.slice(1);break;case\"\\\\\":if(0===(t=t.slice(1)).length)return o.err=!0,o;default:if(t[0]!==r[0])return o;r=r.slice(1),t=t.slice(1)}}return o.t=r,o.ok=!0,o.err=!1,o}function f(t){var r={char:\"\",newChunk:\"\",err:!1};return 0===t.length||\"-\"===t[0]||\"]\"===t[0]||\"\\\\\"===t[0]&&0===(t=t.slice(1)).length?(r.err=!0,r):(r.char=t[0],r.newChunk=t.slice(1),0===r.newChunk.length&&(r.err=!0),r)}r.default=function(t,r){if(!r)throw new Error(\"No matcher supplied!\");switch(r.type){case\"all\":return!0;case\"fql\":return function(t,r){if(!t)return!1;try{t=JSON.parse(t)}catch(r){throw new Error('Failed to JSON.parse FQL intermediate representation \"'.concat(t,'\": ').concat(r))}var e=s(t,r);return\"boolean\"==typeof e&&e}(r.ir,t);default:throw new Error(\"Matcher of type \".concat(r.type,\" unsupported.\"))}}},1444:(t,r)=>{\"use strict\";Object.defineProperty(r,\"__esModule\",{value:!0});var e=function(){function t(t){this.rules=[],this.rules=t||[]}return t.prototype.getRulesByDestinationName=function(t){for(var r=[],e=0,n=this.rules;e<n.length;e++){var o=n[e];o.destinationName!==t&&void 0!==o.destinationName||r.push(o)}return r},t}();r.default=e},4303:function(t,r,e){\"use strict\";var n=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(r,\"__esModule\",{value:!0});var o=n(e(374)),s=n(e(7843)),i=n(e(5500)),u=e(9014),a=e(4966);function c(t,r){p(t,r.drop,(function(t,r){r.forEach((function(r){return delete t[r]}))}))}function f(t,r){p(t,r.allow,(function(t,r){Object.keys(t).forEach((function(e){r.includes(e)||delete t[e]}))}))}function p(t,r,e){Object.entries(r).forEach((function(r){var n=r[0],o=r[1],i=function(t){\"object\"==typeof t&&null!==t&&e(t,o)},u=\"\"===n?t:(0,s.default)(t,n);Array.isArray(u)?u.forEach(i):i(u)}))}function l(t,r){var e=JSON.parse(JSON.stringify(t));for(var n in r.map)if(r.map.hasOwnProperty(n)){var o=r.map[n],i=n.split(\".\"),c=void 0;if(i.length>1?(i.pop(),c=(0,s.default)(e,i.join(\".\"))):c=t,\"object\"==typeof c){if(o.copy){var f=(0,s.default)(e,o.copy);void 0!==f&&(0,u.dset)(t,n,f)}else if(o.move){var p=(0,s.default)(e,o.move);void 0!==p&&(0,u.dset)(t,n,p),(0,a.unset)(t,o.move)}else o.hasOwnProperty(\"set\")&&(0,u.dset)(t,n,o.set);if(o.to_string){var l=(0,s.default)(t,n);if(\"string\"==typeof l||\"object\"==typeof l&&null!==l)continue;void 0!==l?(0,u.dset)(t,n,JSON.stringify(l)):(0,u.dset)(t,n,\"undefined\")}}}}function v(t,r){return!(r.sample.percent<=0)&&(r.sample.percent>=1||(r.sample.path?function(t,r){var e=(0,s.default)(t,r.sample.path),n=(0,o.default)(JSON.stringify(e)),u=-64,a=[];y(n.slice(0,8),a);for(var c=0,f=0;f<64&&1!==a[f];f++)c++;if(0!==c){var p=[];y(n.slice(9,16),p),u-=c,a.splice(0,c),p.splice(64-c),a=a.concat(p)}return a[63]=0===a[63]?1:0,(0,i.default)(parseInt(a.join(\"\"),2),u)<r.sample.percent}(t,r):(e=r.sample.percent,Math.random()<=e)));var e}function y(t,r){for(var e=0;e<8;e++)for(var n=t[e],o=128;o>=1;o/=2)n-o>=0?(n-=o,r.push(1)):r.push(0)}r.default=function(t,r){for(var e=t,n=0,o=r;n<o.length;n++){var s=o[n];switch(s.type){case\"drop\":return null;case\"drop_properties\":c(e,s.config);break;case\"allow_properties\":f(e,s.config);break;case\"sample_event\":if(v(e,s.config))break;return null;case\"map_properties\":l(e,s.config);break;case\"hash_properties\":break;default:throw new Error('Transformer of type \"'.concat(s.type,'\" is unsupported.'))}}return e}},4966:function(t,r,e){\"use strict\";var n=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(r,\"__esModule\",{value:!0}),r.unset=void 0;var o=n(e(7843));r.unset=function(t,r){if((0,o.default)(t,r)){for(var e=r.split(\".\"),n=e.pop();e.length&&\"\\\\\"===e[e.length-1].slice(-1);)n=e.pop().slice(0,-1)+\".\"+n;for(;e.length;)t=t[r=e.shift()];return delete t[n]}return!0}},9014:(t,r)=>{r.dset=function(t,r,e){r.split&&(r=r.split(\".\"));for(var n,o,s=0,i=r.length,u=t;s<i&&\"__proto__\"!==(o=r[s++])&&\"constructor\"!==o&&\"prototype\"!==o;)u=u[o]=s===i?e:typeof(n=u[o])==typeof r?n:0*r[s]!=0||~(\"\"+r[s]).indexOf(\".\")?{}:[]}},3304:t=>{\"use strict\";var r=\"function\"==typeof Float64Array?Float64Array:void 0;t.exports=r},7382:(t,r,e)=>{\"use strict\";var n,o=e(5569),s=e(3304),i=e(8482);n=o()?s:i,t.exports=n},8482:t=>{\"use strict\";t.exports=function(){throw new Error(\"not implemented\")}},6322:(t,r,e)=>{\"use strict\";var n,o=e(2508),s=e(5679),i=e(882);n=o()?s:i,t.exports=n},882:t=>{\"use strict\";t.exports=function(){throw new Error(\"not implemented\")}},5679:t=>{\"use strict\";var r=\"function\"==typeof Uint16Array?Uint16Array:void 0;t.exports=r},4773:(t,r,e)=>{\"use strict\";var n,o=e(9773),s=e(3004),i=e(3078);n=o()?s:i,t.exports=n},3078:t=>{\"use strict\";t.exports=function(){throw new Error(\"not implemented\")}},3004:t=>{\"use strict\";var r=\"function\"==typeof Uint32Array?Uint32Array:void 0;t.exports=r},7980:(t,r,e)=>{\"use strict\";var n,o=e(8114),s=e(6737),i=e(3357);n=o()?s:i,t.exports=n},3357:t=>{\"use strict\";t.exports=function(){throw new Error(\"not implemented\")}},6737:t=>{\"use strict\";var r=\"function\"==typeof Uint8Array?Uint8Array:void 0;t.exports=r},2684:t=>{\"use strict\";var r=\"function\"==typeof Float64Array?Float64Array:null;t.exports=r},5569:(t,r,e)=>{\"use strict\";var n=e(3876);t.exports=n},3876:(t,r,e)=>{\"use strict\";var n=e(1448),o=e(2684);t.exports=function(){var t,r;if(\"function\"!=typeof o)return!1;try{r=new o([1,3.14,-3.14,NaN]),t=n(r)&&1===r[0]&&3.14===r[1]&&-3.14===r[2]&&r[3]!=r[3]}catch(r){t=!1}return t}},9048:(t,r,e)=>{\"use strict\";var n=e(3763);t.exports=n},3763:t=>{\"use strict\";var r=Object.prototype.hasOwnProperty;t.exports=function(t,e){return null!=t&&r.call(t,e)}},7009:(t,r,e)=>{\"use strict\";var n=e(6784);t.exports=n},6784:t=>{\"use strict\";t.exports=function(){return\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol(\"foo\")}},3123:(t,r,e)=>{\"use strict\";var n=e(8481);t.exports=n},8481:(t,r,e)=>{\"use strict\";var n=e(7009)();t.exports=function(){return n&&\"symbol\"==typeof Symbol.toStringTag}},2508:(t,r,e)=>{\"use strict\";var n=e(3403);t.exports=n},3403:(t,r,e)=>{\"use strict\";var n=e(768),o=e(9668),s=e(187);t.exports=function(){var t,r;if(\"function\"!=typeof s)return!1;try{r=new s(r=[1,3.14,-3.14,o+1,o+2]),t=n(r)&&1===r[0]&&3===r[1]&&r[2]===o-2&&0===r[3]&&1===r[4]}catch(r){t=!1}return t}},187:t=>{\"use strict\";var r=\"function\"==typeof Uint16Array?Uint16Array:null;t.exports=r},9773:(t,r,e)=>{\"use strict\";var n=e(2822);t.exports=n},2822:(t,r,e)=>{\"use strict\";var n=e(2744),o=e(3899),s=e(746);t.exports=function(){var t,r;if(\"function\"!=typeof s)return!1;try{r=new s(r=[1,3.14,-3.14,o+1,o+2]),t=n(r)&&1===r[0]&&3===r[1]&&r[2]===o-2&&0===r[3]&&1===r[4]}catch(r){t=!1}return t}},746:t=>{\"use strict\";var r=\"function\"==typeof Uint32Array?Uint32Array:null;t.exports=r},8114:(t,r,e)=>{\"use strict\";var n=e(8066);t.exports=n},8066:(t,r,e)=>{\"use strict\";var n=e(8279),o=e(3443),s=e(2731);t.exports=function(){var t,r;if(\"function\"!=typeof s)return!1;try{r=new s(r=[1,3.14,-3.14,o+1,o+2]),t=n(r)&&1===r[0]&&3===r[1]&&r[2]===o-2&&0===r[3]&&1===r[4]}catch(r){t=!1}return t}},2731:t=>{\"use strict\";var r=\"function\"==typeof Uint8Array?Uint8Array:null;t.exports=r},1448:(t,r,e)=>{\"use strict\";var n=e(1453);t.exports=n},1453:(t,r,e)=>{\"use strict\";var n=e(6208),o=\"function\"==typeof Float64Array;t.exports=function(t){return o&&t instanceof Float64Array||\"[object Float64Array]\"===n(t)}},9331:(t,r,e)=>{\"use strict\";var n=e(7980),o={uint16:e(6322),uint8:n};t.exports=o},5902:(t,r,e)=>{\"use strict\";var n=e(4106);t.exports=n},4106:(t,r,e)=>{\"use strict\";var n,o,s=e(9331);(o=new s.uint16(1))[0]=4660,n=52===new s.uint8(o.buffer)[0],t.exports=n},768:(t,r,e)=>{\"use strict\";var n=e(3823);t.exports=n},3823:(t,r,e)=>{\"use strict\";var n=e(6208),o=\"function\"==typeof Uint16Array;t.exports=function(t){return o&&t instanceof Uint16Array||\"[object Uint16Array]\"===n(t)}},2744:(t,r,e)=>{\"use strict\";var n=e(2326);t.exports=n},2326:(t,r,e)=>{\"use strict\";var n=e(6208),o=\"function\"==typeof Uint32Array;t.exports=function(t){return o&&t instanceof Uint32Array||\"[object Uint32Array]\"===n(t)}},8279:(t,r,e)=>{\"use strict\";var n=e(208);t.exports=n},208:(t,r,e)=>{\"use strict\";var n=e(6208),o=\"function\"==typeof Uint8Array;t.exports=function(t){return o&&t instanceof Uint8Array||\"[object Uint8Array]\"===n(t)}},6315:t=>{\"use strict\";t.exports=1023},1686:t=>{\"use strict\";t.exports=2147483647},3105:t=>{\"use strict\";t.exports=2146435072},3449:t=>{\"use strict\";t.exports=2147483648},6988:t=>{\"use strict\";t.exports=-1023},9777:t=>{\"use strict\";t.exports=1023},3690:t=>{\"use strict\";t.exports=-1074},2918:(t,r,e)=>{\"use strict\";var n=e(4772).NEGATIVE_INFINITY;t.exports=n},4165:t=>{\"use strict\";var r=Number.POSITIVE_INFINITY;t.exports=r},6488:t=>{\"use strict\";t.exports=22250738585072014e-324},9668:t=>{\"use strict\";t.exports=65535},3899:t=>{\"use strict\";t.exports=4294967295},3443:t=>{\"use strict\";t.exports=255},7011:(t,r,e)=>{\"use strict\";var n=e(812);t.exports=n},812:(t,r,e)=>{\"use strict\";var n=e(4165),o=e(2918);t.exports=function(t){return t===n||t===o}},1883:(t,r,e)=>{\"use strict\";var n=e(1797);t.exports=n},1797:t=>{\"use strict\";t.exports=function(t){return t!=t}},513:(t,r,e)=>{\"use strict\";var n=e(5760);t.exports=n},5760:t=>{\"use strict\";t.exports=function(t){return Math.abs(t)}},5848:(t,r,e)=>{\"use strict\";var n=e(677);t.exports=n},677:(t,r,e)=>{\"use strict\";var n=e(3449),o=e(1686),s=e(7838),i=e(1921),u=e(2490),a=[0,0];t.exports=function(t,r){var e,c;return s.assign(t,a,1,0),e=a[0],e&=o,c=i(r),u(e|=c&=n,a[1])}},5500:(t,r,e)=>{\"use strict\";var n=e(8397);t.exports=n},8397:(t,r,e)=>{\"use strict\";var n=e(4165),o=e(2918),s=e(6315),i=e(9777),u=e(6988),a=e(3690),c=e(1883),f=e(7011),p=e(5848),l=e(4948),v=e(8478),y=e(7838),d=e(2490),h=[0,0],x=[0,0];t.exports=function(t,r){var e,b;return 0===t||c(t)||f(t)?t:(l(h,t),r+=h[1],(r+=v(t=h[0]))<a?p(0,t):r>i?t<0?o:n:(r<=u?(r+=52,b=2220446049250313e-31):b=1,y(x,t),e=x[0],e&=2148532223,b*d(e|=r+s<<20,x[1])))}},4772:(t,r,e)=>{\"use strict\";var n=e(7548);t.exports=n},7548:t=>{\"use strict\";t.exports=Number},8478:(t,r,e)=>{\"use strict\";var n=e(4500);t.exports=n},4500:(t,r,e)=>{\"use strict\";var n=e(1921),o=e(3105),s=e(6315);t.exports=function(t){var r=n(t);return(r=(r&o)>>>20)-s|0}},2490:(t,r,e)=>{\"use strict\";var n=e(9639);t.exports=n},4445:(t,r,e)=>{\"use strict\";var n,o,s;!0===e(5902)?(o=1,s=0):(o=0,s=1),n={HIGH:o,LOW:s},t.exports=n},9639:(t,r,e)=>{\"use strict\";var n=e(4773),o=e(7382),s=e(4445),i=new o(1),u=new n(i.buffer),a=s.HIGH,c=s.LOW;t.exports=function(t,r){return u[a]=t,u[c]=r,i[0]}},5646:(t,r,e)=>{\"use strict\";var n;n=!0===e(5902)?1:0,t.exports=n},1921:(t,r,e)=>{\"use strict\";var n=e(6285);t.exports=n},6285:(t,r,e)=>{\"use strict\";var n=e(4773),o=e(7382),s=e(5646),i=new o(1),u=new n(i.buffer);t.exports=function(t){return i[0]=t,u[s]}},9024:(t,r,e)=>{\"use strict\";var n=e(6488),o=e(7011),s=e(1883),i=e(513);t.exports=function(t,r,e,u){return s(t)||o(t)?(r[u]=t,r[u+e]=0,r):0!==t&&i(t)<n?(r[u]=4503599627370496*t,r[u+e]=-52,r):(r[u]=t,r[u+e]=0,r)}},4948:(t,r,e)=>{\"use strict\";var n=e(7576),o=e(9422);n(o,\"assign\",e(9024)),t.exports=o},9422:(t,r,e)=>{\"use strict\";var n=e(9024);t.exports=function(t){return n(t,[0,0],1,0)}},5239:(t,r,e)=>{\"use strict\";var n=e(4773),o=e(7382),s=e(5782),i=new o(1),u=new n(i.buffer),a=s.HIGH,c=s.LOW;t.exports=function(t,r,e,n){return i[0]=t,r[n]=u[a],r[n+e]=u[c],r}},7838:(t,r,e)=>{\"use strict\";var n=e(7576),o=e(4010);n(o,\"assign\",e(5239)),t.exports=o},5782:(t,r,e)=>{\"use strict\";var n,o,s;!0===e(5902)?(o=1,s=0):(o=0,s=1),n={HIGH:o,LOW:s},t.exports=n},4010:(t,r,e)=>{\"use strict\";var n=e(5239);t.exports=function(t){return n(t,[0,0],1,0)}},7576:(t,r,e)=>{\"use strict\";var n=e(7063);t.exports=n},7063:(t,r,e)=>{\"use strict\";var n=e(6691);t.exports=function(t,r,e){n(t,r,{configurable:!1,enumerable:!1,writable:!1,value:e})}},2073:t=>{\"use strict\";var r=Object.defineProperty;t.exports=r},1680:t=>{\"use strict\";var r=\"function\"==typeof Object.defineProperty?Object.defineProperty:null;t.exports=r},1471:(t,r,e)=>{\"use strict\";var n=e(1680);t.exports=function(){try{return n({},\"x\",{}),!0}catch(t){return!1}}},6691:(t,r,e)=>{\"use strict\";var n,o=e(1471),s=e(2073),i=e(1309);n=o()?s:i,t.exports=n},1309:t=>{\"use strict\";var r=Object.prototype,e=r.toString,n=r.__defineGetter__,o=r.__defineSetter__,s=r.__lookupGetter__,i=r.__lookupSetter__;t.exports=function(t,u,a){var c,f,p,l;if(\"object\"!=typeof t||null===t||\"[object Array]\"===e.call(t))throw new TypeError(\"invalid argument. First argument must be an object. Value: `\"+t+\"`.\");if(\"object\"!=typeof a||null===a||\"[object Array]\"===e.call(a))throw new TypeError(\"invalid argument. Property descriptor must be an object. Value: `\"+a+\"`.\");if((f=\"value\"in a)&&(s.call(t,u)||i.call(t,u)?(c=t.__proto__,t.__proto__=r,delete t[u],t[u]=a.value,t.__proto__=c):t[u]=a.value),p=\"get\"in a,l=\"set\"in a,f&&(p||l))throw new Error(\"invalid argument. Cannot specify one or more accessors and a value or writable attribute in the property descriptor.\");return p&&n&&n.call(t,u,a.get),l&&o&&o.call(t,u,a.set),t}},6208:(t,r,e)=>{\"use strict\";var n,o=e(3123),s=e(7407),i=e(4210);n=o()?i:s,t.exports=n},7407:(t,r,e)=>{\"use strict\";var n=e(173);t.exports=function(t){return n.call(t)}},4210:(t,r,e)=>{\"use strict\";var n=e(9048),o=e(1403),s=e(173);t.exports=function(t){var r,e,i;if(null==t)return s.call(t);e=t[o],r=n(t,o);try{t[o]=void 0}catch(r){return s.call(t)}return i=s.call(t),r?t[o]=e:delete t[o],i}},173:t=>{\"use strict\";var r=Object.prototype.toString;t.exports=r},1403:t=>{\"use strict\";var r=\"function\"==typeof Symbol?Symbol.toStringTag:\"\";t.exports=r},7843:function(t){t.exports=function(t,r,e,n,o){for(r=r.split?r.split(\".\"):r,n=0;n<r.length;n++)t=t?t[r[n]]:o;return t===o?e:t}},374:(t,r,e)=>{\"use strict\";e.r(r),e.d(r,{default:()=>s});for(var n=[],o=0;o<64;)n[o]=0|4294967296*Math.sin(++o%Math.PI);function s(t){var r,e,s,i=[r=1732584193,e=4023233417,~r,~e],u=[],a=unescape(encodeURI(t))+\"\u0080\",c=a.length;for(t=--c/4+2|15,u[--t]=8*c;~c;)u[c>>2]|=a.charCodeAt(c)<<8*c--;for(o=a=0;o<t;o+=16){for(c=i;a<64;c=[s=c[3],r+((s=c[0]+[r&e|~r&s,s&r|~s&e,r^e^s,e^(r|~s)][c=a>>4]+n[a]+~~u[o|15&[a,5*a+1,3*a+5,7*a][c]])<<(c=[7,12,17,22,5,9,14,20,4,11,16,23,6,10,15,21][4*c+a++%4])|s>>>-c),r,e])r=0|c[1],e=c[2];for(a=4;a;)i[--a]+=c[a]}for(t=\"\";a<32;)t+=(i[a>>3]>>4*(1^a++)&15).toString(16);return t}}},r={};function e(n){var o=r[n];if(void 0!==o)return o.exports;var s=r[n]={exports:{}};return t[n].call(s.exports,s,s.exports,e),s.exports}return e.d=(t,r)=>{for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},e.o=(t,r)=>Object.prototype.hasOwnProperty.call(t,r),e.r=t=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},e(2870)})()));", "// @ts-ignore\nimport * as tsub from '../../vendor/tsub/tsub'\nimport type { Matcher, Rule, Store } from '../../vendor/tsub/types'\nimport { DestinationMiddlewareFunction } from '../middleware'\n\n// TODO: update tsub definition\ntype RoutingRuleMatcher = Matcher & {\n  config?: {\n    expr: string\n  }\n}\n\nexport type RoutingRule = Rule & {\n  matchers: RoutingRuleMatcher[]\n}\n\nexport const tsubMiddleware =\n  (rules: RoutingRule[]): DestinationMiddlewareFunction =>\n  ({ payload, integration, next }): void => {\n    const store = new tsub.Store(rules) as Store\n    const rulesToApply = store.getRulesByDestinationName(integration)\n\n    rulesToApply.forEach((rule: Rule) => {\n      const { matchers, transformers } = rule\n\n      for (let i = 0; i < matchers.length; i++) {\n        if (tsub.matches(payload.obj, matchers[i])) {\n          payload.obj = tsub.transform(payload.obj, transformers[i])\n\n          if (payload.obj === null) {\n            return next(null)\n          }\n        }\n      }\n    })\n\n    next(payload)\n  }\n", "import { PlanEvent, TrackPlan } from '../core/events/interfaces'\n\n/**\n * Determines whether a track event is allowed to be sent based on the\n * user's tracking plan.\n * If the user does not have a tracking plan or the event is allowed based\n * on the tracking plan configuration, returns true.\n */\nexport function isPlanEventEnabled(\n  plan: TrackPlan | undefined,\n  planEvent: PlanEvent | undefined\n): boolean {\n  // Always prioritize the event's `enabled` status\n  if (typeof planEvent?.enabled === 'boolean') {\n    return planEvent.enabled\n  }\n\n  // Assume absence of a tracking plan means events are enabled\n  return plan?.__default?.enabled ?? true\n}\n", "import { Analytics } from '../../core/analytics'\nimport { getNextIntegrationsURL } from '../../lib/parse-cdn'\nimport { Context } from '../../core/context'\nimport { User } from '../../core/user'\nimport { loadScript, unloadScript } from '../../lib/load-script'\nimport {\n  LegacyIntegration,\n  ClassicIntegrationBuilder,\n  ClassicIntegrationSource,\n} from './types'\nimport { RemoteIntegrationSettings } from '../../browser/settings'\n\nfunction normalizeName(name: string): string {\n  return name.toLowerCase().replace('.', '').replace(/\\s+/g, '-')\n}\n\nfunction obfuscatePathName(pathName: string, obfuscate = false): string | void {\n  return obfuscate ? btoa(pathName).replace(/=/g, '') : undefined\n}\n\nexport function resolveIntegrationNameFromSource(\n  integrationSource: ClassicIntegrationSource\n) {\n  return (\n    'Integration' in integrationSource\n      ? integrationSource.Integration\n      : integrationSource\n  ).prototype.name\n}\n\nfunction recordLoadMetrics(fullPath: string, ctx: Context, name: string): void {\n  try {\n    const [metric] =\n      window?.performance?.getEntriesByName(fullPath, 'resource') ?? []\n    // we assume everything that took under 100ms is cached\n    metric &&\n      ctx.stats.gauge('legacy_destination_time', Math.round(metric.duration), [\n        name,\n        ...(metric.duration < 100 ? ['cached'] : []),\n      ])\n  } catch (_) {\n    // not available\n  }\n}\n\nexport function buildIntegration(\n  integrationSource: ClassicIntegrationSource,\n  integrationSettings: { [key: string]: any },\n  analyticsInstance: Analytics\n): LegacyIntegration {\n  let integrationCtr: ClassicIntegrationBuilder\n  // GA and Appcues use a different interface to instantiating integrations\n  if ('Integration' in integrationSource) {\n    const analyticsStub = {\n      user: (): User => analyticsInstance.user(),\n      addIntegration: (): void => {},\n    }\n\n    integrationSource(analyticsStub)\n    integrationCtr = integrationSource.Integration\n  } else {\n    integrationCtr = integrationSource\n  }\n\n  const integration = new integrationCtr(integrationSettings)\n  integration.analytics = analyticsInstance\n  return integration\n}\n\nexport async function loadIntegration(\n  ctx: Context,\n  name: string,\n  version: string,\n  obfuscate?: boolean\n): Promise<ClassicIntegrationSource> {\n  const pathName = normalizeName(name)\n  const obfuscatedPathName = obfuscatePathName(pathName, obfuscate)\n  const path = getNextIntegrationsURL()\n\n  const fullPath = `${path}/integrations/${\n    obfuscatedPathName ?? pathName\n  }/${version}/${obfuscatedPathName ?? pathName}.dynamic.js.gz`\n\n  try {\n    await loadScript(fullPath)\n    recordLoadMetrics(fullPath, ctx, name)\n  } catch (err) {\n    ctx.stats.gauge('legacy_destination_time', -1, [`plugin:${name}`, `failed`])\n    throw err\n  }\n\n  // @ts-ignore\n  const deps: string[] = window[`${pathName}Deps`]\n  await Promise.all(deps.map((dep) => loadScript(path + dep + '.gz')))\n\n  // @ts-ignore\n  window[`${pathName}Loader`]()\n\n  return window[\n    // @ts-ignore\n    `${pathName}Integration`\n  ] as ClassicIntegrationSource\n}\n\nexport async function unloadIntegration(\n  name: string,\n  version: string,\n  obfuscate?: boolean\n): Promise<void> {\n  const path = getNextIntegrationsURL()\n  const pathName = normalizeName(name)\n  const obfuscatedPathName = obfuscatePathName(name, obfuscate)\n\n  const fullPath = `${path}/integrations/${\n    obfuscatedPathName ?? pathName\n  }/${version}/${obfuscatedPathName ?? pathName}.dynamic.js.gz`\n\n  return unloadScript(fullPath)\n}\n\nexport function resolveVersion(\n  integrationConfig?: RemoteIntegrationSettings\n): string {\n  return (\n    integrationConfig?.versionSettings?.override ??\n    integrationConfig?.versionSettings?.version ??\n    'latest'\n  )\n}\n", "import { RemoteIntegrationSettings } from '../..'\nimport { IntegrationsInitOptions } from '../../browser/settings'\n\nexport const isInstallableIntegration = (\n  name: string,\n  integrationSettings: RemoteIntegrationSettings\n) => {\n  const { type, bundlingStatus, versionSettings } = integrationSettings\n  // We use `!== 'unbundled'` (versus `=== 'bundled'`) to be inclusive of\n  // destinations without a defined value for `bundlingStatus`\n  const deviceMode =\n    bundlingStatus !== 'unbundled' &&\n    (type === 'browser' || versionSettings?.componentTypes?.includes('browser'))\n\n  // checking for iterable is a quick fix we need in place to prevent\n  // errors showing Iterable as a failed destiantion. Ideally, we should\n  // fix the Iterable metadata instead, but that's a longer process.\n  return !name.startsWith('Segment') && name !== 'Iterable' && deviceMode\n}\n\nexport const isDisabledIntegration = (\n  integrationName: string,\n  integrations: IntegrationsInitOptions\n) => {\n  const allDisableAndNotDefined =\n    integrations.All === false && integrations[integrationName] === undefined\n\n  return integrations[integrationName] === false || allDisableAndNotDefined\n}\n", "import { JSONObject } from '../../core/events'\nimport { Alias, Facade, Group, Identify, Page, Track } from '@segment/facade'\nimport { Analytics, InitOptions } from '../../core/analytics'\nimport { CDNSettings } from '../../browser'\nimport { isOffline, isOnline } from '../../core/connection'\nimport { Context, ContextCancelation } from '../../core/context'\nimport { isServer } from '../../core/environment'\nimport { InternalPluginWithAddMiddleware, Plugin } from '../../core/plugin'\nimport { attempt } from '@segment/analytics-core'\nimport { isPlanEventEnabled } from '../../lib/is-plan-event-enabled'\nimport { mergedOptions } from '../../lib/merged-options'\nimport { pWhile } from '../../lib/p-while'\nimport { PriorityQueue } from '../../lib/priority-queue'\nimport { PersistedPriorityQueue } from '../../lib/priority-queue/persisted'\nimport {\n  applyDestinationMiddleware,\n  DestinationMiddlewareFunction,\n} from '../middleware'\nimport {\n  buildIntegration,\n  loadIntegration,\n  resolveIntegrationNameFromSource,\n  resolveVersion,\n  unloadIntegration,\n} from './loader'\nimport { LegacyIntegration, ClassicIntegrationSource } from './types'\nimport { isPlainObject } from '@segment/analytics-core'\nimport {\n  isDisabledIntegration as shouldSkipIntegration,\n  isInstallableIntegration,\n} from './utils'\nimport { recordIntegrationMetric } from '../../core/stats/metric-helpers'\nimport { createDeferred } from '@segment/analytics-generic-utils'\nimport { IntegrationsInitOptions } from '../../browser/settings'\n\nexport type ClassType<T> = new (...args: unknown[]) => T\n\nasync function flushQueue(\n  xt: Plugin,\n  queue: PriorityQueue<Context>\n): Promise<PriorityQueue<Context>> {\n  const failedQueue: Context[] = []\n\n  if (isOffline()) {\n    return queue\n  }\n\n  await pWhile(\n    () => queue.length > 0 && isOnline(),\n    async () => {\n      const ctx = queue.pop()\n      if (!ctx) {\n        return\n      }\n\n      const result = await attempt(ctx, xt)\n      const success = result instanceof Context\n      if (!success) {\n        failedQueue.push(ctx)\n      }\n    }\n  )\n\n  // re-add failed tasks\n  failedQueue.map((failed) => queue.pushWithBackoff(failed))\n  return queue\n}\n\nexport class LegacyDestination implements InternalPluginWithAddMiddleware {\n  name: string\n  version: string\n  settings: JSONObject\n  options: InitOptions = {}\n  readonly type = 'destination'\n  middleware: DestinationMiddlewareFunction[] = []\n\n  private _ready: boolean | undefined\n  private _initialized: boolean | undefined\n  private onReady: Promise<unknown> | undefined\n  private initializePromise = createDeferred<boolean>()\n  private disableAutoISOConversion: boolean\n\n  integrationSource?: ClassicIntegrationSource\n  integration: LegacyIntegration | undefined\n\n  buffer: PriorityQueue<Context>\n  flushing = false\n\n  constructor(\n    name: string,\n    version: string,\n    writeKey: string,\n    settings: JSONObject = {},\n    options: InitOptions,\n    integrationSource?: ClassicIntegrationSource\n  ) {\n    this.name = name\n    this.version = version\n    this.settings = { ...settings }\n    this.disableAutoISOConversion = options.disableAutoISOConversion || false\n    this.integrationSource = integrationSource\n\n    // AJS-Renderer sets an extraneous `type` setting that clobbers\n    // existing type defaults. We need to remove it if it's present\n    if (this.settings['type'] && this.settings['type'] === 'browser') {\n      delete this.settings['type']\n    }\n\n    this.initializePromise.promise.then(\n      (isInitialized) => (this._initialized = isInitialized),\n      () => {}\n    )\n\n    this.options = options\n    this.buffer = options.disableClientPersistence\n      ? new PriorityQueue(4, [])\n      : new PersistedPriorityQueue(4, `${writeKey}:dest-${name}`)\n\n    this.scheduleFlush()\n  }\n\n  isLoaded(): boolean {\n    return !!this._ready\n  }\n\n  ready(): Promise<unknown> {\n    return this.initializePromise.promise.then(\n      () => this.onReady ?? Promise.resolve()\n    )\n  }\n\n  async load(ctx: Context, analyticsInstance: Analytics): Promise<void> {\n    if (this._ready || this.onReady !== undefined) {\n      return\n    }\n\n    const integrationSource =\n      this.integrationSource ??\n      (await loadIntegration(\n        ctx,\n        this.name,\n        this.version,\n        this.options.obfuscate\n      ))\n\n    this.integration = buildIntegration(\n      integrationSource,\n      this.settings,\n      analyticsInstance\n    )\n\n    this.onReady = new Promise((resolve) => {\n      const onReadyFn = (): void => {\n        this._ready = true\n        resolve(true)\n      }\n\n      this.integration!.once('ready', onReadyFn)\n    })\n\n    this.integration!.on('initialize', () => {\n      this.initializePromise.resolve(true)\n    })\n\n    try {\n      recordIntegrationMetric(ctx, {\n        integrationName: this.name,\n        methodName: 'initialize',\n        type: 'classic',\n      })\n      this.integration.initialize()\n    } catch (error) {\n      recordIntegrationMetric(ctx, {\n        integrationName: this.name,\n        methodName: 'initialize',\n        type: 'classic',\n        didError: true,\n      })\n      this.initializePromise.resolve(false)\n      throw error\n    }\n  }\n\n  unload(_ctx: Context, _analyticsInstance: Analytics): Promise<void> {\n    return unloadIntegration(this.name, this.version, this.options.obfuscate)\n  }\n\n  addMiddleware(...fn: DestinationMiddlewareFunction[]): void {\n    this.middleware = this.middleware.concat(...fn)\n  }\n\n  shouldBuffer(ctx: Context): boolean {\n    return (\n      // page events can't be buffered because of destinations that automatically add page views\n      ctx.event.type !== 'page' &&\n      (isOffline() || this._ready !== true || this._initialized !== true)\n    )\n  }\n\n  private async send<T extends Facade>(\n    ctx: Context,\n    clz: ClassType<T>,\n    eventType: 'track' | 'identify' | 'page' | 'alias' | 'group'\n  ): Promise<Context> {\n    if (this.shouldBuffer(ctx)) {\n      this.buffer.push(ctx)\n      this.scheduleFlush()\n      return ctx\n    }\n\n    const plan = this.options?.plan?.track\n    const ev = ctx.event.event\n\n    if (plan && ev && this.name !== 'Segment.io') {\n      // events are always sent to segment (legacy behavior)\n      const planEvent = plan[ev]\n      if (!isPlanEventEnabled(plan, planEvent)) {\n        ctx.updateEvent('integrations', {\n          ...ctx.event.integrations,\n          All: false,\n          'Segment.io': true,\n        })\n        ctx.cancel(\n          new ContextCancelation({\n            retry: false,\n            reason: `Event ${ev} disabled for integration ${this.name} in tracking plan`,\n            type: 'Dropped by plan',\n          })\n        )\n      } else {\n        ctx.updateEvent('integrations', {\n          ...ctx.event.integrations,\n          ...planEvent?.integrations,\n        })\n      }\n\n      if (planEvent?.enabled && planEvent?.integrations![this.name] === false) {\n        ctx.cancel(\n          new ContextCancelation({\n            retry: false,\n            reason: `Event ${ev} disabled for integration ${this.name} in tracking plan`,\n            type: 'Dropped by plan',\n          })\n        )\n      }\n    }\n\n    const afterMiddleware = await applyDestinationMiddleware(\n      this.name,\n      ctx.event,\n      this.middleware\n    )\n\n    if (afterMiddleware === null) {\n      return ctx\n    }\n\n    const event = new clz(afterMiddleware, {\n      traverse: !this.disableAutoISOConversion,\n    })\n\n    recordIntegrationMetric(ctx, {\n      integrationName: this.name,\n      methodName: eventType,\n      type: 'classic',\n    })\n\n    try {\n      if (this.integration) {\n        await this.integration!.invoke.call(this.integration, eventType, event)\n      }\n    } catch (err) {\n      recordIntegrationMetric(ctx, {\n        integrationName: this.name,\n        methodName: eventType,\n        type: 'classic',\n        didError: true,\n      })\n      throw err\n    }\n\n    return ctx\n  }\n\n  async track(ctx: Context): Promise<Context> {\n    return this.send(ctx, Track as ClassType<Track>, 'track')\n  }\n\n  async page(ctx: Context): Promise<Context> {\n    if (this.integration?._assumesPageview && !this._initialized) {\n      this.integration.initialize()\n    }\n\n    await this.initializePromise.promise\n    return this.send(ctx, Page as ClassType<Page>, 'page')\n  }\n\n  async identify(ctx: Context): Promise<Context> {\n    return this.send(ctx, Identify as ClassType<Identify>, 'identify')\n  }\n\n  async alias(ctx: Context): Promise<Context> {\n    return this.send(ctx, Alias as ClassType<Alias>, 'alias')\n  }\n\n  async group(ctx: Context): Promise<Context> {\n    return this.send(ctx, Group as ClassType<Group>, 'group')\n  }\n\n  private scheduleFlush(): void {\n    if (this.flushing) {\n      return\n    }\n\n    // eslint-disable-next-line @typescript-eslint/no-misused-promises\n    setTimeout(async () => {\n      if (isOffline() || this._ready !== true || this._initialized !== true) {\n        this.scheduleFlush()\n        return\n      }\n\n      this.flushing = true\n      this.buffer = await flushQueue(this, this.buffer)\n      this.flushing = false\n\n      if (this.buffer.todo > 0) {\n        this.scheduleFlush()\n      }\n    }, Math.random() * 5000)\n  }\n}\n\nexport function ajsDestinations(\n  writeKey: string,\n  settings: CDNSettings,\n  integrations: IntegrationsInitOptions = {},\n  options: InitOptions = {},\n  routingMiddleware?: DestinationMiddlewareFunction,\n  legacyIntegrationSources?: ClassicIntegrationSource[]\n): LegacyDestination[] {\n  if (isServer()) {\n    return []\n  }\n\n  if (settings.plan) {\n    options = options ?? {}\n    options.plan = settings.plan\n  }\n\n  const routingRules = settings.middlewareSettings?.routingRules ?? []\n  const remoteIntegrationsConfig = settings.integrations\n  const localIntegrationsConfig = options.integrations\n  // merged remote CDN settings with user provided options\n  const integrationOptions = mergedOptions(settings, options ?? {}) as Record<\n    string,\n    JSONObject\n  >\n\n  const adhocIntegrationSources = legacyIntegrationSources?.reduce(\n    (acc, integrationSource) => ({\n      ...acc,\n      [resolveIntegrationNameFromSource(integrationSource)]: integrationSource,\n    }),\n    {} as Record<string, ClassicIntegrationSource>\n  )\n\n  const installableIntegrations = new Set([\n    // Remotely configured installable integrations\n    ...Object.keys(remoteIntegrationsConfig).filter((name) =>\n      isInstallableIntegration(name, remoteIntegrationsConfig[name])\n    ),\n\n    // Directly provided integration sources are only installable if settings for them are available\n    ...Object.keys(adhocIntegrationSources || {}).filter(\n      (name) =>\n        isPlainObject(remoteIntegrationsConfig[name]) ||\n        isPlainObject(localIntegrationsConfig?.[name])\n    ),\n  ])\n\n  return Array.from(installableIntegrations)\n    .filter((name) => !shouldSkipIntegration(name, integrations))\n    .map((name) => {\n      const integrationSettings = remoteIntegrationsConfig[name]\n      const version = resolveVersion(integrationSettings)\n      const destination = new LegacyDestination(\n        name,\n        version,\n        writeKey,\n        integrationOptions[name],\n        options,\n        adhocIntegrationSources?.[name]\n      )\n\n      const routing = routingRules.filter(\n        (rule) => rule.destinationName === name\n      )\n      if (routing.length > 0 && routingMiddleware) {\n        destination.addMiddleware(routingMiddleware)\n      }\n\n      return destination\n    })\n}\n", "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.analyticsVideoPlugins=t():e.analyticsVideoPlugins=t()}(window,(function(){return function(e){var t={};function a(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,a),i.l=!0,i.exports}return a.m=e,a.c=t,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},a.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},a.t=function(e,t){if(1&t&&(e=a(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(a.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var i in e)a.d(n,i,function(t){return e[t]}.bind(null,i));return n},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,\"a\",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p=\"\",a(a.s=2)}([function(e,t,a){\"use strict\";a.r(t);var n=\"function\"==typeof fetch?fetch.bind():function(e,t){return t=t||{},new Promise((function(a,n){var i=new XMLHttpRequest;for(var r in i.open(t.method||\"get\",e,!0),t.headers)i.setRequestHeader(r,t.headers[r]);function o(){var e,t=[],a=[],n={};return i.getAllResponseHeaders().replace(/^(.*?):[^\\S\\n]*([\\s\\S]*?)$/gm,(function(i,r,o){t.push(r=r.toLowerCase()),a.push([r,o]),e=n[r],n[r]=e?e+\",\"+o:o})),{ok:2==(i.status/100|0),status:i.status,statusText:i.statusText,url:i.responseURL,clone:o,text:function(){return Promise.resolve(i.responseText)},json:function(){return Promise.resolve(i.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([i.response]))},headers:{keys:function(){return t},entries:function(){return a},get:function(e){return n[e.toLowerCase()]},has:function(e){return e.toLowerCase()in n}}}}i.withCredentials=\"include\"==t.credentials,i.onload=function(){a(o())},i.onerror=n,i.send(t.body)}))};t.default=n},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=function(){function e(e,t){for(var a=0;a<t.length;a++){var n=t[a];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,a,n){return a&&e(t.prototype,a),n&&e(t,n),t}}();var i=function(){function e(t,a){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),this.pluginName=t}return n(e,[{key:\"track\",value:function(e,t){window.analytics.track(e,t,{integration:{name:this.pluginName}})}}]),e}();t.default=i},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.YouTubeAnalytics=t.VimeoAnalytics=void 0;var n=r(a(3)),i=r(a(4));function r(e){return e&&e.__esModule?e:{default:e}}t.VimeoAnalytics=n.default,t.YouTubeAnalytics=i.default},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=function(){function e(e,t){for(var a=0;a<t.length;a++){var n=t[a];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,a,n){return a&&e(t.prototype,a),n&&e(t,n),t}}(),i=r(a(0));function r(e){return e&&e.__esModule?e:{default:e}}var o=function(e){function t(e,a){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!t||\"object\"!=typeof t&&\"function\"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,\"VimeoAnalytics\"));return n.authToken=a,n.player=e,n.metadata={content:{},playback:{videoPlayer:\"Vimeo\"}},n.mostRecentHeartbeat=0,n.isPaused=!1,n}return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),n(t,[{key:\"initialize\",value:function(){var e=this,t={loaded:this.retrieveMetadata,play:this.trackPlay,pause:this.trackPause,ended:this.trackEnded,timeupdate:this.trackHeartbeat};for(var a in t)this.registerHandler(a,t[a]);this.player.getVideoId().then((function(t){e.retrieveMetadata({id:t})})).catch(console.error)}},{key:\"registerHandler\",value:function(e,t){var a=this;this.player.on(e,(function(e){a.updateMetadata(e),t.call(a,e)}))}},{key:\"trackPlay\",value:function(){this.isPaused?(this.track(\"Video Playback Resumed\",this.metadata.playback),this.isPaused=!1):(this.track(\"Video Playback Started\",this.metadata.playback),this.track(\"Video Content Started\",this.metadata.content))}},{key:\"trackEnded\",value:function(){this.track(\"Video Playback Completed\",this.metadata.playback),this.track(\"Video Content Completed\",this.metadata.content)}},{key:\"trackHeartbeat\",value:function(){var e=this.mostRecentHeartbeat,t=this.metadata.playback.position;t!==e&&t-e>=10&&(this.track(\"Video Content Playing\",this.metadata.content),this.mostRecentHeartbeat=Math.floor(t))}},{key:\"trackPause\",value:function(){this.isPaused=!0,this.track(\"Video Playback Paused\",this.metadata.playback)}},{key:\"retrieveMetadata\",value:function(e){var t=this;return new Promise((function(a,n){var r=e.id;(0,i.default)(\"https://api.vimeo.com/videos/\"+r,{headers:{Authorization:\"Bearer \"+t.authToken}}).then((function(e){return e.ok?e.json():n(e)})).then((function(e){t.metadata.content.title=e.name,t.metadata.content.description=e.description,t.metadata.content.publisher=e.user.name,t.metadata.playback.position=0,t.metadata.playback.totalLength=e.duration})).catch((function(e){return console.error(\"Request to Vimeo API Failed with: \",e),n(e)}))}))}},{key:\"updateMetadata\",value:function(e){var t=this;return new Promise((function(a,n){t.player.getVolume().then((function(n){n&&(t.metadata.playback.sound=100*n),t.metadata.playback.position=e.seconds,a()})).catch(n)}))}}]),t}(r(a(1)).default);t.default=o},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=function(){function e(e,t){for(var a=0;a<t.length;a++){var n=t[a];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,a,n){return a&&e(t.prototype,a),n&&e(t,n),t}}(),i=o(a(0)),r=o(a(1));function o(e){return e&&e.__esModule?e:{default:e}}var s=function(e){function t(e,a){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!t||\"object\"!=typeof t&&\"function\"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,\"YoutubeAnalytics\"));return n.player=e,n.apiKey=a,n.playerLoaded=!1,n.playbackStarted=!1,n.contentStarted=!1,n.isPaused=!1,n.isBuffering=!1,n.isSeeking=!1,n.lastRecordedTime={timeReported:Date.now(),timeElapsed:0},n.metadata=[{playback:{video_player:\"youtube\"},content:{}}],n.playlistIndex=0,n}return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),n(t,[{key:\"initialize\",value:function(){window.segmentYoutubeOnStateChange=this.onPlayerStateChange.bind(this),window.segmentYoutubeOnReady=this.onPlayerReady.bind(this),this.player.addEventListener(\"onReady\",\"segmentYoutubeOnReady\"),this.player.addEventListener(\"onStateChange\",\"segmentYoutubeOnStateChange\")}},{key:\"onPlayerReady\",value:function(e){this.retrieveMetadata()}},{key:\"onPlayerStateChange\",value:function(e){var t=this.player.getCurrentTime();switch(this.metadata[this.playlistIndex]&&(this.metadata[this.playlistIndex].playback.position=this.metadata[this.playlistIndex].content.position=t,this.metadata[this.playlistIndex].playback.quality=this.player.getPlaybackQuality(),this.metadata[this.playlistIndex].playback.sound=this.player.isMuted()?0:this.player.getVolume()),e.data){case-1:if(this.playerLoaded)break;this.retrieveMetadata(),this.playerLoaded=!0;break;case YT.PlayerState.BUFFERING:this.handleBuffer();break;case YT.PlayerState.PLAYING:this.handlePlay();break;case YT.PlayerState.PAUSED:this.handlePause();break;case YT.PlayerState.ENDED:this.handleEnd()}this.lastRecordedTime={timeReported:Date.now(),timeElapsed:1e3*this.player.getCurrentTime()}}},{key:\"retrieveMetadata\",value:function(){var e=this;return new Promise((function(t,a){var n=e.player.getVideoData(),r=e.player.getPlaylist()||[n.video_id],o=r.join();(0,i.default)(\"https://www.googleapis.com/youtube/v3/videos?id=\"+o+\"&part=snippet,contentDetails&key=\"+e.apiKey).then((function(e){if(!e.ok){var t=new Error(\"Segment request to Youtube API failed (likely due to a bad API Key. Events will still be sent but will not contain video metadata)\");throw t.response=e,t}return e.json()})).then((function(a){e.metadata=[];for(var n=0,i=0;i<r.length;i++){var o=a.items[i];e.metadata.push({content:{title:o.snippet.title,description:o.snippet.description,keywords:o.snippet.tags,channel:o.snippet.channelTitle,airdate:o.snippet.publishedAt}}),n+=l(o.contentDetails.duration)}for(i=0;i<r.length;i++)e.metadata[i].playback={total_length:n,video_player:\"youtube\"};t()})).catch((function(t){e.metadata=r.map((function(e){return{playback:{video_player:\"youtube\"},content:{}}})),a(t)}))}))}},{key:\"handleBuffer\",value:function(){var e=this.determineSeek();this.playbackStarted||(this.playbackStarted=!0,this.track(\"Video Playback Started\",this.metadata[this.playlistIndex].playback)),e&&!this.isSeeking&&(this.isSeeking=!0,this.track(\"Video Playback Seek Started\",this.metadata[this.playlistIndex].playback)),this.isSeeking&&(this.track(\"Video Playback Seek Completed\",this.metadata[this.playlistIndex].playback),this.isSeeking=!1);var t=this.player.getPlaylist();t&&0===this.player.getCurrentTime()&&this.player.getPlaylistIndex()!==this.playlistIndex&&(this.contentStarted=!1,this.playlistIndex===t.length-1&&0===this.player.getPlaylistIndex()&&(this.track(\"Video Playback Completed\",this.metadata[this.player.getPlaylistIndex()].playback),this.track(\"Video Playback Started\",this.metadata[this.player.getPlaylistIndex()].playback))),this.track(\"Video Playback Buffer Started\",this.metadata[this.playlistIndex].playback),this.isBuffering=!0}},{key:\"handlePlay\",value:function(){this.contentStarted||(this.playlistIndex=this.player.getPlaylistIndex(),-1===this.playlistIndex&&(this.playlistIndex=0),this.track(\"Video Content Started\",this.metadata[this.playlistIndex].content),this.contentStarted=!0),this.isBuffering&&(this.track(\"Video Playback Buffer Completed\",this.metadata[this.playlistIndex].playback),this.isBuffering=!1),this.isPaused&&(this.track(\"Video Playback Resumed\",this.metadata[this.playlistIndex].playback),this.isPaused=!1)}},{key:\"handlePause\",value:function(){var e=this.determineSeek();this.isBuffering&&(this.track(\"Video Playback Buffer Completed\",this.metadata[this.playlistIndex].playback),this.isBuffering=!1),this.isPaused||(e?(this.track(\"Video Playback Seek Started\",this.metadata[this.playlistIndex].playback),this.isSeeking=!0):(this.track(\"Video Playback Paused\",this.metadata[this.playlistIndex].playback),this.isPaused=!0))}},{key:\"handleEnd\",value:function(){this.track(\"Video Content Completed\",this.metadata[this.playlistIndex].content),this.contentStarted=!1;var e=this.player.getPlaylistIndex(),t=this.player.getPlaylist();(t&&e===t.length-1||-1===e)&&(this.track(\"Video Playback Completed\",this.metadata[this.playlistIndex].playback),this.playbackStarted=!1)}},{key:\"determineSeek\",value:function(){var e=this.isPaused||this.isBuffering?0:Date.now()-this.lastRecordedTime.timeReported,t=1e3*this.player.getCurrentTime()-this.lastRecordedTime.timeElapsed;return Math.abs(e-t)>2e3}}]),t}(r.default);function l(e){var t=e.match(/PT(\\d+H)?(\\d+M)?(\\d+S)?/);return t=t.slice(1).map((function(e){if(null!=e)return e.replace(/\\D/,\"\")})),3600*(parseInt(t[0])||0)+60*(parseInt(t[1])||0)+(parseInt(t[2])||0)}t.default=s}])}));", "import { Analytics } from '../../core/analytics'\n\nexport async function loadLegacyVideoPlugins(\n  analytics: Analytics\n): Promise<void> {\n  const plugins = await import(\n    // @ts-expect-error\n    '@segment/analytics.js-video-plugins/dist/index.umd.js'\n  )\n\n  // This is super gross, but we need to support the `window.analytics.plugins` namespace\n  // that is linked in the segment docs in order to be backwards compatible with ajs-classic\n\n  // @ts-expect-error\n  analytics._plugins = plugins\n}\n", "import { CDNSettings } from '../../browser'\nimport { Context } from '../../core/context'\nimport { PlanEvent, TrackPlan } from '../../core/events/interfaces'\nimport { Plugin } from '../../core/plugin'\nimport { isPlanEventEnabled } from '../../lib/is-plan-event-enabled'\nimport { RemotePlugin } from '../remote-loader'\n\nfunction disabledActionDestinations(\n  plan: PlanEvent | undefined,\n  settings: CDNSettings\n): { [destination: string]: string[] } {\n  if (!plan || !Object.keys(plan)) {\n    return {}\n  }\n\n  const disabledIntegrations = plan.integrations\n    ? Object.keys(plan.integrations).filter(\n        (i) => plan.integrations![i] === false\n      )\n    : []\n\n  // This accounts for cases like Fullstory, where the settings.integrations\n  // contains a \"Fullstory\" object but settings.remotePlugins contains \"Fullstory (Actions)\"\n  const disabledRemotePlugins: string[] = []\n  ;(settings.remotePlugins ?? []).forEach((p: RemotePlugin) => {\n    disabledIntegrations.forEach((int) => {\n      if (p.creationName == int) {\n        disabledRemotePlugins.push(p.name)\n      }\n    })\n  })\n\n  return (settings.remotePlugins ?? []).reduce((acc, p) => {\n    if (p.settings['subscriptions']) {\n      if (disabledRemotePlugins.includes(p.name)) {\n        // @ts-expect-error element implicitly has an 'any' type because p.settings is a JSONObject\n        p.settings['subscriptions'].forEach(\n          // @ts-expect-error parameter 'sub' implicitly has an 'any' type\n          (sub) => (acc[`${p.name} ${sub.partnerAction}`] = false)\n        )\n      }\n    }\n    return acc\n  }, {})\n}\n\nexport function schemaFilter(\n  track: TrackPlan | undefined,\n  settings: CDNSettings\n): Plugin {\n  function filter(ctx: Context): Context {\n    const plan = track\n    const ev = ctx.event.event\n\n    if (plan && ev) {\n      const planEvent = plan[ev]\n      if (!isPlanEventEnabled(plan, planEvent)) {\n        ctx.updateEvent('integrations', {\n          ...ctx.event.integrations,\n          All: false,\n          'Segment.io': true,\n        })\n        return ctx\n      } else {\n        const disabledActions = disabledActionDestinations(planEvent, settings)\n\n        ctx.updateEvent('integrations', {\n          ...ctx.event.integrations,\n          ...planEvent?.integrations,\n          ...disabledActions,\n        })\n      }\n    }\n\n    return ctx\n  }\n\n  return {\n    name: 'Schema Filter',\n    version: '0.1.0',\n    isLoaded: () => true,\n    load: () => Promise.resolve(),\n    type: 'before',\n    page: filter,\n    alias: filter,\n    track: filter,\n    identify: filter,\n    group: filter,\n  }\n}\n", "import { CDNSettings } from '../../browser'\nimport { Context } from '../../core/context'\nimport { isServer } from '../../core/environment'\nimport { loadScript } from '../../lib/load-script'\nimport { getNextIntegrationsURL } from '../../lib/parse-cdn'\nimport { MiddlewareFunction } from '../middleware'\n\nexport async function remoteMiddlewares(\n  ctx: Context,\n  settings: CDNSettings,\n  obfuscate?: boolean\n): Promise<MiddlewareFunction[]> {\n  if (isServer()) {\n    return []\n  }\n  const path = getNextIntegrationsURL()\n  const remoteMiddleware = settings.enabledMiddleware ?? {}\n  const names = Object.entries(remoteMiddleware)\n    .filter(([_, enabled]) => enabled)\n    .map(([name]) => name)\n\n  const scripts = names.map(async (name) => {\n    const nonNamespaced = name.replace('@segment/', '')\n    let bundleName = nonNamespaced\n    if (obfuscate) {\n      bundleName = btoa(nonNamespaced).replace(/=/g, '')\n    }\n    const fullPath = `${path}/middleware/${bundleName}/latest/${bundleName}.js.gz`\n\n    try {\n      await loadScript(fullPath)\n      // @ts-ignore\n      return window[`${nonNamespaced}Middleware`] as MiddlewareFunction\n    } catch (error: any) {\n      ctx.log('error', error)\n      ctx.stats.increment('failed_remote_middleware')\n    }\n  })\n\n  let middleware = await Promise.all(scripts)\n  middleware = middleware.filter(Boolean)\n\n  return middleware as MiddlewareFunction[]\n}\n", "(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"QRCodeStyling\"] = factory();\n\telse\n\t\troot[\"QRCodeStyling\"] = factory();\n})(self, function() {\nreturn ", "//---------------------------------------------------------------------\n//\n// QR Code Generator for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n//  http://www.opensource.org/licenses/mit-license.php\n//\n// The word 'QR Code' is registered trademark of\n// DENSO WAVE INCORPORATED\n//  http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n\nvar qrcode = function() {\n\n  //---------------------------------------------------------------------\n  // qrcode\n  //---------------------------------------------------------------------\n\n  /**\n   * qrcode\n   * @param typeNumber 1 to 40\n   * @param errorCorrectionLevel 'L','M','Q','H'\n   */\n  var qrcode = function(typeNumber, errorCorrectionLevel) {\n\n    var PAD0 = 0xEC;\n    var PAD1 = 0x11;\n\n    var _typeNumber = typeNumber;\n    var _errorCorrectionLevel = QRErrorCorrectionLevel[errorCorrectionLevel];\n    var _modules = null;\n    var _moduleCount = 0;\n    var _dataCache = null;\n    var _dataList = [];\n\n    var _this = {};\n\n    var makeImpl = function(test, maskPattern) {\n\n      _moduleCount = _typeNumber * 4 + 17;\n      _modules = function(moduleCount) {\n        var modules = new Array(moduleCount);\n        for (var row = 0; row < moduleCount; row += 1) {\n          modules[row] = new Array(moduleCount);\n          for (var col = 0; col < moduleCount; col += 1) {\n            modules[row][col] = null;\n          }\n        }\n        return modules;\n      }(_moduleCount);\n\n      setupPositionProbePattern(0, 0);\n      setupPositionProbePattern(_moduleCount - 7, 0);\n      setupPositionProbePattern(0, _moduleCount - 7);\n      setupPositionAdjustPattern();\n      setupTimingPattern();\n      setupTypeInfo(test, maskPattern);\n\n      if (_typeNumber >= 7) {\n        setupTypeNumber(test);\n      }\n\n      if (_dataCache == null) {\n        _dataCache = createData(_typeNumber, _errorCorrectionLevel, _dataList);\n      }\n\n      mapData(_dataCache, maskPattern);\n    };\n\n    var setupPositionProbePattern = function(row, col) {\n\n      for (var r = -1; r <= 7; r += 1) {\n\n        if (row + r <= -1 || _moduleCount <= row + r) continue;\n\n        for (var c = -1; c <= 7; c += 1) {\n\n          if (col + c <= -1 || _moduleCount <= col + c) continue;\n\n          if ( (0 <= r && r <= 6 && (c == 0 || c == 6) )\n              || (0 <= c && c <= 6 && (r == 0 || r == 6) )\n              || (2 <= r && r <= 4 && 2 <= c && c <= 4) ) {\n            _modules[row + r][col + c] = true;\n          } else {\n            _modules[row + r][col + c] = false;\n          }\n        }\n      }\n    };\n\n    var getBestMaskPattern = function() {\n\n      var minLostPoint = 0;\n      var pattern = 0;\n\n      for (var i = 0; i < 8; i += 1) {\n\n        makeImpl(true, i);\n\n        var lostPoint = QRUtil.getLostPoint(_this);\n\n        if (i == 0 || minLostPoint > lostPoint) {\n          minLostPoint = lostPoint;\n          pattern = i;\n        }\n      }\n\n      return pattern;\n    };\n\n    var setupTimingPattern = function() {\n\n      for (var r = 8; r < _moduleCount - 8; r += 1) {\n        if (_modules[r][6] != null) {\n          continue;\n        }\n        _modules[r][6] = (r % 2 == 0);\n      }\n\n      for (var c = 8; c < _moduleCount - 8; c += 1) {\n        if (_modules[6][c] != null) {\n          continue;\n        }\n        _modules[6][c] = (c % 2 == 0);\n      }\n    };\n\n    var setupPositionAdjustPattern = function() {\n\n      var pos = QRUtil.getPatternPosition(_typeNumber);\n\n      for (var i = 0; i < pos.length; i += 1) {\n\n        for (var j = 0; j < pos.length; j += 1) {\n\n          var row = pos[i];\n          var col = pos[j];\n\n          if (_modules[row][col] != null) {\n            continue;\n          }\n\n          for (var r = -2; r <= 2; r += 1) {\n\n            for (var c = -2; c <= 2; c += 1) {\n\n              if (r == -2 || r == 2 || c == -2 || c == 2\n                  || (r == 0 && c == 0) ) {\n                _modules[row + r][col + c] = true;\n              } else {\n                _modules[row + r][col + c] = false;\n              }\n            }\n          }\n        }\n      }\n    };\n\n    var setupTypeNumber = function(test) {\n\n      var bits = QRUtil.getBCHTypeNumber(_typeNumber);\n\n      for (var i = 0; i < 18; i += 1) {\n        var mod = (!test && ( (bits >> i) & 1) == 1);\n        _modules[Math.floor(i / 3)][i % 3 + _moduleCount - 8 - 3] = mod;\n      }\n\n      for (var i = 0; i < 18; i += 1) {\n        var mod = (!test && ( (bits >> i) & 1) == 1);\n        _modules[i % 3 + _moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n      }\n    };\n\n    var setupTypeInfo = function(test, maskPattern) {\n\n      var data = (_errorCorrectionLevel << 3) | maskPattern;\n      var bits = QRUtil.getBCHTypeInfo(data);\n\n      // vertical\n      for (var i = 0; i < 15; i += 1) {\n\n        var mod = (!test && ( (bits >> i) & 1) == 1);\n\n        if (i < 6) {\n          _modules[i][8] = mod;\n        } else if (i < 8) {\n          _modules[i + 1][8] = mod;\n        } else {\n          _modules[_moduleCount - 15 + i][8] = mod;\n        }\n      }\n\n      // horizontal\n      for (var i = 0; i < 15; i += 1) {\n\n        var mod = (!test && ( (bits >> i) & 1) == 1);\n\n        if (i < 8) {\n          _modules[8][_moduleCount - i - 1] = mod;\n        } else if (i < 9) {\n          _modules[8][15 - i - 1 + 1] = mod;\n        } else {\n          _modules[8][15 - i - 1] = mod;\n        }\n      }\n\n      // fixed module\n      _modules[_moduleCount - 8][8] = (!test);\n    };\n\n    var mapData = function(data, maskPattern) {\n\n      var inc = -1;\n      var row = _moduleCount - 1;\n      var bitIndex = 7;\n      var byteIndex = 0;\n      var maskFunc = QRUtil.getMaskFunction(maskPattern);\n\n      for (var col = _moduleCount - 1; col > 0; col -= 2) {\n\n        if (col == 6) col -= 1;\n\n        while (true) {\n\n          for (var c = 0; c < 2; c += 1) {\n\n            if (_modules[row][col - c] == null) {\n\n              var dark = false;\n\n              if (byteIndex < data.length) {\n                dark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1);\n              }\n\n              var mask = maskFunc(row, col - c);\n\n              if (mask) {\n                dark = !dark;\n              }\n\n              _modules[row][col - c] = dark;\n              bitIndex -= 1;\n\n              if (bitIndex == -1) {\n                byteIndex += 1;\n                bitIndex = 7;\n              }\n            }\n          }\n\n          row += inc;\n\n          if (row < 0 || _moduleCount <= row) {\n            row -= inc;\n            inc = -inc;\n            break;\n          }\n        }\n      }\n    };\n\n    var createBytes = function(buffer, rsBlocks) {\n\n      var offset = 0;\n\n      var maxDcCount = 0;\n      var maxEcCount = 0;\n\n      var dcdata = new Array(rsBlocks.length);\n      var ecdata = new Array(rsBlocks.length);\n\n      for (var r = 0; r < rsBlocks.length; r += 1) {\n\n        var dcCount = rsBlocks[r].dataCount;\n        var ecCount = rsBlocks[r].totalCount - dcCount;\n\n        maxDcCount = Math.max(maxDcCount, dcCount);\n        maxEcCount = Math.max(maxEcCount, ecCount);\n\n        dcdata[r] = new Array(dcCount);\n\n        for (var i = 0; i < dcdata[r].length; i += 1) {\n          dcdata[r][i] = 0xff & buffer.getBuffer()[i + offset];\n        }\n        offset += dcCount;\n\n        var rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);\n        var rawPoly = qrPolynomial(dcdata[r], rsPoly.getLength() - 1);\n\n        var modPoly = rawPoly.mod(rsPoly);\n        ecdata[r] = new Array(rsPoly.getLength() - 1);\n        for (var i = 0; i < ecdata[r].length; i += 1) {\n          var modIndex = i + modPoly.getLength() - ecdata[r].length;\n          ecdata[r][i] = (modIndex >= 0)? modPoly.getAt(modIndex) : 0;\n        }\n      }\n\n      var totalCodeCount = 0;\n      for (var i = 0; i < rsBlocks.length; i += 1) {\n        totalCodeCount += rsBlocks[i].totalCount;\n      }\n\n      var data = new Array(totalCodeCount);\n      var index = 0;\n\n      for (var i = 0; i < maxDcCount; i += 1) {\n        for (var r = 0; r < rsBlocks.length; r += 1) {\n          if (i < dcdata[r].length) {\n            data[index] = dcdata[r][i];\n            index += 1;\n          }\n        }\n      }\n\n      for (var i = 0; i < maxEcCount; i += 1) {\n        for (var r = 0; r < rsBlocks.length; r += 1) {\n          if (i < ecdata[r].length) {\n            data[index] = ecdata[r][i];\n            index += 1;\n          }\n        }\n      }\n\n      return data;\n    };\n\n    var createData = function(typeNumber, errorCorrectionLevel, dataList) {\n\n      var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectionLevel);\n\n      var buffer = qrBitBuffer();\n\n      for (var i = 0; i < dataList.length; i += 1) {\n        var data = dataList[i];\n        buffer.put(data.getMode(), 4);\n        buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n        data.write(buffer);\n      }\n\n      // calc num max data.\n      var totalDataCount = 0;\n      for (var i = 0; i < rsBlocks.length; i += 1) {\n        totalDataCount += rsBlocks[i].dataCount;\n      }\n\n      if (buffer.getLengthInBits() > totalDataCount * 8) {\n        throw 'code length overflow. ('\n          + buffer.getLengthInBits()\n          + '>'\n          + totalDataCount * 8\n          + ')';\n      }\n\n      // end code\n      if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n        buffer.put(0, 4);\n      }\n\n      // padding\n      while (buffer.getLengthInBits() % 8 != 0) {\n        buffer.putBit(false);\n      }\n\n      // padding\n      while (true) {\n\n        if (buffer.getLengthInBits() >= totalDataCount * 8) {\n          break;\n        }\n        buffer.put(PAD0, 8);\n\n        if (buffer.getLengthInBits() >= totalDataCount * 8) {\n          break;\n        }\n        buffer.put(PAD1, 8);\n      }\n\n      return createBytes(buffer, rsBlocks);\n    };\n\n    _this.addData = function(data, mode) {\n\n      mode = mode || 'Byte';\n\n      var newData = null;\n\n      switch(mode) {\n      case 'Numeric' :\n        newData = qrNumber(data);\n        break;\n      case 'Alphanumeric' :\n        newData = qrAlphaNum(data);\n        break;\n      case 'Byte' :\n        newData = qr8BitByte(data);\n        break;\n      case 'Kanji' :\n        newData = qrKanji(data);\n        break;\n      default :\n        throw 'mode:' + mode;\n      }\n\n      _dataList.push(newData);\n      _dataCache = null;\n    };\n\n    _this.isDark = function(row, col) {\n      if (row < 0 || _moduleCount <= row || col < 0 || _moduleCount <= col) {\n        throw row + ',' + col;\n      }\n      return _modules[row][col];\n    };\n\n    _this.getModuleCount = function() {\n      return _moduleCount;\n    };\n\n    _this.make = function() {\n      if (_typeNumber < 1) {\n        var typeNumber = 1;\n\n        for (; typeNumber < 40; typeNumber++) {\n          var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, _errorCorrectionLevel);\n          var buffer = qrBitBuffer();\n\n          for (var i = 0; i < _dataList.length; i++) {\n            var data = _dataList[i];\n            buffer.put(data.getMode(), 4);\n            buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n            data.write(buffer);\n          }\n\n          var totalDataCount = 0;\n          for (var i = 0; i < rsBlocks.length; i++) {\n            totalDataCount += rsBlocks[i].dataCount;\n          }\n\n          if (buffer.getLengthInBits() <= totalDataCount * 8) {\n            break;\n          }\n        }\n\n        _typeNumber = typeNumber;\n      }\n\n      makeImpl(false, getBestMaskPattern() );\n    };\n\n    _this.createTableTag = function(cellSize, margin) {\n\n      cellSize = cellSize || 2;\n      margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n      var qrHtml = '';\n\n      qrHtml += '<table style=\"';\n      qrHtml += ' border-width: 0px; border-style: none;';\n      qrHtml += ' border-collapse: collapse;';\n      qrHtml += ' padding: 0px; margin: ' + margin + 'px;';\n      qrHtml += '\">';\n      qrHtml += '<tbody>';\n\n      for (var r = 0; r < _this.getModuleCount(); r += 1) {\n\n        qrHtml += '<tr>';\n\n        for (var c = 0; c < _this.getModuleCount(); c += 1) {\n          qrHtml += '<td style=\"';\n          qrHtml += ' border-width: 0px; border-style: none;';\n          qrHtml += ' border-collapse: collapse;';\n          qrHtml += ' padding: 0px; margin: 0px;';\n          qrHtml += ' width: ' + cellSize + 'px;';\n          qrHtml += ' height: ' + cellSize + 'px;';\n          qrHtml += ' background-color: ';\n          qrHtml += _this.isDark(r, c)? '#000000' : '#ffffff';\n          qrHtml += ';';\n          qrHtml += '\"/>';\n        }\n\n        qrHtml += '</tr>';\n      }\n\n      qrHtml += '</tbody>';\n      qrHtml += '</table>';\n\n      return qrHtml;\n    };\n\n    _this.createSvgTag = function(cellSize, margin, alt, title) {\n\n      var opts = {};\n      if (typeof arguments[0] == 'object') {\n        // Called by options.\n        opts = arguments[0];\n        // overwrite cellSize and margin.\n        cellSize = opts.cellSize;\n        margin = opts.margin;\n        alt = opts.alt;\n        title = opts.title;\n      }\n\n      cellSize = cellSize || 2;\n      margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n      // Compose alt property surrogate\n      alt = (typeof alt === 'string') ? {text: alt} : alt || {};\n      alt.text = alt.text || null;\n      alt.id = (alt.text) ? alt.id || 'qrcode-description' : null;\n\n      // Compose title property surrogate\n      title = (typeof title === 'string') ? {text: title} : title || {};\n      title.text = title.text || null;\n      title.id = (title.text) ? title.id || 'qrcode-title' : null;\n\n      var size = _this.getModuleCount() * cellSize + margin * 2;\n      var c, mc, r, mr, qrSvg='', rect;\n\n      rect = 'l' + cellSize + ',0 0,' + cellSize +\n        ' -' + cellSize + ',0 0,-' + cellSize + 'z ';\n\n      qrSvg += '<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"';\n      qrSvg += !opts.scalable ? ' width=\"' + size + 'px\" height=\"' + size + 'px\"' : '';\n      qrSvg += ' viewBox=\"0 0 ' + size + ' ' + size + '\" ';\n      qrSvg += ' preserveAspectRatio=\"xMinYMin meet\"';\n      qrSvg += (title.text || alt.text) ? ' role=\"img\" aria-labelledby=\"' +\n          escapeXml([title.id, alt.id].join(' ').trim() ) + '\"' : '';\n      qrSvg += '>';\n      qrSvg += (title.text) ? '<title id=\"' + escapeXml(title.id) + '\">' +\n          escapeXml(title.text) + '</title>' : '';\n      qrSvg += (alt.text) ? '<description id=\"' + escapeXml(alt.id) + '\">' +\n          escapeXml(alt.text) + '</description>' : '';\n      qrSvg += '<rect width=\"100%\" height=\"100%\" fill=\"white\" cx=\"0\" cy=\"0\"/>';\n      qrSvg += '<path d=\"';\n\n      for (r = 0; r < _this.getModuleCount(); r += 1) {\n        mr = r * cellSize + margin;\n        for (c = 0; c < _this.getModuleCount(); c += 1) {\n          if (_this.isDark(r, c) ) {\n            mc = c*cellSize+margin;\n            qrSvg += 'M' + mc + ',' + mr + rect;\n          }\n        }\n      }\n\n      qrSvg += '\" stroke=\"transparent\" fill=\"black\"/>';\n      qrSvg += '</svg>';\n\n      return qrSvg;\n    };\n\n    _this.createDataURL = function(cellSize, margin) {\n\n      cellSize = cellSize || 2;\n      margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n      var size = _this.getModuleCount() * cellSize + margin * 2;\n      var min = margin;\n      var max = size - margin;\n\n      return createDataURL(size, size, function(x, y) {\n        if (min <= x && x < max && min <= y && y < max) {\n          var c = Math.floor( (x - min) / cellSize);\n          var r = Math.floor( (y - min) / cellSize);\n          return _this.isDark(r, c)? 0 : 1;\n        } else {\n          return 1;\n        }\n      } );\n    };\n\n    _this.createImgTag = function(cellSize, margin, alt) {\n\n      cellSize = cellSize || 2;\n      margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n      var size = _this.getModuleCount() * cellSize + margin * 2;\n\n      var img = '';\n      img += '<img';\n      img += '\\u0020src=\"';\n      img += _this.createDataURL(cellSize, margin);\n      img += '\"';\n      img += '\\u0020width=\"';\n      img += size;\n      img += '\"';\n      img += '\\u0020height=\"';\n      img += size;\n      img += '\"';\n      if (alt) {\n        img += '\\u0020alt=\"';\n        img += escapeXml(alt);\n        img += '\"';\n      }\n      img += '/>';\n\n      return img;\n    };\n\n    var escapeXml = function(s) {\n      var escaped = '';\n      for (var i = 0; i < s.length; i += 1) {\n        var c = s.charAt(i);\n        switch(c) {\n        case '<': escaped += '&lt;'; break;\n        case '>': escaped += '&gt;'; break;\n        case '&': escaped += '&amp;'; break;\n        case '\"': escaped += '&quot;'; break;\n        default : escaped += c; break;\n        }\n      }\n      return escaped;\n    };\n\n    var _createHalfASCII = function(margin) {\n      var cellSize = 1;\n      margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n      var size = _this.getModuleCount() * cellSize + margin * 2;\n      var min = margin;\n      var max = size - margin;\n\n      var y, x, r1, r2, p;\n\n      var blocks = {\n        '██': '█',\n        '█ ': '▀',\n        ' █': '▄',\n        '  ': ' '\n      };\n\n      var blocksLastLineNoMargin = {\n        '██': '▀',\n        '█ ': '▀',\n        ' █': ' ',\n        '  ': ' '\n      };\n\n      var ascii = '';\n      for (y = 0; y < size; y += 2) {\n        r1 = Math.floor((y - min) / cellSize);\n        r2 = Math.floor((y + 1 - min) / cellSize);\n        for (x = 0; x < size; x += 1) {\n          p = '█';\n\n          if (min <= x && x < max && min <= y && y < max && _this.isDark(r1, Math.floor((x - min) / cellSize))) {\n            p = ' ';\n          }\n\n          if (min <= x && x < max && min <= y+1 && y+1 < max && _this.isDark(r2, Math.floor((x - min) / cellSize))) {\n            p += ' ';\n          }\n          else {\n            p += '█';\n          }\n\n          // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n          ascii += (margin < 1 && y+1 >= max) ? blocksLastLineNoMargin[p] : blocks[p];\n        }\n\n        ascii += '\\n';\n      }\n\n      if (size % 2 && margin > 0) {\n        return ascii.substring(0, ascii.length - size - 1) + Array(size+1).join('▀');\n      }\n\n      return ascii.substring(0, ascii.length-1);\n    };\n\n    _this.createASCII = function(cellSize, margin) {\n      cellSize = cellSize || 1;\n\n      if (cellSize < 2) {\n        return _createHalfASCII(margin);\n      }\n\n      cellSize -= 1;\n      margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n      var size = _this.getModuleCount() * cellSize + margin * 2;\n      var min = margin;\n      var max = size - margin;\n\n      var y, x, r, p;\n\n      var white = Array(cellSize+1).join('██');\n      var black = Array(cellSize+1).join('  ');\n\n      var ascii = '';\n      var line = '';\n      for (y = 0; y < size; y += 1) {\n        r = Math.floor( (y - min) / cellSize);\n        line = '';\n        for (x = 0; x < size; x += 1) {\n          p = 1;\n\n          if (min <= x && x < max && min <= y && y < max && _this.isDark(r, Math.floor((x - min) / cellSize))) {\n            p = 0;\n          }\n\n          // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n          line += p ? white : black;\n        }\n\n        for (r = 0; r < cellSize; r += 1) {\n          ascii += line + '\\n';\n        }\n      }\n\n      return ascii.substring(0, ascii.length-1);\n    };\n\n    _this.renderTo2dContext = function(context, cellSize) {\n      cellSize = cellSize || 2;\n      var length = _this.getModuleCount();\n      for (var row = 0; row < length; row++) {\n        for (var col = 0; col < length; col++) {\n          context.fillStyle = _this.isDark(row, col) ? 'black' : 'white';\n          context.fillRect(row * cellSize, col * cellSize, cellSize, cellSize);\n        }\n      }\n    }\n\n    return _this;\n  };\n\n  //---------------------------------------------------------------------\n  // qrcode.stringToBytes\n  //---------------------------------------------------------------------\n\n  qrcode.stringToBytesFuncs = {\n    'default' : function(s) {\n      var bytes = [];\n      for (var i = 0; i < s.length; i += 1) {\n        var c = s.charCodeAt(i);\n        bytes.push(c & 0xff);\n      }\n      return bytes;\n    }\n  };\n\n  qrcode.stringToBytes = qrcode.stringToBytesFuncs['default'];\n\n  //---------------------------------------------------------------------\n  // qrcode.createStringToBytes\n  //---------------------------------------------------------------------\n\n  /**\n   * @param unicodeData base64 string of byte array.\n   * [16bit Unicode],[16bit Bytes], ...\n   * @param numChars\n   */\n  qrcode.createStringToBytes = function(unicodeData, numChars) {\n\n    // create conversion map.\n\n    var unicodeMap = function() {\n\n      var bin = base64DecodeInputStream(unicodeData);\n      var read = function() {\n        var b = bin.read();\n        if (b == -1) throw 'eof';\n        return b;\n      };\n\n      var count = 0;\n      var unicodeMap = {};\n      while (true) {\n        var b0 = bin.read();\n        if (b0 == -1) break;\n        var b1 = read();\n        var b2 = read();\n        var b3 = read();\n        var k = String.fromCharCode( (b0 << 8) | b1);\n        var v = (b2 << 8) | b3;\n        unicodeMap[k] = v;\n        count += 1;\n      }\n      if (count != numChars) {\n        throw count + ' != ' + numChars;\n      }\n\n      return unicodeMap;\n    }();\n\n    var unknownChar = '?'.charCodeAt(0);\n\n    return function(s) {\n      var bytes = [];\n      for (var i = 0; i < s.length; i += 1) {\n        var c = s.charCodeAt(i);\n        if (c < 128) {\n          bytes.push(c);\n        } else {\n          var b = unicodeMap[s.charAt(i)];\n          if (typeof b == 'number') {\n            if ( (b & 0xff) == b) {\n              // 1byte\n              bytes.push(b);\n            } else {\n              // 2bytes\n              bytes.push(b >>> 8);\n              bytes.push(b & 0xff);\n            }\n          } else {\n            bytes.push(unknownChar);\n          }\n        }\n      }\n      return bytes;\n    };\n  };\n\n  //---------------------------------------------------------------------\n  // QRMode\n  //---------------------------------------------------------------------\n\n  var QRMode = {\n    MODE_NUMBER :    1 << 0,\n    MODE_ALPHA_NUM : 1 << 1,\n    MODE_8BIT_BYTE : 1 << 2,\n    MODE_KANJI :     1 << 3\n  };\n\n  //---------------------------------------------------------------------\n  // QRErrorCorrectionLevel\n  //---------------------------------------------------------------------\n\n  var QRErrorCorrectionLevel = {\n    L : 1,\n    M : 0,\n    Q : 3,\n    H : 2\n  };\n\n  //---------------------------------------------------------------------\n  // QRMaskPattern\n  //---------------------------------------------------------------------\n\n  var QRMaskPattern = {\n    PATTERN000 : 0,\n    PATTERN001 : 1,\n    PATTERN010 : 2,\n    PATTERN011 : 3,\n    PATTERN100 : 4,\n    PATTERN101 : 5,\n    PATTERN110 : 6,\n    PATTERN111 : 7\n  };\n\n  //---------------------------------------------------------------------\n  // QRUtil\n  //---------------------------------------------------------------------\n\n  var QRUtil = function() {\n\n    var PATTERN_POSITION_TABLE = [\n      [],\n      [6, 18],\n      [6, 22],\n      [6, 26],\n      [6, 30],\n      [6, 34],\n      [6, 22, 38],\n      [6, 24, 42],\n      [6, 26, 46],\n      [6, 28, 50],\n      [6, 30, 54],\n      [6, 32, 58],\n      [6, 34, 62],\n      [6, 26, 46, 66],\n      [6, 26, 48, 70],\n      [6, 26, 50, 74],\n      [6, 30, 54, 78],\n      [6, 30, 56, 82],\n      [6, 30, 58, 86],\n      [6, 34, 62, 90],\n      [6, 28, 50, 72, 94],\n      [6, 26, 50, 74, 98],\n      [6, 30, 54, 78, 102],\n      [6, 28, 54, 80, 106],\n      [6, 32, 58, 84, 110],\n      [6, 30, 58, 86, 114],\n      [6, 34, 62, 90, 118],\n      [6, 26, 50, 74, 98, 122],\n      [6, 30, 54, 78, 102, 126],\n      [6, 26, 52, 78, 104, 130],\n      [6, 30, 56, 82, 108, 134],\n      [6, 34, 60, 86, 112, 138],\n      [6, 30, 58, 86, 114, 142],\n      [6, 34, 62, 90, 118, 146],\n      [6, 30, 54, 78, 102, 126, 150],\n      [6, 24, 50, 76, 102, 128, 154],\n      [6, 28, 54, 80, 106, 132, 158],\n      [6, 32, 58, 84, 110, 136, 162],\n      [6, 26, 54, 82, 110, 138, 166],\n      [6, 30, 58, 86, 114, 142, 170]\n    ];\n    var G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0);\n    var G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0);\n    var G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1);\n\n    var _this = {};\n\n    var getBCHDigit = function(data) {\n      var digit = 0;\n      while (data != 0) {\n        digit += 1;\n        data >>>= 1;\n      }\n      return digit;\n    };\n\n    _this.getBCHTypeInfo = function(data) {\n      var d = data << 10;\n      while (getBCHDigit(d) - getBCHDigit(G15) >= 0) {\n        d ^= (G15 << (getBCHDigit(d) - getBCHDigit(G15) ) );\n      }\n      return ( (data << 10) | d) ^ G15_MASK;\n    };\n\n    _this.getBCHTypeNumber = function(data) {\n      var d = data << 12;\n      while (getBCHDigit(d) - getBCHDigit(G18) >= 0) {\n        d ^= (G18 << (getBCHDigit(d) - getBCHDigit(G18) ) );\n      }\n      return (data << 12) | d;\n    };\n\n    _this.getPatternPosition = function(typeNumber) {\n      return PATTERN_POSITION_TABLE[typeNumber - 1];\n    };\n\n    _this.getMaskFunction = function(maskPattern) {\n\n      switch (maskPattern) {\n\n      case QRMaskPattern.PATTERN000 :\n        return function(i, j) { return (i + j) % 2 == 0; };\n      case QRMaskPattern.PATTERN001 :\n        return function(i, j) { return i % 2 == 0; };\n      case QRMaskPattern.PATTERN010 :\n        return function(i, j) { return j % 3 == 0; };\n      case QRMaskPattern.PATTERN011 :\n        return function(i, j) { return (i + j) % 3 == 0; };\n      case QRMaskPattern.PATTERN100 :\n        return function(i, j) { return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0; };\n      case QRMaskPattern.PATTERN101 :\n        return function(i, j) { return (i * j) % 2 + (i * j) % 3 == 0; };\n      case QRMaskPattern.PATTERN110 :\n        return function(i, j) { return ( (i * j) % 2 + (i * j) % 3) % 2 == 0; };\n      case QRMaskPattern.PATTERN111 :\n        return function(i, j) { return ( (i * j) % 3 + (i + j) % 2) % 2 == 0; };\n\n      default :\n        throw 'bad maskPattern:' + maskPattern;\n      }\n    };\n\n    _this.getErrorCorrectPolynomial = function(errorCorrectLength) {\n      var a = qrPolynomial([1], 0);\n      for (var i = 0; i < errorCorrectLength; i += 1) {\n        a = a.multiply(qrPolynomial([1, QRMath.gexp(i)], 0) );\n      }\n      return a;\n    };\n\n    _this.getLengthInBits = function(mode, type) {\n\n      if (1 <= type && type < 10) {\n\n        // 1 - 9\n\n        switch(mode) {\n        case QRMode.MODE_NUMBER    : return 10;\n        case QRMode.MODE_ALPHA_NUM : return 9;\n        case QRMode.MODE_8BIT_BYTE : return 8;\n        case QRMode.MODE_KANJI     : return 8;\n        default :\n          throw 'mode:' + mode;\n        }\n\n      } else if (type < 27) {\n\n        // 10 - 26\n\n        switch(mode) {\n        case QRMode.MODE_NUMBER    : return 12;\n        case QRMode.MODE_ALPHA_NUM : return 11;\n        case QRMode.MODE_8BIT_BYTE : return 16;\n        case QRMode.MODE_KANJI     : return 10;\n        default :\n          throw 'mode:' + mode;\n        }\n\n      } else if (type < 41) {\n\n        // 27 - 40\n\n        switch(mode) {\n        case QRMode.MODE_NUMBER    : return 14;\n        case QRMode.MODE_ALPHA_NUM : return 13;\n        case QRMode.MODE_8BIT_BYTE : return 16;\n        case QRMode.MODE_KANJI     : return 12;\n        default :\n          throw 'mode:' + mode;\n        }\n\n      } else {\n        throw 'type:' + type;\n      }\n    };\n\n    _this.getLostPoint = function(qrcode) {\n\n      var moduleCount = qrcode.getModuleCount();\n\n      var lostPoint = 0;\n\n      // LEVEL1\n\n      for (var row = 0; row < moduleCount; row += 1) {\n        for (var col = 0; col < moduleCount; col += 1) {\n\n          var sameCount = 0;\n          var dark = qrcode.isDark(row, col);\n\n          for (var r = -1; r <= 1; r += 1) {\n\n            if (row + r < 0 || moduleCount <= row + r) {\n              continue;\n            }\n\n            for (var c = -1; c <= 1; c += 1) {\n\n              if (col + c < 0 || moduleCount <= col + c) {\n                continue;\n              }\n\n              if (r == 0 && c == 0) {\n                continue;\n              }\n\n              if (dark == qrcode.isDark(row + r, col + c) ) {\n                sameCount += 1;\n              }\n            }\n          }\n\n          if (sameCount > 5) {\n            lostPoint += (3 + sameCount - 5);\n          }\n        }\n      };\n\n      // LEVEL2\n\n      for (var row = 0; row < moduleCount - 1; row += 1) {\n        for (var col = 0; col < moduleCount - 1; col += 1) {\n          var count = 0;\n          if (qrcode.isDark(row, col) ) count += 1;\n          if (qrcode.isDark(row + 1, col) ) count += 1;\n          if (qrcode.isDark(row, col + 1) ) count += 1;\n          if (qrcode.isDark(row + 1, col + 1) ) count += 1;\n          if (count == 0 || count == 4) {\n            lostPoint += 3;\n          }\n        }\n      }\n\n      // LEVEL3\n\n      for (var row = 0; row < moduleCount; row += 1) {\n        for (var col = 0; col < moduleCount - 6; col += 1) {\n          if (qrcode.isDark(row, col)\n              && !qrcode.isDark(row, col + 1)\n              &&  qrcode.isDark(row, col + 2)\n              &&  qrcode.isDark(row, col + 3)\n              &&  qrcode.isDark(row, col + 4)\n              && !qrcode.isDark(row, col + 5)\n              &&  qrcode.isDark(row, col + 6) ) {\n            lostPoint += 40;\n          }\n        }\n      }\n\n      for (var col = 0; col < moduleCount; col += 1) {\n        for (var row = 0; row < moduleCount - 6; row += 1) {\n          if (qrcode.isDark(row, col)\n              && !qrcode.isDark(row + 1, col)\n              &&  qrcode.isDark(row + 2, col)\n              &&  qrcode.isDark(row + 3, col)\n              &&  qrcode.isDark(row + 4, col)\n              && !qrcode.isDark(row + 5, col)\n              &&  qrcode.isDark(row + 6, col) ) {\n            lostPoint += 40;\n          }\n        }\n      }\n\n      // LEVEL4\n\n      var darkCount = 0;\n\n      for (var col = 0; col < moduleCount; col += 1) {\n        for (var row = 0; row < moduleCount; row += 1) {\n          if (qrcode.isDark(row, col) ) {\n            darkCount += 1;\n          }\n        }\n      }\n\n      var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\n      lostPoint += ratio * 10;\n\n      return lostPoint;\n    };\n\n    return _this;\n  }();\n\n  //---------------------------------------------------------------------\n  // QRMath\n  //---------------------------------------------------------------------\n\n  var QRMath = function() {\n\n    var EXP_TABLE = new Array(256);\n    var LOG_TABLE = new Array(256);\n\n    // initialize tables\n    for (var i = 0; i < 8; i += 1) {\n      EXP_TABLE[i] = 1 << i;\n    }\n    for (var i = 8; i < 256; i += 1) {\n      EXP_TABLE[i] = EXP_TABLE[i - 4]\n        ^ EXP_TABLE[i - 5]\n        ^ EXP_TABLE[i - 6]\n        ^ EXP_TABLE[i - 8];\n    }\n    for (var i = 0; i < 255; i += 1) {\n      LOG_TABLE[EXP_TABLE[i] ] = i;\n    }\n\n    var _this = {};\n\n    _this.glog = function(n) {\n\n      if (n < 1) {\n        throw 'glog(' + n + ')';\n      }\n\n      return LOG_TABLE[n];\n    };\n\n    _this.gexp = function(n) {\n\n      while (n < 0) {\n        n += 255;\n      }\n\n      while (n >= 256) {\n        n -= 255;\n      }\n\n      return EXP_TABLE[n];\n    };\n\n    return _this;\n  }();\n\n  //---------------------------------------------------------------------\n  // qrPolynomial\n  //---------------------------------------------------------------------\n\n  function qrPolynomial(num, shift) {\n\n    if (typeof num.length == 'undefined') {\n      throw num.length + '/' + shift;\n    }\n\n    var _num = function() {\n      var offset = 0;\n      while (offset < num.length && num[offset] == 0) {\n        offset += 1;\n      }\n      var _num = new Array(num.length - offset + shift);\n      for (var i = 0; i < num.length - offset; i += 1) {\n        _num[i] = num[i + offset];\n      }\n      return _num;\n    }();\n\n    var _this = {};\n\n    _this.getAt = function(index) {\n      return _num[index];\n    };\n\n    _this.getLength = function() {\n      return _num.length;\n    };\n\n    _this.multiply = function(e) {\n\n      var num = new Array(_this.getLength() + e.getLength() - 1);\n\n      for (var i = 0; i < _this.getLength(); i += 1) {\n        for (var j = 0; j < e.getLength(); j += 1) {\n          num[i + j] ^= QRMath.gexp(QRMath.glog(_this.getAt(i) ) + QRMath.glog(e.getAt(j) ) );\n        }\n      }\n\n      return qrPolynomial(num, 0);\n    };\n\n    _this.mod = function(e) {\n\n      if (_this.getLength() - e.getLength() < 0) {\n        return _this;\n      }\n\n      var ratio = QRMath.glog(_this.getAt(0) ) - QRMath.glog(e.getAt(0) );\n\n      var num = new Array(_this.getLength() );\n      for (var i = 0; i < _this.getLength(); i += 1) {\n        num[i] = _this.getAt(i);\n      }\n\n      for (var i = 0; i < e.getLength(); i += 1) {\n        num[i] ^= QRMath.gexp(QRMath.glog(e.getAt(i) ) + ratio);\n      }\n\n      // recursive call\n      return qrPolynomial(num, 0).mod(e);\n    };\n\n    return _this;\n  };\n\n  //---------------------------------------------------------------------\n  // QRRSBlock\n  //---------------------------------------------------------------------\n\n  var QRRSBlock = function() {\n\n    var RS_BLOCK_TABLE = [\n\n      // L\n      // M\n      // Q\n      // H\n\n      // 1\n      [1, 26, 19],\n      [1, 26, 16],\n      [1, 26, 13],\n      [1, 26, 9],\n\n      // 2\n      [1, 44, 34],\n      [1, 44, 28],\n      [1, 44, 22],\n      [1, 44, 16],\n\n      // 3\n      [1, 70, 55],\n      [1, 70, 44],\n      [2, 35, 17],\n      [2, 35, 13],\n\n      // 4\n      [1, 100, 80],\n      [2, 50, 32],\n      [2, 50, 24],\n      [4, 25, 9],\n\n      // 5\n      [1, 134, 108],\n      [2, 67, 43],\n      [2, 33, 15, 2, 34, 16],\n      [2, 33, 11, 2, 34, 12],\n\n      // 6\n      [2, 86, 68],\n      [4, 43, 27],\n      [4, 43, 19],\n      [4, 43, 15],\n\n      // 7\n      [2, 98, 78],\n      [4, 49, 31],\n      [2, 32, 14, 4, 33, 15],\n      [4, 39, 13, 1, 40, 14],\n\n      // 8\n      [2, 121, 97],\n      [2, 60, 38, 2, 61, 39],\n      [4, 40, 18, 2, 41, 19],\n      [4, 40, 14, 2, 41, 15],\n\n      // 9\n      [2, 146, 116],\n      [3, 58, 36, 2, 59, 37],\n      [4, 36, 16, 4, 37, 17],\n      [4, 36, 12, 4, 37, 13],\n\n      // 10\n      [2, 86, 68, 2, 87, 69],\n      [4, 69, 43, 1, 70, 44],\n      [6, 43, 19, 2, 44, 20],\n      [6, 43, 15, 2, 44, 16],\n\n      // 11\n      [4, 101, 81],\n      [1, 80, 50, 4, 81, 51],\n      [4, 50, 22, 4, 51, 23],\n      [3, 36, 12, 8, 37, 13],\n\n      // 12\n      [2, 116, 92, 2, 117, 93],\n      [6, 58, 36, 2, 59, 37],\n      [4, 46, 20, 6, 47, 21],\n      [7, 42, 14, 4, 43, 15],\n\n      // 13\n      [4, 133, 107],\n      [8, 59, 37, 1, 60, 38],\n      [8, 44, 20, 4, 45, 21],\n      [12, 33, 11, 4, 34, 12],\n\n      // 14\n      [3, 145, 115, 1, 146, 116],\n      [4, 64, 40, 5, 65, 41],\n      [11, 36, 16, 5, 37, 17],\n      [11, 36, 12, 5, 37, 13],\n\n      // 15\n      [5, 109, 87, 1, 110, 88],\n      [5, 65, 41, 5, 66, 42],\n      [5, 54, 24, 7, 55, 25],\n      [11, 36, 12, 7, 37, 13],\n\n      // 16\n      [5, 122, 98, 1, 123, 99],\n      [7, 73, 45, 3, 74, 46],\n      [15, 43, 19, 2, 44, 20],\n      [3, 45, 15, 13, 46, 16],\n\n      // 17\n      [1, 135, 107, 5, 136, 108],\n      [10, 74, 46, 1, 75, 47],\n      [1, 50, 22, 15, 51, 23],\n      [2, 42, 14, 17, 43, 15],\n\n      // 18\n      [5, 150, 120, 1, 151, 121],\n      [9, 69, 43, 4, 70, 44],\n      [17, 50, 22, 1, 51, 23],\n      [2, 42, 14, 19, 43, 15],\n\n      // 19\n      [3, 141, 113, 4, 142, 114],\n      [3, 70, 44, 11, 71, 45],\n      [17, 47, 21, 4, 48, 22],\n      [9, 39, 13, 16, 40, 14],\n\n      // 20\n      [3, 135, 107, 5, 136, 108],\n      [3, 67, 41, 13, 68, 42],\n      [15, 54, 24, 5, 55, 25],\n      [15, 43, 15, 10, 44, 16],\n\n      // 21\n      [4, 144, 116, 4, 145, 117],\n      [17, 68, 42],\n      [17, 50, 22, 6, 51, 23],\n      [19, 46, 16, 6, 47, 17],\n\n      // 22\n      [2, 139, 111, 7, 140, 112],\n      [17, 74, 46],\n      [7, 54, 24, 16, 55, 25],\n      [34, 37, 13],\n\n      // 23\n      [4, 151, 121, 5, 152, 122],\n      [4, 75, 47, 14, 76, 48],\n      [11, 54, 24, 14, 55, 25],\n      [16, 45, 15, 14, 46, 16],\n\n      // 24\n      [6, 147, 117, 4, 148, 118],\n      [6, 73, 45, 14, 74, 46],\n      [11, 54, 24, 16, 55, 25],\n      [30, 46, 16, 2, 47, 17],\n\n      // 25\n      [8, 132, 106, 4, 133, 107],\n      [8, 75, 47, 13, 76, 48],\n      [7, 54, 24, 22, 55, 25],\n      [22, 45, 15, 13, 46, 16],\n\n      // 26\n      [10, 142, 114, 2, 143, 115],\n      [19, 74, 46, 4, 75, 47],\n      [28, 50, 22, 6, 51, 23],\n      [33, 46, 16, 4, 47, 17],\n\n      // 27\n      [8, 152, 122, 4, 153, 123],\n      [22, 73, 45, 3, 74, 46],\n      [8, 53, 23, 26, 54, 24],\n      [12, 45, 15, 28, 46, 16],\n\n      // 28\n      [3, 147, 117, 10, 148, 118],\n      [3, 73, 45, 23, 74, 46],\n      [4, 54, 24, 31, 55, 25],\n      [11, 45, 15, 31, 46, 16],\n\n      // 29\n      [7, 146, 116, 7, 147, 117],\n      [21, 73, 45, 7, 74, 46],\n      [1, 53, 23, 37, 54, 24],\n      [19, 45, 15, 26, 46, 16],\n\n      // 30\n      [5, 145, 115, 10, 146, 116],\n      [19, 75, 47, 10, 76, 48],\n      [15, 54, 24, 25, 55, 25],\n      [23, 45, 15, 25, 46, 16],\n\n      // 31\n      [13, 145, 115, 3, 146, 116],\n      [2, 74, 46, 29, 75, 47],\n      [42, 54, 24, 1, 55, 25],\n      [23, 45, 15, 28, 46, 16],\n\n      // 32\n      [17, 145, 115],\n      [10, 74, 46, 23, 75, 47],\n      [10, 54, 24, 35, 55, 25],\n      [19, 45, 15, 35, 46, 16],\n\n      // 33\n      [17, 145, 115, 1, 146, 116],\n      [14, 74, 46, 21, 75, 47],\n      [29, 54, 24, 19, 55, 25],\n      [11, 45, 15, 46, 46, 16],\n\n      // 34\n      [13, 145, 115, 6, 146, 116],\n      [14, 74, 46, 23, 75, 47],\n      [44, 54, 24, 7, 55, 25],\n      [59, 46, 16, 1, 47, 17],\n\n      // 35\n      [12, 151, 121, 7, 152, 122],\n      [12, 75, 47, 26, 76, 48],\n      [39, 54, 24, 14, 55, 25],\n      [22, 45, 15, 41, 46, 16],\n\n      // 36\n      [6, 151, 121, 14, 152, 122],\n      [6, 75, 47, 34, 76, 48],\n      [46, 54, 24, 10, 55, 25],\n      [2, 45, 15, 64, 46, 16],\n\n      // 37\n      [17, 152, 122, 4, 153, 123],\n      [29, 74, 46, 14, 75, 47],\n      [49, 54, 24, 10, 55, 25],\n      [24, 45, 15, 46, 46, 16],\n\n      // 38\n      [4, 152, 122, 18, 153, 123],\n      [13, 74, 46, 32, 75, 47],\n      [48, 54, 24, 14, 55, 25],\n      [42, 45, 15, 32, 46, 16],\n\n      // 39\n      [20, 147, 117, 4, 148, 118],\n      [40, 75, 47, 7, 76, 48],\n      [43, 54, 24, 22, 55, 25],\n      [10, 45, 15, 67, 46, 16],\n\n      // 40\n      [19, 148, 118, 6, 149, 119],\n      [18, 75, 47, 31, 76, 48],\n      [34, 54, 24, 34, 55, 25],\n      [20, 45, 15, 61, 46, 16]\n    ];\n\n    var qrRSBlock = function(totalCount, dataCount) {\n      var _this = {};\n      _this.totalCount = totalCount;\n      _this.dataCount = dataCount;\n      return _this;\n    };\n\n    var _this = {};\n\n    var getRsBlockTable = function(typeNumber, errorCorrectionLevel) {\n\n      switch(errorCorrectionLevel) {\n      case QRErrorCorrectionLevel.L :\n        return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n      case QRErrorCorrectionLevel.M :\n        return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n      case QRErrorCorrectionLevel.Q :\n        return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n      case QRErrorCorrectionLevel.H :\n        return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n      default :\n        return undefined;\n      }\n    };\n\n    _this.getRSBlocks = function(typeNumber, errorCorrectionLevel) {\n\n      var rsBlock = getRsBlockTable(typeNumber, errorCorrectionLevel);\n\n      if (typeof rsBlock == 'undefined') {\n        throw 'bad rs block @ typeNumber:' + typeNumber +\n            '/errorCorrectionLevel:' + errorCorrectionLevel;\n      }\n\n      var length = rsBlock.length / 3;\n\n      var list = [];\n\n      for (var i = 0; i < length; i += 1) {\n\n        var count = rsBlock[i * 3 + 0];\n        var totalCount = rsBlock[i * 3 + 1];\n        var dataCount = rsBlock[i * 3 + 2];\n\n        for (var j = 0; j < count; j += 1) {\n          list.push(qrRSBlock(totalCount, dataCount) );\n        }\n      }\n\n      return list;\n    };\n\n    return _this;\n  }();\n\n  //---------------------------------------------------------------------\n  // qrBitBuffer\n  //---------------------------------------------------------------------\n\n  var qrBitBuffer = function() {\n\n    var _buffer = [];\n    var _length = 0;\n\n    var _this = {};\n\n    _this.getBuffer = function() {\n      return _buffer;\n    };\n\n    _this.getAt = function(index) {\n      var bufIndex = Math.floor(index / 8);\n      return ( (_buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1;\n    };\n\n    _this.put = function(num, length) {\n      for (var i = 0; i < length; i += 1) {\n        _this.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);\n      }\n    };\n\n    _this.getLengthInBits = function() {\n      return _length;\n    };\n\n    _this.putBit = function(bit) {\n\n      var bufIndex = Math.floor(_length / 8);\n      if (_buffer.length <= bufIndex) {\n        _buffer.push(0);\n      }\n\n      if (bit) {\n        _buffer[bufIndex] |= (0x80 >>> (_length % 8) );\n      }\n\n      _length += 1;\n    };\n\n    return _this;\n  };\n\n  //---------------------------------------------------------------------\n  // qrNumber\n  //---------------------------------------------------------------------\n\n  var qrNumber = function(data) {\n\n    var _mode = QRMode.MODE_NUMBER;\n    var _data = data;\n\n    var _this = {};\n\n    _this.getMode = function() {\n      return _mode;\n    };\n\n    _this.getLength = function(buffer) {\n      return _data.length;\n    };\n\n    _this.write = function(buffer) {\n\n      var data = _data;\n\n      var i = 0;\n\n      while (i + 2 < data.length) {\n        buffer.put(strToNum(data.substring(i, i + 3) ), 10);\n        i += 3;\n      }\n\n      if (i < data.length) {\n        if (data.length - i == 1) {\n          buffer.put(strToNum(data.substring(i, i + 1) ), 4);\n        } else if (data.length - i == 2) {\n          buffer.put(strToNum(data.substring(i, i + 2) ), 7);\n        }\n      }\n    };\n\n    var strToNum = function(s) {\n      var num = 0;\n      for (var i = 0; i < s.length; i += 1) {\n        num = num * 10 + chatToNum(s.charAt(i) );\n      }\n      return num;\n    };\n\n    var chatToNum = function(c) {\n      if ('0' <= c && c <= '9') {\n        return c.charCodeAt(0) - '0'.charCodeAt(0);\n      }\n      throw 'illegal char :' + c;\n    };\n\n    return _this;\n  };\n\n  //---------------------------------------------------------------------\n  // qrAlphaNum\n  //---------------------------------------------------------------------\n\n  var qrAlphaNum = function(data) {\n\n    var _mode = QRMode.MODE_ALPHA_NUM;\n    var _data = data;\n\n    var _this = {};\n\n    _this.getMode = function() {\n      return _mode;\n    };\n\n    _this.getLength = function(buffer) {\n      return _data.length;\n    };\n\n    _this.write = function(buffer) {\n\n      var s = _data;\n\n      var i = 0;\n\n      while (i + 1 < s.length) {\n        buffer.put(\n          getCode(s.charAt(i) ) * 45 +\n          getCode(s.charAt(i + 1) ), 11);\n        i += 2;\n      }\n\n      if (i < s.length) {\n        buffer.put(getCode(s.charAt(i) ), 6);\n      }\n    };\n\n    var getCode = function(c) {\n\n      if ('0' <= c && c <= '9') {\n        return c.charCodeAt(0) - '0'.charCodeAt(0);\n      } else if ('A' <= c && c <= 'Z') {\n        return c.charCodeAt(0) - 'A'.charCodeAt(0) + 10;\n      } else {\n        switch (c) {\n        case ' ' : return 36;\n        case '$' : return 37;\n        case '%' : return 38;\n        case '*' : return 39;\n        case '+' : return 40;\n        case '-' : return 41;\n        case '.' : return 42;\n        case '/' : return 43;\n        case ':' : return 44;\n        default :\n          throw 'illegal char :' + c;\n        }\n      }\n    };\n\n    return _this;\n  };\n\n  //---------------------------------------------------------------------\n  // qr8BitByte\n  //---------------------------------------------------------------------\n\n  var qr8BitByte = function(data) {\n\n    var _mode = QRMode.MODE_8BIT_BYTE;\n    var _data = data;\n    var _bytes = qrcode.stringToBytes(data);\n\n    var _this = {};\n\n    _this.getMode = function() {\n      return _mode;\n    };\n\n    _this.getLength = function(buffer) {\n      return _bytes.length;\n    };\n\n    _this.write = function(buffer) {\n      for (var i = 0; i < _bytes.length; i += 1) {\n        buffer.put(_bytes[i], 8);\n      }\n    };\n\n    return _this;\n  };\n\n  //---------------------------------------------------------------------\n  // qrKanji\n  //---------------------------------------------------------------------\n\n  var qrKanji = function(data) {\n\n    var _mode = QRMode.MODE_KANJI;\n    var _data = data;\n\n    var stringToBytes = qrcode.stringToBytesFuncs['SJIS'];\n    if (!stringToBytes) {\n      throw 'sjis not supported.';\n    }\n    !function(c, code) {\n      // self test for sjis support.\n      var test = stringToBytes(c);\n      if (test.length != 2 || ( (test[0] << 8) | test[1]) != code) {\n        throw 'sjis not supported.';\n      }\n    }('\\u53cb', 0x9746);\n\n    var _bytes = stringToBytes(data);\n\n    var _this = {};\n\n    _this.getMode = function() {\n      return _mode;\n    };\n\n    _this.getLength = function(buffer) {\n      return ~~(_bytes.length / 2);\n    };\n\n    _this.write = function(buffer) {\n\n      var data = _bytes;\n\n      var i = 0;\n\n      while (i + 1 < data.length) {\n\n        var c = ( (0xff & data[i]) << 8) | (0xff & data[i + 1]);\n\n        if (0x8140 <= c && c <= 0x9FFC) {\n          c -= 0x8140;\n        } else if (0xE040 <= c && c <= 0xEBBF) {\n          c -= 0xC140;\n        } else {\n          throw 'illegal char at ' + (i + 1) + '/' + c;\n        }\n\n        c = ( (c >>> 8) & 0xff) * 0xC0 + (c & 0xff);\n\n        buffer.put(c, 13);\n\n        i += 2;\n      }\n\n      if (i < data.length) {\n        throw 'illegal char at ' + (i + 1);\n      }\n    };\n\n    return _this;\n  };\n\n  //=====================================================================\n  // GIF Support etc.\n  //\n\n  //---------------------------------------------------------------------\n  // byteArrayOutputStream\n  //---------------------------------------------------------------------\n\n  var byteArrayOutputStream = function() {\n\n    var _bytes = [];\n\n    var _this = {};\n\n    _this.writeByte = function(b) {\n      _bytes.push(b & 0xff);\n    };\n\n    _this.writeShort = function(i) {\n      _this.writeByte(i);\n      _this.writeByte(i >>> 8);\n    };\n\n    _this.writeBytes = function(b, off, len) {\n      off = off || 0;\n      len = len || b.length;\n      for (var i = 0; i < len; i += 1) {\n        _this.writeByte(b[i + off]);\n      }\n    };\n\n    _this.writeString = function(s) {\n      for (var i = 0; i < s.length; i += 1) {\n        _this.writeByte(s.charCodeAt(i) );\n      }\n    };\n\n    _this.toByteArray = function() {\n      return _bytes;\n    };\n\n    _this.toString = function() {\n      var s = '';\n      s += '[';\n      for (var i = 0; i < _bytes.length; i += 1) {\n        if (i > 0) {\n          s += ',';\n        }\n        s += _bytes[i];\n      }\n      s += ']';\n      return s;\n    };\n\n    return _this;\n  };\n\n  //---------------------------------------------------------------------\n  // base64EncodeOutputStream\n  //---------------------------------------------------------------------\n\n  var base64EncodeOutputStream = function() {\n\n    var _buffer = 0;\n    var _buflen = 0;\n    var _length = 0;\n    var _base64 = '';\n\n    var _this = {};\n\n    var writeEncoded = function(b) {\n      _base64 += String.fromCharCode(encode(b & 0x3f) );\n    };\n\n    var encode = function(n) {\n      if (n < 0) {\n        // error.\n      } else if (n < 26) {\n        return 0x41 + n;\n      } else if (n < 52) {\n        return 0x61 + (n - 26);\n      } else if (n < 62) {\n        return 0x30 + (n - 52);\n      } else if (n == 62) {\n        return 0x2b;\n      } else if (n == 63) {\n        return 0x2f;\n      }\n      throw 'n:' + n;\n    };\n\n    _this.writeByte = function(n) {\n\n      _buffer = (_buffer << 8) | (n & 0xff);\n      _buflen += 8;\n      _length += 1;\n\n      while (_buflen >= 6) {\n        writeEncoded(_buffer >>> (_buflen - 6) );\n        _buflen -= 6;\n      }\n    };\n\n    _this.flush = function() {\n\n      if (_buflen > 0) {\n        writeEncoded(_buffer << (6 - _buflen) );\n        _buffer = 0;\n        _buflen = 0;\n      }\n\n      if (_length % 3 != 0) {\n        // padding\n        var padlen = 3 - _length % 3;\n        for (var i = 0; i < padlen; i += 1) {\n          _base64 += '=';\n        }\n      }\n    };\n\n    _this.toString = function() {\n      return _base64;\n    };\n\n    return _this;\n  };\n\n  //---------------------------------------------------------------------\n  // base64DecodeInputStream\n  //---------------------------------------------------------------------\n\n  var base64DecodeInputStream = function(str) {\n\n    var _str = str;\n    var _pos = 0;\n    var _buffer = 0;\n    var _buflen = 0;\n\n    var _this = {};\n\n    _this.read = function() {\n\n      while (_buflen < 8) {\n\n        if (_pos >= _str.length) {\n          if (_buflen == 0) {\n            return -1;\n          }\n          throw 'unexpected end of file./' + _buflen;\n        }\n\n        var c = _str.charAt(_pos);\n        _pos += 1;\n\n        if (c == '=') {\n          _buflen = 0;\n          return -1;\n        } else if (c.match(/^\\s$/) ) {\n          // ignore if whitespace.\n          continue;\n        }\n\n        _buffer = (_buffer << 6) | decode(c.charCodeAt(0) );\n        _buflen += 6;\n      }\n\n      var n = (_buffer >>> (_buflen - 8) ) & 0xff;\n      _buflen -= 8;\n      return n;\n    };\n\n    var decode = function(c) {\n      if (0x41 <= c && c <= 0x5a) {\n        return c - 0x41;\n      } else if (0x61 <= c && c <= 0x7a) {\n        return c - 0x61 + 26;\n      } else if (0x30 <= c && c <= 0x39) {\n        return c - 0x30 + 52;\n      } else if (c == 0x2b) {\n        return 62;\n      } else if (c == 0x2f) {\n        return 63;\n      } else {\n        throw 'c:' + c;\n      }\n    };\n\n    return _this;\n  };\n\n  //---------------------------------------------------------------------\n  // gifImage (B/W)\n  //---------------------------------------------------------------------\n\n  var gifImage = function(width, height) {\n\n    var _width = width;\n    var _height = height;\n    var _data = new Array(width * height);\n\n    var _this = {};\n\n    _this.setPixel = function(x, y, pixel) {\n      _data[y * _width + x] = pixel;\n    };\n\n    _this.write = function(out) {\n\n      //---------------------------------\n      // GIF Signature\n\n      out.writeString('GIF87a');\n\n      //---------------------------------\n      // Screen Descriptor\n\n      out.writeShort(_width);\n      out.writeShort(_height);\n\n      out.writeByte(0x80); // 2bit\n      out.writeByte(0);\n      out.writeByte(0);\n\n      //---------------------------------\n      // Global Color Map\n\n      // black\n      out.writeByte(0x00);\n      out.writeByte(0x00);\n      out.writeByte(0x00);\n\n      // white\n      out.writeByte(0xff);\n      out.writeByte(0xff);\n      out.writeByte(0xff);\n\n      //---------------------------------\n      // Image Descriptor\n\n      out.writeString(',');\n      out.writeShort(0);\n      out.writeShort(0);\n      out.writeShort(_width);\n      out.writeShort(_height);\n      out.writeByte(0);\n\n      //---------------------------------\n      // Local Color Map\n\n      //---------------------------------\n      // Raster Data\n\n      var lzwMinCodeSize = 2;\n      var raster = getLZWRaster(lzwMinCodeSize);\n\n      out.writeByte(lzwMinCodeSize);\n\n      var offset = 0;\n\n      while (raster.length - offset > 255) {\n        out.writeByte(255);\n        out.writeBytes(raster, offset, 255);\n        offset += 255;\n      }\n\n      out.writeByte(raster.length - offset);\n      out.writeBytes(raster, offset, raster.length - offset);\n      out.writeByte(0x00);\n\n      //---------------------------------\n      // GIF Terminator\n      out.writeString(';');\n    };\n\n    var bitOutputStream = function(out) {\n\n      var _out = out;\n      var _bitLength = 0;\n      var _bitBuffer = 0;\n\n      var _this = {};\n\n      _this.write = function(data, length) {\n\n        if ( (data >>> length) != 0) {\n          throw 'length over';\n        }\n\n        while (_bitLength + length >= 8) {\n          _out.writeByte(0xff & ( (data << _bitLength) | _bitBuffer) );\n          length -= (8 - _bitLength);\n          data >>>= (8 - _bitLength);\n          _bitBuffer = 0;\n          _bitLength = 0;\n        }\n\n        _bitBuffer = (data << _bitLength) | _bitBuffer;\n        _bitLength = _bitLength + length;\n      };\n\n      _this.flush = function() {\n        if (_bitLength > 0) {\n          _out.writeByte(_bitBuffer);\n        }\n      };\n\n      return _this;\n    };\n\n    var getLZWRaster = function(lzwMinCodeSize) {\n\n      var clearCode = 1 << lzwMinCodeSize;\n      var endCode = (1 << lzwMinCodeSize) + 1;\n      var bitLength = lzwMinCodeSize + 1;\n\n      // Setup LZWTable\n      var table = lzwTable();\n\n      for (var i = 0; i < clearCode; i += 1) {\n        table.add(String.fromCharCode(i) );\n      }\n      table.add(String.fromCharCode(clearCode) );\n      table.add(String.fromCharCode(endCode) );\n\n      var byteOut = byteArrayOutputStream();\n      var bitOut = bitOutputStream(byteOut);\n\n      // clear code\n      bitOut.write(clearCode, bitLength);\n\n      var dataIndex = 0;\n\n      var s = String.fromCharCode(_data[dataIndex]);\n      dataIndex += 1;\n\n      while (dataIndex < _data.length) {\n\n        var c = String.fromCharCode(_data[dataIndex]);\n        dataIndex += 1;\n\n        if (table.contains(s + c) ) {\n\n          s = s + c;\n\n        } else {\n\n          bitOut.write(table.indexOf(s), bitLength);\n\n          if (table.size() < 0xfff) {\n\n            if (table.size() == (1 << bitLength) ) {\n              bitLength += 1;\n            }\n\n            table.add(s + c);\n          }\n\n          s = c;\n        }\n      }\n\n      bitOut.write(table.indexOf(s), bitLength);\n\n      // end code\n      bitOut.write(endCode, bitLength);\n\n      bitOut.flush();\n\n      return byteOut.toByteArray();\n    };\n\n    var lzwTable = function() {\n\n      var _map = {};\n      var _size = 0;\n\n      var _this = {};\n\n      _this.add = function(key) {\n        if (_this.contains(key) ) {\n          throw 'dup key:' + key;\n        }\n        _map[key] = _size;\n        _size += 1;\n      };\n\n      _this.size = function() {\n        return _size;\n      };\n\n      _this.indexOf = function(key) {\n        return _map[key];\n      };\n\n      _this.contains = function(key) {\n        return typeof _map[key] != 'undefined';\n      };\n\n      return _this;\n    };\n\n    return _this;\n  };\n\n  var createDataURL = function(width, height, getPixel) {\n    var gif = gifImage(width, height);\n    for (var y = 0; y < height; y += 1) {\n      for (var x = 0; x < width; x += 1) {\n        gif.setPixel(x, y, getPixel(x, y) );\n      }\n    }\n\n    var b = byteArrayOutputStream();\n    gif.write(b);\n\n    var base64 = base64EncodeOutputStream();\n    var bytes = b.toByteArray();\n    for (var i = 0; i < bytes.length; i += 1) {\n      base64.writeByte(bytes[i]);\n    }\n    base64.flush();\n\n    return 'data:image/gif;base64,' + base64;\n  };\n\n  //---------------------------------------------------------------------\n  // returns qrcode function.\n\n  return qrcode;\n}();\n\n// multibyte support\n!function() {\n\n  qrcode.stringToBytesFuncs['UTF-8'] = function(s) {\n    // http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\n    function toUTF8Array(str) {\n      var utf8 = [];\n      for (var i=0; i < str.length; i++) {\n        var charcode = str.charCodeAt(i);\n        if (charcode < 0x80) utf8.push(charcode);\n        else if (charcode < 0x800) {\n          utf8.push(0xc0 | (charcode >> 6),\n              0x80 | (charcode & 0x3f));\n        }\n        else if (charcode < 0xd800 || charcode >= 0xe000) {\n          utf8.push(0xe0 | (charcode >> 12),\n              0x80 | ((charcode>>6) & 0x3f),\n              0x80 | (charcode & 0x3f));\n        }\n        // surrogate pair\n        else {\n          i++;\n          // UTF-16 encodes 0x10000-0x10FFFF by\n          // subtracting 0x10000 and splitting the\n          // 20 bits of 0x0-0xFFFFF into two halves\n          charcode = 0x10000 + (((charcode & 0x3ff)<<10)\n            | (str.charCodeAt(i) & 0x3ff));\n          utf8.push(0xf0 | (charcode >>18),\n              0x80 | ((charcode>>12) & 0x3f),\n              0x80 | ((charcode>>6) & 0x3f),\n              0x80 | (charcode & 0x3f));\n        }\n      }\n      return utf8;\n    }\n    return toUTF8Array(s);\n  };\n\n}();\n\n(function (factory) {\n  if (typeof define === 'function' && define.amd) {\n      define([], factory);\n  } else if (typeof exports === 'object') {\n      module.exports = factory();\n  }\n}(function () {\n    return qrcode;\n}));\n", "import { UnknownObject } from \"../types\";\n\nconst isObject = (obj: Record<string, unknown>): boolean => !!obj && typeof obj === \"object\" && !Array.isArray(obj);\n\nexport default function mergeDeep(target: UnknownObject, ...sources: UnknownObject[]): UnknownObject {\n  if (!sources.length) return target;\n  const source = sources.shift();\n  if (source === undefined || !isObject(target) || !isObject(source)) return target;\n  target = { ...target };\n  Object.keys(source).forEach((key: string): void => {\n    const targetValue = target[key];\n    const sourceValue = source[key];\n\n    if (Array.isArray(targetValue) && Array.isArray(sourceValue)) {\n      target[key] = sourceValue;\n    } else if (isObject(targetValue) && isObject(sourceValue)) {\n      target[key] = mergeDeep(Object.assign({}, targetValue), sourceValue);\n    } else {\n      target[key] = sourceValue;\n    }\n  });\n\n  return mergeDeep(target, ...sources);\n}\n", "export default function downloadURI(uri: string, name: string): void {\n  const link = document.createElement(\"a\");\n  link.download = name;\n  link.href = uri;\n  document.body.appendChild(link);\n  link.click();\n  document.body.removeChild(link);\n}\n", "interface ImageSizeOptions {\n  originalHeight: number;\n  originalWidth: number;\n  maxHiddenDots: number;\n  maxHiddenAxisDots?: number;\n  dotSize: number;\n}\n\ninterface ImageSizeResult {\n  height: number;\n  width: number;\n  hideYDots: number;\n  hideXDots: number;\n}\n\nexport default function calculateImageSize({\n  originalHeight,\n  originalWidth,\n  maxHiddenDots,\n  maxHiddenAxisDots,\n  dotSize\n}: ImageSizeOptions): ImageSizeResult {\n  const hideDots = { x: 0, y: 0 };\n  const imageSize = { x: 0, y: 0 };\n\n  if (originalHeight <= 0 || originalWidth <= 0 || maxHiddenDots <= 0 || dotSize <= 0) {\n    return {\n      height: 0,\n      width: 0,\n      hideYDots: 0,\n      hideXDots: 0\n    };\n  }\n\n  const k = originalHeight / originalWidth;\n\n  //Getting the maximum possible axis hidden dots\n  hideDots.x = Math.floor(Math.sqrt(maxHiddenDots / k));\n  //The count of hidden dot's can't be less than 1\n  if (hideDots.x <= 0) hideDots.x = 1;\n  //Check the limit of the maximum allowed axis hidden dots\n  if (maxHiddenAxisDots && maxHiddenAxisDots < hideDots.x) hideDots.x = maxHiddenAxisDots;\n  //The count of dots should be odd\n  if (hideDots.x % 2 === 0) hideDots.x--;\n  imageSize.x = hideDots.x * dotSize;\n  //Calculate opposite axis hidden dots based on axis value.\n  //The value will be odd.\n  //We use ceil to prevent dots covering by the image.\n  hideDots.y = 1 + 2 * Math.ceil((hideDots.x * k - 1) / 2);\n  imageSize.y = Math.round(imageSize.x * k);\n  //If the result dots count is bigger than max - then decrease size and calculate again\n  if (hideDots.y * hideDots.x > maxHiddenDots || (maxHiddenAxisDots && maxHiddenAxisDots < hideDots.y)) {\n    if (maxHiddenAxisDots && maxHiddenAxisDots < hideDots.y) {\n      hideDots.y = maxHiddenAxisDots;\n      if (hideDots.y % 2 === 0) hideDots.x--;\n    } else {\n      hideDots.y -= 2;\n    }\n    imageSize.y = hideDots.y * dotSize;\n    hideDots.x = 1 + 2 * Math.ceil((hideDots.y / k - 1) / 2);\n    imageSize.x = Math.round(imageSize.y / k);\n  }\n\n  return {\n    height: imageSize.y,\n    width: imageSize.x,\n    hideYDots: hideDots.y,\n    hideXDots: hideDots.x\n  };\n}\n", "interface ErrorCorrectionPercents {\n  [key: string]: number;\n}\n\nexport default {\n  L: 0.07,\n  M: 0.15,\n  Q: 0.25,\n  H: 0.3\n} as ErrorCorrectionPercents;\n", "import { DotTypes } from \"../types\";\n\nexport default {\n  dots: \"dots\",\n  rounded: \"rounded\",\n  classy: \"classy\",\n  classyRounded: \"classy-rounded\",\n  square: \"square\",\n  extraRounded: \"extra-rounded\"\n} as DotTypes;\n", "import dotTypes from \"../../../constants/dotTypes\";\nimport {\n  DotType,\n  GetNeighbor,\n  RotateFigureArgsCanvas,\n  BasicFigureDrawArgsCanvas,\n  DrawArgsCanvas\n} from \"../../../types\";\n\nexport default class QRDot {\n  _context: CanvasRenderingContext2D;\n  _type: DotType;\n\n  constructor({ context, type }: { context: CanvasRenderingContext2D; type: DotType }) {\n    this._context = context;\n    this._type = type;\n  }\n\n  draw(x: number, y: number, size: number, getNeighbor: GetNeighbor): void {\n    const context = this._context;\n    const type = this._type;\n    let drawFunction;\n\n    switch (type) {\n      case dotTypes.dots:\n        drawFunction = this._drawDot;\n        break;\n      case dotTypes.classy:\n        drawFunction = this._drawClassy;\n        break;\n      case dotTypes.classyRounded:\n        drawFunction = this._drawClassyRounded;\n        break;\n      case dotTypes.rounded:\n        drawFunction = this._drawRounded;\n        break;\n      case dotTypes.extraRounded:\n        drawFunction = this._drawExtraRounded;\n        break;\n      case dotTypes.square:\n      default:\n        drawFunction = this._drawSquare;\n    }\n\n    drawFunction.call(this, { x, y, size, context, getNeighbor });\n  }\n\n  _rotateFigure({ x, y, size, context, rotation = 0, draw }: RotateFigureArgsCanvas): void {\n    const cx = x + size / 2;\n    const cy = y + size / 2;\n\n    context.translate(cx, cy);\n    rotation && context.rotate(rotation);\n    draw();\n    context.closePath();\n    rotation && context.rotate(-rotation);\n    context.translate(-cx, -cy);\n  }\n\n  _basicDot(args: BasicFigureDrawArgsCanvas): void {\n    const { size, context } = args;\n\n    this._rotateFigure({\n      ...args,\n      draw: () => {\n        context.arc(0, 0, size / 2, 0, Math.PI * 2);\n      }\n    });\n  }\n\n  _basicSquare(args: BasicFigureDrawArgsCanvas): void {\n    const { size, context } = args;\n\n    this._rotateFigure({\n      ...args,\n      draw: () => {\n        context.rect(-size / 2, -size / 2, size, size);\n      }\n    });\n  }\n\n  //if rotation === 0 - right side is rounded\n  _basicSideRounded(args: BasicFigureDrawArgsCanvas): void {\n    const { size, context } = args;\n\n    this._rotateFigure({\n      ...args,\n      draw: () => {\n        context.arc(0, 0, size / 2, -Math.PI / 2, Math.PI / 2);\n        context.lineTo(-size / 2, size / 2);\n        context.lineTo(-size / 2, -size / 2);\n        context.lineTo(0, -size / 2);\n      }\n    });\n  }\n\n  //if rotation === 0 - top right corner is rounded\n  _basicCornerRounded(args: BasicFigureDrawArgsCanvas): void {\n    const { size, context } = args;\n\n    this._rotateFigure({\n      ...args,\n      draw: () => {\n        context.arc(0, 0, size / 2, -Math.PI / 2, 0);\n        context.lineTo(size / 2, size / 2);\n        context.lineTo(-size / 2, size / 2);\n        context.lineTo(-size / 2, -size / 2);\n        context.lineTo(0, -size / 2);\n      }\n    });\n  }\n\n  //if rotation === 0 - top right corner is rounded\n  _basicCornerExtraRounded(args: BasicFigureDrawArgsCanvas): void {\n    const { size, context } = args;\n\n    this._rotateFigure({\n      ...args,\n      draw: () => {\n        context.arc(-size / 2, size / 2, size, -Math.PI / 2, 0);\n        context.lineTo(-size / 2, size / 2);\n        context.lineTo(-size / 2, -size / 2);\n      }\n    });\n  }\n\n  _basicCornersRounded(args: BasicFigureDrawArgsCanvas): void {\n    const { size, context } = args;\n\n    this._rotateFigure({\n      ...args,\n      draw: () => {\n        context.arc(0, 0, size / 2, -Math.PI / 2, 0);\n        context.lineTo(size / 2, size / 2);\n        context.lineTo(0, size / 2);\n        context.arc(0, 0, size / 2, Math.PI / 2, Math.PI);\n        context.lineTo(-size / 2, -size / 2);\n        context.lineTo(0, -size / 2);\n      }\n    });\n  }\n\n  _basicCornersExtraRounded(args: BasicFigureDrawArgsCanvas): void {\n    const { size, context } = args;\n\n    this._rotateFigure({\n      ...args,\n      draw: () => {\n        context.arc(-size / 2, size / 2, size, -Math.PI / 2, 0);\n        context.arc(size / 2, -size / 2, size, Math.PI / 2, Math.PI);\n      }\n    });\n  }\n\n  _drawDot({ x, y, size, context }: DrawArgsCanvas): void {\n    this._basicDot({ x, y, size, context, rotation: 0 });\n  }\n\n  _drawSquare({ x, y, size, context }: DrawArgsCanvas): void {\n    this._basicSquare({ x, y, size, context, rotation: 0 });\n  }\n\n  _drawRounded({ x, y, size, context, getNeighbor }: DrawArgsCanvas): void {\n    const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n    const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n    const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n    const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n    const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n    if (neighborsCount === 0) {\n      this._basicDot({ x, y, size, context, rotation: 0 });\n      return;\n    }\n\n    if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\n      this._basicSquare({ x, y, size, context, rotation: 0 });\n      return;\n    }\n\n    if (neighborsCount === 2) {\n      let rotation = 0;\n\n      if (leftNeighbor && topNeighbor) {\n        rotation = Math.PI / 2;\n      } else if (topNeighbor && rightNeighbor) {\n        rotation = Math.PI;\n      } else if (rightNeighbor && bottomNeighbor) {\n        rotation = -Math.PI / 2;\n      }\n\n      this._basicCornerRounded({ x, y, size, context, rotation });\n      return;\n    }\n\n    if (neighborsCount === 1) {\n      let rotation = 0;\n\n      if (topNeighbor) {\n        rotation = Math.PI / 2;\n      } else if (rightNeighbor) {\n        rotation = Math.PI;\n      } else if (bottomNeighbor) {\n        rotation = -Math.PI / 2;\n      }\n\n      this._basicSideRounded({ x, y, size, context, rotation });\n      return;\n    }\n  }\n\n  _drawExtraRounded({ x, y, size, context, getNeighbor }: DrawArgsCanvas): void {\n    const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n    const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n    const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n    const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n    const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n    if (neighborsCount === 0) {\n      this._basicDot({ x, y, size, context, rotation: 0 });\n      return;\n    }\n\n    if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\n      this._basicSquare({ x, y, size, context, rotation: 0 });\n      return;\n    }\n\n    if (neighborsCount === 2) {\n      let rotation = 0;\n\n      if (leftNeighbor && topNeighbor) {\n        rotation = Math.PI / 2;\n      } else if (topNeighbor && rightNeighbor) {\n        rotation = Math.PI;\n      } else if (rightNeighbor && bottomNeighbor) {\n        rotation = -Math.PI / 2;\n      }\n\n      this._basicCornerExtraRounded({ x, y, size, context, rotation });\n      return;\n    }\n\n    if (neighborsCount === 1) {\n      let rotation = 0;\n\n      if (topNeighbor) {\n        rotation = Math.PI / 2;\n      } else if (rightNeighbor) {\n        rotation = Math.PI;\n      } else if (bottomNeighbor) {\n        rotation = -Math.PI / 2;\n      }\n\n      this._basicSideRounded({ x, y, size, context, rotation });\n      return;\n    }\n  }\n\n  _drawClassy({ x, y, size, context, getNeighbor }: DrawArgsCanvas): void {\n    const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n    const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n    const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n    const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n    const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n    if (neighborsCount === 0) {\n      this._basicCornersRounded({ x, y, size, context, rotation: Math.PI / 2 });\n      return;\n    }\n\n    if (!leftNeighbor && !topNeighbor) {\n      this._basicCornerRounded({ x, y, size, context, rotation: -Math.PI / 2 });\n      return;\n    }\n\n    if (!rightNeighbor && !bottomNeighbor) {\n      this._basicCornerRounded({ x, y, size, context, rotation: Math.PI / 2 });\n      return;\n    }\n\n    this._basicSquare({ x, y, size, context, rotation: 0 });\n  }\n\n  _drawClassyRounded({ x, y, size, context, getNeighbor }: DrawArgsCanvas): void {\n    const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n    const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n    const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n    const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n    const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n    if (neighborsCount === 0) {\n      this._basicCornersRounded({ x, y, size, context, rotation: Math.PI / 2 });\n      return;\n    }\n\n    if (!leftNeighbor && !topNeighbor) {\n      this._basicCornerExtraRounded({ x, y, size, context, rotation: -Math.PI / 2 });\n      return;\n    }\n\n    if (!rightNeighbor && !bottomNeighbor) {\n      this._basicCornerExtraRounded({ x, y, size, context, rotation: Math.PI / 2 });\n      return;\n    }\n\n    this._basicSquare({ x, y, size, context, rotation: 0 });\n  }\n}\n", "import { CornerSquareTypes } from \"../types\";\n\nexport default {\n  dot: \"dot\",\n  square: \"square\",\n  extraRounded: \"extra-rounded\"\n} as CornerSquareTypes;\n", "import cornerSquareTypes from \"../../../constants/cornerSquareTypes\";\nimport { CornerSquareType, RotateFigureArgsCanvas, BasicFigureDrawArgsCanvas, DrawArgsCanvas } from \"../../../types\";\n\nexport default class QRCornerSquare {\n  _context: CanvasRenderingContext2D;\n  _type: CornerSquareType;\n\n  constructor({ context, type }: { context: CanvasRenderingContext2D; type: CornerSquareType }) {\n    this._context = context;\n    this._type = type;\n  }\n\n  draw(x: number, y: number, size: number, rotation: number): void {\n    const context = this._context;\n    const type = this._type;\n    let drawFunction;\n\n    switch (type) {\n      case cornerSquareTypes.square:\n        drawFunction = this._drawSquare;\n        break;\n      case cornerSquareTypes.extraRounded:\n        drawFunction = this._drawExtraRounded;\n        break;\n      case cornerSquareTypes.dot:\n      default:\n        drawFunction = this._drawDot;\n    }\n\n    drawFunction.call(this, { x, y, size, context, rotation });\n  }\n\n  _rotateFigure({ x, y, size, context, rotation = 0, draw }: RotateFigureArgsCanvas): void {\n    const cx = x + size / 2;\n    const cy = y + size / 2;\n\n    context.translate(cx, cy);\n    rotation && context.rotate(rotation);\n    draw();\n    context.closePath();\n    rotation && context.rotate(-rotation);\n    context.translate(-cx, -cy);\n  }\n\n  _basicDot(args: BasicFigureDrawArgsCanvas): void {\n    const { size, context } = args;\n    const dotSize = size / 7;\n\n    this._rotateFigure({\n      ...args,\n      draw: () => {\n        context.arc(0, 0, size / 2, 0, Math.PI * 2);\n        context.arc(0, 0, size / 2 - dotSize, 0, Math.PI * 2);\n      }\n    });\n  }\n\n  _basicSquare(args: BasicFigureDrawArgsCanvas): void {\n    const { size, context } = args;\n    const dotSize = size / 7;\n\n    this._rotateFigure({\n      ...args,\n      draw: () => {\n        context.rect(-size / 2, -size / 2, size, size);\n        context.rect(-size / 2 + dotSize, -size / 2 + dotSize, size - 2 * dotSize, size - 2 * dotSize);\n      }\n    });\n  }\n\n  _basicExtraRounded(args: BasicFigureDrawArgsCanvas): void {\n    const { size, context } = args;\n    const dotSize = size / 7;\n\n    this._rotateFigure({\n      ...args,\n      draw: () => {\n        context.arc(-dotSize, -dotSize, 2.5 * dotSize, Math.PI, -Math.PI / 2);\n        context.lineTo(dotSize, -3.5 * dotSize);\n        context.arc(dotSize, -dotSize, 2.5 * dotSize, -Math.PI / 2, 0);\n        context.lineTo(3.5 * dotSize, -dotSize);\n        context.arc(dotSize, dotSize, 2.5 * dotSize, 0, Math.PI / 2);\n        context.lineTo(-dotSize, 3.5 * dotSize);\n        context.arc(-dotSize, dotSize, 2.5 * dotSize, Math.PI / 2, Math.PI);\n        context.lineTo(-3.5 * dotSize, -dotSize);\n\n        context.arc(-dotSize, -dotSize, 1.5 * dotSize, Math.PI, -Math.PI / 2);\n        context.lineTo(dotSize, -2.5 * dotSize);\n        context.arc(dotSize, -dotSize, 1.5 * dotSize, -Math.PI / 2, 0);\n        context.lineTo(2.5 * dotSize, -dotSize);\n        context.arc(dotSize, dotSize, 1.5 * dotSize, 0, Math.PI / 2);\n        context.lineTo(-dotSize, 2.5 * dotSize);\n        context.arc(-dotSize, dotSize, 1.5 * dotSize, Math.PI / 2, Math.PI);\n        context.lineTo(-2.5 * dotSize, -dotSize);\n      }\n    });\n  }\n\n  _drawDot({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n    this._basicDot({ x, y, size, context, rotation });\n  }\n\n  _drawSquare({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n    this._basicSquare({ x, y, size, context, rotation });\n  }\n\n  _drawExtraRounded({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n    this._basicExtraRounded({ x, y, size, context, rotation });\n  }\n}\n", "import { CornerDotTypes } from \"../types\";\n\nexport default {\n  dot: \"dot\",\n  square: \"square\"\n} as CornerDotTypes;\n", "import cornerDotTypes from \"../../../constants/cornerDotTypes\";\nimport { CornerDotType, RotateFigureArgsCanvas, BasicFigureDrawArgsCanvas, DrawArgsCanvas } from \"../../../types\";\n\nexport default class QRCornerDot {\n  _context: CanvasRenderingContext2D;\n  _type: CornerDotType;\n\n  constructor({ context, type }: { context: CanvasRenderingContext2D; type: CornerDotType }) {\n    this._context = context;\n    this._type = type;\n  }\n\n  draw(x: number, y: number, size: number, rotation: number): void {\n    const context = this._context;\n    const type = this._type;\n    let drawFunction;\n\n    switch (type) {\n      case cornerDotTypes.square:\n        drawFunction = this._drawSquare;\n        break;\n      case cornerDotTypes.dot:\n      default:\n        drawFunction = this._drawDot;\n    }\n\n    drawFunction.call(this, { x, y, size, context, rotation });\n  }\n\n  _rotateFigure({ x, y, size, context, rotation = 0, draw }: RotateFigureArgsCanvas): void {\n    const cx = x + size / 2;\n    const cy = y + size / 2;\n\n    context.translate(cx, cy);\n    rotation && context.rotate(rotation);\n    draw();\n    context.closePath();\n    rotation && context.rotate(-rotation);\n    context.translate(-cx, -cy);\n  }\n\n  _basicDot(args: BasicFigureDrawArgsCanvas): void {\n    const { size, context } = args;\n\n    this._rotateFigure({\n      ...args,\n      draw: () => {\n        context.arc(0, 0, size / 2, 0, Math.PI * 2);\n      }\n    });\n  }\n\n  _basicSquare(args: BasicFigureDrawArgsCanvas): void {\n    const { size, context } = args;\n\n    this._rotateFigure({\n      ...args,\n      draw: () => {\n        context.rect(-size / 2, -size / 2, size, size);\n      }\n    });\n  }\n\n  _drawDot({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n    this._basicDot({ x, y, size, context, rotation });\n  }\n\n  _drawSquare({ x, y, size, context, rotation }: DrawArgsCanvas): void {\n    this._basicSquare({ x, y, size, context, rotation });\n  }\n}\n", "import { GradientTypes } from \"../types\";\n\nexport default {\n  radial: \"radial\",\n  linear: \"linear\"\n} as GradientTypes;\n", "import calculateImageSize from \"../tools/calculateImageSize\";\nimport errorCorrectionPercents from \"../constants/errorCorrectionPercents\";\nimport QRDot from \"../figures/dot/canvas/QRDot\";\nimport QRCornerSquare from \"../figures/cornerSquare/canvas/QRCornerSquare\";\nimport QRCornerDot from \"../figures/cornerDot/canvas/QRCornerDot\";\nimport { RequiredOptions } from \"./QROptions\";\nimport gradientTypes from \"../constants/gradientTypes\";\nimport { QRCode, Gradient, FilterFunction } from \"../types\";\n\nconst squareMask = [\n  [1, 1, 1, 1, 1, 1, 1],\n  [1, 0, 0, 0, 0, 0, 1],\n  [1, 0, 0, 0, 0, 0, 1],\n  [1, 0, 0, 0, 0, 0, 1],\n  [1, 0, 0, 0, 0, 0, 1],\n  [1, 0, 0, 0, 0, 0, 1],\n  [1, 1, 1, 1, 1, 1, 1]\n];\n\nconst dotMask = [\n  [0, 0, 0, 0, 0, 0, 0],\n  [0, 0, 0, 0, 0, 0, 0],\n  [0, 0, 1, 1, 1, 0, 0],\n  [0, 0, 1, 1, 1, 0, 0],\n  [0, 0, 1, 1, 1, 0, 0],\n  [0, 0, 0, 0, 0, 0, 0],\n  [0, 0, 0, 0, 0, 0, 0]\n];\n\nexport default class QRCanvas {\n  _canvas: HTMLCanvasElement;\n  _options: RequiredOptions;\n  _qr?: QRCode;\n  _image?: HTMLImageElement;\n\n  //TODO don't pass all options to this class\n  constructor(options: RequiredOptions) {\n    this._canvas = document.createElement(\"canvas\");\n    this._canvas.width = options.width;\n    this._canvas.height = options.height;\n    this._options = options;\n  }\n\n  get context(): CanvasRenderingContext2D | null {\n    return this._canvas.getContext(\"2d\");\n  }\n\n  get width(): number {\n    return this._canvas.width;\n  }\n\n  get height(): number {\n    return this._canvas.height;\n  }\n\n  getCanvas(): HTMLCanvasElement {\n    return this._canvas;\n  }\n\n  clear(): void {\n    const canvasContext = this.context;\n\n    if (canvasContext) {\n      canvasContext.clearRect(0, 0, this._canvas.width, this._canvas.height);\n    }\n  }\n\n  async drawQR(qr: QRCode): Promise<void> {\n    const count = qr.getModuleCount();\n    const minSize = Math.min(this._options.width, this._options.height) - this._options.margin * 2;\n    const dotSize = Math.floor(minSize / count);\n    let drawImageSize = {\n      hideXDots: 0,\n      hideYDots: 0,\n      width: 0,\n      height: 0\n    };\n\n    this._qr = qr;\n\n    if (this._options.image) {\n      await this.loadImage();\n      if (!this._image) return;\n      const { imageOptions, qrOptions } = this._options;\n      const coverLevel = imageOptions.imageSize * errorCorrectionPercents[qrOptions.errorCorrectionLevel];\n      const maxHiddenDots = Math.floor(coverLevel * count * count);\n\n      drawImageSize = calculateImageSize({\n        originalWidth: this._image.width,\n        originalHeight: this._image.height,\n        maxHiddenDots,\n        maxHiddenAxisDots: count - 14,\n        dotSize\n      });\n    }\n\n    this.clear();\n    this.drawBackground();\n    this.drawDots((i: number, j: number): boolean => {\n      if (this._options.imageOptions.hideBackgroundDots) {\n        if (\n          i >= (count - drawImageSize.hideXDots) / 2 &&\n          i < (count + drawImageSize.hideXDots) / 2 &&\n          j >= (count - drawImageSize.hideYDots) / 2 &&\n          j < (count + drawImageSize.hideYDots) / 2\n        ) {\n          return false;\n        }\n      }\n\n      if (squareMask[i]?.[j] || squareMask[i - count + 7]?.[j] || squareMask[i]?.[j - count + 7]) {\n        return false;\n      }\n\n      if (dotMask[i]?.[j] || dotMask[i - count + 7]?.[j] || dotMask[i]?.[j - count + 7]) {\n        return false;\n      }\n\n      return true;\n    });\n    this.drawCorners();\n\n    if (this._options.image) {\n      this.drawImage({ width: drawImageSize.width, height: drawImageSize.height, count, dotSize });\n    }\n  }\n\n  drawBackground(): void {\n    const canvasContext = this.context;\n    const options = this._options;\n\n    if (canvasContext) {\n      if (options.backgroundOptions.gradient) {\n        const gradientOptions = options.backgroundOptions.gradient;\n        const gradient = this._createGradient({\n          context: canvasContext,\n          options: gradientOptions,\n          additionalRotation: 0,\n          x: 0,\n          y: 0,\n          size: this._canvas.width > this._canvas.height ? this._canvas.width : this._canvas.height\n        });\n\n        gradientOptions.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n          gradient.addColorStop(offset, color);\n        });\n\n        canvasContext.fillStyle = gradient;\n      } else if (options.backgroundOptions.color) {\n        canvasContext.fillStyle = options.backgroundOptions.color;\n      }\n      canvasContext.fillRect(0, 0, this._canvas.width, this._canvas.height);\n    }\n  }\n\n  drawDots(filter?: FilterFunction): void {\n    if (!this._qr) {\n      throw \"QR code is not defined\";\n    }\n\n    const canvasContext = this.context;\n\n    if (!canvasContext) {\n      throw \"QR code is not defined\";\n    }\n\n    const options = this._options;\n    const count = this._qr.getModuleCount();\n\n    if (count > options.width || count > options.height) {\n      throw \"The canvas is too small.\";\n    }\n\n    const minSize = Math.min(options.width, options.height) - options.margin * 2;\n    const dotSize = Math.floor(minSize / count);\n    const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n    const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n    const dot = new QRDot({ context: canvasContext, type: options.dotsOptions.type });\n\n    canvasContext.beginPath();\n\n    for (let i = 0; i < count; i++) {\n      for (let j = 0; j < count; j++) {\n        if (filter && !filter(i, j)) {\n          continue;\n        }\n        if (!this._qr.isDark(i, j)) {\n          continue;\n        }\n        dot.draw(\n          xBeginning + i * dotSize,\n          yBeginning + j * dotSize,\n          dotSize,\n          (xOffset: number, yOffset: number): boolean => {\n            if (i + xOffset < 0 || j + yOffset < 0 || i + xOffset >= count || j + yOffset >= count) return false;\n            if (filter && !filter(i + xOffset, j + yOffset)) return false;\n            return !!this._qr && this._qr.isDark(i + xOffset, j + yOffset);\n          }\n        );\n      }\n    }\n\n    if (options.dotsOptions.gradient) {\n      const gradientOptions = options.dotsOptions.gradient;\n      const gradient = this._createGradient({\n        context: canvasContext,\n        options: gradientOptions,\n        additionalRotation: 0,\n        x: xBeginning,\n        y: yBeginning,\n        size: count * dotSize\n      });\n\n      gradientOptions.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n        gradient.addColorStop(offset, color);\n      });\n\n      canvasContext.fillStyle = canvasContext.strokeStyle = gradient;\n    } else if (options.dotsOptions.color) {\n      canvasContext.fillStyle = canvasContext.strokeStyle = options.dotsOptions.color;\n    }\n\n    canvasContext.fill(\"evenodd\");\n  }\n\n  drawCorners(filter?: FilterFunction): void {\n    if (!this._qr) {\n      throw \"QR code is not defined\";\n    }\n\n    const canvasContext = this.context;\n\n    if (!canvasContext) {\n      throw \"QR code is not defined\";\n    }\n\n    const options = this._options;\n\n    const count = this._qr.getModuleCount();\n    const minSize = Math.min(options.width, options.height) - options.margin * 2;\n    const dotSize = Math.floor(minSize / count);\n    const cornersSquareSize = dotSize * 7;\n    const cornersDotSize = dotSize * 3;\n    const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n    const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n\n    [\n      [0, 0, 0],\n      [1, 0, Math.PI / 2],\n      [0, 1, -Math.PI / 2]\n    ].forEach(([column, row, rotation]) => {\n      if (filter && !filter(column, row)) {\n        return;\n      }\n\n      const x = xBeginning + column * dotSize * (count - 7);\n      const y = yBeginning + row * dotSize * (count - 7);\n\n      if (options.cornersSquareOptions?.type) {\n        const cornersSquare = new QRCornerSquare({ context: canvasContext, type: options.cornersSquareOptions?.type });\n\n        canvasContext.beginPath();\n        cornersSquare.draw(x, y, cornersSquareSize, rotation);\n      } else {\n        const dot = new QRDot({ context: canvasContext, type: options.dotsOptions.type });\n\n        canvasContext.beginPath();\n\n        for (let i = 0; i < squareMask.length; i++) {\n          for (let j = 0; j < squareMask[i].length; j++) {\n            if (!squareMask[i]?.[j]) {\n              continue;\n            }\n\n            dot.draw(\n              x + i * dotSize,\n              y + j * dotSize,\n              dotSize,\n              (xOffset: number, yOffset: number): boolean => !!squareMask[i + xOffset]?.[j + yOffset]\n            );\n          }\n        }\n      }\n\n      if (options.cornersSquareOptions?.gradient) {\n        const gradientOptions = options.cornersSquareOptions.gradient;\n        const gradient = this._createGradient({\n          context: canvasContext,\n          options: gradientOptions,\n          additionalRotation: rotation,\n          x,\n          y,\n          size: cornersSquareSize\n        });\n\n        gradientOptions.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n          gradient.addColorStop(offset, color);\n        });\n\n        canvasContext.fillStyle = canvasContext.strokeStyle = gradient;\n      } else if (options.cornersSquareOptions?.color) {\n        canvasContext.fillStyle = canvasContext.strokeStyle = options.cornersSquareOptions.color;\n      }\n\n      canvasContext.fill(\"evenodd\");\n\n      if (options.cornersDotOptions?.type) {\n        const cornersDot = new QRCornerDot({ context: canvasContext, type: options.cornersDotOptions?.type });\n\n        canvasContext.beginPath();\n        cornersDot.draw(x + dotSize * 2, y + dotSize * 2, cornersDotSize, rotation);\n      } else {\n        const dot = new QRDot({ context: canvasContext, type: options.dotsOptions.type });\n\n        canvasContext.beginPath();\n\n        for (let i = 0; i < dotMask.length; i++) {\n          for (let j = 0; j < dotMask[i].length; j++) {\n            if (!dotMask[i]?.[j]) {\n              continue;\n            }\n\n            dot.draw(\n              x + i * dotSize,\n              y + j * dotSize,\n              dotSize,\n              (xOffset: number, yOffset: number): boolean => !!dotMask[i + xOffset]?.[j + yOffset]\n            );\n          }\n        }\n      }\n\n      if (options.cornersDotOptions?.gradient) {\n        const gradientOptions = options.cornersDotOptions.gradient;\n        const gradient = this._createGradient({\n          context: canvasContext,\n          options: gradientOptions,\n          additionalRotation: rotation,\n          x: x + dotSize * 2,\n          y: y + dotSize * 2,\n          size: cornersDotSize\n        });\n\n        gradientOptions.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n          gradient.addColorStop(offset, color);\n        });\n\n        canvasContext.fillStyle = canvasContext.strokeStyle = gradient;\n      } else if (options.cornersDotOptions?.color) {\n        canvasContext.fillStyle = canvasContext.strokeStyle = options.cornersDotOptions.color;\n      }\n\n      canvasContext.fill(\"evenodd\");\n    });\n  }\n\n  loadImage(): Promise<void> {\n    return new Promise((resolve, reject) => {\n      const options = this._options;\n      const image = new Image();\n\n      if (!options.image) {\n        return reject(\"Image is not defined\");\n      }\n\n      if (typeof options.imageOptions.crossOrigin === \"string\") {\n        image.crossOrigin = options.imageOptions.crossOrigin;\n      }\n\n      this._image = image;\n      image.onload = (): void => {\n        resolve();\n      };\n      image.src = options.image;\n    });\n  }\n\n  drawImage({\n    width,\n    height,\n    count,\n    dotSize\n  }: {\n    width: number;\n    height: number;\n    count: number;\n    dotSize: number;\n  }): void {\n    const canvasContext = this.context;\n\n    if (!canvasContext) {\n      throw \"canvasContext is not defined\";\n    }\n\n    if (!this._image) {\n      throw \"image is not defined\";\n    }\n\n    const options = this._options;\n    const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n    const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n    const dx = xBeginning + options.imageOptions.margin + (count * dotSize - width) / 2;\n    const dy = yBeginning + options.imageOptions.margin + (count * dotSize - height) / 2;\n    const dw = width - options.imageOptions.margin * 2;\n    const dh = height - options.imageOptions.margin * 2;\n\n    canvasContext.drawImage(this._image, dx, dy, dw < 0 ? 0 : dw, dh < 0 ? 0 : dh);\n  }\n\n  _createGradient({\n    context,\n    options,\n    additionalRotation,\n    x,\n    y,\n    size\n  }: {\n    context: CanvasRenderingContext2D;\n    options: Gradient;\n    additionalRotation: number;\n    x: number;\n    y: number;\n    size: number;\n  }): CanvasGradient {\n    let gradient;\n\n    if (options.type === gradientTypes.radial) {\n      gradient = context.createRadialGradient(x + size / 2, y + size / 2, 0, x + size / 2, y + size / 2, size / 2);\n    } else {\n      const rotation = ((options.rotation || 0) + additionalRotation) % (2 * Math.PI);\n      const positiveRotation = (rotation + 2 * Math.PI) % (2 * Math.PI);\n      let x0 = x + size / 2;\n      let y0 = y + size / 2;\n      let x1 = x + size / 2;\n      let y1 = y + size / 2;\n\n      if (\n        (positiveRotation >= 0 && positiveRotation <= 0.25 * Math.PI) ||\n        (positiveRotation > 1.75 * Math.PI && positiveRotation <= 2 * Math.PI)\n      ) {\n        x0 = x0 - size / 2;\n        y0 = y0 - (size / 2) * Math.tan(rotation);\n        x1 = x1 + size / 2;\n        y1 = y1 + (size / 2) * Math.tan(rotation);\n      } else if (positiveRotation > 0.25 * Math.PI && positiveRotation <= 0.75 * Math.PI) {\n        y0 = y0 - size / 2;\n        x0 = x0 - size / 2 / Math.tan(rotation);\n        y1 = y1 + size / 2;\n        x1 = x1 + size / 2 / Math.tan(rotation);\n      } else if (positiveRotation > 0.75 * Math.PI && positiveRotation <= 1.25 * Math.PI) {\n        x0 = x0 + size / 2;\n        y0 = y0 + (size / 2) * Math.tan(rotation);\n        x1 = x1 - size / 2;\n        y1 = y1 - (size / 2) * Math.tan(rotation);\n      } else if (positiveRotation > 1.25 * Math.PI && positiveRotation <= 1.75 * Math.PI) {\n        y0 = y0 + size / 2;\n        x0 = x0 + size / 2 / Math.tan(rotation);\n        y1 = y1 - size / 2;\n        x1 = x1 - size / 2 / Math.tan(rotation);\n      }\n\n      gradient = context.createLinearGradient(Math.round(x0), Math.round(y0), Math.round(x1), Math.round(y1));\n    }\n\n    return gradient;\n  }\n}\n", "import dotTypes from \"../../../constants/dotTypes\";\nimport { DotType, GetNeighbor, DrawArgs, BasicFigureDrawArgs, RotateFigureArgs } from \"../../../types\";\n\nexport default class QRDot {\n  _element?: SVGElement;\n  _svg: SVGElement;\n  _type: DotType;\n\n  constructor({ svg, type }: { svg: SVGElement; type: DotType }) {\n    this._svg = svg;\n    this._type = type;\n  }\n\n  draw(x: number, y: number, size: number, getNeighbor: GetNeighbor): void {\n    const type = this._type;\n    let drawFunction;\n\n    switch (type) {\n      case dotTypes.dots:\n        drawFunction = this._drawDot;\n        break;\n      case dotTypes.classy:\n        drawFunction = this._drawClassy;\n        break;\n      case dotTypes.classyRounded:\n        drawFunction = this._drawClassyRounded;\n        break;\n      case dotTypes.rounded:\n        drawFunction = this._drawRounded;\n        break;\n      case dotTypes.extraRounded:\n        drawFunction = this._drawExtraRounded;\n        break;\n      case dotTypes.square:\n      default:\n        drawFunction = this._drawSquare;\n    }\n\n    drawFunction.call(this, { x, y, size, getNeighbor });\n  }\n\n  _rotateFigure({ x, y, size, rotation = 0, draw }: RotateFigureArgs): void {\n    const cx = x + size / 2;\n    const cy = y + size / 2;\n\n    draw();\n    this._element?.setAttribute(\"transform\", `rotate(${(180 * rotation) / Math.PI},${cx},${cy})`);\n  }\n\n  _basicDot(args: BasicFigureDrawArgs): void {\n    const { size, x, y } = args;\n\n    this._rotateFigure({\n      ...args,\n      draw: () => {\n        this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"circle\");\n        this._element.setAttribute(\"cx\", String(x + size / 2));\n        this._element.setAttribute(\"cy\", String(y + size / 2));\n        this._element.setAttribute(\"r\", String(size / 2));\n      }\n    });\n  }\n\n  _basicSquare(args: BasicFigureDrawArgs): void {\n    const { size, x, y } = args;\n\n    this._rotateFigure({\n      ...args,\n      draw: () => {\n        this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n        this._element.setAttribute(\"x\", String(x));\n        this._element.setAttribute(\"y\", String(y));\n        this._element.setAttribute(\"width\", String(size));\n        this._element.setAttribute(\"height\", String(size));\n      }\n    });\n  }\n\n  //if rotation === 0 - right side is rounded\n  _basicSideRounded(args: BasicFigureDrawArgs): void {\n    const { size, x, y } = args;\n\n    this._rotateFigure({\n      ...args,\n      draw: () => {\n        this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n        this._element.setAttribute(\n          \"d\",\n          `M ${x} ${y}` + //go to top left position\n            `v ${size}` + //draw line to left bottom corner\n            `h ${size / 2}` + //draw line to left bottom corner + half of size right\n            `a ${size / 2} ${size / 2}, 0, 0, 0, 0 ${-size}` // draw rounded corner\n        );\n      }\n    });\n  }\n\n  //if rotation === 0 - top right corner is rounded\n  _basicCornerRounded(args: BasicFigureDrawArgs): void {\n    const { size, x, y } = args;\n\n    this._rotateFigure({\n      ...args,\n      draw: () => {\n        this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n        this._element.setAttribute(\n          \"d\",\n          `M ${x} ${y}` + //go to top left position\n            `v ${size}` + //draw line to left bottom corner\n            `h ${size}` + //draw line to right bottom corner\n            `v ${-size / 2}` + //draw line to right bottom corner + half of size top\n            `a ${size / 2} ${size / 2}, 0, 0, 0, ${-size / 2} ${-size / 2}` // draw rounded corner\n        );\n      }\n    });\n  }\n\n  //if rotation === 0 - top right corner is rounded\n  _basicCornerExtraRounded(args: BasicFigureDrawArgs): void {\n    const { size, x, y } = args;\n\n    this._rotateFigure({\n      ...args,\n      draw: () => {\n        this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n        this._element.setAttribute(\n          \"d\",\n          `M ${x} ${y}` + //go to top left position\n            `v ${size}` + //draw line to left bottom corner\n            `h ${size}` + //draw line to right bottom corner\n            `a ${size} ${size}, 0, 0, 0, ${-size} ${-size}` // draw rounded top right corner\n        );\n      }\n    });\n  }\n\n  //if rotation === 0 - left bottom and right top corners are rounded\n  _basicCornersRounded(args: BasicFigureDrawArgs): void {\n    const { size, x, y } = args;\n\n    this._rotateFigure({\n      ...args,\n      draw: () => {\n        this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n        this._element.setAttribute(\n          \"d\",\n          `M ${x} ${y}` + //go to left top position\n            `v ${size / 2}` + //draw line to left top corner + half of size bottom\n            `a ${size / 2} ${size / 2}, 0, 0, 0, ${size / 2} ${size / 2}` + // draw rounded left bottom corner\n            `h ${size / 2}` + //draw line to right bottom corner\n            `v ${-size / 2}` + //draw line to right bottom corner + half of size top\n            `a ${size / 2} ${size / 2}, 0, 0, 0, ${-size / 2} ${-size / 2}` // draw rounded right top corner\n        );\n      }\n    });\n  }\n\n  _drawDot({ x, y, size }: DrawArgs): void {\n    this._basicDot({ x, y, size, rotation: 0 });\n  }\n\n  _drawSquare({ x, y, size }: DrawArgs): void {\n    this._basicSquare({ x, y, size, rotation: 0 });\n  }\n\n  _drawRounded({ x, y, size, getNeighbor }: DrawArgs): void {\n    const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n    const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n    const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n    const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n    const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n    if (neighborsCount === 0) {\n      this._basicDot({ x, y, size, rotation: 0 });\n      return;\n    }\n\n    if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\n      this._basicSquare({ x, y, size, rotation: 0 });\n      return;\n    }\n\n    if (neighborsCount === 2) {\n      let rotation = 0;\n\n      if (leftNeighbor && topNeighbor) {\n        rotation = Math.PI / 2;\n      } else if (topNeighbor && rightNeighbor) {\n        rotation = Math.PI;\n      } else if (rightNeighbor && bottomNeighbor) {\n        rotation = -Math.PI / 2;\n      }\n\n      this._basicCornerRounded({ x, y, size, rotation });\n      return;\n    }\n\n    if (neighborsCount === 1) {\n      let rotation = 0;\n\n      if (topNeighbor) {\n        rotation = Math.PI / 2;\n      } else if (rightNeighbor) {\n        rotation = Math.PI;\n      } else if (bottomNeighbor) {\n        rotation = -Math.PI / 2;\n      }\n\n      this._basicSideRounded({ x, y, size, rotation });\n      return;\n    }\n  }\n\n  _drawExtraRounded({ x, y, size, getNeighbor }: DrawArgs): void {\n    const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n    const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n    const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n    const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n    const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n    if (neighborsCount === 0) {\n      this._basicDot({ x, y, size, rotation: 0 });\n      return;\n    }\n\n    if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\n      this._basicSquare({ x, y, size, rotation: 0 });\n      return;\n    }\n\n    if (neighborsCount === 2) {\n      let rotation = 0;\n\n      if (leftNeighbor && topNeighbor) {\n        rotation = Math.PI / 2;\n      } else if (topNeighbor && rightNeighbor) {\n        rotation = Math.PI;\n      } else if (rightNeighbor && bottomNeighbor) {\n        rotation = -Math.PI / 2;\n      }\n\n      this._basicCornerExtraRounded({ x, y, size, rotation });\n      return;\n    }\n\n    if (neighborsCount === 1) {\n      let rotation = 0;\n\n      if (topNeighbor) {\n        rotation = Math.PI / 2;\n      } else if (rightNeighbor) {\n        rotation = Math.PI;\n      } else if (bottomNeighbor) {\n        rotation = -Math.PI / 2;\n      }\n\n      this._basicSideRounded({ x, y, size, rotation });\n      return;\n    }\n  }\n\n  _drawClassy({ x, y, size, getNeighbor }: DrawArgs): void {\n    const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n    const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n    const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n    const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n    const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n    if (neighborsCount === 0) {\n      this._basicCornersRounded({ x, y, size, rotation: Math.PI / 2 });\n      return;\n    }\n\n    if (!leftNeighbor && !topNeighbor) {\n      this._basicCornerRounded({ x, y, size, rotation: -Math.PI / 2 });\n      return;\n    }\n\n    if (!rightNeighbor && !bottomNeighbor) {\n      this._basicCornerRounded({ x, y, size, rotation: Math.PI / 2 });\n      return;\n    }\n\n    this._basicSquare({ x, y, size, rotation: 0 });\n  }\n\n  _drawClassyRounded({ x, y, size, getNeighbor }: DrawArgs): void {\n    const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n    const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n    const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n    const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n    const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n    if (neighborsCount === 0) {\n      this._basicCornersRounded({ x, y, size, rotation: Math.PI / 2 });\n      return;\n    }\n\n    if (!leftNeighbor && !topNeighbor) {\n      this._basicCornerExtraRounded({ x, y, size, rotation: -Math.PI / 2 });\n      return;\n    }\n\n    if (!rightNeighbor && !bottomNeighbor) {\n      this._basicCornerExtraRounded({ x, y, size, rotation: Math.PI / 2 });\n      return;\n    }\n\n    this._basicSquare({ x, y, size, rotation: 0 });\n  }\n}\n", "import cornerSquareTypes from \"../../../constants/cornerSquareTypes\";\nimport { CornerSquareType, DrawArgs, BasicFigureDrawArgs, RotateFigureArgs } from \"../../../types\";\n\nexport default class QRCornerSquare {\n  _element?: SVGElement;\n  _svg: SVGElement;\n  _type: CornerSquareType;\n\n  constructor({ svg, type }: { svg: SVGElement; type: CornerSquareType }) {\n    this._svg = svg;\n    this._type = type;\n  }\n\n  draw(x: number, y: number, size: number, rotation: number): void {\n    const type = this._type;\n    let drawFunction;\n\n    switch (type) {\n      case cornerSquareTypes.square:\n        drawFunction = this._drawSquare;\n        break;\n      case cornerSquareTypes.extraRounded:\n        drawFunction = this._drawExtraRounded;\n        break;\n      case cornerSquareTypes.dot:\n      default:\n        drawFunction = this._drawDot;\n    }\n\n    drawFunction.call(this, { x, y, size, rotation });\n  }\n\n  _rotateFigure({ x, y, size, rotation = 0, draw }: RotateFigureArgs): void {\n    const cx = x + size / 2;\n    const cy = y + size / 2;\n\n    draw();\n    this._element?.setAttribute(\"transform\", `rotate(${(180 * rotation) / Math.PI},${cx},${cy})`);\n  }\n\n  _basicDot(args: BasicFigureDrawArgs): void {\n    const { size, x, y } = args;\n    const dotSize = size / 7;\n\n    this._rotateFigure({\n      ...args,\n      draw: () => {\n        this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n        this._element.setAttribute(\"clip-rule\", \"evenodd\");\n        this._element.setAttribute(\n          \"d\",\n          `M ${x + size / 2} ${y}` + // M cx, y //  Move to top of ring\n            `a ${size / 2} ${size / 2} 0 1 0 0.1 0` + // a outerRadius, outerRadius, 0, 1, 0, 1, 0 // Draw outer arc, but don't close it\n            `z` + // Z // Close the outer shape\n            `m 0 ${dotSize}` + // m -1 outerRadius-innerRadius // Move to top point of inner radius\n            `a ${size / 2 - dotSize} ${size / 2 - dotSize} 0 1 1 -0.1 0` + // a innerRadius, innerRadius, 0, 1, 1, -1, 0 // Draw inner arc, but don't close it\n            `Z` // Z // Close the inner ring. Actually will still work without, but inner ring will have one unit missing in stroke\n        );\n      }\n    });\n  }\n\n  _basicSquare(args: BasicFigureDrawArgs): void {\n    const { size, x, y } = args;\n    const dotSize = size / 7;\n\n    this._rotateFigure({\n      ...args,\n      draw: () => {\n        this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n        this._element.setAttribute(\"clip-rule\", \"evenodd\");\n        this._element.setAttribute(\n          \"d\",\n          `M ${x} ${y}` +\n            `v ${size}` +\n            `h ${size}` +\n            `v ${-size}` +\n            `z` +\n            `M ${x + dotSize} ${y + dotSize}` +\n            `h ${size - 2 * dotSize}` +\n            `v ${size - 2 * dotSize}` +\n            `h ${-size + 2 * dotSize}` +\n            `z`\n        );\n      }\n    });\n  }\n\n  _basicExtraRounded(args: BasicFigureDrawArgs): void {\n    const { size, x, y } = args;\n    const dotSize = size / 7;\n\n    this._rotateFigure({\n      ...args,\n      draw: () => {\n        this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n        this._element.setAttribute(\"clip-rule\", \"evenodd\");\n        this._element.setAttribute(\n          \"d\",\n          `M ${x} ${y + 2.5 * dotSize}` +\n            `v ${2 * dotSize}` +\n            `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${dotSize * 2.5} ${dotSize * 2.5}` +\n            `h ${2 * dotSize}` +\n            `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${dotSize * 2.5} ${-dotSize * 2.5}` +\n            `v ${-2 * dotSize}` +\n            `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${-dotSize * 2.5} ${-dotSize * 2.5}` +\n            `h ${-2 * dotSize}` +\n            `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${-dotSize * 2.5} ${dotSize * 2.5}` +\n            `M ${x + 2.5 * dotSize} ${y + dotSize}` +\n            `h ${2 * dotSize}` +\n            `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${dotSize * 1.5} ${dotSize * 1.5}` +\n            `v ${2 * dotSize}` +\n            `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${-dotSize * 1.5} ${dotSize * 1.5}` +\n            `h ${-2 * dotSize}` +\n            `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${-dotSize * 1.5} ${-dotSize * 1.5}` +\n            `v ${-2 * dotSize}` +\n            `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${dotSize * 1.5} ${-dotSize * 1.5}`\n        );\n      }\n    });\n  }\n\n  _drawDot({ x, y, size, rotation }: DrawArgs): void {\n    this._basicDot({ x, y, size, rotation });\n  }\n\n  _drawSquare({ x, y, size, rotation }: DrawArgs): void {\n    this._basicSquare({ x, y, size, rotation });\n  }\n\n  _drawExtraRounded({ x, y, size, rotation }: DrawArgs): void {\n    this._basicExtraRounded({ x, y, size, rotation });\n  }\n}\n", "import cornerDotTypes from \"../../../constants/cornerDotTypes\";\nimport { CornerDotType, RotateFigureArgs, BasicFigureDrawArgs, DrawArgs } from \"../../../types\";\n\nexport default class QRCornerDot {\n  _element?: SVGElement;\n  _svg: SVGElement;\n  _type: CornerDotType;\n\n  constructor({ svg, type }: { svg: SVGElement; type: CornerDotType }) {\n    this._svg = svg;\n    this._type = type;\n  }\n\n  draw(x: number, y: number, size: number, rotation: number): void {\n    const type = this._type;\n    let drawFunction;\n\n    switch (type) {\n      case cornerDotTypes.square:\n        drawFunction = this._drawSquare;\n        break;\n      case cornerDotTypes.dot:\n      default:\n        drawFunction = this._drawDot;\n    }\n\n    drawFunction.call(this, { x, y, size, rotation });\n  }\n\n  _rotateFigure({ x, y, size, rotation = 0, draw }: RotateFigureArgs): void {\n    const cx = x + size / 2;\n    const cy = y + size / 2;\n\n    draw();\n    this._element?.setAttribute(\"transform\", `rotate(${(180 * rotation) / Math.PI},${cx},${cy})`);\n  }\n\n  _basicDot(args: BasicFigureDrawArgs): void {\n    const { size, x, y } = args;\n\n    this._rotateFigure({\n      ...args,\n      draw: () => {\n        this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"circle\");\n        this._element.setAttribute(\"cx\", String(x + size / 2));\n        this._element.setAttribute(\"cy\", String(y + size / 2));\n        this._element.setAttribute(\"r\", String(size / 2));\n      }\n    });\n  }\n\n  _basicSquare(args: BasicFigureDrawArgs): void {\n    const { size, x, y } = args;\n\n    this._rotateFigure({\n      ...args,\n      draw: () => {\n        this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n        this._element.setAttribute(\"x\", String(x));\n        this._element.setAttribute(\"y\", String(y));\n        this._element.setAttribute(\"width\", String(size));\n        this._element.setAttribute(\"height\", String(size));\n      }\n    });\n  }\n\n  _drawDot({ x, y, size, rotation }: DrawArgs): void {\n    this._basicDot({ x, y, size, rotation });\n  }\n\n  _drawSquare({ x, y, size, rotation }: DrawArgs): void {\n    this._basicSquare({ x, y, size, rotation });\n  }\n}\n", "import calculateImageSize from \"../tools/calculateImageSize\";\nimport errorCorrectionPercents from \"../constants/errorCorrectionPercents\";\nimport QRDot from \"../figures/dot/svg/QRDot\";\nimport QRCornerSquare from \"../figures/cornerSquare/svg/QRCornerSquare\";\nimport QRCornerDot from \"../figures/cornerDot/svg/QRCornerDot\";\nimport { RequiredOptions } from \"./QROptions\";\nimport gradientTypes from \"../constants/gradientTypes\";\nimport { QRCode, FilterFunction, Gradient } from \"../types\";\n\nconst squareMask = [\n  [1, 1, 1, 1, 1, 1, 1],\n  [1, 0, 0, 0, 0, 0, 1],\n  [1, 0, 0, 0, 0, 0, 1],\n  [1, 0, 0, 0, 0, 0, 1],\n  [1, 0, 0, 0, 0, 0, 1],\n  [1, 0, 0, 0, 0, 0, 1],\n  [1, 1, 1, 1, 1, 1, 1]\n];\n\nconst dotMask = [\n  [0, 0, 0, 0, 0, 0, 0],\n  [0, 0, 0, 0, 0, 0, 0],\n  [0, 0, 1, 1, 1, 0, 0],\n  [0, 0, 1, 1, 1, 0, 0],\n  [0, 0, 1, 1, 1, 0, 0],\n  [0, 0, 0, 0, 0, 0, 0],\n  [0, 0, 0, 0, 0, 0, 0]\n];\n\nexport default class QRSVG {\n  _element: SVGElement;\n  _defs: SVGElement;\n  _dotsClipPath?: SVGElement;\n  _cornersSquareClipPath?: SVGElement;\n  _cornersDotClipPath?: SVGElement;\n  _options: RequiredOptions;\n  _qr?: QRCode;\n  _image?: HTMLImageElement;\n\n  //TODO don't pass all options to this class\n  constructor(options: RequiredOptions) {\n    this._element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n    this._element.setAttribute(\"width\", String(options.width));\n    this._element.setAttribute(\"height\", String(options.height));\n    this._defs = document.createElementNS(\"http://www.w3.org/2000/svg\", \"defs\");\n    this._element.appendChild(this._defs);\n\n    this._options = options;\n  }\n\n  get width(): number {\n    return this._options.width;\n  }\n\n  get height(): number {\n    return this._options.height;\n  }\n\n  getElement(): SVGElement {\n    return this._element;\n  }\n\n  clear(): void {\n    const oldElement = this._element;\n    this._element = oldElement.cloneNode(false) as SVGElement;\n    oldElement?.parentNode?.replaceChild(this._element, oldElement);\n    this._defs = document.createElementNS(\"http://www.w3.org/2000/svg\", \"defs\");\n    this._element.appendChild(this._defs);\n  }\n\n  async drawQR(qr: QRCode): Promise<void> {\n    const count = qr.getModuleCount();\n    const minSize = Math.min(this._options.width, this._options.height) - this._options.margin * 2;\n    const dotSize = Math.floor(minSize / count);\n    let drawImageSize = {\n      hideXDots: 0,\n      hideYDots: 0,\n      width: 0,\n      height: 0\n    };\n\n    this._qr = qr;\n\n    if (this._options.image) {\n      //We need it to get image size\n      await this.loadImage();\n      if (!this._image) return;\n      const { imageOptions, qrOptions } = this._options;\n      const coverLevel = imageOptions.imageSize * errorCorrectionPercents[qrOptions.errorCorrectionLevel];\n      const maxHiddenDots = Math.floor(coverLevel * count * count);\n\n      drawImageSize = calculateImageSize({\n        originalWidth: this._image.width,\n        originalHeight: this._image.height,\n        maxHiddenDots,\n        maxHiddenAxisDots: count - 14,\n        dotSize\n      });\n    }\n\n    this.clear();\n    this.drawBackground();\n    this.drawDots((i: number, j: number): boolean => {\n      if (this._options.imageOptions.hideBackgroundDots) {\n        if (\n          i >= (count - drawImageSize.hideXDots) / 2 &&\n          i < (count + drawImageSize.hideXDots) / 2 &&\n          j >= (count - drawImageSize.hideYDots) / 2 &&\n          j < (count + drawImageSize.hideYDots) / 2\n        ) {\n          return false;\n        }\n      }\n\n      if (squareMask[i]?.[j] || squareMask[i - count + 7]?.[j] || squareMask[i]?.[j - count + 7]) {\n        return false;\n      }\n\n      if (dotMask[i]?.[j] || dotMask[i - count + 7]?.[j] || dotMask[i]?.[j - count + 7]) {\n        return false;\n      }\n\n      return true;\n    });\n    this.drawCorners();\n\n    if (this._options.image) {\n      this.drawImage({ width: drawImageSize.width, height: drawImageSize.height, count, dotSize });\n    }\n  }\n\n  drawBackground(): void {\n    const element = this._element;\n    const options = this._options;\n\n    if (element) {\n      const gradientOptions = options.backgroundOptions?.gradient;\n      const color = options.backgroundOptions?.color;\n\n      if (gradientOptions || color) {\n        this._createColor({\n          options: gradientOptions,\n          color: color,\n          additionalRotation: 0,\n          x: 0,\n          y: 0,\n          height: options.height,\n          width: options.width,\n          name: \"background-color\"\n        });\n      }\n    }\n  }\n\n  drawDots(filter?: FilterFunction): void {\n    if (!this._qr) {\n      throw \"QR code is not defined\";\n    }\n\n    const options = this._options;\n    const count = this._qr.getModuleCount();\n\n    if (count > options.width || count > options.height) {\n      throw \"The canvas is too small.\";\n    }\n\n    const minSize = Math.min(options.width, options.height) - options.margin * 2;\n    const dotSize = Math.floor(minSize / count);\n    const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n    const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n    const dot = new QRDot({ svg: this._element, type: options.dotsOptions.type });\n\n    this._dotsClipPath = document.createElementNS(\"http://www.w3.org/2000/svg\", \"clipPath\");\n    this._dotsClipPath.setAttribute(\"id\", \"clip-path-dot-color\");\n    this._defs.appendChild(this._dotsClipPath);\n\n    this._createColor({\n      options: options.dotsOptions?.gradient,\n      color: options.dotsOptions.color,\n      additionalRotation: 0,\n      x: xBeginning,\n      y: yBeginning,\n      height: count * dotSize,\n      width: count * dotSize,\n      name: \"dot-color\"\n    });\n\n    for (let i = 0; i < count; i++) {\n      for (let j = 0; j < count; j++) {\n        if (filter && !filter(i, j)) {\n          continue;\n        }\n        if (!this._qr?.isDark(i, j)) {\n          continue;\n        }\n\n        dot.draw(\n          xBeginning + i * dotSize,\n          yBeginning + j * dotSize,\n          dotSize,\n          (xOffset: number, yOffset: number): boolean => {\n            if (i + xOffset < 0 || j + yOffset < 0 || i + xOffset >= count || j + yOffset >= count) return false;\n            if (filter && !filter(i + xOffset, j + yOffset)) return false;\n            return !!this._qr && this._qr.isDark(i + xOffset, j + yOffset);\n          }\n        );\n\n        if (dot._element && this._dotsClipPath) {\n          this._dotsClipPath.appendChild(dot._element);\n        }\n      }\n    }\n  }\n\n  drawCorners(): void {\n    if (!this._qr) {\n      throw \"QR code is not defined\";\n    }\n\n    const element = this._element;\n    const options = this._options;\n\n    if (!element) {\n      throw \"Element code is not defined\";\n    }\n\n    const count = this._qr.getModuleCount();\n    const minSize = Math.min(options.width, options.height) - options.margin * 2;\n    const dotSize = Math.floor(minSize / count);\n    const cornersSquareSize = dotSize * 7;\n    const cornersDotSize = dotSize * 3;\n    const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n    const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n\n    [\n      [0, 0, 0],\n      [1, 0, Math.PI / 2],\n      [0, 1, -Math.PI / 2]\n    ].forEach(([column, row, rotation]) => {\n      const x = xBeginning + column * dotSize * (count - 7);\n      const y = yBeginning + row * dotSize * (count - 7);\n      let cornersSquareClipPath = this._dotsClipPath;\n      let cornersDotClipPath = this._dotsClipPath;\n\n      if (options.cornersSquareOptions?.gradient || options.cornersSquareOptions?.color) {\n        cornersSquareClipPath = document.createElementNS(\"http://www.w3.org/2000/svg\", \"clipPath\");\n        cornersSquareClipPath.setAttribute(\"id\", `clip-path-corners-square-color-${column}-${row}`);\n        this._defs.appendChild(cornersSquareClipPath);\n        this._cornersSquareClipPath = this._cornersDotClipPath = cornersDotClipPath = cornersSquareClipPath;\n\n        this._createColor({\n          options: options.cornersSquareOptions?.gradient,\n          color: options.cornersSquareOptions?.color,\n          additionalRotation: rotation,\n          x,\n          y,\n          height: cornersSquareSize,\n          width: cornersSquareSize,\n          name: `corners-square-color-${column}-${row}`\n        });\n      }\n\n      if (options.cornersSquareOptions?.type) {\n        const cornersSquare = new QRCornerSquare({ svg: this._element, type: options.cornersSquareOptions.type });\n\n        cornersSquare.draw(x, y, cornersSquareSize, rotation);\n\n        if (cornersSquare._element && cornersSquareClipPath) {\n          cornersSquareClipPath.appendChild(cornersSquare._element);\n        }\n      } else {\n        const dot = new QRDot({ svg: this._element, type: options.dotsOptions.type });\n\n        for (let i = 0; i < squareMask.length; i++) {\n          for (let j = 0; j < squareMask[i].length; j++) {\n            if (!squareMask[i]?.[j]) {\n              continue;\n            }\n\n            dot.draw(\n              x + i * dotSize,\n              y + j * dotSize,\n              dotSize,\n              (xOffset: number, yOffset: number): boolean => !!squareMask[i + xOffset]?.[j + yOffset]\n            );\n\n            if (dot._element && cornersSquareClipPath) {\n              cornersSquareClipPath.appendChild(dot._element);\n            }\n          }\n        }\n      }\n\n      if (options.cornersDotOptions?.gradient || options.cornersDotOptions?.color) {\n        cornersDotClipPath = document.createElementNS(\"http://www.w3.org/2000/svg\", \"clipPath\");\n        cornersDotClipPath.setAttribute(\"id\", `clip-path-corners-dot-color-${column}-${row}`);\n        this._defs.appendChild(cornersDotClipPath);\n        this._cornersDotClipPath = cornersDotClipPath;\n\n        this._createColor({\n          options: options.cornersDotOptions?.gradient,\n          color: options.cornersDotOptions?.color,\n          additionalRotation: rotation,\n          x: x + dotSize * 2,\n          y: y + dotSize * 2,\n          height: cornersDotSize,\n          width: cornersDotSize,\n          name: `corners-dot-color-${column}-${row}`\n        });\n      }\n\n      if (options.cornersDotOptions?.type) {\n        const cornersDot = new QRCornerDot({ svg: this._element, type: options.cornersDotOptions.type });\n\n        cornersDot.draw(x + dotSize * 2, y + dotSize * 2, cornersDotSize, rotation);\n\n        if (cornersDot._element && cornersDotClipPath) {\n          cornersDotClipPath.appendChild(cornersDot._element);\n        }\n      } else {\n        const dot = new QRDot({ svg: this._element, type: options.dotsOptions.type });\n\n        for (let i = 0; i < dotMask.length; i++) {\n          for (let j = 0; j < dotMask[i].length; j++) {\n            if (!dotMask[i]?.[j]) {\n              continue;\n            }\n\n            dot.draw(\n              x + i * dotSize,\n              y + j * dotSize,\n              dotSize,\n              (xOffset: number, yOffset: number): boolean => !!dotMask[i + xOffset]?.[j + yOffset]\n            );\n\n            if (dot._element && cornersDotClipPath) {\n              cornersDotClipPath.appendChild(dot._element);\n            }\n          }\n        }\n      }\n    });\n  }\n\n  loadImage(): Promise<void> {\n    return new Promise((resolve, reject) => {\n      const options = this._options;\n      const image = new Image();\n\n      if (!options.image) {\n        return reject(\"Image is not defined\");\n      }\n\n      if (typeof options.imageOptions.crossOrigin === \"string\") {\n        image.crossOrigin = options.imageOptions.crossOrigin;\n      }\n\n      this._image = image;\n      image.onload = (): void => {\n        resolve();\n      };\n      image.src = options.image;\n    });\n  }\n\n  drawImage({\n    width,\n    height,\n    count,\n    dotSize\n  }: {\n    width: number;\n    height: number;\n    count: number;\n    dotSize: number;\n  }): void {\n    const options = this._options;\n    const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n    const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n    const dx = xBeginning + options.imageOptions.margin + (count * dotSize - width) / 2;\n    const dy = yBeginning + options.imageOptions.margin + (count * dotSize - height) / 2;\n    const dw = width - options.imageOptions.margin * 2;\n    const dh = height - options.imageOptions.margin * 2;\n\n    const image = document.createElementNS(\"http://www.w3.org/2000/svg\", \"image\");\n    image.setAttribute(\"href\", options.image || \"\");\n    image.setAttribute(\"x\", String(dx));\n    image.setAttribute(\"y\", String(dy));\n    image.setAttribute(\"width\", `${dw}px`);\n    image.setAttribute(\"height\", `${dh}px`);\n\n    this._element.appendChild(image);\n  }\n\n  _createColor({\n    options,\n    color,\n    additionalRotation,\n    x,\n    y,\n    height,\n    width,\n    name\n  }: {\n    options?: Gradient;\n    color?: string;\n    additionalRotation: number;\n    x: number;\n    y: number;\n    height: number;\n    width: number;\n    name: string;\n  }): void {\n    const size = width > height ? width : height;\n    const rect = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n    rect.setAttribute(\"x\", String(x));\n    rect.setAttribute(\"y\", String(y));\n    rect.setAttribute(\"height\", String(height));\n    rect.setAttribute(\"width\", String(width));\n    rect.setAttribute(\"clip-path\", `url('#clip-path-${name}')`);\n\n    if (options) {\n      let gradient: SVGElement;\n      if (options.type === gradientTypes.radial) {\n        gradient = document.createElementNS(\"http://www.w3.org/2000/svg\", \"radialGradient\");\n        gradient.setAttribute(\"id\", name);\n        gradient.setAttribute(\"gradientUnits\", \"userSpaceOnUse\");\n        gradient.setAttribute(\"fx\", String(x + width / 2));\n        gradient.setAttribute(\"fy\", String(y + height / 2));\n        gradient.setAttribute(\"cx\", String(x + width / 2));\n        gradient.setAttribute(\"cy\", String(y + height / 2));\n        gradient.setAttribute(\"r\", String(size / 2));\n      } else {\n        const rotation = ((options.rotation || 0) + additionalRotation) % (2 * Math.PI);\n        const positiveRotation = (rotation + 2 * Math.PI) % (2 * Math.PI);\n        let x0 = x + width / 2;\n        let y0 = y + height / 2;\n        let x1 = x + width / 2;\n        let y1 = y + height / 2;\n\n        if (\n          (positiveRotation >= 0 && positiveRotation <= 0.25 * Math.PI) ||\n          (positiveRotation > 1.75 * Math.PI && positiveRotation <= 2 * Math.PI)\n        ) {\n          x0 = x0 - width / 2;\n          y0 = y0 - (height / 2) * Math.tan(rotation);\n          x1 = x1 + width / 2;\n          y1 = y1 + (height / 2) * Math.tan(rotation);\n        } else if (positiveRotation > 0.25 * Math.PI && positiveRotation <= 0.75 * Math.PI) {\n          y0 = y0 - height / 2;\n          x0 = x0 - width / 2 / Math.tan(rotation);\n          y1 = y1 + height / 2;\n          x1 = x1 + width / 2 / Math.tan(rotation);\n        } else if (positiveRotation > 0.75 * Math.PI && positiveRotation <= 1.25 * Math.PI) {\n          x0 = x0 + width / 2;\n          y0 = y0 + (height / 2) * Math.tan(rotation);\n          x1 = x1 - width / 2;\n          y1 = y1 - (height / 2) * Math.tan(rotation);\n        } else if (positiveRotation > 1.25 * Math.PI && positiveRotation <= 1.75 * Math.PI) {\n          y0 = y0 + height / 2;\n          x0 = x0 + width / 2 / Math.tan(rotation);\n          y1 = y1 - height / 2;\n          x1 = x1 - width / 2 / Math.tan(rotation);\n        }\n\n        gradient = document.createElementNS(\"http://www.w3.org/2000/svg\", \"linearGradient\");\n        gradient.setAttribute(\"id\", name);\n        gradient.setAttribute(\"gradientUnits\", \"userSpaceOnUse\");\n        gradient.setAttribute(\"x1\", String(Math.round(x0)));\n        gradient.setAttribute(\"y1\", String(Math.round(y0)));\n        gradient.setAttribute(\"x2\", String(Math.round(x1)));\n        gradient.setAttribute(\"y2\", String(Math.round(y1)));\n      }\n\n      options.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n        const stop = document.createElementNS(\"http://www.w3.org/2000/svg\", \"stop\");\n        stop.setAttribute(\"offset\", `${100 * offset}%`);\n        stop.setAttribute(\"stop-color\", color);\n        gradient.appendChild(stop);\n      });\n\n      rect.setAttribute(\"fill\", `url('#${name}')`);\n      this._defs.appendChild(gradient);\n    } else if (color) {\n      rect.setAttribute(\"fill\", color);\n    }\n\n    this._element.appendChild(rect);\n  }\n}\n", "import { DrawTypes } from \"../types\";\n\nexport default {\n  canvas: \"canvas\",\n  svg: \"svg\"\n} as DrawTypes;\n", "import { TypeNumber } from \"../types\";\n\ninterface TypesMap {\n  [key: number]: TypeNumber;\n}\n\nconst qrTypes: TypesMap = {};\n\nfor (let type = 0; type <= 40; type++) {\n  qrTypes[type] = type as TypeNumber;\n}\n\n// 0 types is autodetect\n\n// types = {\n//     0: 0,\n//     1: 1,\n//     ...\n//     40: 40\n// }\n\nexport default qrTypes;\n", "import qrTypes from \"../constants/qrTypes\";\nimport drawTypes from \"../constants/drawTypes\";\nimport errorCorrectionLevels from \"../constants/errorCorrectionLevels\";\nimport { DotType, Options, TypeNumber, ErrorCorrectionLevel, Mode, DrawType, Gradient } from \"../types\";\n\nexport interface RequiredOptions extends Options {\n  type: DrawType;\n  width: number;\n  height: number;\n  margin: number;\n  data: string;\n  qrOptions: {\n    typeNumber: TypeNumber;\n    mode?: Mode;\n    errorCorrectionLevel: ErrorCorrectionLevel;\n  };\n  imageOptions: {\n    hideBackgroundDots: boolean;\n    imageSize: number;\n    crossOrigin?: string;\n    margin: number;\n  };\n  dotsOptions: {\n    type: DotType;\n    color: string;\n    gradient?: Gradient;\n  };\n  backgroundOptions: {\n    color: string;\n    gradient?: Gradient;\n  };\n}\n\nconst defaultOptions: RequiredOptions = {\n  type: drawTypes.canvas,\n  width: 300,\n  height: 300,\n  data: \"\",\n  margin: 0,\n  qrOptions: {\n    typeNumber: qrTypes[0],\n    mode: undefined,\n    errorCorrectionLevel: errorCorrectionLevels.Q\n  },\n  imageOptions: {\n    hideBackgroundDots: true,\n    imageSize: 0.4,\n    crossOrigin: undefined,\n    margin: 0\n  },\n  dotsOptions: {\n    type: \"square\",\n    color: \"#000\"\n  },\n  backgroundOptions: {\n    color: \"#fff\"\n  }\n};\n\nexport default defaultOptions;\n", "import { ErrorCorrectionLevel } from \"../types\";\n\ninterface ErrorCorrectionLevels {\n  [key: string]: ErrorCorrectionLevel;\n}\n\nexport default {\n  L: \"L\",\n  M: \"M\",\n  Q: \"Q\",\n  H: \"H\"\n} as ErrorCorrectionLevels;\n", "import { RequiredOptions } from \"../core/QROptions\";\nimport { Gradient } from \"../types\";\n\nfunction sanitizeGradient(gradient: Gradient): Gradient {\n  const newGradient = { ...gradient };\n\n  if (!newGradient.colorStops || !newGradient.colorStops.length) {\n    throw \"Field 'colorStops' is required in gradient\";\n  }\n\n  if (newGradient.rotation) {\n    newGradient.rotation = Number(newGradient.rotation);\n  } else {\n    newGradient.rotation = 0;\n  }\n\n  newGradient.colorStops = newGradient.colorStops.map((colorStop: { offset: number; color: string }) => ({\n    ...colorStop,\n    offset: Number(colorStop.offset)\n  }));\n\n  return newGradient;\n}\n\nexport default function sanitizeOptions(options: RequiredOptions): RequiredOptions {\n  const newOptions = { ...options };\n\n  newOptions.width = Number(newOptions.width);\n  newOptions.height = Number(newOptions.height);\n  newOptions.margin = Number(newOptions.margin);\n  newOptions.imageOptions = {\n    ...newOptions.imageOptions,\n    hideBackgroundDots: Boolean(newOptions.imageOptions.hideBackgroundDots),\n    imageSize: Number(newOptions.imageOptions.imageSize),\n    margin: Number(newOptions.imageOptions.margin)\n  };\n\n  if (newOptions.margin > Math.min(newOptions.width, newOptions.height)) {\n    newOptions.margin = Math.min(newOptions.width, newOptions.height);\n  }\n\n  newOptions.dotsOptions = {\n    ...newOptions.dotsOptions\n  };\n  if (newOptions.dotsOptions.gradient) {\n    newOptions.dotsOptions.gradient = sanitizeGradient(newOptions.dotsOptions.gradient);\n  }\n\n  if (newOptions.cornersSquareOptions) {\n    newOptions.cornersSquareOptions = {\n      ...newOptions.cornersSquareOptions\n    };\n    if (newOptions.cornersSquareOptions.gradient) {\n      newOptions.cornersSquareOptions.gradient = sanitizeGradient(newOptions.cornersSquareOptions.gradient);\n    }\n  }\n\n  if (newOptions.cornersDotOptions) {\n    newOptions.cornersDotOptions = {\n      ...newOptions.cornersDotOptions\n    };\n    if (newOptions.cornersDotOptions.gradient) {\n      newOptions.cornersDotOptions.gradient = sanitizeGradient(newOptions.cornersDotOptions.gradient);\n    }\n  }\n\n  if (newOptions.backgroundOptions) {\n    newOptions.backgroundOptions = {\n      ...newOptions.backgroundOptions\n    };\n    if (newOptions.backgroundOptions.gradient) {\n      newOptions.backgroundOptions.gradient = sanitizeGradient(newOptions.backgroundOptions.gradient);\n    }\n  }\n\n  return newOptions;\n}\n", "import QRCodeStyling from \"./core/QRCodeStyling\";\nimport dotTypes from \"./constants/dotTypes\";\nimport cornerDotTypes from \"./constants/cornerDotTypes\";\nimport cornerSquareTypes from \"./constants/cornerSquareTypes\";\nimport errorCorrectionLevels from \"./constants/errorCorrectionLevels\";\nimport errorCorrectionPercents from \"./constants/errorCorrectionPercents\";\nimport modes from \"./constants/modes\";\nimport qrTypes from \"./constants/qrTypes\";\nimport drawTypes from \"./constants/drawTypes\";\n\nexport * from \"./types\";\n\nexport {\n  dotTypes,\n  cornerDotTypes,\n  cornerSquareTypes,\n  errorCorrectionLevels,\n  errorCorrectionPercents,\n  modes,\n  qrTypes,\n  drawTypes\n};\n\nexport default QRCodeStyling;\n", "import getMode from \"../tools/getMode\";\nimport mergeDeep from \"../tools/merge\";\nimport downloadURI from \"../tools/downloadURI\";\nimport QRCanvas from \"./QRCanvas\";\nimport QRSVG from \"./QRSVG\";\nimport drawTypes from \"../constants/drawTypes\";\n\nimport defaultOptions, { RequiredOptions } from \"./QROptions\";\nimport sanitizeOptions from \"../tools/sanitizeOptions\";\nimport { Extension, QRCode, Options, DownloadOptions } from \"../types\";\nimport qrcode from \"qrcode-generator\";\n\nexport default class QRCodeStyling {\n  _options: RequiredOptions;\n  _container?: HTMLElement;\n  _canvas?: QRCanvas;\n  _svg?: QRSVG;\n  _qr?: QRCode;\n  _canvasDrawingPromise?: Promise<void>;\n  _svgDrawingPromise?: Promise<void>;\n\n  constructor(options?: Partial<Options>) {\n    this._options = options ? sanitizeOptions(mergeDeep(defaultOptions, options) as RequiredOptions) : defaultOptions;\n    this.update();\n  }\n\n  static _clearContainer(container?: HTMLElement): void {\n    if (container) {\n      container.innerHTML = \"\";\n    }\n  }\n\n  async _getQRStylingElement(extension: Extension = \"png\"): Promise<QRCanvas | QRSVG> {\n    if (!this._qr) throw \"QR code is empty\";\n\n    if (extension.toLowerCase() === \"svg\") {\n      let promise, svg: QRSVG;\n\n      if (this._svg && this._svgDrawingPromise) {\n        svg = this._svg;\n        promise = this._svgDrawingPromise;\n      } else {\n        svg = new QRSVG(this._options);\n        promise = svg.drawQR(this._qr);\n      }\n\n      await promise;\n\n      return svg;\n    } else {\n      let promise, canvas: QRCanvas;\n\n      if (this._canvas && this._canvasDrawingPromise) {\n        canvas = this._canvas;\n        promise = this._canvasDrawingPromise;\n      } else {\n        canvas = new QRCanvas(this._options);\n        promise = canvas.drawQR(this._qr);\n      }\n\n      await promise;\n\n      return canvas;\n    }\n  }\n\n  update(options?: Partial<Options>): void {\n    QRCodeStyling._clearContainer(this._container);\n    this._options = options ? sanitizeOptions(mergeDeep(this._options, options) as RequiredOptions) : this._options;\n\n    if (!this._options.data) {\n      return;\n    }\n\n    this._qr = qrcode(this._options.qrOptions.typeNumber, this._options.qrOptions.errorCorrectionLevel);\n    this._qr.addData(this._options.data, this._options.qrOptions.mode || getMode(this._options.data));\n    this._qr.make();\n\n    if (this._options.type === drawTypes.canvas) {\n      this._canvas = new QRCanvas(this._options);\n      this._canvasDrawingPromise = this._canvas.drawQR(this._qr);\n      this._svgDrawingPromise = undefined;\n      this._svg = undefined;\n    } else {\n      this._svg = new QRSVG(this._options);\n      this._svgDrawingPromise = this._svg.drawQR(this._qr);\n      this._canvasDrawingPromise = undefined;\n      this._canvas = undefined;\n    }\n\n    this.append(this._container);\n  }\n\n  append(container?: HTMLElement): void {\n    if (!container) {\n      return;\n    }\n\n    if (typeof container.appendChild !== \"function\") {\n      throw \"Container should be a single DOM node\";\n    }\n\n    if (this._options.type === drawTypes.canvas) {\n      if (this._canvas) {\n        container.appendChild(this._canvas.getCanvas());\n      }\n    } else {\n      if (this._svg) {\n        container.appendChild(this._svg.getElement());\n      }\n    }\n\n    this._container = container;\n  }\n\n  async getRawData(extension: Extension = \"png\"): Promise<Blob | null> {\n    if (!this._qr) throw \"QR code is empty\";\n    const element = await this._getQRStylingElement(extension);\n\n    if (extension.toLowerCase() === \"svg\") {\n      const serializer = new XMLSerializer();\n      const source = serializer.serializeToString(((element as unknown) as QRSVG).getElement());\n\n      return new Blob(['<?xml version=\"1.0\" standalone=\"no\"?>\\r\\n' + source], { type: \"image/svg+xml\" });\n    } else {\n      return new Promise((resolve) =>\n        ((element as unknown) as QRCanvas).getCanvas().toBlob(resolve, `image/${extension}`, 1)\n      );\n    }\n  }\n\n  async download(downloadOptions?: Partial<DownloadOptions> | string): Promise<void> {\n    if (!this._qr) throw \"QR code is empty\";\n    let extension = \"png\" as Extension;\n    let name = \"qr\";\n\n    //TODO remove deprecated code in the v2\n    if (typeof downloadOptions === \"string\") {\n      extension = downloadOptions as Extension;\n      console.warn(\n        \"Extension is deprecated as argument for 'download' method, please pass object { name: '...', extension: '...' } as argument\"\n      );\n    } else if (typeof downloadOptions === \"object\" && downloadOptions !== null) {\n      if (downloadOptions.name) {\n        name = downloadOptions.name;\n      }\n      if (downloadOptions.extension) {\n        extension = downloadOptions.extension;\n      }\n    }\n\n    const element = await this._getQRStylingElement(extension);\n\n    if (extension.toLowerCase() === \"svg\") {\n      const serializer = new XMLSerializer();\n      let source = serializer.serializeToString(((element as unknown) as QRSVG).getElement());\n\n      source = '<?xml version=\"1.0\" standalone=\"no\"?>\\r\\n' + source;\n      const url = \"data:image/svg+xml;charset=utf-8,\" + encodeURIComponent(source);\n      downloadURI(url, `${name}.svg`);\n    } else {\n      const url = ((element as unknown) as QRCanvas).getCanvas().toDataURL(`image/${extension}`);\n      downloadURI(url, `${name}.${extension}`);\n    }\n  }\n}\n", "import modes from \"../constants/modes\";\nimport { Mode } from \"../types\";\n\nexport default function getMode(data: string): Mode {\n  switch (true) {\n    case /^[0-9]*$/.test(data):\n      return modes.numeric;\n    case /^[0-9A-Z $%*+\\-./:]*$/.test(data):\n      return modes.alphanumeric;\n    default:\n      return modes.byte;\n  }\n}\n", "import { Mode } from \"../types\";\n\ninterface Modes {\n  [key: string]: Mode;\n}\n\nexport default {\n  numeric: \"Numeric\",\n  alphanumeric: \"Alphanumeric\",\n  byte: \"Byte\",\n  kanji: \"Kanji\"\n} as Modes;\n", "// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n", "// module exports must be returned from runtime so entry inlining is disabled\n// startup\n// Load entry module and return exports\nreturn __webpack_require__(796);\n", "// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => module['default'] :\n\t\t() => module;\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};", "// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};", "__webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop)", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Barcode = function Barcode(data, options) {\n\t_classCallCheck(this, Barcode);\n\n\tthis.data = data;\n\tthis.text = options.text || data;\n\tthis.options = options;\n};\n\nexports.default = Barcode;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.CODE39 = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _Barcode2 = require(\"../Barcode.js\");\n\nvar _Barcode3 = _interopRequireDefault(_Barcode2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // Encoding documentation:\n// https://en.wikipedia.org/wiki/Code_39#Encoding\n\nvar CODE39 = function (_Barcode) {\n\t_inherits(CODE39, _Barcode);\n\n\tfunction CODE39(data, options) {\n\t\t_classCallCheck(this, CODE39);\n\n\t\tdata = data.toUpperCase();\n\n\t\t// Calculate mod43 checksum if enabled\n\t\tif (options.mod43) {\n\t\t\tdata += getCharacter(mod43checksum(data));\n\t\t}\n\n\t\treturn _possibleConstructorReturn(this, (CODE39.__proto__ || Object.getPrototypeOf(CODE39)).call(this, data, options));\n\t}\n\n\t_createClass(CODE39, [{\n\t\tkey: \"encode\",\n\t\tvalue: function encode() {\n\t\t\t// First character is always a *\n\t\t\tvar result = getEncoding(\"*\");\n\n\t\t\t// Take every character and add the binary representation to the result\n\t\t\tfor (var i = 0; i < this.data.length; i++) {\n\t\t\t\tresult += getEncoding(this.data[i]) + \"0\";\n\t\t\t}\n\n\t\t\t// Last character is always a *\n\t\t\tresult += getEncoding(\"*\");\n\n\t\t\treturn {\n\t\t\t\tdata: result,\n\t\t\t\ttext: this.text\n\t\t\t};\n\t\t}\n\t}, {\n\t\tkey: \"valid\",\n\t\tvalue: function valid() {\n\t\t\treturn this.data.search(/^[0-9A-Z\\-\\.\\ \\$\\/\\+\\%]+$/) !== -1;\n\t\t}\n\t}]);\n\n\treturn CODE39;\n}(_Barcode3.default);\n\n// All characters. The position in the array is the (checksum) value\n\n\nvar characters = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"-\", \".\", \" \", \"$\", \"/\", \"+\", \"%\", \"*\"];\n\n// The decimal representation of the characters, is converted to the\n// corresponding binary with the getEncoding function\nvar encodings = [20957, 29783, 23639, 30485, 20951, 29813, 23669, 20855, 29789, 23645, 29975, 23831, 30533, 22295, 30149, 24005, 21623, 29981, 23837, 22301, 30023, 23879, 30545, 22343, 30161, 24017, 21959, 30065, 23921, 22385, 29015, 18263, 29141, 17879, 29045, 18293, 17783, 29021, 18269, 17477, 17489, 17681, 20753, 35770];\n\n// Get the binary representation of a character by converting the encodings\n// from decimal to binary\nfunction getEncoding(character) {\n\treturn getBinary(characterValue(character));\n}\n\nfunction getBinary(characterValue) {\n\treturn encodings[characterValue].toString(2);\n}\n\nfunction getCharacter(characterValue) {\n\treturn characters[characterValue];\n}\n\nfunction characterValue(character) {\n\treturn characters.indexOf(character);\n}\n\nfunction mod43checksum(data) {\n\tvar checksum = 0;\n\tfor (var i = 0; i < data.length; i++) {\n\t\tchecksum += characterValue(data[i]);\n\t}\n\n\tchecksum = checksum % 43;\n\treturn checksum;\n}\n\nexports.CODE39 = CODE39;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _SET_BY_CODE;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// constants for internal usage\nvar SET_A = exports.SET_A = 0;\nvar SET_B = exports.SET_B = 1;\nvar SET_C = exports.SET_C = 2;\n\n// Special characters\nvar SHIFT = exports.SHIFT = 98;\nvar START_A = exports.START_A = 103;\nvar START_B = exports.START_B = 104;\nvar START_C = exports.START_C = 105;\nvar MODULO = exports.MODULO = 103;\nvar STOP = exports.STOP = 106;\nvar FNC1 = exports.FNC1 = 207;\n\n// Get set by start code\nvar SET_BY_CODE = exports.SET_BY_CODE = (_SET_BY_CODE = {}, _defineProperty(_SET_BY_CODE, START_A, SET_A), _defineProperty(_SET_BY_CODE, START_B, SET_B), _defineProperty(_SET_BY_CODE, START_C, SET_C), _SET_BY_CODE);\n\n// Get next set by code\nvar SWAP = exports.SWAP = {\n\t101: SET_A,\n\t100: SET_B,\n\t99: SET_C\n};\n\nvar A_START_CHAR = exports.A_START_CHAR = String.fromCharCode(208); // START_A + 105\nvar B_START_CHAR = exports.B_START_CHAR = String.fromCharCode(209); // START_B + 105\nvar C_START_CHAR = exports.C_START_CHAR = String.fromCharCode(210); // START_C + 105\n\n// 128A (Code Set A)\n// ASCII characters 00 to 95 (0\u20139, A\u2013Z and control codes), special characters, and FNC 1\u20134\nvar A_CHARS = exports.A_CHARS = \"[\\x00-\\x5F\\xC8-\\xCF]\";\n\n// 128B (Code Set B)\n// ASCII characters 32 to 127 (0\u20139, A\u2013Z, a\u2013z), special characters, and FNC 1\u20134\nvar B_CHARS = exports.B_CHARS = \"[\\x20-\\x7F\\xC8-\\xCF]\";\n\n// 128C (Code Set C)\n// 00\u201399 (encodes two digits with a single code point) and FNC1\nvar C_CHARS = exports.C_CHARS = \"(\\xCF*[0-9]{2}\\xCF*)\";\n\n// CODE128 includes 107 symbols:\n// 103 data symbols, 3 start symbols (A, B and C), and 1 stop symbol (the last one)\n// Each symbol consist of three black bars (1) and three white spaces (0).\nvar BARS = exports.BARS = [11011001100, 11001101100, 11001100110, 10010011000, 10010001100, 10001001100, 10011001000, 10011000100, 10001100100, 11001001000, 11001000100, 11000100100, 10110011100, 10011011100, 10011001110, 10111001100, 10011101100, 10011100110, 11001110010, 11001011100, 11001001110, 11011100100, 11001110100, 11101101110, 11101001100, 11100101100, 11100100110, 11101100100, 11100110100, 11100110010, 11011011000, 11011000110, 11000110110, 10100011000, 10001011000, 10001000110, 10110001000, 10001101000, 10001100010, 11010001000, 11000101000, 11000100010, 10110111000, 10110001110, 10001101110, 10111011000, 10111000110, 10001110110, 11101110110, 11010001110, 11000101110, 11011101000, 11011100010, 11011101110, 11101011000, 11101000110, 11100010110, 11101101000, 11101100010, 11100011010, 11101111010, 11001000010, 11110001010, 10100110000, 10100001100, 10010110000, 10010000110, 10000101100, 10000100110, 10110010000, 10110000100, 10011010000, 10011000010, 10000110100, 10000110010, 11000010010, 11001010000, 11110111010, 11000010100, 10001111010, 10100111100, 10010111100, 10010011110, 10111100100, 10011110100, 10011110010, 11110100100, 11110010100, 11110010010, 11011011110, 11011110110, 11110110110, 10101111000, 10100011110, 10001011110, 10111101000, 10111100010, 11110101000, 11110100010, 10111011110, 10111101110, 11101011110, 11110101110, 11010000100, 11010010000, 11010011100, 1100011101011];", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _Barcode2 = require('../Barcode.js');\n\nvar _Barcode3 = _interopRequireDefault(_Barcode2);\n\nvar _constants = require('./constants');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// This is the master class,\n// it does require the start code to be included in the string\nvar CODE128 = function (_Barcode) {\n\t_inherits(CODE128, _Barcode);\n\n\tfunction CODE128(data, options) {\n\t\t_classCallCheck(this, CODE128);\n\n\t\t// Get array of ascii codes from data\n\t\tvar _this = _possibleConstructorReturn(this, (CODE128.__proto__ || Object.getPrototypeOf(CODE128)).call(this, data.substring(1), options));\n\n\t\t_this.bytes = data.split('').map(function (char) {\n\t\t\treturn char.charCodeAt(0);\n\t\t});\n\t\treturn _this;\n\t}\n\n\t_createClass(CODE128, [{\n\t\tkey: 'valid',\n\t\tvalue: function valid() {\n\t\t\t// ASCII value ranges 0-127, 200-211\n\t\t\treturn (/^[\\x00-\\x7F\\xC8-\\xD3]+$/.test(this.data)\n\t\t\t);\n\t\t}\n\n\t\t// The public encoding function\n\n\t}, {\n\t\tkey: 'encode',\n\t\tvalue: function encode() {\n\t\t\tvar bytes = this.bytes;\n\t\t\t// Remove the start code from the bytes and set its index\n\t\t\tvar startIndex = bytes.shift() - 105;\n\t\t\t// Get start set by index\n\t\t\tvar startSet = _constants.SET_BY_CODE[startIndex];\n\n\t\t\tif (startSet === undefined) {\n\t\t\t\tthrow new RangeError('The encoding does not start with a start character.');\n\t\t\t}\n\n\t\t\tif (this.shouldEncodeAsEan128() === true) {\n\t\t\t\tbytes.unshift(_constants.FNC1);\n\t\t\t}\n\n\t\t\t// Start encode with the right type\n\t\t\tvar encodingResult = CODE128.next(bytes, 1, startSet);\n\n\t\t\treturn {\n\t\t\t\ttext: this.text === this.data ? this.text.replace(/[^\\x20-\\x7E]/g, '') : this.text,\n\t\t\t\tdata:\n\t\t\t\t// Add the start bits\n\t\t\t\tCODE128.getBar(startIndex) +\n\t\t\t\t// Add the encoded bits\n\t\t\t\tencodingResult.result +\n\t\t\t\t// Add the checksum\n\t\t\t\tCODE128.getBar((encodingResult.checksum + startIndex) % _constants.MODULO) +\n\t\t\t\t// Add the end bits\n\t\t\t\tCODE128.getBar(_constants.STOP)\n\t\t\t};\n\t\t}\n\n\t\t// GS1-128/EAN-128\n\n\t}, {\n\t\tkey: 'shouldEncodeAsEan128',\n\t\tvalue: function shouldEncodeAsEan128() {\n\t\t\tvar isEAN128 = this.options.ean128 || false;\n\t\t\tif (typeof isEAN128 === 'string') {\n\t\t\t\tisEAN128 = isEAN128.toLowerCase() === 'true';\n\t\t\t}\n\t\t\treturn isEAN128;\n\t\t}\n\n\t\t// Get a bar symbol by index\n\n\t}], [{\n\t\tkey: 'getBar',\n\t\tvalue: function getBar(index) {\n\t\t\treturn _constants.BARS[index] ? _constants.BARS[index].toString() : '';\n\t\t}\n\n\t\t// Correct an index by a set and shift it from the bytes array\n\n\t}, {\n\t\tkey: 'correctIndex',\n\t\tvalue: function correctIndex(bytes, set) {\n\t\t\tif (set === _constants.SET_A) {\n\t\t\t\tvar charCode = bytes.shift();\n\t\t\t\treturn charCode < 32 ? charCode + 64 : charCode - 32;\n\t\t\t} else if (set === _constants.SET_B) {\n\t\t\t\treturn bytes.shift() - 32;\n\t\t\t} else {\n\t\t\t\treturn (bytes.shift() - 48) * 10 + bytes.shift() - 48;\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'next',\n\t\tvalue: function next(bytes, pos, set) {\n\t\t\tif (!bytes.length) {\n\t\t\t\treturn { result: '', checksum: 0 };\n\t\t\t}\n\n\t\t\tvar nextCode = void 0,\n\t\t\t    index = void 0;\n\n\t\t\t// Special characters\n\t\t\tif (bytes[0] >= 200) {\n\t\t\t\tindex = bytes.shift() - 105;\n\t\t\t\tvar nextSet = _constants.SWAP[index];\n\n\t\t\t\t// Swap to other set\n\t\t\t\tif (nextSet !== undefined) {\n\t\t\t\t\tnextCode = CODE128.next(bytes, pos + 1, nextSet);\n\t\t\t\t}\n\t\t\t\t// Continue on current set but encode a special character\n\t\t\t\telse {\n\t\t\t\t\t\t// Shift\n\t\t\t\t\t\tif ((set === _constants.SET_A || set === _constants.SET_B) && index === _constants.SHIFT) {\n\t\t\t\t\t\t\t// Convert the next character so that is encoded correctly\n\t\t\t\t\t\t\tbytes[0] = set === _constants.SET_A ? bytes[0] > 95 ? bytes[0] - 96 : bytes[0] : bytes[0] < 32 ? bytes[0] + 96 : bytes[0];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnextCode = CODE128.next(bytes, pos + 1, set);\n\t\t\t\t\t}\n\t\t\t}\n\t\t\t// Continue encoding\n\t\t\telse {\n\t\t\t\t\tindex = CODE128.correctIndex(bytes, set);\n\t\t\t\t\tnextCode = CODE128.next(bytes, pos + 1, set);\n\t\t\t\t}\n\n\t\t\t// Get the correct binary encoding and calculate the weight\n\t\t\tvar enc = CODE128.getBar(index);\n\t\t\tvar weight = index * pos;\n\n\t\t\treturn {\n\t\t\t\tresult: enc + nextCode.result,\n\t\t\t\tchecksum: weight + nextCode.checksum\n\t\t\t};\n\t\t}\n\t}]);\n\n\treturn CODE128;\n}(_Barcode3.default);\n\nexports.default = CODE128;", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _constants = require('./constants');\n\n// Match Set functions\nvar matchSetALength = function matchSetALength(string) {\n\treturn string.match(new RegExp('^' + _constants.A_CHARS + '*'))[0].length;\n};\nvar matchSetBLength = function matchSetBLength(string) {\n\treturn string.match(new RegExp('^' + _constants.B_CHARS + '*'))[0].length;\n};\nvar matchSetC = function matchSetC(string) {\n\treturn string.match(new RegExp('^' + _constants.C_CHARS + '*'))[0];\n};\n\n// CODE128A or CODE128B\nfunction autoSelectFromAB(string, isA) {\n\tvar ranges = isA ? _constants.A_CHARS : _constants.B_CHARS;\n\tvar untilC = string.match(new RegExp('^(' + ranges + '+?)(([0-9]{2}){2,})([^0-9]|$)'));\n\n\tif (untilC) {\n\t\treturn untilC[1] + String.fromCharCode(204) + autoSelectFromC(string.substring(untilC[1].length));\n\t}\n\n\tvar chars = string.match(new RegExp('^' + ranges + '+'))[0];\n\n\tif (chars.length === string.length) {\n\t\treturn string;\n\t}\n\n\treturn chars + String.fromCharCode(isA ? 205 : 206) + autoSelectFromAB(string.substring(chars.length), !isA);\n}\n\n// CODE128C\nfunction autoSelectFromC(string) {\n\tvar cMatch = matchSetC(string);\n\tvar length = cMatch.length;\n\n\tif (length === string.length) {\n\t\treturn string;\n\t}\n\n\tstring = string.substring(length);\n\n\t// Select A/B depending on the longest match\n\tvar isA = matchSetALength(string) >= matchSetBLength(string);\n\treturn cMatch + String.fromCharCode(isA ? 206 : 205) + autoSelectFromAB(string, isA);\n}\n\n// Detect Code Set (A, B or C) and format the string\n\nexports.default = function (string) {\n\tvar newString = void 0;\n\tvar cLength = matchSetC(string).length;\n\n\t// Select 128C if the string start with enough digits\n\tif (cLength >= 2) {\n\t\tnewString = _constants.C_START_CHAR + autoSelectFromC(string);\n\t} else {\n\t\t// Select A/B depending on the longest match\n\t\tvar isA = matchSetALength(string) > matchSetBLength(string);\n\t\tnewString = (isA ? _constants.A_START_CHAR : _constants.B_START_CHAR) + autoSelectFromAB(string, isA);\n\t}\n\n\treturn newString.replace(/[\\xCD\\xCE]([^])[\\xCD\\xCE]/, // Any sequence between 205 and 206 characters\n\tfunction (match, char) {\n\t\treturn String.fromCharCode(203) + char;\n\t});\n};", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _CODE2 = require('./CODE128');\n\nvar _CODE3 = _interopRequireDefault(_CODE2);\n\nvar _auto = require('./auto');\n\nvar _auto2 = _interopRequireDefault(_auto);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar CODE128AUTO = function (_CODE) {\n\t_inherits(CODE128AUTO, _CODE);\n\n\tfunction CODE128AUTO(data, options) {\n\t\t_classCallCheck(this, CODE128AUTO);\n\n\t\t// ASCII value ranges 0-127, 200-211\n\t\tif (/^[\\x00-\\x7F\\xC8-\\xD3]+$/.test(data)) {\n\t\t\tvar _this = _possibleConstructorReturn(this, (CODE128AUTO.__proto__ || Object.getPrototypeOf(CODE128AUTO)).call(this, (0, _auto2.default)(data), options));\n\t\t} else {\n\t\t\tvar _this = _possibleConstructorReturn(this, (CODE128AUTO.__proto__ || Object.getPrototypeOf(CODE128AUTO)).call(this, data, options));\n\t\t}\n\t\treturn _possibleConstructorReturn(_this);\n\t}\n\n\treturn CODE128AUTO;\n}(_CODE3.default);\n\nexports.default = CODE128AUTO;", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _CODE2 = require('./CODE128.js');\n\nvar _CODE3 = _interopRequireDefault(_CODE2);\n\nvar _constants = require('./constants');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar CODE128A = function (_CODE) {\n\t_inherits(CODE128A, _CODE);\n\n\tfunction CODE128A(string, options) {\n\t\t_classCallCheck(this, CODE128A);\n\n\t\treturn _possibleConstructorReturn(this, (CODE128A.__proto__ || Object.getPrototypeOf(CODE128A)).call(this, _constants.A_START_CHAR + string, options));\n\t}\n\n\t_createClass(CODE128A, [{\n\t\tkey: 'valid',\n\t\tvalue: function valid() {\n\t\t\treturn new RegExp('^' + _constants.A_CHARS + '+$').test(this.data);\n\t\t}\n\t}]);\n\n\treturn CODE128A;\n}(_CODE3.default);\n\nexports.default = CODE128A;", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _CODE2 = require('./CODE128.js');\n\nvar _CODE3 = _interopRequireDefault(_CODE2);\n\nvar _constants = require('./constants');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar CODE128B = function (_CODE) {\n\t_inherits(CODE128B, _CODE);\n\n\tfunction CODE128B(string, options) {\n\t\t_classCallCheck(this, CODE128B);\n\n\t\treturn _possibleConstructorReturn(this, (CODE128B.__proto__ || Object.getPrototypeOf(CODE128B)).call(this, _constants.B_START_CHAR + string, options));\n\t}\n\n\t_createClass(CODE128B, [{\n\t\tkey: 'valid',\n\t\tvalue: function valid() {\n\t\t\treturn new RegExp('^' + _constants.B_CHARS + '+$').test(this.data);\n\t\t}\n\t}]);\n\n\treturn CODE128B;\n}(_CODE3.default);\n\nexports.default = CODE128B;", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _CODE2 = require('./CODE128.js');\n\nvar _CODE3 = _interopRequireDefault(_CODE2);\n\nvar _constants = require('./constants');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar CODE128C = function (_CODE) {\n\t_inherits(CODE128C, _CODE);\n\n\tfunction CODE128C(string, options) {\n\t\t_classCallCheck(this, CODE128C);\n\n\t\treturn _possibleConstructorReturn(this, (CODE128C.__proto__ || Object.getPrototypeOf(CODE128C)).call(this, _constants.C_START_CHAR + string, options));\n\t}\n\n\t_createClass(CODE128C, [{\n\t\tkey: 'valid',\n\t\tvalue: function valid() {\n\t\t\treturn new RegExp('^' + _constants.C_CHARS + '+$').test(this.data);\n\t\t}\n\t}]);\n\n\treturn CODE128C;\n}(_CODE3.default);\n\nexports.default = CODE128C;", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.CODE128C = exports.CODE128B = exports.CODE128A = exports.CODE128 = undefined;\n\nvar _CODE128_AUTO = require('./CODE128_AUTO.js');\n\nvar _CODE128_AUTO2 = _interopRequireDefault(_CODE128_AUTO);\n\nvar _CODE128A = require('./CODE128A.js');\n\nvar _CODE128A2 = _interopRequireDefault(_CODE128A);\n\nvar _CODE128B = require('./CODE128B.js');\n\nvar _CODE128B2 = _interopRequireDefault(_CODE128B);\n\nvar _CODE128C = require('./CODE128C.js');\n\nvar _CODE128C2 = _interopRequireDefault(_CODE128C);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.CODE128 = _CODE128_AUTO2.default;\nexports.CODE128A = _CODE128A2.default;\nexports.CODE128B = _CODE128B2.default;\nexports.CODE128C = _CODE128C2.default;", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n// Standard start end and middle bits\nvar SIDE_BIN = exports.SIDE_BIN = '101';\nvar MIDDLE_BIN = exports.MIDDLE_BIN = '01010';\n\nvar BINARIES = exports.BINARIES = {\n\t'L': [// The L (left) type of encoding\n\t'0001101', '0011001', '0010011', '0111101', '0100011', '0110001', '0101111', '0111011', '0110111', '0001011'],\n\t'G': [// The G type of encoding\n\t'0100111', '0110011', '0011011', '0100001', '0011101', '0111001', '0000101', '0010001', '0001001', '0010111'],\n\t'R': [// The R (right) type of encoding\n\t'1110010', '1100110', '1101100', '1000010', '1011100', '1001110', '1010000', '1000100', '1001000', '1110100'],\n\t'O': [// The O (odd) encoding for UPC-E\n\t'0001101', '0011001', '0010011', '0111101', '0100011', '0110001', '0101111', '0111011', '0110111', '0001011'],\n\t'E': [// The E (even) encoding for UPC-E\n\t'0100111', '0110011', '0011011', '0100001', '0011101', '0111001', '0000101', '0010001', '0001001', '0010111']\n};\n\n// Define the EAN-2 structure\nvar EAN2_STRUCTURE = exports.EAN2_STRUCTURE = ['LL', 'LG', 'GL', 'GG'];\n\n// Define the EAN-5 structure\nvar EAN5_STRUCTURE = exports.EAN5_STRUCTURE = ['GGLLL', 'GLGLL', 'GLLGL', 'GLLLG', 'LGGLL', 'LLGGL', 'LLLGG', 'LGLGL', 'LGLLG', 'LLGLG'];\n\n// Define the EAN-13 structure\nvar EAN13_STRUCTURE = exports.EAN13_STRUCTURE = ['LLLLLL', 'LLGLGG', 'LLGGLG', 'LLGGGL', 'LGLLGG', 'LGGLLG', 'LGGGLL', 'LGLGLG', 'LGLGGL', 'LGGLGL'];", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _constants = require('./constants');\n\n// Encode data string\nvar encode = function encode(data, structure, separator) {\n\tvar encoded = data.split('').map(function (val, idx) {\n\t\treturn _constants.BINARIES[structure[idx]];\n\t}).map(function (val, idx) {\n\t\treturn val ? val[data[idx]] : '';\n\t});\n\n\tif (separator) {\n\t\tvar last = data.length - 1;\n\t\tencoded = encoded.map(function (val, idx) {\n\t\t\treturn idx < last ? val + separator : val;\n\t\t});\n\t}\n\n\treturn encoded.join('');\n};\n\nexports.default = encode;", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _constants = require('./constants');\n\nvar _encoder = require('./encoder');\n\nvar _encoder2 = _interopRequireDefault(_encoder);\n\nvar _Barcode2 = require('../Barcode');\n\nvar _Barcode3 = _interopRequireDefault(_Barcode2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// Base class for EAN8 & EAN13\nvar EAN = function (_Barcode) {\n\t_inherits(EAN, _Barcode);\n\n\tfunction EAN(data, options) {\n\t\t_classCallCheck(this, EAN);\n\n\t\t// Make sure the font is not bigger than the space between the guard bars\n\t\tvar _this = _possibleConstructorReturn(this, (EAN.__proto__ || Object.getPrototypeOf(EAN)).call(this, data, options));\n\n\t\t_this.fontSize = !options.flat && options.fontSize > options.width * 10 ? options.width * 10 : options.fontSize;\n\n\t\t// Make the guard bars go down half the way of the text\n\t\t_this.guardHeight = options.height + _this.fontSize / 2 + options.textMargin;\n\t\treturn _this;\n\t}\n\n\t_createClass(EAN, [{\n\t\tkey: 'encode',\n\t\tvalue: function encode() {\n\t\t\treturn this.options.flat ? this.encodeFlat() : this.encodeGuarded();\n\t\t}\n\t}, {\n\t\tkey: 'leftText',\n\t\tvalue: function leftText(from, to) {\n\t\t\treturn this.text.substr(from, to);\n\t\t}\n\t}, {\n\t\tkey: 'leftEncode',\n\t\tvalue: function leftEncode(data, structure) {\n\t\t\treturn (0, _encoder2.default)(data, structure);\n\t\t}\n\t}, {\n\t\tkey: 'rightText',\n\t\tvalue: function rightText(from, to) {\n\t\t\treturn this.text.substr(from, to);\n\t\t}\n\t}, {\n\t\tkey: 'rightEncode',\n\t\tvalue: function rightEncode(data, structure) {\n\t\t\treturn (0, _encoder2.default)(data, structure);\n\t\t}\n\t}, {\n\t\tkey: 'encodeGuarded',\n\t\tvalue: function encodeGuarded() {\n\t\t\tvar textOptions = { fontSize: this.fontSize };\n\t\t\tvar guardOptions = { height: this.guardHeight };\n\n\t\t\treturn [{ data: _constants.SIDE_BIN, options: guardOptions }, { data: this.leftEncode(), text: this.leftText(), options: textOptions }, { data: _constants.MIDDLE_BIN, options: guardOptions }, { data: this.rightEncode(), text: this.rightText(), options: textOptions }, { data: _constants.SIDE_BIN, options: guardOptions }];\n\t\t}\n\t}, {\n\t\tkey: 'encodeFlat',\n\t\tvalue: function encodeFlat() {\n\t\t\tvar data = [_constants.SIDE_BIN, this.leftEncode(), _constants.MIDDLE_BIN, this.rightEncode(), _constants.SIDE_BIN];\n\n\t\t\treturn {\n\t\t\t\tdata: data.join(''),\n\t\t\t\ttext: this.text\n\t\t\t};\n\t\t}\n\t}]);\n\n\treturn EAN;\n}(_Barcode3.default);\n\nexports.default = EAN;", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _constants = require('./constants');\n\nvar _EAN2 = require('./EAN');\n\nvar _EAN3 = _interopRequireDefault(_EAN2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // Encoding documentation:\n// https://en.wikipedia.org/wiki/International_Article_Number_(EAN)#Binary_encoding_of_data_digits_into_EAN-13_barcode\n\n// Calculate the checksum digit\n// https://en.wikipedia.org/wiki/International_Article_Number_(EAN)#Calculation_of_checksum_digit\nvar checksum = function checksum(number) {\n\tvar res = number.substr(0, 12).split('').map(function (n) {\n\t\treturn +n;\n\t}).reduce(function (sum, a, idx) {\n\t\treturn idx % 2 ? sum + a * 3 : sum + a;\n\t}, 0);\n\n\treturn (10 - res % 10) % 10;\n};\n\nvar EAN13 = function (_EAN) {\n\t_inherits(EAN13, _EAN);\n\n\tfunction EAN13(data, options) {\n\t\t_classCallCheck(this, EAN13);\n\n\t\t// Add checksum if it does not exist\n\t\tif (data.search(/^[0-9]{12}$/) !== -1) {\n\t\t\tdata += checksum(data);\n\t\t}\n\n\t\t// Adds a last character to the end of the barcode\n\t\tvar _this = _possibleConstructorReturn(this, (EAN13.__proto__ || Object.getPrototypeOf(EAN13)).call(this, data, options));\n\n\t\t_this.lastChar = options.lastChar;\n\t\treturn _this;\n\t}\n\n\t_createClass(EAN13, [{\n\t\tkey: 'valid',\n\t\tvalue: function valid() {\n\t\t\treturn this.data.search(/^[0-9]{13}$/) !== -1 && +this.data[12] === checksum(this.data);\n\t\t}\n\t}, {\n\t\tkey: 'leftText',\n\t\tvalue: function leftText() {\n\t\t\treturn _get(EAN13.prototype.__proto__ || Object.getPrototypeOf(EAN13.prototype), 'leftText', this).call(this, 1, 6);\n\t\t}\n\t}, {\n\t\tkey: 'leftEncode',\n\t\tvalue: function leftEncode() {\n\t\t\tvar data = this.data.substr(1, 6);\n\t\t\tvar structure = _constants.EAN13_STRUCTURE[this.data[0]];\n\t\t\treturn _get(EAN13.prototype.__proto__ || Object.getPrototypeOf(EAN13.prototype), 'leftEncode', this).call(this, data, structure);\n\t\t}\n\t}, {\n\t\tkey: 'rightText',\n\t\tvalue: function rightText() {\n\t\t\treturn _get(EAN13.prototype.__proto__ || Object.getPrototypeOf(EAN13.prototype), 'rightText', this).call(this, 7, 6);\n\t\t}\n\t}, {\n\t\tkey: 'rightEncode',\n\t\tvalue: function rightEncode() {\n\t\t\tvar data = this.data.substr(7, 6);\n\t\t\treturn _get(EAN13.prototype.__proto__ || Object.getPrototypeOf(EAN13.prototype), 'rightEncode', this).call(this, data, 'RRRRRR');\n\t\t}\n\n\t\t// The \"standard\" way of printing EAN13 barcodes with guard bars\n\n\t}, {\n\t\tkey: 'encodeGuarded',\n\t\tvalue: function encodeGuarded() {\n\t\t\tvar data = _get(EAN13.prototype.__proto__ || Object.getPrototypeOf(EAN13.prototype), 'encodeGuarded', this).call(this);\n\n\t\t\t// Extend data with left digit & last character\n\t\t\tif (this.options.displayValue) {\n\t\t\t\tdata.unshift({\n\t\t\t\t\tdata: '000000000000',\n\t\t\t\t\ttext: this.text.substr(0, 1),\n\t\t\t\t\toptions: { textAlign: 'left', fontSize: this.fontSize }\n\t\t\t\t});\n\n\t\t\t\tif (this.options.lastChar) {\n\t\t\t\t\tdata.push({\n\t\t\t\t\t\tdata: '00'\n\t\t\t\t\t});\n\t\t\t\t\tdata.push({\n\t\t\t\t\t\tdata: '00000',\n\t\t\t\t\t\ttext: this.options.lastChar,\n\t\t\t\t\t\toptions: { fontSize: this.fontSize }\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\t}]);\n\n\treturn EAN13;\n}(_EAN3.default);\n\nexports.default = EAN13;", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _EAN2 = require('./EAN');\n\nvar _EAN3 = _interopRequireDefault(_EAN2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // Encoding documentation:\n// http://www.barcodeisland.com/ean8.phtml\n\n// Calculate the checksum digit\nvar checksum = function checksum(number) {\n\tvar res = number.substr(0, 7).split('').map(function (n) {\n\t\treturn +n;\n\t}).reduce(function (sum, a, idx) {\n\t\treturn idx % 2 ? sum + a : sum + a * 3;\n\t}, 0);\n\n\treturn (10 - res % 10) % 10;\n};\n\nvar EAN8 = function (_EAN) {\n\t_inherits(EAN8, _EAN);\n\n\tfunction EAN8(data, options) {\n\t\t_classCallCheck(this, EAN8);\n\n\t\t// Add checksum if it does not exist\n\t\tif (data.search(/^[0-9]{7}$/) !== -1) {\n\t\t\tdata += checksum(data);\n\t\t}\n\n\t\treturn _possibleConstructorReturn(this, (EAN8.__proto__ || Object.getPrototypeOf(EAN8)).call(this, data, options));\n\t}\n\n\t_createClass(EAN8, [{\n\t\tkey: 'valid',\n\t\tvalue: function valid() {\n\t\t\treturn this.data.search(/^[0-9]{8}$/) !== -1 && +this.data[7] === checksum(this.data);\n\t\t}\n\t}, {\n\t\tkey: 'leftText',\n\t\tvalue: function leftText() {\n\t\t\treturn _get(EAN8.prototype.__proto__ || Object.getPrototypeOf(EAN8.prototype), 'leftText', this).call(this, 0, 4);\n\t\t}\n\t}, {\n\t\tkey: 'leftEncode',\n\t\tvalue: function leftEncode() {\n\t\t\tvar data = this.data.substr(0, 4);\n\t\t\treturn _get(EAN8.prototype.__proto__ || Object.getPrototypeOf(EAN8.prototype), 'leftEncode', this).call(this, data, 'LLLL');\n\t\t}\n\t}, {\n\t\tkey: 'rightText',\n\t\tvalue: function rightText() {\n\t\t\treturn _get(EAN8.prototype.__proto__ || Object.getPrototypeOf(EAN8.prototype), 'rightText', this).call(this, 4, 4);\n\t\t}\n\t}, {\n\t\tkey: 'rightEncode',\n\t\tvalue: function rightEncode() {\n\t\t\tvar data = this.data.substr(4, 4);\n\t\t\treturn _get(EAN8.prototype.__proto__ || Object.getPrototypeOf(EAN8.prototype), 'rightEncode', this).call(this, data, 'RRRR');\n\t\t}\n\t}]);\n\n\treturn EAN8;\n}(_EAN3.default);\n\nexports.default = EAN8;", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _constants = require('./constants');\n\nvar _encoder = require('./encoder');\n\nvar _encoder2 = _interopRequireDefault(_encoder);\n\nvar _Barcode2 = require('../Barcode');\n\nvar _Barcode3 = _interopRequireDefault(_Barcode2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // Encoding documentation:\n// https://en.wikipedia.org/wiki/EAN_5#Encoding\n\nvar checksum = function checksum(data) {\n\tvar result = data.split('').map(function (n) {\n\t\treturn +n;\n\t}).reduce(function (sum, a, idx) {\n\t\treturn idx % 2 ? sum + a * 9 : sum + a * 3;\n\t}, 0);\n\treturn result % 10;\n};\n\nvar EAN5 = function (_Barcode) {\n\t_inherits(EAN5, _Barcode);\n\n\tfunction EAN5(data, options) {\n\t\t_classCallCheck(this, EAN5);\n\n\t\treturn _possibleConstructorReturn(this, (EAN5.__proto__ || Object.getPrototypeOf(EAN5)).call(this, data, options));\n\t}\n\n\t_createClass(EAN5, [{\n\t\tkey: 'valid',\n\t\tvalue: function valid() {\n\t\t\treturn this.data.search(/^[0-9]{5}$/) !== -1;\n\t\t}\n\t}, {\n\t\tkey: 'encode',\n\t\tvalue: function encode() {\n\t\t\tvar structure = _constants.EAN5_STRUCTURE[checksum(this.data)];\n\t\t\treturn {\n\t\t\t\tdata: '1011' + (0, _encoder2.default)(this.data, structure, '01'),\n\t\t\t\ttext: this.text\n\t\t\t};\n\t\t}\n\t}]);\n\n\treturn EAN5;\n}(_Barcode3.default);\n\nexports.default = EAN5;", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _constants = require('./constants');\n\nvar _encoder = require('./encoder');\n\nvar _encoder2 = _interopRequireDefault(_encoder);\n\nvar _Barcode2 = require('../Barcode');\n\nvar _Barcode3 = _interopRequireDefault(_Barcode2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // Encoding documentation:\n// https://en.wikipedia.org/wiki/EAN_2#Encoding\n\nvar EAN2 = function (_Barcode) {\n\t_inherits(EAN2, _Barcode);\n\n\tfunction EAN2(data, options) {\n\t\t_classCallCheck(this, EAN2);\n\n\t\treturn _possibleConstructorReturn(this, (EAN2.__proto__ || Object.getPrototypeOf(EAN2)).call(this, data, options));\n\t}\n\n\t_createClass(EAN2, [{\n\t\tkey: 'valid',\n\t\tvalue: function valid() {\n\t\t\treturn this.data.search(/^[0-9]{2}$/) !== -1;\n\t\t}\n\t}, {\n\t\tkey: 'encode',\n\t\tvalue: function encode() {\n\t\t\t// Choose the structure based on the number mod 4\n\t\t\tvar structure = _constants.EAN2_STRUCTURE[parseInt(this.data) % 4];\n\t\t\treturn {\n\t\t\t\t// Start bits + Encode the two digits with 01 in between\n\t\t\t\tdata: '1011' + (0, _encoder2.default)(this.data, structure, '01'),\n\t\t\t\ttext: this.text\n\t\t\t};\n\t\t}\n\t}]);\n\n\treturn EAN2;\n}(_Barcode3.default);\n\nexports.default = EAN2;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nexports.checksum = checksum;\n\nvar _encoder = require(\"./encoder\");\n\nvar _encoder2 = _interopRequireDefault(_encoder);\n\nvar _Barcode2 = require(\"../Barcode.js\");\n\nvar _Barcode3 = _interopRequireDefault(_Barcode2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // Encoding documentation:\n// https://en.wikipedia.org/wiki/Universal_Product_Code#Encoding\n\nvar UPC = function (_Barcode) {\n\t_inherits(UPC, _Barcode);\n\n\tfunction UPC(data, options) {\n\t\t_classCallCheck(this, UPC);\n\n\t\t// Add checksum if it does not exist\n\t\tif (data.search(/^[0-9]{11}$/) !== -1) {\n\t\t\tdata += checksum(data);\n\t\t}\n\n\t\tvar _this = _possibleConstructorReturn(this, (UPC.__proto__ || Object.getPrototypeOf(UPC)).call(this, data, options));\n\n\t\t_this.displayValue = options.displayValue;\n\n\t\t// Make sure the font is not bigger than the space between the guard bars\n\t\tif (options.fontSize > options.width * 10) {\n\t\t\t_this.fontSize = options.width * 10;\n\t\t} else {\n\t\t\t_this.fontSize = options.fontSize;\n\t\t}\n\n\t\t// Make the guard bars go down half the way of the text\n\t\t_this.guardHeight = options.height + _this.fontSize / 2 + options.textMargin;\n\t\treturn _this;\n\t}\n\n\t_createClass(UPC, [{\n\t\tkey: \"valid\",\n\t\tvalue: function valid() {\n\t\t\treturn this.data.search(/^[0-9]{12}$/) !== -1 && this.data[11] == checksum(this.data);\n\t\t}\n\t}, {\n\t\tkey: \"encode\",\n\t\tvalue: function encode() {\n\t\t\tif (this.options.flat) {\n\t\t\t\treturn this.flatEncoding();\n\t\t\t} else {\n\t\t\t\treturn this.guardedEncoding();\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: \"flatEncoding\",\n\t\tvalue: function flatEncoding() {\n\t\t\tvar result = \"\";\n\n\t\t\tresult += \"101\";\n\t\t\tresult += (0, _encoder2.default)(this.data.substr(0, 6), \"LLLLLL\");\n\t\t\tresult += \"01010\";\n\t\t\tresult += (0, _encoder2.default)(this.data.substr(6, 6), \"RRRRRR\");\n\t\t\tresult += \"101\";\n\n\t\t\treturn {\n\t\t\t\tdata: result,\n\t\t\t\ttext: this.text\n\t\t\t};\n\t\t}\n\t}, {\n\t\tkey: \"guardedEncoding\",\n\t\tvalue: function guardedEncoding() {\n\t\t\tvar result = [];\n\n\t\t\t// Add the first digit\n\t\t\tif (this.displayValue) {\n\t\t\t\tresult.push({\n\t\t\t\t\tdata: \"00000000\",\n\t\t\t\t\ttext: this.text.substr(0, 1),\n\t\t\t\t\toptions: { textAlign: \"left\", fontSize: this.fontSize }\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Add the guard bars\n\t\t\tresult.push({\n\t\t\t\tdata: \"101\" + (0, _encoder2.default)(this.data[0], \"L\"),\n\t\t\t\toptions: { height: this.guardHeight }\n\t\t\t});\n\n\t\t\t// Add the left side\n\t\t\tresult.push({\n\t\t\t\tdata: (0, _encoder2.default)(this.data.substr(1, 5), \"LLLLL\"),\n\t\t\t\ttext: this.text.substr(1, 5),\n\t\t\t\toptions: { fontSize: this.fontSize }\n\t\t\t});\n\n\t\t\t// Add the middle bits\n\t\t\tresult.push({\n\t\t\t\tdata: \"01010\",\n\t\t\t\toptions: { height: this.guardHeight }\n\t\t\t});\n\n\t\t\t// Add the right side\n\t\t\tresult.push({\n\t\t\t\tdata: (0, _encoder2.default)(this.data.substr(6, 5), \"RRRRR\"),\n\t\t\t\ttext: this.text.substr(6, 5),\n\t\t\t\toptions: { fontSize: this.fontSize }\n\t\t\t});\n\n\t\t\t// Add the end bits\n\t\t\tresult.push({\n\t\t\t\tdata: (0, _encoder2.default)(this.data[11], \"R\") + \"101\",\n\t\t\t\toptions: { height: this.guardHeight }\n\t\t\t});\n\n\t\t\t// Add the last digit\n\t\t\tif (this.displayValue) {\n\t\t\t\tresult.push({\n\t\t\t\t\tdata: \"00000000\",\n\t\t\t\t\ttext: this.text.substr(11, 1),\n\t\t\t\t\toptions: { textAlign: \"right\", fontSize: this.fontSize }\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}\n\t}]);\n\n\treturn UPC;\n}(_Barcode3.default);\n\n// Calulate the checksum digit\n// https://en.wikipedia.org/wiki/International_Article_Number_(EAN)#Calculation_of_checksum_digit\n\n\nfunction checksum(number) {\n\tvar result = 0;\n\n\tvar i;\n\tfor (i = 1; i < 11; i += 2) {\n\t\tresult += parseInt(number[i]);\n\t}\n\tfor (i = 0; i < 11; i += 2) {\n\t\tresult += parseInt(number[i]) * 3;\n\t}\n\n\treturn (10 - result % 10) % 10;\n}\n\nexports.default = UPC;", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _encoder = require('./encoder');\n\nvar _encoder2 = _interopRequireDefault(_encoder);\n\nvar _Barcode2 = require('../Barcode.js');\n\nvar _Barcode3 = _interopRequireDefault(_Barcode2);\n\nvar _UPC = require('./UPC.js');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // Encoding documentation:\n// https://en.wikipedia.org/wiki/Universal_Product_Code#Encoding\n//\n// UPC-E documentation:\n// https://en.wikipedia.org/wiki/Universal_Product_Code#UPC-E\n\nvar EXPANSIONS = [\"XX00000XXX\", \"XX10000XXX\", \"XX20000XXX\", \"XXX00000XX\", \"XXXX00000X\", \"XXXXX00005\", \"XXXXX00006\", \"XXXXX00007\", \"XXXXX00008\", \"XXXXX00009\"];\n\nvar PARITIES = [[\"EEEOOO\", \"OOOEEE\"], [\"EEOEOO\", \"OOEOEE\"], [\"EEOOEO\", \"OOEEOE\"], [\"EEOOOE\", \"OOEEEO\"], [\"EOEEOO\", \"OEOOEE\"], [\"EOOEEO\", \"OEEOOE\"], [\"EOOOEE\", \"OEEEOO\"], [\"EOEOEO\", \"OEOEOE\"], [\"EOEOOE\", \"OEOEEO\"], [\"EOOEOE\", \"OEEOEO\"]];\n\nvar UPCE = function (_Barcode) {\n\t_inherits(UPCE, _Barcode);\n\n\tfunction UPCE(data, options) {\n\t\t_classCallCheck(this, UPCE);\n\n\t\tvar _this = _possibleConstructorReturn(this, (UPCE.__proto__ || Object.getPrototypeOf(UPCE)).call(this, data, options));\n\t\t// Code may be 6 or 8 digits;\n\t\t// A 7 digit code is ambiguous as to whether the extra digit\n\t\t// is a UPC-A check or number system digit.\n\n\n\t\t_this.isValid = false;\n\t\tif (data.search(/^[0-9]{6}$/) !== -1) {\n\t\t\t_this.middleDigits = data;\n\t\t\t_this.upcA = expandToUPCA(data, \"0\");\n\t\t\t_this.text = options.text || '' + _this.upcA[0] + data + _this.upcA[_this.upcA.length - 1];\n\t\t\t_this.isValid = true;\n\t\t} else if (data.search(/^[01][0-9]{7}$/) !== -1) {\n\t\t\t_this.middleDigits = data.substring(1, data.length - 1);\n\t\t\t_this.upcA = expandToUPCA(_this.middleDigits, data[0]);\n\n\t\t\tif (_this.upcA[_this.upcA.length - 1] === data[data.length - 1]) {\n\t\t\t\t_this.isValid = true;\n\t\t\t} else {\n\t\t\t\t// checksum mismatch\n\t\t\t\treturn _possibleConstructorReturn(_this);\n\t\t\t}\n\t\t} else {\n\t\t\treturn _possibleConstructorReturn(_this);\n\t\t}\n\n\t\t_this.displayValue = options.displayValue;\n\n\t\t// Make sure the font is not bigger than the space between the guard bars\n\t\tif (options.fontSize > options.width * 10) {\n\t\t\t_this.fontSize = options.width * 10;\n\t\t} else {\n\t\t\t_this.fontSize = options.fontSize;\n\t\t}\n\n\t\t// Make the guard bars go down half the way of the text\n\t\t_this.guardHeight = options.height + _this.fontSize / 2 + options.textMargin;\n\t\treturn _this;\n\t}\n\n\t_createClass(UPCE, [{\n\t\tkey: 'valid',\n\t\tvalue: function valid() {\n\t\t\treturn this.isValid;\n\t\t}\n\t}, {\n\t\tkey: 'encode',\n\t\tvalue: function encode() {\n\t\t\tif (this.options.flat) {\n\t\t\t\treturn this.flatEncoding();\n\t\t\t} else {\n\t\t\t\treturn this.guardedEncoding();\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'flatEncoding',\n\t\tvalue: function flatEncoding() {\n\t\t\tvar result = \"\";\n\n\t\t\tresult += \"101\";\n\t\t\tresult += this.encodeMiddleDigits();\n\t\t\tresult += \"010101\";\n\n\t\t\treturn {\n\t\t\t\tdata: result,\n\t\t\t\ttext: this.text\n\t\t\t};\n\t\t}\n\t}, {\n\t\tkey: 'guardedEncoding',\n\t\tvalue: function guardedEncoding() {\n\t\t\tvar result = [];\n\n\t\t\t// Add the UPC-A number system digit beneath the quiet zone\n\t\t\tif (this.displayValue) {\n\t\t\t\tresult.push({\n\t\t\t\t\tdata: \"00000000\",\n\t\t\t\t\ttext: this.text[0],\n\t\t\t\t\toptions: { textAlign: \"left\", fontSize: this.fontSize }\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Add the guard bars\n\t\t\tresult.push({\n\t\t\t\tdata: \"101\",\n\t\t\t\toptions: { height: this.guardHeight }\n\t\t\t});\n\n\t\t\t// Add the 6 UPC-E digits\n\t\t\tresult.push({\n\t\t\t\tdata: this.encodeMiddleDigits(),\n\t\t\t\ttext: this.text.substring(1, 7),\n\t\t\t\toptions: { fontSize: this.fontSize }\n\t\t\t});\n\n\t\t\t// Add the end bits\n\t\t\tresult.push({\n\t\t\t\tdata: \"010101\",\n\t\t\t\toptions: { height: this.guardHeight }\n\t\t\t});\n\n\t\t\t// Add the UPC-A check digit beneath the quiet zone\n\t\t\tif (this.displayValue) {\n\t\t\t\tresult.push({\n\t\t\t\t\tdata: \"00000000\",\n\t\t\t\t\ttext: this.text[7],\n\t\t\t\t\toptions: { textAlign: \"right\", fontSize: this.fontSize }\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}\n\t}, {\n\t\tkey: 'encodeMiddleDigits',\n\t\tvalue: function encodeMiddleDigits() {\n\t\t\tvar numberSystem = this.upcA[0];\n\t\t\tvar checkDigit = this.upcA[this.upcA.length - 1];\n\t\t\tvar parity = PARITIES[parseInt(checkDigit)][parseInt(numberSystem)];\n\t\t\treturn (0, _encoder2.default)(this.middleDigits, parity);\n\t\t}\n\t}]);\n\n\treturn UPCE;\n}(_Barcode3.default);\n\nfunction expandToUPCA(middleDigits, numberSystem) {\n\tvar lastUpcE = parseInt(middleDigits[middleDigits.length - 1]);\n\tvar expansion = EXPANSIONS[lastUpcE];\n\n\tvar result = \"\";\n\tvar digitIndex = 0;\n\tfor (var i = 0; i < expansion.length; i++) {\n\t\tvar c = expansion[i];\n\t\tif (c === 'X') {\n\t\t\tresult += middleDigits[digitIndex++];\n\t\t} else {\n\t\t\tresult += c;\n\t\t}\n\t}\n\n\tresult = '' + numberSystem + result;\n\treturn '' + result + (0, _UPC.checksum)(result);\n}\n\nexports.default = UPCE;", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.UPCE = exports.UPC = exports.EAN2 = exports.EAN5 = exports.EAN8 = exports.EAN13 = undefined;\n\nvar _EAN = require('./EAN13.js');\n\nvar _EAN2 = _interopRequireDefault(_EAN);\n\nvar _EAN3 = require('./EAN8.js');\n\nvar _EAN4 = _interopRequireDefault(_EAN3);\n\nvar _EAN5 = require('./EAN5.js');\n\nvar _EAN6 = _interopRequireDefault(_EAN5);\n\nvar _EAN7 = require('./EAN2.js');\n\nvar _EAN8 = _interopRequireDefault(_EAN7);\n\nvar _UPC = require('./UPC.js');\n\nvar _UPC2 = _interopRequireDefault(_UPC);\n\nvar _UPCE = require('./UPCE.js');\n\nvar _UPCE2 = _interopRequireDefault(_UPCE);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.EAN13 = _EAN2.default;\nexports.EAN8 = _EAN4.default;\nexports.EAN5 = _EAN6.default;\nexports.EAN2 = _EAN8.default;\nexports.UPC = _UPC2.default;\nexports.UPCE = _UPCE2.default;", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nvar START_BIN = exports.START_BIN = '1010';\nvar END_BIN = exports.END_BIN = '11101';\n\nvar BINARIES = exports.BINARIES = ['00110', '10001', '01001', '11000', '00101', '10100', '01100', '00011', '10010', '01010'];", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _constants = require('./constants');\n\nvar _Barcode2 = require('../Barcode');\n\nvar _Barcode3 = _interopRequireDefault(_Barcode2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ITF = function (_Barcode) {\n\t_inherits(ITF, _Barcode);\n\n\tfunction ITF() {\n\t\t_classCallCheck(this, ITF);\n\n\t\treturn _possibleConstructorReturn(this, (ITF.__proto__ || Object.getPrototypeOf(ITF)).apply(this, arguments));\n\t}\n\n\t_createClass(ITF, [{\n\t\tkey: 'valid',\n\t\tvalue: function valid() {\n\t\t\treturn this.data.search(/^([0-9]{2})+$/) !== -1;\n\t\t}\n\t}, {\n\t\tkey: 'encode',\n\t\tvalue: function encode() {\n\t\t\tvar _this2 = this;\n\n\t\t\t// Calculate all the digit pairs\n\t\t\tvar encoded = this.data.match(/.{2}/g).map(function (pair) {\n\t\t\t\treturn _this2.encodePair(pair);\n\t\t\t}).join('');\n\n\t\t\treturn {\n\t\t\t\tdata: _constants.START_BIN + encoded + _constants.END_BIN,\n\t\t\t\ttext: this.text\n\t\t\t};\n\t\t}\n\n\t\t// Calculate the data of a number pair\n\n\t}, {\n\t\tkey: 'encodePair',\n\t\tvalue: function encodePair(pair) {\n\t\t\tvar second = _constants.BINARIES[pair[1]];\n\n\t\t\treturn _constants.BINARIES[pair[0]].split('').map(function (first, idx) {\n\t\t\t\treturn (first === '1' ? '111' : '1') + (second[idx] === '1' ? '000' : '0');\n\t\t\t}).join('');\n\t\t}\n\t}]);\n\n\treturn ITF;\n}(_Barcode3.default);\n\nexports.default = ITF;", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _ITF2 = require('./ITF');\n\nvar _ITF3 = _interopRequireDefault(_ITF2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// Calculate the checksum digit\nvar checksum = function checksum(data) {\n\tvar res = data.substr(0, 13).split('').map(function (num) {\n\t\treturn parseInt(num, 10);\n\t}).reduce(function (sum, n, idx) {\n\t\treturn sum + n * (3 - idx % 2 * 2);\n\t}, 0);\n\n\treturn Math.ceil(res / 10) * 10 - res;\n};\n\nvar ITF14 = function (_ITF) {\n\t_inherits(ITF14, _ITF);\n\n\tfunction ITF14(data, options) {\n\t\t_classCallCheck(this, ITF14);\n\n\t\t// Add checksum if it does not exist\n\t\tif (data.search(/^[0-9]{13}$/) !== -1) {\n\t\t\tdata += checksum(data);\n\t\t}\n\t\treturn _possibleConstructorReturn(this, (ITF14.__proto__ || Object.getPrototypeOf(ITF14)).call(this, data, options));\n\t}\n\n\t_createClass(ITF14, [{\n\t\tkey: 'valid',\n\t\tvalue: function valid() {\n\t\t\treturn this.data.search(/^[0-9]{14}$/) !== -1 && +this.data[13] === checksum(this.data);\n\t\t}\n\t}]);\n\n\treturn ITF14;\n}(_ITF3.default);\n\nexports.default = ITF14;", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.ITF14 = exports.ITF = undefined;\n\nvar _ITF = require('./ITF');\n\nvar _ITF2 = _interopRequireDefault(_ITF);\n\nvar _ITF3 = require('./ITF14');\n\nvar _ITF4 = _interopRequireDefault(_ITF3);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.ITF = _ITF2.default;\nexports.ITF14 = _ITF4.default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _Barcode2 = require(\"../Barcode.js\");\n\nvar _Barcode3 = _interopRequireDefault(_Barcode2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // Encoding documentation\n// https://en.wikipedia.org/wiki/MSI_Barcode#Character_set_and_binary_lookup\n\nvar MSI = function (_Barcode) {\n\t_inherits(MSI, _Barcode);\n\n\tfunction MSI(data, options) {\n\t\t_classCallCheck(this, MSI);\n\n\t\treturn _possibleConstructorReturn(this, (MSI.__proto__ || Object.getPrototypeOf(MSI)).call(this, data, options));\n\t}\n\n\t_createClass(MSI, [{\n\t\tkey: \"encode\",\n\t\tvalue: function encode() {\n\t\t\t// Start bits\n\t\t\tvar ret = \"110\";\n\n\t\t\tfor (var i = 0; i < this.data.length; i++) {\n\t\t\t\t// Convert the character to binary (always 4 binary digits)\n\t\t\t\tvar digit = parseInt(this.data[i]);\n\t\t\t\tvar bin = digit.toString(2);\n\t\t\t\tbin = addZeroes(bin, 4 - bin.length);\n\n\t\t\t\t// Add 100 for every zero and 110 for every 1\n\t\t\t\tfor (var b = 0; b < bin.length; b++) {\n\t\t\t\t\tret += bin[b] == \"0\" ? \"100\" : \"110\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// End bits\n\t\t\tret += \"1001\";\n\n\t\t\treturn {\n\t\t\t\tdata: ret,\n\t\t\t\ttext: this.text\n\t\t\t};\n\t\t}\n\t}, {\n\t\tkey: \"valid\",\n\t\tvalue: function valid() {\n\t\t\treturn this.data.search(/^[0-9]+$/) !== -1;\n\t\t}\n\t}]);\n\n\treturn MSI;\n}(_Barcode3.default);\n\nfunction addZeroes(number, n) {\n\tfor (var i = 0; i < n; i++) {\n\t\tnumber = \"0\" + number;\n\t}\n\treturn number;\n}\n\nexports.default = MSI;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.mod10 = mod10;\nexports.mod11 = mod11;\nfunction mod10(number) {\n\tvar sum = 0;\n\tfor (var i = 0; i < number.length; i++) {\n\t\tvar n = parseInt(number[i]);\n\t\tif ((i + number.length) % 2 === 0) {\n\t\t\tsum += n;\n\t\t} else {\n\t\t\tsum += n * 2 % 10 + Math.floor(n * 2 / 10);\n\t\t}\n\t}\n\treturn (10 - sum % 10) % 10;\n}\n\nfunction mod11(number) {\n\tvar sum = 0;\n\tvar weights = [2, 3, 4, 5, 6, 7];\n\tfor (var i = 0; i < number.length; i++) {\n\t\tvar n = parseInt(number[number.length - 1 - i]);\n\t\tsum += weights[i % weights.length] * n;\n\t}\n\treturn (11 - sum % 11) % 11;\n}", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _MSI2 = require('./MSI.js');\n\nvar _MSI3 = _interopRequireDefault(_MSI2);\n\nvar _checksums = require('./checksums.js');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar MSI10 = function (_MSI) {\n\t_inherits(MSI10, _MSI);\n\n\tfunction MSI10(data, options) {\n\t\t_classCallCheck(this, MSI10);\n\n\t\treturn _possibleConstructorReturn(this, (MSI10.__proto__ || Object.getPrototypeOf(MSI10)).call(this, data + (0, _checksums.mod10)(data), options));\n\t}\n\n\treturn MSI10;\n}(_MSI3.default);\n\nexports.default = MSI10;", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _MSI2 = require('./MSI.js');\n\nvar _MSI3 = _interopRequireDefault(_MSI2);\n\nvar _checksums = require('./checksums.js');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar MSI11 = function (_MSI) {\n\t_inherits(MSI11, _MSI);\n\n\tfunction MSI11(data, options) {\n\t\t_classCallCheck(this, MSI11);\n\n\t\treturn _possibleConstructorReturn(this, (MSI11.__proto__ || Object.getPrototypeOf(MSI11)).call(this, data + (0, _checksums.mod11)(data), options));\n\t}\n\n\treturn MSI11;\n}(_MSI3.default);\n\nexports.default = MSI11;", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _MSI2 = require('./MSI.js');\n\nvar _MSI3 = _interopRequireDefault(_MSI2);\n\nvar _checksums = require('./checksums.js');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar MSI1010 = function (_MSI) {\n\t_inherits(MSI1010, _MSI);\n\n\tfunction MSI1010(data, options) {\n\t\t_classCallCheck(this, MSI1010);\n\n\t\tdata += (0, _checksums.mod10)(data);\n\t\tdata += (0, _checksums.mod10)(data);\n\t\treturn _possibleConstructorReturn(this, (MSI1010.__proto__ || Object.getPrototypeOf(MSI1010)).call(this, data, options));\n\t}\n\n\treturn MSI1010;\n}(_MSI3.default);\n\nexports.default = MSI1010;", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _MSI2 = require('./MSI.js');\n\nvar _MSI3 = _interopRequireDefault(_MSI2);\n\nvar _checksums = require('./checksums.js');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar MSI1110 = function (_MSI) {\n\t_inherits(MSI1110, _MSI);\n\n\tfunction MSI1110(data, options) {\n\t\t_classCallCheck(this, MSI1110);\n\n\t\tdata += (0, _checksums.mod11)(data);\n\t\tdata += (0, _checksums.mod10)(data);\n\t\treturn _possibleConstructorReturn(this, (MSI1110.__proto__ || Object.getPrototypeOf(MSI1110)).call(this, data, options));\n\t}\n\n\treturn MSI1110;\n}(_MSI3.default);\n\nexports.default = MSI1110;", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.MSI1110 = exports.MSI1010 = exports.MSI11 = exports.MSI10 = exports.MSI = undefined;\n\nvar _MSI = require('./MSI.js');\n\nvar _MSI2 = _interopRequireDefault(_MSI);\n\nvar _MSI3 = require('./MSI10.js');\n\nvar _MSI4 = _interopRequireDefault(_MSI3);\n\nvar _MSI5 = require('./MSI11.js');\n\nvar _MSI6 = _interopRequireDefault(_MSI5);\n\nvar _MSI7 = require('./MSI1010.js');\n\nvar _MSI8 = _interopRequireDefault(_MSI7);\n\nvar _MSI9 = require('./MSI1110.js');\n\nvar _MSI10 = _interopRequireDefault(_MSI9);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.MSI = _MSI2.default;\nexports.MSI10 = _MSI4.default;\nexports.MSI11 = _MSI6.default;\nexports.MSI1010 = _MSI8.default;\nexports.MSI1110 = _MSI10.default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.pharmacode = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _Barcode2 = require(\"../Barcode.js\");\n\nvar _Barcode3 = _interopRequireDefault(_Barcode2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // Encoding documentation\n// http://www.gomaro.ch/ftproot/Laetus_PHARMA-CODE.pdf\n\nvar pharmacode = function (_Barcode) {\n\t_inherits(pharmacode, _Barcode);\n\n\tfunction pharmacode(data, options) {\n\t\t_classCallCheck(this, pharmacode);\n\n\t\tvar _this = _possibleConstructorReturn(this, (pharmacode.__proto__ || Object.getPrototypeOf(pharmacode)).call(this, data, options));\n\n\t\t_this.number = parseInt(data, 10);\n\t\treturn _this;\n\t}\n\n\t_createClass(pharmacode, [{\n\t\tkey: \"encode\",\n\t\tvalue: function encode() {\n\t\t\tvar z = this.number;\n\t\t\tvar result = \"\";\n\n\t\t\t// http://i.imgur.com/RMm4UDJ.png\n\t\t\t// (source: http://www.gomaro.ch/ftproot/Laetus_PHARMA-CODE.pdf, page: 34)\n\t\t\twhile (!isNaN(z) && z != 0) {\n\t\t\t\tif (z % 2 === 0) {\n\t\t\t\t\t// Even\n\t\t\t\t\tresult = \"11100\" + result;\n\t\t\t\t\tz = (z - 2) / 2;\n\t\t\t\t} else {\n\t\t\t\t\t// Odd\n\t\t\t\t\tresult = \"100\" + result;\n\t\t\t\t\tz = (z - 1) / 2;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove the two last zeroes\n\t\t\tresult = result.slice(0, -2);\n\n\t\t\treturn {\n\t\t\t\tdata: result,\n\t\t\t\ttext: this.text\n\t\t\t};\n\t\t}\n\t}, {\n\t\tkey: \"valid\",\n\t\tvalue: function valid() {\n\t\t\treturn this.number >= 3 && this.number <= 131070;\n\t\t}\n\t}]);\n\n\treturn pharmacode;\n}(_Barcode3.default);\n\nexports.pharmacode = pharmacode;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.codabar = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _Barcode2 = require(\"../Barcode.js\");\n\nvar _Barcode3 = _interopRequireDefault(_Barcode2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // Encoding specification:\n// http://www.barcodeisland.com/codabar.phtml\n\nvar codabar = function (_Barcode) {\n\t_inherits(codabar, _Barcode);\n\n\tfunction codabar(data, options) {\n\t\t_classCallCheck(this, codabar);\n\n\t\tif (data.search(/^[0-9\\-\\$\\:\\.\\+\\/]+$/) === 0) {\n\t\t\tdata = \"A\" + data + \"A\";\n\t\t}\n\n\t\tvar _this = _possibleConstructorReturn(this, (codabar.__proto__ || Object.getPrototypeOf(codabar)).call(this, data.toUpperCase(), options));\n\n\t\t_this.text = _this.options.text || _this.text.replace(/[A-D]/g, '');\n\t\treturn _this;\n\t}\n\n\t_createClass(codabar, [{\n\t\tkey: \"valid\",\n\t\tvalue: function valid() {\n\t\t\treturn this.data.search(/^[A-D][0-9\\-\\$\\:\\.\\+\\/]+[A-D]$/) !== -1;\n\t\t}\n\t}, {\n\t\tkey: \"encode\",\n\t\tvalue: function encode() {\n\t\t\tvar result = [];\n\t\t\tvar encodings = this.getEncodings();\n\t\t\tfor (var i = 0; i < this.data.length; i++) {\n\t\t\t\tresult.push(encodings[this.data.charAt(i)]);\n\t\t\t\t// for all characters except the last, append a narrow-space (\"0\")\n\t\t\t\tif (i !== this.data.length - 1) {\n\t\t\t\t\tresult.push(\"0\");\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ttext: this.text,\n\t\t\t\tdata: result.join('')\n\t\t\t};\n\t\t}\n\t}, {\n\t\tkey: \"getEncodings\",\n\t\tvalue: function getEncodings() {\n\t\t\treturn {\n\t\t\t\t\"0\": \"101010011\",\n\t\t\t\t\"1\": \"101011001\",\n\t\t\t\t\"2\": \"101001011\",\n\t\t\t\t\"3\": \"110010101\",\n\t\t\t\t\"4\": \"101101001\",\n\t\t\t\t\"5\": \"110101001\",\n\t\t\t\t\"6\": \"100101011\",\n\t\t\t\t\"7\": \"100101101\",\n\t\t\t\t\"8\": \"100110101\",\n\t\t\t\t\"9\": \"110100101\",\n\t\t\t\t\"-\": \"101001101\",\n\t\t\t\t\"$\": \"101100101\",\n\t\t\t\t\":\": \"1101011011\",\n\t\t\t\t\"/\": \"1101101011\",\n\t\t\t\t\".\": \"1101101101\",\n\t\t\t\t\"+\": \"1011011011\",\n\t\t\t\t\"A\": \"1011001001\",\n\t\t\t\t\"B\": \"1001001011\",\n\t\t\t\t\"C\": \"1010010011\",\n\t\t\t\t\"D\": \"1010011001\"\n\t\t\t};\n\t\t}\n\t}]);\n\n\treturn codabar;\n}(_Barcode3.default);\n\nexports.codabar = codabar;", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n// The position in the array is the (checksum) value\nvar SYMBOLS = exports.SYMBOLS = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '-', '.', ' ', '$', '/', '+', '%',\n// Only used for csum and multi-symbols character encodings\n'($)', '(%)', '(/)', '(+)',\n// Start/Stop\n'\\xff'];\n\n// Order matches SYMBOLS array\nvar BINARIES = exports.BINARIES = ['100010100', '101001000', '101000100', '101000010', '100101000', '100100100', '100100010', '101010000', '100010010', '100001010', '110101000', '110100100', '110100010', '110010100', '110010010', '110001010', '101101000', '101100100', '101100010', '100110100', '100011010', '101011000', '101001100', '101000110', '100101100', '100010110', '110110100', '110110010', '110101100', '110100110', '110010110', '110011010', '101101100', '101100110', '100110110', '100111010', '100101110', '111010100', '111010010', '111001010', '101101110', '101110110', '110101110', '100100110', '111011010', '111010110', '100110010', '101011110'];\n\n// Multi-symbol characters (Full ASCII Code 93)\nvar MULTI_SYMBOLS = exports.MULTI_SYMBOLS = {\n\t'\\x00': ['(%)', 'U'],\n\t'\\x01': ['($)', 'A'],\n\t'\\x02': ['($)', 'B'],\n\t'\\x03': ['($)', 'C'],\n\t'\\x04': ['($)', 'D'],\n\t'\\x05': ['($)', 'E'],\n\t'\\x06': ['($)', 'F'],\n\t'\\x07': ['($)', 'G'],\n\t'\\x08': ['($)', 'H'],\n\t'\\x09': ['($)', 'I'],\n\t'\\x0a': ['($)', 'J'],\n\t'\\x0b': ['($)', 'K'],\n\t'\\x0c': ['($)', 'L'],\n\t'\\x0d': ['($)', 'M'],\n\t'\\x0e': ['($)', 'N'],\n\t'\\x0f': ['($)', 'O'],\n\t'\\x10': ['($)', 'P'],\n\t'\\x11': ['($)', 'Q'],\n\t'\\x12': ['($)', 'R'],\n\t'\\x13': ['($)', 'S'],\n\t'\\x14': ['($)', 'T'],\n\t'\\x15': ['($)', 'U'],\n\t'\\x16': ['($)', 'V'],\n\t'\\x17': ['($)', 'W'],\n\t'\\x18': ['($)', 'X'],\n\t'\\x19': ['($)', 'Y'],\n\t'\\x1a': ['($)', 'Z'],\n\t'\\x1b': ['(%)', 'A'],\n\t'\\x1c': ['(%)', 'B'],\n\t'\\x1d': ['(%)', 'C'],\n\t'\\x1e': ['(%)', 'D'],\n\t'\\x1f': ['(%)', 'E'],\n\t'!': ['(/)', 'A'],\n\t'\"': ['(/)', 'B'],\n\t'#': ['(/)', 'C'],\n\t'&': ['(/)', 'F'],\n\t'\\'': ['(/)', 'G'],\n\t'(': ['(/)', 'H'],\n\t')': ['(/)', 'I'],\n\t'*': ['(/)', 'J'],\n\t',': ['(/)', 'L'],\n\t':': ['(/)', 'Z'],\n\t';': ['(%)', 'F'],\n\t'<': ['(%)', 'G'],\n\t'=': ['(%)', 'H'],\n\t'>': ['(%)', 'I'],\n\t'?': ['(%)', 'J'],\n\t'@': ['(%)', 'V'],\n\t'[': ['(%)', 'K'],\n\t'\\\\': ['(%)', 'L'],\n\t']': ['(%)', 'M'],\n\t'^': ['(%)', 'N'],\n\t'_': ['(%)', 'O'],\n\t'`': ['(%)', 'W'],\n\t'a': ['(+)', 'A'],\n\t'b': ['(+)', 'B'],\n\t'c': ['(+)', 'C'],\n\t'd': ['(+)', 'D'],\n\t'e': ['(+)', 'E'],\n\t'f': ['(+)', 'F'],\n\t'g': ['(+)', 'G'],\n\t'h': ['(+)', 'H'],\n\t'i': ['(+)', 'I'],\n\t'j': ['(+)', 'J'],\n\t'k': ['(+)', 'K'],\n\t'l': ['(+)', 'L'],\n\t'm': ['(+)', 'M'],\n\t'n': ['(+)', 'N'],\n\t'o': ['(+)', 'O'],\n\t'p': ['(+)', 'P'],\n\t'q': ['(+)', 'Q'],\n\t'r': ['(+)', 'R'],\n\t's': ['(+)', 'S'],\n\t't': ['(+)', 'T'],\n\t'u': ['(+)', 'U'],\n\t'v': ['(+)', 'V'],\n\t'w': ['(+)', 'W'],\n\t'x': ['(+)', 'X'],\n\t'y': ['(+)', 'Y'],\n\t'z': ['(+)', 'Z'],\n\t'{': ['(%)', 'P'],\n\t'|': ['(%)', 'Q'],\n\t'}': ['(%)', 'R'],\n\t'~': ['(%)', 'S'],\n\t'\\x7f': ['(%)', 'T']\n};", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _constants = require('./constants');\n\nvar _Barcode2 = require('../Barcode.js');\n\nvar _Barcode3 = _interopRequireDefault(_Barcode2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // Encoding documentation:\n// https://en.wikipedia.org/wiki/Code_93#Detailed_outline\n\nvar CODE93 = function (_Barcode) {\n\t_inherits(CODE93, _Barcode);\n\n\tfunction CODE93(data, options) {\n\t\t_classCallCheck(this, CODE93);\n\n\t\treturn _possibleConstructorReturn(this, (CODE93.__proto__ || Object.getPrototypeOf(CODE93)).call(this, data, options));\n\t}\n\n\t_createClass(CODE93, [{\n\t\tkey: 'valid',\n\t\tvalue: function valid() {\n\t\t\treturn (/^[0-9A-Z\\-. $/+%]+$/.test(this.data)\n\t\t\t);\n\t\t}\n\t}, {\n\t\tkey: 'encode',\n\t\tvalue: function encode() {\n\t\t\tvar symbols = this.data.split('').flatMap(function (c) {\n\t\t\t\treturn _constants.MULTI_SYMBOLS[c] || c;\n\t\t\t});\n\t\t\tvar encoded = symbols.map(function (s) {\n\t\t\t\treturn CODE93.getEncoding(s);\n\t\t\t}).join('');\n\n\t\t\t// Compute checksum symbols\n\t\t\tvar csumC = CODE93.checksum(symbols, 20);\n\t\t\tvar csumK = CODE93.checksum(symbols.concat(csumC), 15);\n\n\t\t\treturn {\n\t\t\t\ttext: this.text,\n\t\t\t\tdata:\n\t\t\t\t// Add the start bits\n\t\t\t\tCODE93.getEncoding('\\xff') +\n\t\t\t\t// Add the encoded bits\n\t\t\t\tencoded +\n\t\t\t\t// Add the checksum\n\t\t\t\tCODE93.getEncoding(csumC) + CODE93.getEncoding(csumK) +\n\t\t\t\t// Add the stop bits\n\t\t\t\tCODE93.getEncoding('\\xff') +\n\t\t\t\t// Add the termination bit\n\t\t\t\t'1'\n\t\t\t};\n\t\t}\n\n\t\t// Get the binary encoding of a symbol\n\n\t}], [{\n\t\tkey: 'getEncoding',\n\t\tvalue: function getEncoding(symbol) {\n\t\t\treturn _constants.BINARIES[CODE93.symbolValue(symbol)];\n\t\t}\n\n\t\t// Get the symbol for a symbol value\n\n\t}, {\n\t\tkey: 'getSymbol',\n\t\tvalue: function getSymbol(symbolValue) {\n\t\t\treturn _constants.SYMBOLS[symbolValue];\n\t\t}\n\n\t\t// Get the symbol value of a symbol\n\n\t}, {\n\t\tkey: 'symbolValue',\n\t\tvalue: function symbolValue(symbol) {\n\t\t\treturn _constants.SYMBOLS.indexOf(symbol);\n\t\t}\n\n\t\t// Calculate a checksum symbol\n\n\t}, {\n\t\tkey: 'checksum',\n\t\tvalue: function checksum(symbols, maxWeight) {\n\t\t\tvar csum = symbols.slice().reverse().reduce(function (sum, symbol, idx) {\n\t\t\t\tvar weight = idx % maxWeight + 1;\n\t\t\t\treturn sum + CODE93.symbolValue(symbol) * weight;\n\t\t\t}, 0);\n\n\t\t\treturn CODE93.getSymbol(csum % 47);\n\t\t}\n\t}]);\n\n\treturn CODE93;\n}(_Barcode3.default);\n\nexports.default = CODE93;", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _CODE2 = require('./CODE93.js');\n\nvar _CODE3 = _interopRequireDefault(_CODE2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // Encoding documentation\n// https://en.wikipedia.org/wiki/Code_93#Full_ASCII_Code_93\n\nvar CODE93FullASCII = function (_CODE) {\n\t_inherits(CODE93FullASCII, _CODE);\n\n\tfunction CODE93FullASCII(data, options) {\n\t\t_classCallCheck(this, CODE93FullASCII);\n\n\t\treturn _possibleConstructorReturn(this, (CODE93FullASCII.__proto__ || Object.getPrototypeOf(CODE93FullASCII)).call(this, data, options));\n\t}\n\n\t_createClass(CODE93FullASCII, [{\n\t\tkey: 'valid',\n\t\tvalue: function valid() {\n\t\t\treturn (/^[\\x00-\\x7f]+$/.test(this.data)\n\t\t\t);\n\t\t}\n\t}]);\n\n\treturn CODE93FullASCII;\n}(_CODE3.default);\n\nexports.default = CODE93FullASCII;", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.CODE93FullASCII = exports.CODE93 = undefined;\n\nvar _CODE = require('./CODE93.js');\n\nvar _CODE2 = _interopRequireDefault(_CODE);\n\nvar _CODE93FullASCII = require('./CODE93FullASCII.js');\n\nvar _CODE93FullASCII2 = _interopRequireDefault(_CODE93FullASCII);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.CODE93 = _CODE2.default;\nexports.CODE93FullASCII = _CODE93FullASCII2.default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.GenericBarcode = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _Barcode2 = require(\"../Barcode.js\");\n\nvar _Barcode3 = _interopRequireDefault(_Barcode2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar GenericBarcode = function (_Barcode) {\n\t_inherits(GenericBarcode, _Barcode);\n\n\tfunction GenericBarcode(data, options) {\n\t\t_classCallCheck(this, GenericBarcode);\n\n\t\treturn _possibleConstructorReturn(this, (GenericBarcode.__proto__ || Object.getPrototypeOf(GenericBarcode)).call(this, data, options)); // Sets this.data and this.text\n\t}\n\n\t// Return the corresponding binary numbers for the data provided\n\n\n\t_createClass(GenericBarcode, [{\n\t\tkey: \"encode\",\n\t\tvalue: function encode() {\n\t\t\treturn {\n\t\t\t\tdata: \"10101010101010101010101010101010101010101\",\n\t\t\t\ttext: this.text\n\t\t\t};\n\t\t}\n\n\t\t// Resturn true/false if the string provided is valid for this encoder\n\n\t}, {\n\t\tkey: \"valid\",\n\t\tvalue: function valid() {\n\t\t\treturn true;\n\t\t}\n\t}]);\n\n\treturn GenericBarcode;\n}(_Barcode3.default);\n\nexports.GenericBarcode = GenericBarcode;", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _CODE = require('./CODE39/');\n\nvar _CODE2 = require('./CODE128/');\n\nvar _EAN_UPC = require('./EAN_UPC/');\n\nvar _ITF = require('./ITF/');\n\nvar _MSI = require('./MSI/');\n\nvar _pharmacode = require('./pharmacode/');\n\nvar _codabar = require('./codabar');\n\nvar _CODE3 = require('./CODE93/');\n\nvar _GenericBarcode = require('./GenericBarcode/');\n\nexports.default = {\n\tCODE39: _CODE.CODE39,\n\tCODE128: _CODE2.CODE128, CODE128A: _CODE2.CODE128A, CODE128B: _CODE2.CODE128B, CODE128C: _CODE2.CODE128C,\n\tEAN13: _EAN_UPC.EAN13, EAN8: _EAN_UPC.EAN8, EAN5: _EAN_UPC.EAN5, EAN2: _EAN_UPC.EAN2, UPC: _EAN_UPC.UPC, UPCE: _EAN_UPC.UPCE,\n\tITF14: _ITF.ITF14,\n\tITF: _ITF.ITF,\n\tMSI: _MSI.MSI, MSI10: _MSI.MSI10, MSI11: _MSI.MSI11, MSI1010: _MSI.MSI1010, MSI1110: _MSI.MSI1110,\n\tpharmacode: _pharmacode.pharmacode,\n\tcodabar: _codabar.codabar,\n\tCODE93: _CODE3.CODE93, CODE93FullASCII: _CODE3.CODE93FullASCII,\n\tGenericBarcode: _GenericBarcode.GenericBarcode\n};", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.default = function (old, replaceObj) {\n  return _extends({}, old, replaceObj);\n};", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.default = linearizeEncodings;\n\n// Encodings can be nestled like [[1-1, 1-2], 2, [3-1, 3-2]\n// Convert to [1-1, 1-2, 2, 3-1, 3-2]\n\nfunction linearizeEncodings(encodings) {\n\tvar linearEncodings = [];\n\tfunction nextLevel(encoded) {\n\t\tif (Array.isArray(encoded)) {\n\t\t\tfor (var i = 0; i < encoded.length; i++) {\n\t\t\t\tnextLevel(encoded[i]);\n\t\t\t}\n\t\t} else {\n\t\t\tencoded.text = encoded.text || \"\";\n\t\t\tencoded.data = encoded.data || \"\";\n\t\t\tlinearEncodings.push(encoded);\n\t\t}\n\t}\n\tnextLevel(encodings);\n\n\treturn linearEncodings;\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.default = fixOptions;\n\n\nfunction fixOptions(options) {\n\t// Fix the margins\n\toptions.marginTop = options.marginTop || options.margin;\n\toptions.marginBottom = options.marginBottom || options.margin;\n\toptions.marginRight = options.marginRight || options.margin;\n\toptions.marginLeft = options.marginLeft || options.margin;\n\n\treturn options;\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.default = optionsFromStrings;\n\n// Convert string to integers/booleans where it should be\n\nfunction optionsFromStrings(options) {\n\tvar intOptions = [\"width\", \"height\", \"textMargin\", \"fontSize\", \"margin\", \"marginTop\", \"marginBottom\", \"marginLeft\", \"marginRight\"];\n\n\tfor (var intOption in intOptions) {\n\t\tif (intOptions.hasOwnProperty(intOption)) {\n\t\t\tintOption = intOptions[intOption];\n\t\t\tif (typeof options[intOption] === \"string\") {\n\t\t\t\toptions[intOption] = parseInt(options[intOption], 10);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (typeof options[\"displayValue\"] === \"string\") {\n\t\toptions[\"displayValue\"] = options[\"displayValue\"] != \"false\";\n\t}\n\n\treturn options;\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nvar defaults = {\n\twidth: 2,\n\theight: 100,\n\tformat: \"auto\",\n\tdisplayValue: true,\n\tfontOptions: \"\",\n\tfont: \"monospace\",\n\ttext: undefined,\n\ttextAlign: \"center\",\n\ttextPosition: \"bottom\",\n\ttextMargin: 2,\n\tfontSize: 20,\n\tbackground: \"#ffffff\",\n\tlineColor: \"#000000\",\n\tmargin: 10,\n\tmarginTop: undefined,\n\tmarginBottom: undefined,\n\tmarginLeft: undefined,\n\tmarginRight: undefined,\n\tvalid: function valid() {}\n};\n\nexports.default = defaults;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _optionsFromStrings = require(\"./optionsFromStrings.js\");\n\nvar _optionsFromStrings2 = _interopRequireDefault(_optionsFromStrings);\n\nvar _defaults = require(\"../options/defaults.js\");\n\nvar _defaults2 = _interopRequireDefault(_defaults);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getOptionsFromElement(element) {\n\tvar options = {};\n\tfor (var property in _defaults2.default) {\n\t\tif (_defaults2.default.hasOwnProperty(property)) {\n\t\t\t// jsbarcode-*\n\t\t\tif (element.hasAttribute(\"jsbarcode-\" + property.toLowerCase())) {\n\t\t\t\toptions[property] = element.getAttribute(\"jsbarcode-\" + property.toLowerCase());\n\t\t\t}\n\n\t\t\t// data-*\n\t\t\tif (element.hasAttribute(\"data-\" + property.toLowerCase())) {\n\t\t\t\toptions[property] = element.getAttribute(\"data-\" + property.toLowerCase());\n\t\t\t}\n\t\t}\n\t}\n\n\toptions[\"value\"] = element.getAttribute(\"jsbarcode-value\") || element.getAttribute(\"data-value\");\n\n\t// Since all atributes are string they need to be converted to integers\n\toptions = (0, _optionsFromStrings2.default)(options);\n\n\treturn options;\n}\n\nexports.default = getOptionsFromElement;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.getTotalWidthOfEncodings = exports.calculateEncodingAttributes = exports.getBarcodePadding = exports.getEncodingHeight = exports.getMaximumHeightOfEncodings = undefined;\n\nvar _merge = require(\"../help/merge.js\");\n\nvar _merge2 = _interopRequireDefault(_merge);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getEncodingHeight(encoding, options) {\n\treturn options.height + (options.displayValue && encoding.text.length > 0 ? options.fontSize + options.textMargin : 0) + options.marginTop + options.marginBottom;\n}\n\nfunction getBarcodePadding(textWidth, barcodeWidth, options) {\n\tif (options.displayValue && barcodeWidth < textWidth) {\n\t\tif (options.textAlign == \"center\") {\n\t\t\treturn Math.floor((textWidth - barcodeWidth) / 2);\n\t\t} else if (options.textAlign == \"left\") {\n\t\t\treturn 0;\n\t\t} else if (options.textAlign == \"right\") {\n\t\t\treturn Math.floor(textWidth - barcodeWidth);\n\t\t}\n\t}\n\treturn 0;\n}\n\nfunction calculateEncodingAttributes(encodings, barcodeOptions, context) {\n\tfor (var i = 0; i < encodings.length; i++) {\n\t\tvar encoding = encodings[i];\n\t\tvar options = (0, _merge2.default)(barcodeOptions, encoding.options);\n\n\t\t// Calculate the width of the encoding\n\t\tvar textWidth;\n\t\tif (options.displayValue) {\n\t\t\ttextWidth = messureText(encoding.text, options, context);\n\t\t} else {\n\t\t\ttextWidth = 0;\n\t\t}\n\n\t\tvar barcodeWidth = encoding.data.length * options.width;\n\t\tencoding.width = Math.ceil(Math.max(textWidth, barcodeWidth));\n\n\t\tencoding.height = getEncodingHeight(encoding, options);\n\n\t\tencoding.barcodePadding = getBarcodePadding(textWidth, barcodeWidth, options);\n\t}\n}\n\nfunction getTotalWidthOfEncodings(encodings) {\n\tvar totalWidth = 0;\n\tfor (var i = 0; i < encodings.length; i++) {\n\t\ttotalWidth += encodings[i].width;\n\t}\n\treturn totalWidth;\n}\n\nfunction getMaximumHeightOfEncodings(encodings) {\n\tvar maxHeight = 0;\n\tfor (var i = 0; i < encodings.length; i++) {\n\t\tif (encodings[i].height > maxHeight) {\n\t\t\tmaxHeight = encodings[i].height;\n\t\t}\n\t}\n\treturn maxHeight;\n}\n\nfunction messureText(string, options, context) {\n\tvar ctx;\n\n\tif (context) {\n\t\tctx = context;\n\t} else if (typeof document !== \"undefined\") {\n\t\tctx = document.createElement(\"canvas\").getContext(\"2d\");\n\t} else {\n\t\t// If the text cannot be messured we will return 0.\n\t\t// This will make some barcode with big text render incorrectly\n\t\treturn 0;\n\t}\n\tctx.font = options.fontOptions + \" \" + options.fontSize + \"px \" + options.font;\n\n\t// Calculate the width of the encoding\n\tvar measureTextResult = ctx.measureText(string);\n\tif (!measureTextResult) {\n\t\t// Some implementations don't implement measureText and return undefined.\n\t\t// If the text cannot be measured we will return 0.\n\t\t// This will make some barcode with big text render incorrectly\n\t\treturn 0;\n\t}\n\tvar size = measureTextResult.width;\n\treturn size;\n}\n\nexports.getMaximumHeightOfEncodings = getMaximumHeightOfEncodings;\nexports.getEncodingHeight = getEncodingHeight;\nexports.getBarcodePadding = getBarcodePadding;\nexports.calculateEncodingAttributes = calculateEncodingAttributes;\nexports.getTotalWidthOfEncodings = getTotalWidthOfEncodings;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _merge = require(\"../help/merge.js\");\n\nvar _merge2 = _interopRequireDefault(_merge);\n\nvar _shared = require(\"./shared.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar CanvasRenderer = function () {\n\tfunction CanvasRenderer(canvas, encodings, options) {\n\t\t_classCallCheck(this, CanvasRenderer);\n\n\t\tthis.canvas = canvas;\n\t\tthis.encodings = encodings;\n\t\tthis.options = options;\n\t}\n\n\t_createClass(CanvasRenderer, [{\n\t\tkey: \"render\",\n\t\tvalue: function render() {\n\t\t\t// Abort if the browser does not support HTML5 canvas\n\t\t\tif (!this.canvas.getContext) {\n\t\t\t\tthrow new Error('The browser does not support canvas.');\n\t\t\t}\n\n\t\t\tthis.prepareCanvas();\n\t\t\tfor (var i = 0; i < this.encodings.length; i++) {\n\t\t\t\tvar encodingOptions = (0, _merge2.default)(this.options, this.encodings[i].options);\n\n\t\t\t\tthis.drawCanvasBarcode(encodingOptions, this.encodings[i]);\n\t\t\t\tthis.drawCanvasText(encodingOptions, this.encodings[i]);\n\n\t\t\t\tthis.moveCanvasDrawing(this.encodings[i]);\n\t\t\t}\n\n\t\t\tthis.restoreCanvas();\n\t\t}\n\t}, {\n\t\tkey: \"prepareCanvas\",\n\t\tvalue: function prepareCanvas() {\n\t\t\t// Get the canvas context\n\t\t\tvar ctx = this.canvas.getContext(\"2d\");\n\n\t\t\tctx.save();\n\n\t\t\t(0, _shared.calculateEncodingAttributes)(this.encodings, this.options, ctx);\n\t\t\tvar totalWidth = (0, _shared.getTotalWidthOfEncodings)(this.encodings);\n\t\t\tvar maxHeight = (0, _shared.getMaximumHeightOfEncodings)(this.encodings);\n\n\t\t\tthis.canvas.width = totalWidth + this.options.marginLeft + this.options.marginRight;\n\n\t\t\tthis.canvas.height = maxHeight;\n\n\t\t\t// Paint the canvas\n\t\t\tctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n\t\t\tif (this.options.background) {\n\t\t\t\tctx.fillStyle = this.options.background;\n\t\t\t\tctx.fillRect(0, 0, this.canvas.width, this.canvas.height);\n\t\t\t}\n\n\t\t\tctx.translate(this.options.marginLeft, 0);\n\t\t}\n\t}, {\n\t\tkey: \"drawCanvasBarcode\",\n\t\tvalue: function drawCanvasBarcode(options, encoding) {\n\t\t\t// Get the canvas context\n\t\t\tvar ctx = this.canvas.getContext(\"2d\");\n\n\t\t\tvar binary = encoding.data;\n\n\t\t\t// Creates the barcode out of the encoded binary\n\t\t\tvar yFrom;\n\t\t\tif (options.textPosition == \"top\") {\n\t\t\t\tyFrom = options.marginTop + options.fontSize + options.textMargin;\n\t\t\t} else {\n\t\t\t\tyFrom = options.marginTop;\n\t\t\t}\n\n\t\t\tctx.fillStyle = options.lineColor;\n\n\t\t\tfor (var b = 0; b < binary.length; b++) {\n\t\t\t\tvar x = b * options.width + encoding.barcodePadding;\n\n\t\t\t\tif (binary[b] === \"1\") {\n\t\t\t\t\tctx.fillRect(x, yFrom, options.width, options.height);\n\t\t\t\t} else if (binary[b]) {\n\t\t\t\t\tctx.fillRect(x, yFrom, options.width, options.height * binary[b]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: \"drawCanvasText\",\n\t\tvalue: function drawCanvasText(options, encoding) {\n\t\t\t// Get the canvas context\n\t\t\tvar ctx = this.canvas.getContext(\"2d\");\n\n\t\t\tvar font = options.fontOptions + \" \" + options.fontSize + \"px \" + options.font;\n\n\t\t\t// Draw the text if displayValue is set\n\t\t\tif (options.displayValue) {\n\t\t\t\tvar x, y;\n\n\t\t\t\tif (options.textPosition == \"top\") {\n\t\t\t\t\ty = options.marginTop + options.fontSize - options.textMargin;\n\t\t\t\t} else {\n\t\t\t\t\ty = options.height + options.textMargin + options.marginTop + options.fontSize;\n\t\t\t\t}\n\n\t\t\t\tctx.font = font;\n\n\t\t\t\t// Draw the text in the correct X depending on the textAlign option\n\t\t\t\tif (options.textAlign == \"left\" || encoding.barcodePadding > 0) {\n\t\t\t\t\tx = 0;\n\t\t\t\t\tctx.textAlign = 'left';\n\t\t\t\t} else if (options.textAlign == \"right\") {\n\t\t\t\t\tx = encoding.width - 1;\n\t\t\t\t\tctx.textAlign = 'right';\n\t\t\t\t}\n\t\t\t\t// In all other cases, center the text\n\t\t\t\telse {\n\t\t\t\t\t\tx = encoding.width / 2;\n\t\t\t\t\t\tctx.textAlign = 'center';\n\t\t\t\t\t}\n\n\t\t\t\tctx.fillText(encoding.text, x, y);\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: \"moveCanvasDrawing\",\n\t\tvalue: function moveCanvasDrawing(encoding) {\n\t\t\tvar ctx = this.canvas.getContext(\"2d\");\n\n\t\t\tctx.translate(encoding.width, 0);\n\t\t}\n\t}, {\n\t\tkey: \"restoreCanvas\",\n\t\tvalue: function restoreCanvas() {\n\t\t\t// Get the canvas context\n\t\t\tvar ctx = this.canvas.getContext(\"2d\");\n\n\t\t\tctx.restore();\n\t\t}\n\t}]);\n\n\treturn CanvasRenderer;\n}();\n\nexports.default = CanvasRenderer;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _merge = require(\"../help/merge.js\");\n\nvar _merge2 = _interopRequireDefault(_merge);\n\nvar _shared = require(\"./shared.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar svgns = \"http://www.w3.org/2000/svg\";\n\nvar SVGRenderer = function () {\n\tfunction SVGRenderer(svg, encodings, options) {\n\t\t_classCallCheck(this, SVGRenderer);\n\n\t\tthis.svg = svg;\n\t\tthis.encodings = encodings;\n\t\tthis.options = options;\n\t\tthis.document = options.xmlDocument || document;\n\t}\n\n\t_createClass(SVGRenderer, [{\n\t\tkey: \"render\",\n\t\tvalue: function render() {\n\t\t\tvar currentX = this.options.marginLeft;\n\n\t\t\tthis.prepareSVG();\n\t\t\tfor (var i = 0; i < this.encodings.length; i++) {\n\t\t\t\tvar encoding = this.encodings[i];\n\t\t\t\tvar encodingOptions = (0, _merge2.default)(this.options, encoding.options);\n\n\t\t\t\tvar group = this.createGroup(currentX, encodingOptions.marginTop, this.svg);\n\n\t\t\t\tthis.setGroupOptions(group, encodingOptions);\n\n\t\t\t\tthis.drawSvgBarcode(group, encodingOptions, encoding);\n\t\t\t\tthis.drawSVGText(group, encodingOptions, encoding);\n\n\t\t\t\tcurrentX += encoding.width;\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: \"prepareSVG\",\n\t\tvalue: function prepareSVG() {\n\t\t\t// Clear the SVG\n\t\t\twhile (this.svg.firstChild) {\n\t\t\t\tthis.svg.removeChild(this.svg.firstChild);\n\t\t\t}\n\n\t\t\t(0, _shared.calculateEncodingAttributes)(this.encodings, this.options);\n\t\t\tvar totalWidth = (0, _shared.getTotalWidthOfEncodings)(this.encodings);\n\t\t\tvar maxHeight = (0, _shared.getMaximumHeightOfEncodings)(this.encodings);\n\n\t\t\tvar width = totalWidth + this.options.marginLeft + this.options.marginRight;\n\t\t\tthis.setSvgAttributes(width, maxHeight);\n\n\t\t\tif (this.options.background) {\n\t\t\t\tthis.drawRect(0, 0, width, maxHeight, this.svg).setAttribute(\"fill\", this.options.background);\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: \"drawSvgBarcode\",\n\t\tvalue: function drawSvgBarcode(parent, options, encoding) {\n\t\t\tvar binary = encoding.data;\n\n\t\t\t// Creates the barcode out of the encoded binary\n\t\t\tvar yFrom;\n\t\t\tif (options.textPosition == \"top\") {\n\t\t\t\tyFrom = options.fontSize + options.textMargin;\n\t\t\t} else {\n\t\t\t\tyFrom = 0;\n\t\t\t}\n\n\t\t\tvar barWidth = 0;\n\t\t\tvar x = 0;\n\t\t\tfor (var b = 0; b < binary.length; b++) {\n\t\t\t\tx = b * options.width + encoding.barcodePadding;\n\n\t\t\t\tif (binary[b] === \"1\") {\n\t\t\t\t\tbarWidth++;\n\t\t\t\t} else if (barWidth > 0) {\n\t\t\t\t\tthis.drawRect(x - options.width * barWidth, yFrom, options.width * barWidth, options.height, parent);\n\t\t\t\t\tbarWidth = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Last draw is needed since the barcode ends with 1\n\t\t\tif (barWidth > 0) {\n\t\t\t\tthis.drawRect(x - options.width * (barWidth - 1), yFrom, options.width * barWidth, options.height, parent);\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: \"drawSVGText\",\n\t\tvalue: function drawSVGText(parent, options, encoding) {\n\t\t\tvar textElem = this.document.createElementNS(svgns, 'text');\n\n\t\t\t// Draw the text if displayValue is set\n\t\t\tif (options.displayValue) {\n\t\t\t\tvar x, y;\n\n\t\t\t\ttextElem.setAttribute(\"font-family\", options.font);\n\t\t\t\ttextElem.setAttribute(\"font-size\", options.fontSize);\n\t\t\t\tif (options.fontOptions.includes(\"bold\")) {\n\t\t\t\t\ttextElem.setAttribute(\"font-weight\", \"bold\");\n\t\t\t\t}\n\t\t\t\tif (options.fontOptions.includes(\"italic\")) {\n\t\t\t\t\ttextElem.setAttribute(\"font-style\", \"italic\");\n\t\t\t\t}\n\n\t\t\t\tif (options.textPosition == \"top\") {\n\t\t\t\t\ty = options.fontSize - options.textMargin;\n\t\t\t\t} else {\n\t\t\t\t\ty = options.height + options.textMargin + options.fontSize;\n\t\t\t\t}\n\n\t\t\t\t// Draw the text in the correct X depending on the textAlign option\n\t\t\t\tif (options.textAlign == \"left\" || encoding.barcodePadding > 0) {\n\t\t\t\t\tx = 0;\n\t\t\t\t\ttextElem.setAttribute(\"text-anchor\", \"start\");\n\t\t\t\t} else if (options.textAlign == \"right\") {\n\t\t\t\t\tx = encoding.width - 1;\n\t\t\t\t\ttextElem.setAttribute(\"text-anchor\", \"end\");\n\t\t\t\t}\n\t\t\t\t// In all other cases, center the text\n\t\t\t\telse {\n\t\t\t\t\t\tx = encoding.width / 2;\n\t\t\t\t\t\ttextElem.setAttribute(\"text-anchor\", \"middle\");\n\t\t\t\t\t}\n\n\t\t\t\ttextElem.setAttribute(\"x\", x);\n\t\t\t\ttextElem.setAttribute(\"y\", y);\n\n\t\t\t\ttextElem.appendChild(this.document.createTextNode(encoding.text));\n\n\t\t\t\tparent.appendChild(textElem);\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: \"setSvgAttributes\",\n\t\tvalue: function setSvgAttributes(width, height) {\n\t\t\tvar svg = this.svg;\n\t\t\tsvg.setAttribute(\"width\", width + \"px\");\n\t\t\tsvg.setAttribute(\"height\", height + \"px\");\n\t\t\tsvg.setAttribute(\"x\", \"0px\");\n\t\t\tsvg.setAttribute(\"y\", \"0px\");\n\t\t\tsvg.setAttribute(\"viewBox\", \"0 0 \" + width + \" \" + height);\n\n\t\t\tsvg.setAttribute(\"xmlns\", svgns);\n\t\t\tsvg.setAttribute(\"version\", \"1.1\");\n\t\t}\n\t}, {\n\t\tkey: \"createGroup\",\n\t\tvalue: function createGroup(x, y, parent) {\n\t\t\tvar group = this.document.createElementNS(svgns, 'g');\n\t\t\tgroup.setAttribute(\"transform\", \"translate(\" + x + \", \" + y + \")\");\n\n\t\t\tparent.appendChild(group);\n\n\t\t\treturn group;\n\t\t}\n\t}, {\n\t\tkey: \"setGroupOptions\",\n\t\tvalue: function setGroupOptions(group, options) {\n\t\t\tgroup.setAttribute(\"fill\", options.lineColor);\n\t\t}\n\t}, {\n\t\tkey: \"drawRect\",\n\t\tvalue: function drawRect(x, y, width, height, parent) {\n\t\t\tvar rect = this.document.createElementNS(svgns, 'rect');\n\n\t\t\trect.setAttribute(\"x\", x);\n\t\t\trect.setAttribute(\"y\", y);\n\t\t\trect.setAttribute(\"width\", width);\n\t\t\trect.setAttribute(\"height\", height);\n\n\t\t\tparent.appendChild(rect);\n\n\t\t\treturn rect;\n\t\t}\n\t}]);\n\n\treturn SVGRenderer;\n}();\n\nexports.default = SVGRenderer;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ObjectRenderer = function () {\n\tfunction ObjectRenderer(object, encodings, options) {\n\t\t_classCallCheck(this, ObjectRenderer);\n\n\t\tthis.object = object;\n\t\tthis.encodings = encodings;\n\t\tthis.options = options;\n\t}\n\n\t_createClass(ObjectRenderer, [{\n\t\tkey: \"render\",\n\t\tvalue: function render() {\n\t\t\tthis.object.encodings = this.encodings;\n\t\t}\n\t}]);\n\n\treturn ObjectRenderer;\n}();\n\nexports.default = ObjectRenderer;", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _canvas = require('./canvas.js');\n\nvar _canvas2 = _interopRequireDefault(_canvas);\n\nvar _svg = require('./svg.js');\n\nvar _svg2 = _interopRequireDefault(_svg);\n\nvar _object = require('./object.js');\n\nvar _object2 = _interopRequireDefault(_object);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = { CanvasRenderer: _canvas2.default, SVGRenderer: _svg2.default, ObjectRenderer: _object2.default };", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar InvalidInputException = function (_Error) {\n\t_inherits(InvalidInputException, _Error);\n\n\tfunction InvalidInputException(symbology, input) {\n\t\t_classCallCheck(this, InvalidInputException);\n\n\t\tvar _this = _possibleConstructorReturn(this, (InvalidInputException.__proto__ || Object.getPrototypeOf(InvalidInputException)).call(this));\n\n\t\t_this.name = \"InvalidInputException\";\n\n\t\t_this.symbology = symbology;\n\t\t_this.input = input;\n\n\t\t_this.message = '\"' + _this.input + '\" is not a valid input for ' + _this.symbology;\n\t\treturn _this;\n\t}\n\n\treturn InvalidInputException;\n}(Error);\n\nvar InvalidElementException = function (_Error2) {\n\t_inherits(InvalidElementException, _Error2);\n\n\tfunction InvalidElementException() {\n\t\t_classCallCheck(this, InvalidElementException);\n\n\t\tvar _this2 = _possibleConstructorReturn(this, (InvalidElementException.__proto__ || Object.getPrototypeOf(InvalidElementException)).call(this));\n\n\t\t_this2.name = \"InvalidElementException\";\n\t\t_this2.message = \"Not supported type to render on\";\n\t\treturn _this2;\n\t}\n\n\treturn InvalidElementException;\n}(Error);\n\nvar NoElementException = function (_Error3) {\n\t_inherits(NoElementException, _Error3);\n\n\tfunction NoElementException() {\n\t\t_classCallCheck(this, NoElementException);\n\n\t\tvar _this3 = _possibleConstructorReturn(this, (NoElementException.__proto__ || Object.getPrototypeOf(NoElementException)).call(this));\n\n\t\t_this3.name = \"NoElementException\";\n\t\t_this3.message = \"No element to render on.\";\n\t\treturn _this3;\n\t}\n\n\treturn NoElementException;\n}(Error);\n\nexports.InvalidInputException = InvalidInputException;\nexports.InvalidElementException = InvalidElementException;\nexports.NoElementException = NoElementException;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; /* global HTMLImageElement */\n/* global HTMLCanvasElement */\n/* global SVGElement */\n\nvar _getOptionsFromElement = require(\"./getOptionsFromElement.js\");\n\nvar _getOptionsFromElement2 = _interopRequireDefault(_getOptionsFromElement);\n\nvar _renderers = require(\"../renderers\");\n\nvar _renderers2 = _interopRequireDefault(_renderers);\n\nvar _exceptions = require(\"../exceptions/exceptions.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Takes an element and returns an object with information about how\n// it should be rendered\n// This could also return an array with these objects\n// {\n//   element: The element that the renderer should draw on\n//   renderer: The name of the renderer\n//   afterRender (optional): If something has to done after the renderer\n//     completed, calls afterRender (function)\n//   options (optional): Options that can be defined in the element\n// }\n\nfunction getRenderProperties(element) {\n\t// If the element is a string, query select call again\n\tif (typeof element === \"string\") {\n\t\treturn querySelectedRenderProperties(element);\n\t}\n\t// If element is array. Recursivly call with every object in the array\n\telse if (Array.isArray(element)) {\n\t\t\tvar returnArray = [];\n\t\t\tfor (var i = 0; i < element.length; i++) {\n\t\t\t\treturnArray.push(getRenderProperties(element[i]));\n\t\t\t}\n\t\t\treturn returnArray;\n\t\t}\n\t\t// If element, render on canvas and set the uri as src\n\t\telse if (typeof HTMLCanvasElement !== 'undefined' && element instanceof HTMLImageElement) {\n\t\t\t\treturn newCanvasRenderProperties(element);\n\t\t\t}\n\t\t\t// If SVG\n\t\t\telse if (element && element.nodeName && element.nodeName.toLowerCase() === 'svg' || typeof SVGElement !== 'undefined' && element instanceof SVGElement) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\telement: element,\n\t\t\t\t\t\toptions: (0, _getOptionsFromElement2.default)(element),\n\t\t\t\t\t\trenderer: _renderers2.default.SVGRenderer\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\t// If canvas (in browser)\n\t\t\t\telse if (typeof HTMLCanvasElement !== 'undefined' && element instanceof HTMLCanvasElement) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\telement: element,\n\t\t\t\t\t\t\toptions: (0, _getOptionsFromElement2.default)(element),\n\t\t\t\t\t\t\trenderer: _renderers2.default.CanvasRenderer\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\t// If canvas (in node)\n\t\t\t\t\telse if (element && element.getContext) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\telement: element,\n\t\t\t\t\t\t\t\trenderer: _renderers2.default.CanvasRenderer\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else if (element && (typeof element === \"undefined\" ? \"undefined\" : _typeof(element)) === 'object' && !element.nodeName) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\telement: element,\n\t\t\t\t\t\t\t\trenderer: _renderers2.default.ObjectRenderer\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthrow new _exceptions.InvalidElementException();\n\t\t\t\t\t\t}\n}\n\nfunction querySelectedRenderProperties(string) {\n\tvar selector = document.querySelectorAll(string);\n\tif (selector.length === 0) {\n\t\treturn undefined;\n\t} else {\n\t\tvar returnArray = [];\n\t\tfor (var i = 0; i < selector.length; i++) {\n\t\t\treturnArray.push(getRenderProperties(selector[i]));\n\t\t}\n\t\treturn returnArray;\n\t}\n}\n\nfunction newCanvasRenderProperties(imgElement) {\n\tvar canvas = document.createElement('canvas');\n\treturn {\n\t\telement: canvas,\n\t\toptions: (0, _getOptionsFromElement2.default)(imgElement),\n\t\trenderer: _renderers2.default.CanvasRenderer,\n\t\tafterRender: function afterRender() {\n\t\t\timgElement.setAttribute(\"src\", canvas.toDataURL());\n\t\t}\n\t};\n}\n\nexports.default = getRenderProperties;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/*eslint no-console: 0 */\n\nvar ErrorHandler = function () {\n\tfunction ErrorHandler(api) {\n\t\t_classCallCheck(this, ErrorHandler);\n\n\t\tthis.api = api;\n\t}\n\n\t_createClass(ErrorHandler, [{\n\t\tkey: \"handleCatch\",\n\t\tvalue: function handleCatch(e) {\n\t\t\t// If babel supported extending of Error in a correct way instanceof would be used here\n\t\t\tif (e.name === \"InvalidInputException\") {\n\t\t\t\tif (this.api._options.valid !== this.api._defaults.valid) {\n\t\t\t\t\tthis.api._options.valid(false);\n\t\t\t\t} else {\n\t\t\t\t\tthrow e.message;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthrow e;\n\t\t\t}\n\n\t\t\tthis.api.render = function () {};\n\t\t}\n\t}, {\n\t\tkey: \"wrapBarcodeCall\",\n\t\tvalue: function wrapBarcodeCall(func) {\n\t\t\ttry {\n\t\t\t\tvar result = func.apply(undefined, arguments);\n\t\t\t\tthis.api._options.valid(true);\n\t\t\t\treturn result;\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleCatch(e);\n\n\t\t\t\treturn this.api;\n\t\t\t}\n\t\t}\n\t}]);\n\n\treturn ErrorHandler;\n}();\n\nexports.default = ErrorHandler;", "'use strict';\n\nvar _barcodes = require('./barcodes/');\n\nvar _barcodes2 = _interopRequireDefault(_barcodes);\n\nvar _merge = require('./help/merge.js');\n\nvar _merge2 = _interopRequireDefault(_merge);\n\nvar _linearizeEncodings = require('./help/linearizeEncodings.js');\n\nvar _linearizeEncodings2 = _interopRequireDefault(_linearizeEncodings);\n\nvar _fixOptions = require('./help/fixOptions.js');\n\nvar _fixOptions2 = _interopRequireDefault(_fixOptions);\n\nvar _getRenderProperties = require('./help/getRenderProperties.js');\n\nvar _getRenderProperties2 = _interopRequireDefault(_getRenderProperties);\n\nvar _optionsFromStrings = require('./help/optionsFromStrings.js');\n\nvar _optionsFromStrings2 = _interopRequireDefault(_optionsFromStrings);\n\nvar _ErrorHandler = require('./exceptions/ErrorHandler.js');\n\nvar _ErrorHandler2 = _interopRequireDefault(_ErrorHandler);\n\nvar _exceptions = require('./exceptions/exceptions.js');\n\nvar _defaults = require('./options/defaults.js');\n\nvar _defaults2 = _interopRequireDefault(_defaults);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// The protype of the object returned from the JsBarcode() call\n\n\n// Help functions\nvar API = function API() {};\n\n// The first call of the library API\n// Will return an object with all barcodes calls and the data that is used\n// by the renderers\n\n\n// Default values\n\n\n// Exceptions\n// Import all the barcodes\nvar JsBarcode = function JsBarcode(element, text, options) {\n\tvar api = new API();\n\n\tif (typeof element === \"undefined\") {\n\t\tthrow Error(\"No element to render on was provided.\");\n\t}\n\n\t// Variables that will be pased through the API calls\n\tapi._renderProperties = (0, _getRenderProperties2.default)(element);\n\tapi._encodings = [];\n\tapi._options = _defaults2.default;\n\tapi._errorHandler = new _ErrorHandler2.default(api);\n\n\t// If text is set, use the simple syntax (render the barcode directly)\n\tif (typeof text !== \"undefined\") {\n\t\toptions = options || {};\n\n\t\tif (!options.format) {\n\t\t\toptions.format = autoSelectBarcode();\n\t\t}\n\n\t\tapi.options(options)[options.format](text, options).render();\n\t}\n\n\treturn api;\n};\n\n// To make tests work TODO: remove\nJsBarcode.getModule = function (name) {\n\treturn _barcodes2.default[name];\n};\n\n// Register all barcodes\nfor (var name in _barcodes2.default) {\n\tif (_barcodes2.default.hasOwnProperty(name)) {\n\t\t// Security check if the propery is a prototype property\n\t\tregisterBarcode(_barcodes2.default, name);\n\t}\n}\nfunction registerBarcode(barcodes, name) {\n\tAPI.prototype[name] = API.prototype[name.toUpperCase()] = API.prototype[name.toLowerCase()] = function (text, options) {\n\t\tvar api = this;\n\t\treturn api._errorHandler.wrapBarcodeCall(function () {\n\t\t\t// Ensure text is options.text\n\t\t\toptions.text = typeof options.text === 'undefined' ? undefined : '' + options.text;\n\n\t\t\tvar newOptions = (0, _merge2.default)(api._options, options);\n\t\t\tnewOptions = (0, _optionsFromStrings2.default)(newOptions);\n\t\t\tvar Encoder = barcodes[name];\n\t\t\tvar encoded = encode(text, Encoder, newOptions);\n\t\t\tapi._encodings.push(encoded);\n\n\t\t\treturn api;\n\t\t});\n\t};\n}\n\n// encode() handles the Encoder call and builds the binary string to be rendered\nfunction encode(text, Encoder, options) {\n\t// Ensure that text is a string\n\ttext = \"\" + text;\n\n\tvar encoder = new Encoder(text, options);\n\n\t// If the input is not valid for the encoder, throw error.\n\t// If the valid callback option is set, call it instead of throwing error\n\tif (!encoder.valid()) {\n\t\tthrow new _exceptions.InvalidInputException(encoder.constructor.name, text);\n\t}\n\n\t// Make a request for the binary data (and other infromation) that should be rendered\n\tvar encoded = encoder.encode();\n\n\t// Encodings can be nestled like [[1-1, 1-2], 2, [3-1, 3-2]\n\t// Convert to [1-1, 1-2, 2, 3-1, 3-2]\n\tencoded = (0, _linearizeEncodings2.default)(encoded);\n\n\t// Merge\n\tfor (var i = 0; i < encoded.length; i++) {\n\t\tencoded[i].options = (0, _merge2.default)(options, encoded[i].options);\n\t}\n\n\treturn encoded;\n}\n\nfunction autoSelectBarcode() {\n\t// If CODE128 exists. Use it\n\tif (_barcodes2.default[\"CODE128\"]) {\n\t\treturn \"CODE128\";\n\t}\n\n\t// Else, take the first (probably only) barcode\n\treturn Object.keys(_barcodes2.default)[0];\n}\n\n// Sets global encoder options\n// Added to the api by the JsBarcode function\nAPI.prototype.options = function (options) {\n\tthis._options = (0, _merge2.default)(this._options, options);\n\treturn this;\n};\n\n// Will create a blank space (usually in between barcodes)\nAPI.prototype.blank = function (size) {\n\tvar zeroes = new Array(size + 1).join(\"0\");\n\tthis._encodings.push({ data: zeroes });\n\treturn this;\n};\n\n// Initialize JsBarcode on all HTML elements defined.\nAPI.prototype.init = function () {\n\t// Should do nothing if no elements where found\n\tif (!this._renderProperties) {\n\t\treturn;\n\t}\n\n\t// Make sure renderProperies is an array\n\tif (!Array.isArray(this._renderProperties)) {\n\t\tthis._renderProperties = [this._renderProperties];\n\t}\n\n\tvar renderProperty;\n\tfor (var i in this._renderProperties) {\n\t\trenderProperty = this._renderProperties[i];\n\t\tvar options = (0, _merge2.default)(this._options, renderProperty.options);\n\n\t\tif (options.format == \"auto\") {\n\t\t\toptions.format = autoSelectBarcode();\n\t\t}\n\n\t\tthis._errorHandler.wrapBarcodeCall(function () {\n\t\t\tvar text = options.value;\n\t\t\tvar Encoder = _barcodes2.default[options.format.toUpperCase()];\n\t\t\tvar encoded = encode(text, Encoder, options);\n\n\t\t\trender(renderProperty, encoded, options);\n\t\t});\n\t}\n};\n\n// The render API call. Calls the real render function.\nAPI.prototype.render = function () {\n\tif (!this._renderProperties) {\n\t\tthrow new _exceptions.NoElementException();\n\t}\n\n\tif (Array.isArray(this._renderProperties)) {\n\t\tfor (var i = 0; i < this._renderProperties.length; i++) {\n\t\t\trender(this._renderProperties[i], this._encodings, this._options);\n\t\t}\n\t} else {\n\t\trender(this._renderProperties, this._encodings, this._options);\n\t}\n\n\treturn this;\n};\n\nAPI.prototype._defaults = _defaults2.default;\n\n// Prepares the encodings and calls the renderer\nfunction render(renderProperties, encodings, options) {\n\tencodings = (0, _linearizeEncodings2.default)(encodings);\n\n\tfor (var i = 0; i < encodings.length; i++) {\n\t\tencodings[i].options = (0, _merge2.default)(options, encodings[i].options);\n\t\t(0, _fixOptions2.default)(encodings[i].options);\n\t}\n\n\t(0, _fixOptions2.default)(options);\n\n\tvar Renderer = renderProperties.renderer;\n\tvar renderer = new Renderer(renderProperties.element, encodings, options);\n\trenderer.render();\n\n\tif (renderProperties.afterRender) {\n\t\trenderProperties.afterRender();\n\t}\n}\n\n// Export to browser\nif (typeof window !== \"undefined\") {\n\twindow.JsBarcode = JsBarcode;\n}\n\n// Export to jQuery\n/*global jQuery */\nif (typeof jQuery !== 'undefined') {\n\tjQuery.fn.JsBarcode = function (content, options) {\n\t\tvar elementArray = [];\n\t\tjQuery(this).each(function () {\n\t\t\telementArray.push(this);\n\t\t});\n\t\treturn JsBarcode(elementArray, content, options);\n\t};\n}\n\n// Export to commonJS\nmodule.exports = JsBarcode;", "/*!\nTurbo 8.0.23\nCopyright \u00A9 2026 37signals LLC\n */\nconst FrameLoadingStyle = {\n  eager: \"eager\",\n  lazy: \"lazy\"\n};\n\n/**\n * Contains a fragment of HTML which is updated based on navigation within\n * it (e.g. via links or form submissions).\n *\n * @customElement turbo-frame\n * @example\n *   <turbo-frame id=\"messages\">\n *     <a href=\"/messages/expanded\">\n *       Show all expanded messages in this frame.\n *     </a>\n *\n *     <form action=\"/messages\">\n *       Show response from this form within this frame.\n *     </form>\n *   </turbo-frame>\n */\nclass FrameElement extends HTMLElement {\n  static delegateConstructor = undefined\n\n  loaded = Promise.resolve()\n\n  static get observedAttributes() {\n    return [\"disabled\", \"loading\", \"src\"]\n  }\n\n  constructor() {\n    super();\n    this.delegate = new FrameElement.delegateConstructor(this);\n  }\n\n  connectedCallback() {\n    this.delegate.connect();\n  }\n\n  disconnectedCallback() {\n    this.delegate.disconnect();\n  }\n\n  reload() {\n    return this.delegate.sourceURLReloaded()\n  }\n\n  attributeChangedCallback(name) {\n    if (name == \"loading\") {\n      this.delegate.loadingStyleChanged();\n    } else if (name == \"src\") {\n      this.delegate.sourceURLChanged();\n    } else if (name == \"disabled\") {\n      this.delegate.disabledChanged();\n    }\n  }\n\n  /**\n   * Gets the URL to lazily load source HTML from\n   */\n  get src() {\n    return this.getAttribute(\"src\")\n  }\n\n  /**\n   * Sets the URL to lazily load source HTML from\n   */\n  set src(value) {\n    if (value) {\n      this.setAttribute(\"src\", value);\n    } else {\n      this.removeAttribute(\"src\");\n    }\n  }\n\n  /**\n   * Gets the refresh mode for the frame.\n   */\n  get refresh() {\n    return this.getAttribute(\"refresh\")\n  }\n\n  /**\n   * Sets the refresh mode for the frame.\n   */\n  set refresh(value) {\n    if (value) {\n      this.setAttribute(\"refresh\", value);\n    } else {\n      this.removeAttribute(\"refresh\");\n    }\n  }\n\n  get shouldReloadWithMorph() {\n    return this.src && this.refresh === \"morph\"\n  }\n\n  /**\n   * Determines if the element is loading\n   */\n  get loading() {\n    return frameLoadingStyleFromString(this.getAttribute(\"loading\") || \"\")\n  }\n\n  /**\n   * Sets the value of if the element is loading\n   */\n  set loading(value) {\n    if (value) {\n      this.setAttribute(\"loading\", value);\n    } else {\n      this.removeAttribute(\"loading\");\n    }\n  }\n\n  /**\n   * Gets the disabled state of the frame.\n   *\n   * If disabled, no requests will be intercepted by the frame.\n   */\n  get disabled() {\n    return this.hasAttribute(\"disabled\")\n  }\n\n  /**\n   * Sets the disabled state of the frame.\n   *\n   * If disabled, no requests will be intercepted by the frame.\n   */\n  set disabled(value) {\n    if (value) {\n      this.setAttribute(\"disabled\", \"\");\n    } else {\n      this.removeAttribute(\"disabled\");\n    }\n  }\n\n  /**\n   * Gets the autoscroll state of the frame.\n   *\n   * If true, the frame will be scrolled into view automatically on update.\n   */\n  get autoscroll() {\n    return this.hasAttribute(\"autoscroll\")\n  }\n\n  /**\n   * Sets the autoscroll state of the frame.\n   *\n   * If true, the frame will be scrolled into view automatically on update.\n   */\n  set autoscroll(value) {\n    if (value) {\n      this.setAttribute(\"autoscroll\", \"\");\n    } else {\n      this.removeAttribute(\"autoscroll\");\n    }\n  }\n\n  /**\n   * Determines if the element has finished loading\n   */\n  get complete() {\n    return !this.delegate.isLoading\n  }\n\n  /**\n   * Gets the active state of the frame.\n   *\n   * If inactive, source changes will not be observed.\n   */\n  get isActive() {\n    return this.ownerDocument === document && !this.isPreview\n  }\n\n  /**\n   * Sets the active state of the frame.\n   *\n   * If inactive, source changes will not be observed.\n   */\n  get isPreview() {\n    return this.ownerDocument?.documentElement?.hasAttribute(\"data-turbo-preview\")\n  }\n}\n\nfunction frameLoadingStyleFromString(style) {\n  switch (style.toLowerCase()) {\n    case \"lazy\":\n      return FrameLoadingStyle.lazy\n    default:\n      return FrameLoadingStyle.eager\n  }\n}\n\nconst drive = {\n  enabled: true,\n  progressBarDelay: 500,\n  unvisitableExtensions: new Set(\n    [\n      \".7z\", \".aac\", \".apk\", \".avi\", \".bmp\", \".bz2\", \".css\", \".csv\", \".deb\", \".dmg\", \".doc\",\n      \".docx\", \".exe\", \".gif\", \".gz\", \".heic\", \".heif\", \".ico\", \".iso\", \".jpeg\", \".jpg\",\n      \".js\", \".json\", \".m4a\", \".mkv\", \".mov\", \".mp3\", \".mp4\", \".mpeg\", \".mpg\", \".msi\",\n      \".ogg\", \".ogv\", \".pdf\", \".pkg\", \".png\", \".ppt\", \".pptx\", \".rar\", \".rtf\",\n      \".svg\", \".tar\", \".tif\", \".tiff\", \".txt\", \".wav\", \".webm\", \".webp\", \".wma\", \".wmv\",\n      \".xls\", \".xlsx\", \".xml\", \".zip\"\n    ]\n  )\n};\n\nfunction activateScriptElement(element) {\n  if (element.getAttribute(\"data-turbo-eval\") == \"false\") {\n    return element\n  } else {\n    const createdScriptElement = document.createElement(\"script\");\n    const cspNonce = getCspNonce();\n    if (cspNonce) {\n      createdScriptElement.nonce = cspNonce;\n    }\n    createdScriptElement.textContent = element.textContent;\n    createdScriptElement.async = false;\n    copyElementAttributes(createdScriptElement, element);\n    return createdScriptElement\n  }\n}\n\nfunction copyElementAttributes(destinationElement, sourceElement) {\n  for (const { name, value } of sourceElement.attributes) {\n    destinationElement.setAttribute(name, value);\n  }\n}\n\nfunction createDocumentFragment(html) {\n  const template = document.createElement(\"template\");\n  template.innerHTML = html;\n  return template.content\n}\n\nfunction dispatch(eventName, { target, cancelable, detail } = {}) {\n  const event = new CustomEvent(eventName, {\n    cancelable,\n    bubbles: true,\n    composed: true,\n    detail\n  });\n\n  if (target && target.isConnected) {\n    target.dispatchEvent(event);\n  } else {\n    document.documentElement.dispatchEvent(event);\n  }\n\n  return event\n}\n\nfunction cancelEvent(event) {\n  event.preventDefault();\n  event.stopImmediatePropagation();\n}\n\nfunction nextRepaint() {\n  if (document.visibilityState === \"hidden\") {\n    return nextEventLoopTick()\n  } else {\n    return nextAnimationFrame()\n  }\n}\n\nfunction nextAnimationFrame() {\n  return new Promise((resolve) => requestAnimationFrame(() => resolve()))\n}\n\nfunction nextEventLoopTick() {\n  return new Promise((resolve) => setTimeout(() => resolve(), 0))\n}\n\nfunction parseHTMLDocument(html = \"\") {\n  return new DOMParser().parseFromString(html, \"text/html\")\n}\n\nfunction unindent(strings, ...values) {\n  const lines = interpolate(strings, values).replace(/^\\n/, \"\").split(\"\\n\");\n  const match = lines[0].match(/^\\s+/);\n  const indent = match ? match[0].length : 0;\n  return lines.map((line) => line.slice(indent)).join(\"\\n\")\n}\n\nfunction interpolate(strings, values) {\n  return strings.reduce((result, string, i) => {\n    const value = values[i] == undefined ? \"\" : values[i];\n    return result + string + value\n  }, \"\")\n}\n\nfunction uuid() {\n  return Array.from({ length: 36 })\n    .map((_, i) => {\n      if (i == 8 || i == 13 || i == 18 || i == 23) {\n        return \"-\"\n      } else if (i == 14) {\n        return \"4\"\n      } else if (i == 19) {\n        return (Math.floor(Math.random() * 4) + 8).toString(16)\n      } else {\n        return Math.floor(Math.random() * 16).toString(16)\n      }\n    })\n    .join(\"\")\n}\n\nfunction getAttribute(attributeName, ...elements) {\n  for (const value of elements.map((element) => element?.getAttribute(attributeName))) {\n    if (typeof value == \"string\") return value\n  }\n\n  return null\n}\n\nfunction hasAttribute(attributeName, ...elements) {\n  return elements.some((element) => element && element.hasAttribute(attributeName))\n}\n\nfunction markAsBusy(...elements) {\n  for (const element of elements) {\n    if (element.localName == \"turbo-frame\") {\n      element.setAttribute(\"busy\", \"\");\n    }\n    element.setAttribute(\"aria-busy\", \"true\");\n  }\n}\n\nfunction clearBusyState(...elements) {\n  for (const element of elements) {\n    if (element.localName == \"turbo-frame\") {\n      element.removeAttribute(\"busy\");\n    }\n\n    element.removeAttribute(\"aria-busy\");\n  }\n}\n\nfunction waitForLoad(element, timeoutInMilliseconds = 2000) {\n  return new Promise((resolve) => {\n    const onComplete = () => {\n      element.removeEventListener(\"error\", onComplete);\n      element.removeEventListener(\"load\", onComplete);\n      resolve();\n    };\n\n    element.addEventListener(\"load\", onComplete, { once: true });\n    element.addEventListener(\"error\", onComplete, { once: true });\n    setTimeout(resolve, timeoutInMilliseconds);\n  })\n}\n\nfunction getHistoryMethodForAction(action) {\n  switch (action) {\n    case \"replace\":\n      return history.replaceState\n    case \"advance\":\n    case \"restore\":\n      return history.pushState\n  }\n}\n\nfunction isAction(action) {\n  return action == \"advance\" || action == \"replace\" || action == \"restore\"\n}\n\nfunction getVisitAction(...elements) {\n  const action = getAttribute(\"data-turbo-action\", ...elements);\n\n  return isAction(action) ? action : null\n}\n\nfunction getMetaElement(name) {\n  return document.querySelector(`meta[name=\"${name}\"]`)\n}\n\nfunction getMetaContent(name) {\n  const element = getMetaElement(name);\n  return element && element.content\n}\n\nfunction getCspNonce() {\n  const element = getMetaElement(\"csp-nonce\");\n\n  if (element) {\n    const { nonce, content } = element;\n    return nonce == \"\" ? content : nonce\n  }\n}\n\nfunction setMetaContent(name, content) {\n  let element = getMetaElement(name);\n\n  if (!element) {\n    element = document.createElement(\"meta\");\n    element.setAttribute(\"name\", name);\n\n    document.head.appendChild(element);\n  }\n\n  element.setAttribute(\"content\", content);\n\n  return element\n}\n\nfunction findClosestRecursively(element, selector) {\n  if (element instanceof Element) {\n    return (\n      element.closest(selector) || findClosestRecursively(element.assignedSlot || element.getRootNode()?.host, selector)\n    )\n  }\n}\n\nfunction elementIsFocusable(element) {\n  const inertDisabledOrHidden = \"[inert], :disabled, [hidden], details:not([open]), dialog:not([open])\";\n\n  return !!element && element.closest(inertDisabledOrHidden) == null && typeof element.focus == \"function\"\n}\n\nfunction queryAutofocusableElement(elementOrDocumentFragment) {\n  return Array.from(elementOrDocumentFragment.querySelectorAll(\"[autofocus]\")).find(elementIsFocusable)\n}\n\nasync function around(callback, reader) {\n  const before = reader();\n\n  callback();\n\n  await nextAnimationFrame();\n\n  const after = reader();\n\n  return [before, after]\n}\n\nfunction doesNotTargetIFrame(name) {\n  if (name === \"_blank\") {\n    return false\n  } else if (name) {\n    for (const element of document.getElementsByName(name)) {\n      if (element instanceof HTMLIFrameElement) return false\n    }\n\n    return true\n  } else {\n    return true\n  }\n}\n\nfunction findLinkFromClickTarget(target) {\n  const link = findClosestRecursively(target, \"a[href], a[xlink\\\\:href]\");\n\n  if (!link) return null\n  if (link.href.startsWith(\"#\")) return null\n  if (link.hasAttribute(\"download\")) return null\n\n  const linkTarget = link.getAttribute(\"target\");\n  if (linkTarget && linkTarget !== \"_self\") return null\n\n  return link\n}\n\nfunction debounce(fn, delay) {\n  let timeoutId = null;\n\n  return (...args) => {\n    const callback = () => fn.apply(this, args);\n    clearTimeout(timeoutId);\n    timeoutId = setTimeout(callback, delay);\n  }\n}\n\nconst submitter = {\n  \"aria-disabled\": {\n    beforeSubmit: submitter => {\n      submitter.setAttribute(\"aria-disabled\", \"true\");\n      submitter.addEventListener(\"click\", cancelEvent);\n    },\n\n    afterSubmit: submitter => {\n      submitter.removeAttribute(\"aria-disabled\");\n      submitter.removeEventListener(\"click\", cancelEvent);\n    }\n  },\n\n  \"disabled\": {\n    beforeSubmit: submitter => submitter.disabled = true,\n    afterSubmit: submitter => submitter.disabled = false\n  }\n};\n\nclass Config {\n  #submitter = null\n\n  constructor(config) {\n    Object.assign(this, config);\n  }\n\n  get submitter() {\n    return this.#submitter\n  }\n\n  set submitter(value) {\n    this.#submitter = submitter[value] || value;\n  }\n}\n\nconst forms = new Config({\n  mode: \"on\",\n  submitter: \"disabled\"\n});\n\nconst config = {\n  drive,\n  forms\n};\n\nfunction expandURL(locatable) {\n  return new URL(locatable.toString(), document.baseURI)\n}\n\nfunction getAnchor(url) {\n  let anchorMatch;\n  if (url.hash) {\n    return url.hash.slice(1)\n    // eslint-disable-next-line no-cond-assign\n  } else if ((anchorMatch = url.href.match(/#(.*)$/))) {\n    return anchorMatch[1]\n  }\n}\n\nfunction getAction$1(form, submitter) {\n  const action = submitter?.getAttribute(\"formaction\") || form.getAttribute(\"action\") || form.action;\n\n  return expandURL(action)\n}\n\nfunction getExtension(url) {\n  return (getLastPathComponent(url).match(/\\.[^.]*$/) || [])[0] || \"\"\n}\n\nfunction isPrefixedBy(baseURL, url) {\n  const prefix = addTrailingSlash(url.origin + url.pathname);\n  return addTrailingSlash(baseURL.href) === prefix || baseURL.href.startsWith(prefix)\n}\n\nfunction locationIsVisitable(location, rootLocation) {\n  return isPrefixedBy(location, rootLocation) && !config.drive.unvisitableExtensions.has(getExtension(location))\n}\n\nfunction getLocationForLink(link) {\n  return expandURL(link.getAttribute(\"href\") || \"\")\n}\n\nfunction getRequestURL(url) {\n  const anchor = getAnchor(url);\n  return anchor != null ? url.href.slice(0, -(anchor.length + 1)) : url.href\n}\n\nfunction toCacheKey(url) {\n  return getRequestURL(url)\n}\n\nfunction urlsAreEqual(left, right) {\n  return expandURL(left).href == expandURL(right).href\n}\n\nfunction getPathComponents(url) {\n  return url.pathname.split(\"/\").slice(1)\n}\n\nfunction getLastPathComponent(url) {\n  return getPathComponents(url).slice(-1)[0]\n}\n\nfunction addTrailingSlash(value) {\n  return value.endsWith(\"/\") ? value : value + \"/\"\n}\n\nclass FetchResponse {\n  constructor(response) {\n    this.response = response;\n  }\n\n  get succeeded() {\n    return this.response.ok\n  }\n\n  get failed() {\n    return !this.succeeded\n  }\n\n  get clientError() {\n    return this.statusCode >= 400 && this.statusCode <= 499\n  }\n\n  get serverError() {\n    return this.statusCode >= 500 && this.statusCode <= 599\n  }\n\n  get redirected() {\n    return this.response.redirected\n  }\n\n  get location() {\n    return expandURL(this.response.url)\n  }\n\n  get isHTML() {\n    return this.contentType && this.contentType.match(/^(?:text\\/([^\\s;,]+\\b)?html|application\\/xhtml\\+xml)\\b/)\n  }\n\n  get statusCode() {\n    return this.response.status\n  }\n\n  get contentType() {\n    return this.header(\"Content-Type\")\n  }\n\n  get responseText() {\n    return this.response.clone().text()\n  }\n\n  get responseHTML() {\n    if (this.isHTML) {\n      return this.response.clone().text()\n    } else {\n      return Promise.resolve(undefined)\n    }\n  }\n\n  header(name) {\n    return this.response.headers.get(name)\n  }\n}\n\nclass LimitedSet extends Set {\n  constructor(maxSize) {\n    super();\n    this.maxSize = maxSize;\n  }\n\n  add(value) {\n    if (this.size >= this.maxSize) {\n      const iterator = this.values();\n      const oldestValue = iterator.next().value;\n      this.delete(oldestValue);\n    }\n    super.add(value);\n  }\n}\n\nconst recentRequests = new LimitedSet(20);\n\nfunction fetchWithTurboHeaders(url, options = {}) {\n  const modifiedHeaders = new Headers(options.headers || {});\n  const requestUID = uuid();\n  recentRequests.add(requestUID);\n  modifiedHeaders.append(\"X-Turbo-Request-Id\", requestUID);\n\n  return window.fetch(url, {\n    ...options,\n    headers: modifiedHeaders\n  })\n}\n\nfunction fetchMethodFromString(method) {\n  switch (method.toLowerCase()) {\n    case \"get\":\n      return FetchMethod.get\n    case \"post\":\n      return FetchMethod.post\n    case \"put\":\n      return FetchMethod.put\n    case \"patch\":\n      return FetchMethod.patch\n    case \"delete\":\n      return FetchMethod.delete\n  }\n}\n\nconst FetchMethod = {\n  get: \"get\",\n  post: \"post\",\n  put: \"put\",\n  patch: \"patch\",\n  delete: \"delete\"\n};\n\nfunction fetchEnctypeFromString(encoding) {\n  switch (encoding.toLowerCase()) {\n    case FetchEnctype.multipart:\n      return FetchEnctype.multipart\n    case FetchEnctype.plain:\n      return FetchEnctype.plain\n    default:\n      return FetchEnctype.urlEncoded\n  }\n}\n\nconst FetchEnctype = {\n  urlEncoded: \"application/x-www-form-urlencoded\",\n  multipart: \"multipart/form-data\",\n  plain: \"text/plain\"\n};\n\nclass FetchRequest {\n  abortController = new AbortController()\n  #resolveRequestPromise = (_value) => {}\n\n  constructor(delegate, method, location, requestBody = new URLSearchParams(), target = null, enctype = FetchEnctype.urlEncoded) {\n    const [url, body] = buildResourceAndBody(expandURL(location), method, requestBody, enctype);\n\n    this.delegate = delegate;\n    this.url = url;\n    this.target = target;\n    this.fetchOptions = {\n      credentials: \"same-origin\",\n      redirect: \"follow\",\n      method: method.toUpperCase(),\n      headers: { ...this.defaultHeaders },\n      body: body,\n      signal: this.abortSignal,\n      referrer: this.delegate.referrer?.href\n    };\n    this.enctype = enctype;\n  }\n\n  get method() {\n    return this.fetchOptions.method\n  }\n\n  set method(value) {\n    const fetchBody = this.isSafe ? this.url.searchParams : this.fetchOptions.body || new FormData();\n    const fetchMethod = fetchMethodFromString(value) || FetchMethod.get;\n\n    this.url.search = \"\";\n\n    const [url, body] = buildResourceAndBody(this.url, fetchMethod, fetchBody, this.enctype);\n\n    this.url = url;\n    this.fetchOptions.body = body;\n    this.fetchOptions.method = fetchMethod.toUpperCase();\n  }\n\n  get headers() {\n    return this.fetchOptions.headers\n  }\n\n  set headers(value) {\n    this.fetchOptions.headers = value;\n  }\n\n  get body() {\n    if (this.isSafe) {\n      return this.url.searchParams\n    } else {\n      return this.fetchOptions.body\n    }\n  }\n\n  set body(value) {\n    this.fetchOptions.body = value;\n  }\n\n  get location() {\n    return this.url\n  }\n\n  get params() {\n    return this.url.searchParams\n  }\n\n  get entries() {\n    return this.body ? Array.from(this.body.entries()) : []\n  }\n\n  cancel() {\n    this.abortController.abort();\n  }\n\n  async perform() {\n    const { fetchOptions } = this;\n    this.delegate.prepareRequest(this);\n    const event = await this.#allowRequestToBeIntercepted(fetchOptions);\n    try {\n      this.delegate.requestStarted(this);\n\n      if (event.detail.fetchRequest) {\n        this.response = event.detail.fetchRequest.response;\n      } else {\n        this.response = fetchWithTurboHeaders(this.url.href, fetchOptions);\n      }\n\n      const response = await this.response;\n      return await this.receive(response)\n    } catch (error) {\n      if (error.name !== \"AbortError\") {\n        if (this.#willDelegateErrorHandling(error)) {\n          this.delegate.requestErrored(this, error);\n        }\n        throw error\n      }\n    } finally {\n      this.delegate.requestFinished(this);\n    }\n  }\n\n  async receive(response) {\n    const fetchResponse = new FetchResponse(response);\n    const event = dispatch(\"turbo:before-fetch-response\", {\n      cancelable: true,\n      detail: { fetchResponse },\n      target: this.target\n    });\n    if (event.defaultPrevented) {\n      this.delegate.requestPreventedHandlingResponse(this, fetchResponse);\n    } else if (fetchResponse.succeeded) {\n      this.delegate.requestSucceededWithResponse(this, fetchResponse);\n    } else {\n      this.delegate.requestFailedWithResponse(this, fetchResponse);\n    }\n    return fetchResponse\n  }\n\n  get defaultHeaders() {\n    return {\n      Accept: \"text/html, application/xhtml+xml\"\n    }\n  }\n\n  get isSafe() {\n    return isSafe(this.method)\n  }\n\n  get abortSignal() {\n    return this.abortController.signal\n  }\n\n  acceptResponseType(mimeType) {\n    this.headers[\"Accept\"] = [mimeType, this.headers[\"Accept\"]].join(\", \");\n  }\n\n  async #allowRequestToBeIntercepted(fetchOptions) {\n    const requestInterception = new Promise((resolve) => (this.#resolveRequestPromise = resolve));\n    const event = dispatch(\"turbo:before-fetch-request\", {\n      cancelable: true,\n      detail: {\n        fetchOptions,\n        url: this.url,\n        resume: this.#resolveRequestPromise\n      },\n      target: this.target\n    });\n    this.url = event.detail.url;\n    if (event.defaultPrevented) await requestInterception;\n\n    return event\n  }\n\n  #willDelegateErrorHandling(error) {\n    const event = dispatch(\"turbo:fetch-request-error\", {\n      target: this.target,\n      cancelable: true,\n      detail: { request: this, error: error }\n    });\n\n    return !event.defaultPrevented\n  }\n}\n\nfunction isSafe(fetchMethod) {\n  return fetchMethodFromString(fetchMethod) == FetchMethod.get\n}\n\nfunction buildResourceAndBody(resource, method, requestBody, enctype) {\n  const searchParams =\n    Array.from(requestBody).length > 0 ? new URLSearchParams(entriesExcludingFiles(requestBody)) : resource.searchParams;\n\n  if (isSafe(method)) {\n    return [mergeIntoURLSearchParams(resource, searchParams), null]\n  } else if (enctype == FetchEnctype.urlEncoded) {\n    return [resource, searchParams]\n  } else {\n    return [resource, requestBody]\n  }\n}\n\nfunction entriesExcludingFiles(requestBody) {\n  const entries = [];\n\n  for (const [name, value] of requestBody) {\n    if (value instanceof File) continue\n    else entries.push([name, value]);\n  }\n\n  return entries\n}\n\nfunction mergeIntoURLSearchParams(url, requestBody) {\n  const searchParams = new URLSearchParams(entriesExcludingFiles(requestBody));\n\n  url.search = searchParams.toString();\n\n  return url\n}\n\nclass AppearanceObserver {\n  started = false\n\n  constructor(delegate, element) {\n    this.delegate = delegate;\n    this.element = element;\n    this.intersectionObserver = new IntersectionObserver(this.intersect);\n  }\n\n  start() {\n    if (!this.started) {\n      this.started = true;\n      this.intersectionObserver.observe(this.element);\n    }\n  }\n\n  stop() {\n    if (this.started) {\n      this.started = false;\n      this.intersectionObserver.unobserve(this.element);\n    }\n  }\n\n  intersect = (entries) => {\n    const lastEntry = entries.slice(-1)[0];\n    if (lastEntry?.isIntersecting) {\n      this.delegate.elementAppearedInViewport(this.element);\n    }\n  }\n}\n\nclass StreamMessage {\n  static contentType = \"text/vnd.turbo-stream.html\"\n\n  static wrap(message) {\n    if (typeof message == \"string\") {\n      return new this(createDocumentFragment(message))\n    } else {\n      return message\n    }\n  }\n\n  constructor(fragment) {\n    this.fragment = importStreamElements(fragment);\n  }\n}\n\nfunction importStreamElements(fragment) {\n  for (const element of fragment.querySelectorAll(\"turbo-stream\")) {\n    const streamElement = document.importNode(element, true);\n\n    for (const inertScriptElement of streamElement.templateElement.content.querySelectorAll(\"script\")) {\n      inertScriptElement.replaceWith(activateScriptElement(inertScriptElement));\n    }\n\n    element.replaceWith(streamElement);\n  }\n\n  return fragment\n}\n\nconst identity = key => key;\n\nclass LRUCache {\n  keys = []\n  entries = {}\n  #toCacheKey\n\n  constructor(size, toCacheKey = identity) {\n    this.size = size;\n    this.#toCacheKey = toCacheKey;\n  }\n\n  has(key) {\n    return this.#toCacheKey(key) in this.entries\n  }\n\n  get(key) {\n    if (this.has(key)) {\n      const entry = this.read(key);\n      this.touch(key);\n      return entry\n    }\n  }\n\n  put(key, entry) {\n    this.write(key, entry);\n    this.touch(key);\n    return entry\n  }\n\n  clear() {\n    for (const key of Object.keys(this.entries)) {\n      this.evict(key);\n    }\n  }\n\n  // Private\n\n  read(key) {\n    return this.entries[this.#toCacheKey(key)]\n  }\n\n  write(key, entry) {\n    this.entries[this.#toCacheKey(key)] = entry;\n  }\n\n  touch(key) {\n    key = this.#toCacheKey(key);\n    const index = this.keys.indexOf(key);\n    if (index > -1) this.keys.splice(index, 1);\n    this.keys.unshift(key);\n    this.trim();\n  }\n\n  trim() {\n    for (const key of this.keys.splice(this.size)) {\n      this.evict(key);\n    }\n  }\n\n  evict(key) {\n    delete this.entries[key];\n  }\n}\n\nconst PREFETCH_DELAY = 100;\n\nclass PrefetchCache extends LRUCache {\n  #prefetchTimeout = null\n  #maxAges = {}\n\n  constructor(size = 1, prefetchDelay = PREFETCH_DELAY) {\n    super(size, toCacheKey);\n    this.prefetchDelay = prefetchDelay;\n  }\n\n  putLater(url, request, ttl) {\n    this.#prefetchTimeout = setTimeout(() => {\n      request.perform();\n      this.put(url, request, ttl);\n      this.#prefetchTimeout = null;\n    }, this.prefetchDelay);\n  }\n\n  put(url, request, ttl = cacheTtl) {\n    super.put(url, request);\n    this.#maxAges[toCacheKey(url)] = new Date(new Date().getTime() + ttl);\n  }\n\n  clear() {\n    super.clear();\n    if (this.#prefetchTimeout) clearTimeout(this.#prefetchTimeout);\n  }\n\n  evict(key) {\n    super.evict(key);\n    delete this.#maxAges[key];\n  }\n\n  has(key) {\n    if (super.has(key)) {\n      const maxAge = this.#maxAges[toCacheKey(key)];\n\n      return maxAge && maxAge > Date.now()\n    } else {\n      return false\n    }\n  }\n}\n\nconst cacheTtl = 10 * 1000;\nconst prefetchCache = new PrefetchCache();\n\nconst FormSubmissionState = {\n  initialized: \"initialized\",\n  requesting: \"requesting\",\n  waiting: \"waiting\",\n  receiving: \"receiving\",\n  stopping: \"stopping\",\n  stopped: \"stopped\"\n};\n\nclass FormSubmission {\n  state = FormSubmissionState.initialized\n\n  static confirmMethod(message) {\n    return Promise.resolve(confirm(message))\n  }\n\n  constructor(delegate, formElement, submitter, mustRedirect = false) {\n    const method = getMethod(formElement, submitter);\n    const action = getAction(getFormAction(formElement, submitter), method);\n    const body = buildFormData(formElement, submitter);\n    const enctype = getEnctype(formElement, submitter);\n\n    this.delegate = delegate;\n    this.formElement = formElement;\n    this.submitter = submitter;\n    this.fetchRequest = new FetchRequest(this, method, action, body, formElement, enctype);\n    this.mustRedirect = mustRedirect;\n  }\n\n  get method() {\n    return this.fetchRequest.method\n  }\n\n  set method(value) {\n    this.fetchRequest.method = value;\n  }\n\n  get action() {\n    return this.fetchRequest.url.toString()\n  }\n\n  set action(value) {\n    this.fetchRequest.url = expandURL(value);\n  }\n\n  get body() {\n    return this.fetchRequest.body\n  }\n\n  get enctype() {\n    return this.fetchRequest.enctype\n  }\n\n  get isSafe() {\n    return this.fetchRequest.isSafe\n  }\n\n  get location() {\n    return this.fetchRequest.url\n  }\n\n  // The submission process\n\n  async start() {\n    const { initialized, requesting } = FormSubmissionState;\n    const confirmationMessage = getAttribute(\"data-turbo-confirm\", this.submitter, this.formElement);\n\n    if (typeof confirmationMessage === \"string\") {\n      const confirmMethod = typeof config.forms.confirm === \"function\" ?\n        config.forms.confirm :\n        FormSubmission.confirmMethod;\n\n      const answer = await confirmMethod(confirmationMessage, this.formElement, this.submitter);\n      if (!answer) {\n        return\n      }\n    }\n\n    if (this.state == initialized) {\n      this.state = requesting;\n      return this.fetchRequest.perform()\n    }\n  }\n\n  stop() {\n    const { stopping, stopped } = FormSubmissionState;\n    if (this.state != stopping && this.state != stopped) {\n      this.state = stopping;\n      this.fetchRequest.cancel();\n      return true\n    }\n  }\n\n  // Fetch request delegate\n\n  prepareRequest(request) {\n    if (!request.isSafe) {\n      const token = getCookieValue(getMetaContent(\"csrf-param\")) || getMetaContent(\"csrf-token\");\n      if (token) {\n        request.headers[\"X-CSRF-Token\"] = token;\n      }\n    }\n\n    if (this.requestAcceptsTurboStreamResponse(request)) {\n      request.acceptResponseType(StreamMessage.contentType);\n    }\n  }\n\n  requestStarted(_request) {\n    this.state = FormSubmissionState.waiting;\n    if (this.submitter) config.forms.submitter.beforeSubmit(this.submitter);\n    this.setSubmitsWith();\n    markAsBusy(this.formElement);\n    dispatch(\"turbo:submit-start\", {\n      target: this.formElement,\n      detail: { formSubmission: this }\n    });\n    this.delegate.formSubmissionStarted(this);\n  }\n\n  requestPreventedHandlingResponse(request, response) {\n    prefetchCache.clear();\n\n    this.result = { success: response.succeeded, fetchResponse: response };\n  }\n\n  requestSucceededWithResponse(request, response) {\n    if (response.clientError || response.serverError) {\n      this.delegate.formSubmissionFailedWithResponse(this, response);\n      return\n    }\n\n    prefetchCache.clear();\n\n    if (this.requestMustRedirect(request) && responseSucceededWithoutRedirect(response)) {\n      const error = new Error(\"Form responses must redirect to another location\");\n      this.delegate.formSubmissionErrored(this, error);\n    } else {\n      this.state = FormSubmissionState.receiving;\n      this.result = { success: true, fetchResponse: response };\n      this.delegate.formSubmissionSucceededWithResponse(this, response);\n    }\n  }\n\n  requestFailedWithResponse(request, response) {\n    this.result = { success: false, fetchResponse: response };\n    this.delegate.formSubmissionFailedWithResponse(this, response);\n  }\n\n  requestErrored(request, error) {\n    this.result = { success: false, error };\n    this.delegate.formSubmissionErrored(this, error);\n  }\n\n  requestFinished(_request) {\n    this.state = FormSubmissionState.stopped;\n    if (this.submitter) config.forms.submitter.afterSubmit(this.submitter);\n    this.resetSubmitterText();\n    clearBusyState(this.formElement);\n    dispatch(\"turbo:submit-end\", {\n      target: this.formElement,\n      detail: { formSubmission: this, ...this.result }\n    });\n    this.delegate.formSubmissionFinished(this);\n  }\n\n  // Private\n\n  setSubmitsWith() {\n    if (!this.submitter || !this.submitsWith) return\n\n    if (this.submitter.matches(\"button\")) {\n      this.originalSubmitText = this.submitter.innerHTML;\n      this.submitter.innerHTML = this.submitsWith;\n    } else if (this.submitter.matches(\"input\")) {\n      const input = this.submitter;\n      this.originalSubmitText = input.value;\n      input.value = this.submitsWith;\n    }\n  }\n\n  resetSubmitterText() {\n    if (!this.submitter || !this.originalSubmitText) return\n\n    if (this.submitter.matches(\"button\")) {\n      this.submitter.innerHTML = this.originalSubmitText;\n    } else if (this.submitter.matches(\"input\")) {\n      const input = this.submitter;\n      input.value = this.originalSubmitText;\n    }\n  }\n\n  requestMustRedirect(request) {\n    return !request.isSafe && this.mustRedirect\n  }\n\n  requestAcceptsTurboStreamResponse(request) {\n    return !request.isSafe || hasAttribute(\"data-turbo-stream\", this.submitter, this.formElement)\n  }\n\n  get submitsWith() {\n    return this.submitter?.getAttribute(\"data-turbo-submits-with\")\n  }\n}\n\nfunction buildFormData(formElement, submitter) {\n  const formData = new FormData(formElement);\n  const name = submitter?.getAttribute(\"name\");\n  const value = submitter?.getAttribute(\"value\");\n\n  if (name) {\n    formData.append(name, value || \"\");\n  }\n\n  return formData\n}\n\nfunction getCookieValue(cookieName) {\n  if (cookieName != null) {\n    const cookies = document.cookie ? document.cookie.split(\"; \") : [];\n    const cookie = cookies.find((cookie) => cookie.startsWith(cookieName));\n    if (cookie) {\n      const value = cookie.split(\"=\").slice(1).join(\"=\");\n      return value ? decodeURIComponent(value) : undefined\n    }\n  }\n}\n\nfunction responseSucceededWithoutRedirect(response) {\n  return response.statusCode == 200 && !response.redirected\n}\n\nfunction getFormAction(formElement, submitter) {\n  const formElementAction = typeof formElement.action === \"string\" ? formElement.action : null;\n\n  if (submitter?.hasAttribute(\"formaction\")) {\n    return submitter.getAttribute(\"formaction\") || \"\"\n  } else {\n    return formElement.getAttribute(\"action\") || formElementAction || \"\"\n  }\n}\n\nfunction getAction(formAction, fetchMethod) {\n  const action = expandURL(formAction);\n\n  if (isSafe(fetchMethod)) {\n    action.search = \"\";\n  }\n\n  return action\n}\n\nfunction getMethod(formElement, submitter) {\n  const method = submitter?.getAttribute(\"formmethod\") || formElement.getAttribute(\"method\") || \"\";\n  return fetchMethodFromString(method.toLowerCase()) || FetchMethod.get\n}\n\nfunction getEnctype(formElement, submitter) {\n  return fetchEnctypeFromString(submitter?.getAttribute(\"formenctype\") || formElement.enctype)\n}\n\nclass Snapshot {\n  constructor(element) {\n    this.element = element;\n  }\n\n  get activeElement() {\n    return this.element.ownerDocument.activeElement\n  }\n\n  get children() {\n    return [...this.element.children]\n  }\n\n  hasAnchor(anchor) {\n    return this.getElementForAnchor(anchor) != null\n  }\n\n  getElementForAnchor(anchor) {\n    return anchor ? this.element.querySelector(`[id='${anchor}'], a[name='${anchor}']`) : null\n  }\n\n  get isConnected() {\n    return this.element.isConnected\n  }\n\n  get firstAutofocusableElement() {\n    return queryAutofocusableElement(this.element)\n  }\n\n  get permanentElements() {\n    return queryPermanentElementsAll(this.element)\n  }\n\n  getPermanentElementById(id) {\n    return getPermanentElementById(this.element, id)\n  }\n\n  getPermanentElementMapForSnapshot(snapshot) {\n    const permanentElementMap = {};\n\n    for (const currentPermanentElement of this.permanentElements) {\n      const { id } = currentPermanentElement;\n      const newPermanentElement = snapshot.getPermanentElementById(id);\n      if (newPermanentElement) {\n        permanentElementMap[id] = [currentPermanentElement, newPermanentElement];\n      }\n    }\n\n    return permanentElementMap\n  }\n}\n\nfunction getPermanentElementById(node, id) {\n  return node.querySelector(`#${id}[data-turbo-permanent]`)\n}\n\nfunction queryPermanentElementsAll(node) {\n  return node.querySelectorAll(\"[id][data-turbo-permanent]\")\n}\n\nclass FormSubmitObserver {\n  started = false\n\n  constructor(delegate, eventTarget) {\n    this.delegate = delegate;\n    this.eventTarget = eventTarget;\n  }\n\n  start() {\n    if (!this.started) {\n      this.eventTarget.addEventListener(\"submit\", this.submitCaptured, true);\n      this.started = true;\n    }\n  }\n\n  stop() {\n    if (this.started) {\n      this.eventTarget.removeEventListener(\"submit\", this.submitCaptured, true);\n      this.started = false;\n    }\n  }\n\n  submitCaptured = () => {\n    this.eventTarget.removeEventListener(\"submit\", this.submitBubbled, false);\n    this.eventTarget.addEventListener(\"submit\", this.submitBubbled, false);\n  }\n\n  submitBubbled = (event) => {\n    if (!event.defaultPrevented) {\n      const form = event.target instanceof HTMLFormElement ? event.target : undefined;\n      const submitter = event.submitter || undefined;\n\n      if (\n        form &&\n        submissionDoesNotDismissDialog(form, submitter) &&\n        submissionDoesNotTargetIFrame(form, submitter) &&\n        this.delegate.willSubmitForm(form, submitter)\n      ) {\n        event.preventDefault();\n        event.stopImmediatePropagation();\n        this.delegate.formSubmitted(form, submitter);\n      }\n    }\n  }\n}\n\nfunction submissionDoesNotDismissDialog(form, submitter) {\n  const method = submitter?.getAttribute(\"formmethod\") || form.getAttribute(\"method\");\n\n  return method != \"dialog\"\n}\n\nfunction submissionDoesNotTargetIFrame(form, submitter) {\n  const target = submitter?.getAttribute(\"formtarget\") || form.getAttribute(\"target\");\n\n  return doesNotTargetIFrame(target)\n}\n\nclass View {\n  #resolveRenderPromise = (_value) => {}\n  #resolveInterceptionPromise = (_value) => {}\n\n  constructor(delegate, element) {\n    this.delegate = delegate;\n    this.element = element;\n  }\n\n  // Scrolling\n\n  scrollToAnchor(anchor) {\n    const element = this.snapshot.getElementForAnchor(anchor);\n    if (element) {\n      this.focusElement(element);\n      this.scrollToElement(element);\n    } else {\n      this.scrollToPosition({ x: 0, y: 0 });\n    }\n  }\n\n  scrollToAnchorFromLocation(location) {\n    this.scrollToAnchor(getAnchor(location));\n  }\n\n  scrollToElement(element) {\n    element.scrollIntoView();\n  }\n\n  focusElement(element) {\n    if (element instanceof HTMLElement) {\n      if (element.hasAttribute(\"tabindex\")) {\n        element.focus();\n      } else {\n        element.setAttribute(\"tabindex\", \"-1\");\n        element.focus();\n        element.removeAttribute(\"tabindex\");\n      }\n    }\n  }\n\n  scrollToPosition({ x, y }) {\n    this.scrollRoot.scrollTo(x, y);\n  }\n\n  scrollToTop() {\n    this.scrollToPosition({ x: 0, y: 0 });\n  }\n\n  get scrollRoot() {\n    return window\n  }\n\n  // Rendering\n\n  async render(renderer) {\n    const { isPreview, shouldRender, willRender, newSnapshot: snapshot } = renderer;\n\n    // A workaround to ignore tracked element mismatch reloads when performing\n    // a promoted Visit from a frame navigation\n    const shouldInvalidate = willRender;\n\n    if (shouldRender) {\n      try {\n        this.renderPromise = new Promise((resolve) => (this.#resolveRenderPromise = resolve));\n        this.renderer = renderer;\n        await this.prepareToRenderSnapshot(renderer);\n\n        const renderInterception = new Promise((resolve) => (this.#resolveInterceptionPromise = resolve));\n        const options = { resume: this.#resolveInterceptionPromise, render: this.renderer.renderElement, renderMethod: this.renderer.renderMethod };\n        const immediateRender = this.delegate.allowsImmediateRender(snapshot, options);\n        if (!immediateRender) await renderInterception;\n\n        await this.renderSnapshot(renderer);\n        this.delegate.viewRenderedSnapshot(snapshot, isPreview, this.renderer.renderMethod);\n        this.delegate.preloadOnLoadLinksForView(this.element);\n        this.finishRenderingSnapshot(renderer);\n      } finally {\n        delete this.renderer;\n        this.#resolveRenderPromise(undefined);\n        delete this.renderPromise;\n      }\n    } else if (shouldInvalidate) {\n      this.invalidate(renderer.reloadReason);\n    }\n  }\n\n  invalidate(reason) {\n    this.delegate.viewInvalidated(reason);\n  }\n\n  async prepareToRenderSnapshot(renderer) {\n    this.markAsPreview(renderer.isPreview);\n    await renderer.prepareToRender();\n  }\n\n  markAsPreview(isPreview) {\n    if (isPreview) {\n      this.element.setAttribute(\"data-turbo-preview\", \"\");\n    } else {\n      this.element.removeAttribute(\"data-turbo-preview\");\n    }\n  }\n\n  markVisitDirection(direction) {\n    this.element.setAttribute(\"data-turbo-visit-direction\", direction);\n  }\n\n  unmarkVisitDirection() {\n    this.element.removeAttribute(\"data-turbo-visit-direction\");\n  }\n\n  async renderSnapshot(renderer) {\n    await renderer.render();\n  }\n\n  finishRenderingSnapshot(renderer) {\n    renderer.finishRendering();\n  }\n}\n\nclass FrameView extends View {\n  missing() {\n    this.element.innerHTML = `<strong class=\"turbo-frame-error\">Content missing</strong>`;\n  }\n\n  get snapshot() {\n    return new Snapshot(this.element)\n  }\n}\n\nclass LinkInterceptor {\n  constructor(delegate, element) {\n    this.delegate = delegate;\n    this.element = element;\n  }\n\n  start() {\n    this.element.addEventListener(\"click\", this.clickBubbled);\n    document.addEventListener(\"turbo:click\", this.linkClicked);\n    document.addEventListener(\"turbo:before-visit\", this.willVisit);\n  }\n\n  stop() {\n    this.element.removeEventListener(\"click\", this.clickBubbled);\n    document.removeEventListener(\"turbo:click\", this.linkClicked);\n    document.removeEventListener(\"turbo:before-visit\", this.willVisit);\n  }\n\n  clickBubbled = (event) => {\n    if (this.clickEventIsSignificant(event)) {\n      this.clickEvent = event;\n    } else {\n      delete this.clickEvent;\n    }\n  }\n\n  linkClicked = (event) => {\n    if (this.clickEvent && this.clickEventIsSignificant(event)) {\n      if (this.delegate.shouldInterceptLinkClick(event.target, event.detail.url, event.detail.originalEvent)) {\n        this.clickEvent.preventDefault();\n        event.preventDefault();\n        this.delegate.linkClickIntercepted(event.target, event.detail.url, event.detail.originalEvent);\n      }\n    }\n    delete this.clickEvent;\n  }\n\n  willVisit = (_event) => {\n    delete this.clickEvent;\n  }\n\n  clickEventIsSignificant(event) {\n    const target = event.composed ? event.target?.parentElement : event.target;\n    const element = findLinkFromClickTarget(target) || target;\n\n    return element instanceof Element && element.closest(\"turbo-frame, html\") == this.element\n  }\n}\n\nclass LinkClickObserver {\n  started = false\n\n  constructor(delegate, eventTarget) {\n    this.delegate = delegate;\n    this.eventTarget = eventTarget;\n  }\n\n  start() {\n    if (!this.started) {\n      this.eventTarget.addEventListener(\"click\", this.clickCaptured, true);\n      this.started = true;\n    }\n  }\n\n  stop() {\n    if (this.started) {\n      this.eventTarget.removeEventListener(\"click\", this.clickCaptured, true);\n      this.started = false;\n    }\n  }\n\n  clickCaptured = () => {\n    this.eventTarget.removeEventListener(\"click\", this.clickBubbled, false);\n    this.eventTarget.addEventListener(\"click\", this.clickBubbled, false);\n  }\n\n  clickBubbled = (event) => {\n    if (event instanceof MouseEvent && this.clickEventIsSignificant(event)) {\n      const target = (event.composedPath && event.composedPath()[0]) || event.target;\n      const link = findLinkFromClickTarget(target);\n      if (link && doesNotTargetIFrame(link.target)) {\n        const location = getLocationForLink(link);\n        if (this.delegate.willFollowLinkToLocation(link, location, event)) {\n          event.preventDefault();\n          this.delegate.followedLinkToLocation(link, location);\n        }\n      }\n    }\n  }\n\n  clickEventIsSignificant(event) {\n    return !(\n      (event.target && event.target.isContentEditable) ||\n      event.defaultPrevented ||\n      event.which > 1 ||\n      event.altKey ||\n      event.ctrlKey ||\n      event.metaKey ||\n      event.shiftKey\n    )\n  }\n}\n\nclass FormLinkClickObserver {\n  constructor(delegate, element) {\n    this.delegate = delegate;\n    this.linkInterceptor = new LinkClickObserver(this, element);\n  }\n\n  start() {\n    this.linkInterceptor.start();\n  }\n\n  stop() {\n    this.linkInterceptor.stop();\n  }\n\n  // Link hover observer delegate\n\n  canPrefetchRequestToLocation(link, location) {\n    return false\n  }\n\n  prefetchAndCacheRequestToLocation(link, location) {\n    return\n  }\n\n  // Link click observer delegate\n\n  willFollowLinkToLocation(link, location, originalEvent) {\n    return (\n      this.delegate.willSubmitFormLinkToLocation(link, location, originalEvent) &&\n      (link.hasAttribute(\"data-turbo-method\") || link.hasAttribute(\"data-turbo-stream\"))\n    )\n  }\n\n  followedLinkToLocation(link, location) {\n    const form = document.createElement(\"form\");\n\n    const type = \"hidden\";\n    for (const [name, value] of location.searchParams) {\n      form.append(Object.assign(document.createElement(\"input\"), { type, name, value }));\n    }\n\n    const action = Object.assign(location, { search: \"\" });\n    form.setAttribute(\"data-turbo\", \"true\");\n    form.setAttribute(\"action\", action.href);\n    form.setAttribute(\"hidden\", \"\");\n\n    const method = link.getAttribute(\"data-turbo-method\");\n    if (method) form.setAttribute(\"method\", method);\n\n    const turboFrame = link.getAttribute(\"data-turbo-frame\");\n    if (turboFrame) form.setAttribute(\"data-turbo-frame\", turboFrame);\n\n    const turboAction = getVisitAction(link);\n    if (turboAction) form.setAttribute(\"data-turbo-action\", turboAction);\n\n    const turboConfirm = link.getAttribute(\"data-turbo-confirm\");\n    if (turboConfirm) form.setAttribute(\"data-turbo-confirm\", turboConfirm);\n\n    const turboStream = link.hasAttribute(\"data-turbo-stream\");\n    if (turboStream) form.setAttribute(\"data-turbo-stream\", \"\");\n\n    this.delegate.submittedFormLinkToLocation(link, location, form);\n\n    document.body.appendChild(form);\n    form.addEventListener(\"turbo:submit-end\", () => form.remove(), { once: true });\n    requestAnimationFrame(() => form.requestSubmit());\n  }\n}\n\nclass Bardo {\n  static async preservingPermanentElements(delegate, permanentElementMap, callback) {\n    const bardo = new this(delegate, permanentElementMap);\n    bardo.enter();\n    await callback();\n    bardo.leave();\n  }\n\n  constructor(delegate, permanentElementMap) {\n    this.delegate = delegate;\n    this.permanentElementMap = permanentElementMap;\n  }\n\n  enter() {\n    for (const id in this.permanentElementMap) {\n      const [currentPermanentElement, newPermanentElement] = this.permanentElementMap[id];\n      this.delegate.enteringBardo(currentPermanentElement, newPermanentElement);\n      this.replaceNewPermanentElementWithPlaceholder(newPermanentElement);\n    }\n  }\n\n  leave() {\n    for (const id in this.permanentElementMap) {\n      const [currentPermanentElement] = this.permanentElementMap[id];\n      this.replaceCurrentPermanentElementWithClone(currentPermanentElement);\n      this.replacePlaceholderWithPermanentElement(currentPermanentElement);\n      this.delegate.leavingBardo(currentPermanentElement);\n    }\n  }\n\n  replaceNewPermanentElementWithPlaceholder(permanentElement) {\n    const placeholder = createPlaceholderForPermanentElement(permanentElement);\n    permanentElement.replaceWith(placeholder);\n  }\n\n  replaceCurrentPermanentElementWithClone(permanentElement) {\n    const clone = permanentElement.cloneNode(true);\n    permanentElement.replaceWith(clone);\n  }\n\n  replacePlaceholderWithPermanentElement(permanentElement) {\n    const placeholder = this.getPlaceholderById(permanentElement.id);\n    placeholder?.replaceWith(permanentElement);\n  }\n\n  getPlaceholderById(id) {\n    return this.placeholders.find((element) => element.content == id)\n  }\n\n  get placeholders() {\n    return [...document.querySelectorAll(\"meta[name=turbo-permanent-placeholder][content]\")]\n  }\n}\n\nfunction createPlaceholderForPermanentElement(permanentElement) {\n  const element = document.createElement(\"meta\");\n  element.setAttribute(\"name\", \"turbo-permanent-placeholder\");\n  element.setAttribute(\"content\", permanentElement.id);\n  return element\n}\n\nclass Renderer {\n  #activeElement = null\n\n  static renderElement(currentElement, newElement) {\n    // Abstract method\n  }\n\n  constructor(currentSnapshot, newSnapshot, isPreview, willRender = true) {\n    this.currentSnapshot = currentSnapshot;\n    this.newSnapshot = newSnapshot;\n    this.isPreview = isPreview;\n    this.willRender = willRender;\n    this.renderElement = this.constructor.renderElement;\n    this.promise = new Promise((resolve, reject) => (this.resolvingFunctions = { resolve, reject }));\n  }\n\n  get shouldRender() {\n    return true\n  }\n\n  get shouldAutofocus() {\n    return true\n  }\n\n  get reloadReason() {\n    return\n  }\n\n  prepareToRender() {\n    return\n  }\n\n  render() {\n    // Abstract method\n  }\n\n  finishRendering() {\n    if (this.resolvingFunctions) {\n      this.resolvingFunctions.resolve();\n      delete this.resolvingFunctions;\n    }\n  }\n\n  async preservingPermanentElements(callback) {\n    await Bardo.preservingPermanentElements(this, this.permanentElementMap, callback);\n  }\n\n  focusFirstAutofocusableElement() {\n    if (this.shouldAutofocus) {\n      const element = this.connectedSnapshot.firstAutofocusableElement;\n      if (element) {\n        element.focus();\n      }\n    }\n  }\n\n  // Bardo delegate\n\n  enteringBardo(currentPermanentElement) {\n    if (this.#activeElement) return\n\n    if (currentPermanentElement.contains(this.currentSnapshot.activeElement)) {\n      this.#activeElement = this.currentSnapshot.activeElement;\n    }\n  }\n\n  leavingBardo(currentPermanentElement) {\n    if (currentPermanentElement.contains(this.#activeElement) && this.#activeElement instanceof HTMLElement) {\n      this.#activeElement.focus();\n\n      this.#activeElement = null;\n    }\n  }\n\n  get connectedSnapshot() {\n    return this.newSnapshot.isConnected ? this.newSnapshot : this.currentSnapshot\n  }\n\n  get currentElement() {\n    return this.currentSnapshot.element\n  }\n\n  get newElement() {\n    return this.newSnapshot.element\n  }\n\n  get permanentElementMap() {\n    return this.currentSnapshot.getPermanentElementMapForSnapshot(this.newSnapshot)\n  }\n\n  get renderMethod() {\n    return \"replace\"\n  }\n}\n\nclass FrameRenderer extends Renderer {\n  static renderElement(currentElement, newElement) {\n    const destinationRange = document.createRange();\n    destinationRange.selectNodeContents(currentElement);\n    destinationRange.deleteContents();\n\n    const frameElement = newElement;\n    const sourceRange = frameElement.ownerDocument?.createRange();\n    if (sourceRange) {\n      sourceRange.selectNodeContents(frameElement);\n      currentElement.appendChild(sourceRange.extractContents());\n    }\n  }\n\n  constructor(delegate, currentSnapshot, newSnapshot, renderElement, isPreview, willRender = true) {\n    super(currentSnapshot, newSnapshot, renderElement, isPreview, willRender);\n    this.delegate = delegate;\n  }\n\n  get shouldRender() {\n    return true\n  }\n\n  async render() {\n    await nextRepaint();\n    this.preservingPermanentElements(() => {\n      this.loadFrameElement();\n    });\n    this.scrollFrameIntoView();\n    await nextRepaint();\n    this.focusFirstAutofocusableElement();\n    await nextRepaint();\n    this.activateScriptElements();\n  }\n\n  loadFrameElement() {\n    this.delegate.willRenderFrame(this.currentElement, this.newElement);\n    this.renderElement(this.currentElement, this.newElement);\n  }\n\n  scrollFrameIntoView() {\n    if (this.currentElement.autoscroll || this.newElement.autoscroll) {\n      const element = this.currentElement.firstElementChild;\n      const block = readScrollLogicalPosition(this.currentElement.getAttribute(\"data-autoscroll-block\"), \"end\");\n      const behavior = readScrollBehavior(this.currentElement.getAttribute(\"data-autoscroll-behavior\"), \"auto\");\n\n      if (element) {\n        element.scrollIntoView({ block, behavior });\n        return true\n      }\n    }\n    return false\n  }\n\n  activateScriptElements() {\n    for (const inertScriptElement of this.newScriptElements) {\n      const activatedScriptElement = activateScriptElement(inertScriptElement);\n      inertScriptElement.replaceWith(activatedScriptElement);\n    }\n  }\n\n  get newScriptElements() {\n    return this.currentElement.querySelectorAll(\"script\")\n  }\n}\n\nfunction readScrollLogicalPosition(value, defaultValue) {\n  if (value == \"end\" || value == \"start\" || value == \"center\" || value == \"nearest\") {\n    return value\n  } else {\n    return defaultValue\n  }\n}\n\nfunction readScrollBehavior(value, defaultValue) {\n  if (value == \"auto\" || value == \"smooth\") {\n    return value\n  } else {\n    return defaultValue\n  }\n}\n\n/**\n * @typedef {object} ConfigHead\n *\n * @property {'merge' | 'append' | 'morph' | 'none'} [style]\n * @property {boolean} [block]\n * @property {boolean} [ignore]\n * @property {function(Element): boolean} [shouldPreserve]\n * @property {function(Element): boolean} [shouldReAppend]\n * @property {function(Element): boolean} [shouldRemove]\n * @property {function(Element, {added: Node[], kept: Element[], removed: Element[]}): void} [afterHeadMorphed]\n */\n\n/**\n * @typedef {object} ConfigCallbacks\n *\n * @property {function(Node): boolean} [beforeNodeAdded]\n * @property {function(Node): void} [afterNodeAdded]\n * @property {function(Element, Node): boolean} [beforeNodeMorphed]\n * @property {function(Element, Node): void} [afterNodeMorphed]\n * @property {function(Element): boolean} [beforeNodeRemoved]\n * @property {function(Element): void} [afterNodeRemoved]\n * @property {function(string, Element, \"update\" | \"remove\"): boolean} [beforeAttributeUpdated]\n */\n\n/**\n * @typedef {object} Config\n *\n * @property {'outerHTML' | 'innerHTML'} [morphStyle]\n * @property {boolean} [ignoreActive]\n * @property {boolean} [ignoreActiveValue]\n * @property {boolean} [restoreFocus]\n * @property {ConfigCallbacks} [callbacks]\n * @property {ConfigHead} [head]\n */\n\n/**\n * @typedef {function} NoOp\n *\n * @returns {void}\n */\n\n/**\n * @typedef {object} ConfigHeadInternal\n *\n * @property {'merge' | 'append' | 'morph' | 'none'} style\n * @property {boolean} [block]\n * @property {boolean} [ignore]\n * @property {(function(Element): boolean) | NoOp} shouldPreserve\n * @property {(function(Element): boolean) | NoOp} shouldReAppend\n * @property {(function(Element): boolean) | NoOp} shouldRemove\n * @property {(function(Element, {added: Node[], kept: Element[], removed: Element[]}): void) | NoOp} afterHeadMorphed\n */\n\n/**\n * @typedef {object} ConfigCallbacksInternal\n *\n * @property {(function(Node): boolean) | NoOp} beforeNodeAdded\n * @property {(function(Node): void) | NoOp} afterNodeAdded\n * @property {(function(Node, Node): boolean) | NoOp} beforeNodeMorphed\n * @property {(function(Node, Node): void) | NoOp} afterNodeMorphed\n * @property {(function(Node): boolean) | NoOp} beforeNodeRemoved\n * @property {(function(Node): void) | NoOp} afterNodeRemoved\n * @property {(function(string, Element, \"update\" | \"remove\"): boolean) | NoOp} beforeAttributeUpdated\n */\n\n/**\n * @typedef {object} ConfigInternal\n *\n * @property {'outerHTML' | 'innerHTML'} morphStyle\n * @property {boolean} [ignoreActive]\n * @property {boolean} [ignoreActiveValue]\n * @property {boolean} [restoreFocus]\n * @property {ConfigCallbacksInternal} callbacks\n * @property {ConfigHeadInternal} head\n */\n\n/**\n * @typedef {Object} IdSets\n * @property {Set<string>} persistentIds\n * @property {Map<Node, Set<string>>} idMap\n */\n\n/**\n * @typedef {Function} Morph\n *\n * @param {Element | Document} oldNode\n * @param {Element | Node | HTMLCollection | Node[] | string | null} newContent\n * @param {Config} [config]\n * @returns {undefined | Node[]}\n */\n\n// base IIFE to define idiomorph\n/**\n *\n * @type {{defaults: ConfigInternal, morph: Morph}}\n */\nvar Idiomorph = (function () {\n\n  /**\n   * @typedef {object} MorphContext\n   *\n   * @property {Element} target\n   * @property {Element} newContent\n   * @property {ConfigInternal} config\n   * @property {ConfigInternal['morphStyle']} morphStyle\n   * @property {ConfigInternal['ignoreActive']} ignoreActive\n   * @property {ConfigInternal['ignoreActiveValue']} ignoreActiveValue\n   * @property {ConfigInternal['restoreFocus']} restoreFocus\n   * @property {Map<Node, Set<string>>} idMap\n   * @property {Set<string>} persistentIds\n   * @property {ConfigInternal['callbacks']} callbacks\n   * @property {ConfigInternal['head']} head\n   * @property {HTMLDivElement} pantry\n   * @property {Element[]} activeElementAndParents\n   */\n\n  //=============================================================================\n  // AND NOW IT BEGINS...\n  //=============================================================================\n\n  const noOp = () => {};\n  /**\n   * Default configuration values, updatable by users now\n   * @type {ConfigInternal}\n   */\n  const defaults = {\n    morphStyle: \"outerHTML\",\n    callbacks: {\n      beforeNodeAdded: noOp,\n      afterNodeAdded: noOp,\n      beforeNodeMorphed: noOp,\n      afterNodeMorphed: noOp,\n      beforeNodeRemoved: noOp,\n      afterNodeRemoved: noOp,\n      beforeAttributeUpdated: noOp,\n    },\n    head: {\n      style: \"merge\",\n      shouldPreserve: (elt) => elt.getAttribute(\"im-preserve\") === \"true\",\n      shouldReAppend: (elt) => elt.getAttribute(\"im-re-append\") === \"true\",\n      shouldRemove: noOp,\n      afterHeadMorphed: noOp,\n    },\n    restoreFocus: true,\n  };\n\n  /**\n   * Core idiomorph function for morphing one DOM tree to another\n   *\n   * @param {Element | Document} oldNode\n   * @param {Element | Node | HTMLCollection | Node[] | string | null} newContent\n   * @param {Config} [config]\n   * @returns {Promise<Node[]> | Node[]}\n   */\n  function morph(oldNode, newContent, config = {}) {\n    oldNode = normalizeElement(oldNode);\n    const newNode = normalizeParent(newContent);\n    const ctx = createMorphContext(oldNode, newNode, config);\n\n    const morphedNodes = saveAndRestoreFocus(ctx, () => {\n      return withHeadBlocking(\n        ctx,\n        oldNode,\n        newNode,\n        /** @param {MorphContext} ctx */ (ctx) => {\n          if (ctx.morphStyle === \"innerHTML\") {\n            morphChildren(ctx, oldNode, newNode);\n            return Array.from(oldNode.childNodes);\n          } else {\n            return morphOuterHTML(ctx, oldNode, newNode);\n          }\n        },\n      );\n    });\n\n    ctx.pantry.remove();\n    return morphedNodes;\n  }\n\n  /**\n   * Morph just the outerHTML of the oldNode to the newContent\n   * We have to be careful because the oldNode could have siblings which need to be untouched\n   * @param {MorphContext} ctx\n   * @param {Element} oldNode\n   * @param {Element} newNode\n   * @returns {Node[]}\n   */\n  function morphOuterHTML(ctx, oldNode, newNode) {\n    const oldParent = normalizeParent(oldNode);\n    morphChildren(\n      ctx,\n      oldParent,\n      newNode,\n      // these two optional params are the secret sauce\n      oldNode, // start point for iteration\n      oldNode.nextSibling, // end point for iteration\n    );\n    // this is safe even with siblings, because normalizeParent returns a SlicedParentNode if needed.\n    return Array.from(oldParent.childNodes);\n  }\n\n  /**\n   * @param {MorphContext} ctx\n   * @param {Function} fn\n   * @returns {Promise<Node[]> | Node[]}\n   */\n  function saveAndRestoreFocus(ctx, fn) {\n    if (!ctx.config.restoreFocus) return fn();\n    let activeElement =\n      /** @type {HTMLInputElement|HTMLTextAreaElement|null} */ (\n        document.activeElement\n      );\n\n    // don't bother if the active element is not an input or textarea\n    if (\n      !(\n        activeElement instanceof HTMLInputElement ||\n        activeElement instanceof HTMLTextAreaElement\n      )\n    ) {\n      return fn();\n    }\n\n    const { id: activeElementId, selectionStart, selectionEnd } = activeElement;\n\n    const results = fn();\n\n    if (\n      activeElementId &&\n      activeElementId !== document.activeElement?.getAttribute(\"id\")\n    ) {\n      activeElement = ctx.target.querySelector(`[id=\"${activeElementId}\"]`);\n      activeElement?.focus();\n    }\n    if (activeElement && !activeElement.selectionEnd && selectionEnd) {\n      activeElement.setSelectionRange(selectionStart, selectionEnd);\n    }\n\n    return results;\n  }\n\n  const morphChildren = (function () {\n    /**\n     * This is the core algorithm for matching up children.  The idea is to use id sets to try to match up\n     * nodes as faithfully as possible.  We greedily match, which allows us to keep the algorithm fast, but\n     * by using id sets, we are able to better match up with content deeper in the DOM.\n     *\n     * Basic algorithm:\n     * - for each node in the new content:\n     *   - search self and siblings for an id set match, falling back to a soft match\n     *   - if match found\n     *     - remove any nodes up to the match:\n     *       - pantry persistent nodes\n     *       - delete the rest\n     *     - morph the match\n     *   - elsif no match found, and node is persistent\n     *     - find its match by querying the old root (future) and pantry (past)\n     *     - move it and its children here\n     *     - morph it\n     *   - else\n     *     - create a new node from scratch as a last result\n     *\n     * @param {MorphContext} ctx the merge context\n     * @param {Element} oldParent the old content that we are merging the new content into\n     * @param {Element} newParent the parent element of the new content\n     * @param {Node|null} [insertionPoint] the point in the DOM we start morphing at (defaults to first child)\n     * @param {Node|null} [endPoint] the point in the DOM we stop morphing at (defaults to after last child)\n     */\n    function morphChildren(\n      ctx,\n      oldParent,\n      newParent,\n      insertionPoint = null,\n      endPoint = null,\n    ) {\n      // normalize\n      if (\n        oldParent instanceof HTMLTemplateElement &&\n        newParent instanceof HTMLTemplateElement\n      ) {\n        // @ts-ignore we can pretend the DocumentFragment is an Element\n        oldParent = oldParent.content;\n        // @ts-ignore ditto\n        newParent = newParent.content;\n      }\n      insertionPoint ||= oldParent.firstChild;\n\n      // run through all the new content\n      for (const newChild of newParent.childNodes) {\n        // once we reach the end of the old parent content skip to the end and insert the rest\n        if (insertionPoint && insertionPoint != endPoint) {\n          const bestMatch = findBestMatch(\n            ctx,\n            newChild,\n            insertionPoint,\n            endPoint,\n          );\n          if (bestMatch) {\n            // if the node to morph is not at the insertion point then remove/move up to it\n            if (bestMatch !== insertionPoint) {\n              removeNodesBetween(ctx, insertionPoint, bestMatch);\n            }\n            morphNode(bestMatch, newChild, ctx);\n            insertionPoint = bestMatch.nextSibling;\n            continue;\n          }\n        }\n\n        // if the matching node is elsewhere in the original content\n        if (newChild instanceof Element) {\n          // we can pretend the id is non-null because the next `.has` line will reject it if not\n          const newChildId = /** @type {String} */ (\n            newChild.getAttribute(\"id\")\n          );\n          if (ctx.persistentIds.has(newChildId)) {\n            // move it and all its children here and morph\n            const movedChild = moveBeforeById(\n              oldParent,\n              newChildId,\n              insertionPoint,\n              ctx,\n            );\n            morphNode(movedChild, newChild, ctx);\n            insertionPoint = movedChild.nextSibling;\n            continue;\n          }\n        }\n\n        // last resort: insert the new node from scratch\n        const insertedNode = createNode(\n          oldParent,\n          newChild,\n          insertionPoint,\n          ctx,\n        );\n        // could be null if beforeNodeAdded prevented insertion\n        if (insertedNode) {\n          insertionPoint = insertedNode.nextSibling;\n        }\n      }\n\n      // remove any remaining old nodes that didn't match up with new content\n      while (insertionPoint && insertionPoint != endPoint) {\n        const tempNode = insertionPoint;\n        insertionPoint = insertionPoint.nextSibling;\n        removeNode(ctx, tempNode);\n      }\n    }\n\n    /**\n     * This performs the action of inserting a new node while handling situations where the node contains\n     * elements with persistent ids and possible state info we can still preserve by moving in and then morphing\n     *\n     * @param {Element} oldParent\n     * @param {Node} newChild\n     * @param {Node|null} insertionPoint\n     * @param {MorphContext} ctx\n     * @returns {Node|null}\n     */\n    function createNode(oldParent, newChild, insertionPoint, ctx) {\n      if (ctx.callbacks.beforeNodeAdded(newChild) === false) return null;\n      if (ctx.idMap.has(newChild)) {\n        // node has children with ids with possible state so create a dummy elt of same type and apply full morph algorithm\n        const newEmptyChild = document.createElement(\n          /** @type {Element} */ (newChild).tagName,\n        );\n        oldParent.insertBefore(newEmptyChild, insertionPoint);\n        morphNode(newEmptyChild, newChild, ctx);\n        ctx.callbacks.afterNodeAdded(newEmptyChild);\n        return newEmptyChild;\n      } else {\n        // optimisation: no id state to preserve so we can just insert a clone of the newChild and its descendants\n        const newClonedChild = document.importNode(newChild, true); // importNode to not mutate newParent\n        oldParent.insertBefore(newClonedChild, insertionPoint);\n        ctx.callbacks.afterNodeAdded(newClonedChild);\n        return newClonedChild;\n      }\n    }\n\n    //=============================================================================\n    // Matching Functions\n    //=============================================================================\n    const findBestMatch = (function () {\n      /**\n       * Scans forward from the startPoint to the endPoint looking for a match\n       * for the node. It looks for an id set match first, then a soft match.\n       * We abort softmatching if we find two future soft matches, to reduce churn.\n       * @param {Node} node\n       * @param {MorphContext} ctx\n       * @param {Node | null} startPoint\n       * @param {Node | null} endPoint\n       * @returns {Node | null}\n       */\n      function findBestMatch(ctx, node, startPoint, endPoint) {\n        let softMatch = null;\n        let nextSibling = node.nextSibling;\n        let siblingSoftMatchCount = 0;\n\n        let cursor = startPoint;\n        while (cursor && cursor != endPoint) {\n          // soft matching is a prerequisite for id set matching\n          if (isSoftMatch(cursor, node)) {\n            if (isIdSetMatch(ctx, cursor, node)) {\n              return cursor; // found an id set match, we're done!\n            }\n\n            // we haven't yet saved a soft match fallback\n            if (softMatch === null) {\n              // the current soft match will hard match something else in the future, leave it\n              if (!ctx.idMap.has(cursor)) {\n                // save this as the fallback if we get through the loop without finding a hard match\n                softMatch = cursor;\n              }\n            }\n          }\n          if (\n            softMatch === null &&\n            nextSibling &&\n            isSoftMatch(cursor, nextSibling)\n          ) {\n            // The next new node has a soft match with this node, so\n            // increment the count of future soft matches\n            siblingSoftMatchCount++;\n            nextSibling = nextSibling.nextSibling;\n\n            // If there are two future soft matches, block soft matching for this node to allow\n            // future siblings to soft match. This is to reduce churn in the DOM when an element\n            // is prepended.\n            if (siblingSoftMatchCount >= 2) {\n              softMatch = undefined;\n            }\n          }\n\n          // if the current node contains active element, stop looking for better future matches,\n          // because if one is found, this node will be moved to the pantry, reparenting it and thus losing focus\n          // @ts-ignore pretend cursor is Element rather than Node, we're just testing for array inclusion\n          if (ctx.activeElementAndParents.includes(cursor)) break;\n\n          cursor = cursor.nextSibling;\n        }\n\n        return softMatch || null;\n      }\n\n      /**\n       *\n       * @param {MorphContext} ctx\n       * @param {Node} oldNode\n       * @param {Node} newNode\n       * @returns {boolean}\n       */\n      function isIdSetMatch(ctx, oldNode, newNode) {\n        let oldSet = ctx.idMap.get(oldNode);\n        let newSet = ctx.idMap.get(newNode);\n\n        if (!newSet || !oldSet) return false;\n\n        for (const id of oldSet) {\n          // a potential match is an id in the new and old nodes that\n          // has not already been merged into the DOM\n          // But the newNode content we call this on has not been\n          // merged yet and we don't allow duplicate IDs so it is simple\n          if (newSet.has(id)) {\n            return true;\n          }\n        }\n        return false;\n      }\n\n      /**\n       *\n       * @param {Node} oldNode\n       * @param {Node} newNode\n       * @returns {boolean}\n       */\n      function isSoftMatch(oldNode, newNode) {\n        // ok to cast: if one is not element, `id` and `tagName` will be undefined and we'll just compare that.\n        const oldElt = /** @type {Element} */ (oldNode);\n        const newElt = /** @type {Element} */ (newNode);\n\n        return (\n          oldElt.nodeType === newElt.nodeType &&\n          oldElt.tagName === newElt.tagName &&\n          // If oldElt has an `id` with possible state and it doesn't match newElt.id then avoid morphing.\n          // We'll still match an anonymous node with an IDed newElt, though, because if it got this far,\n          // its not persistent, and new nodes can't have any hidden state.\n          // We can't use .id because of form input shadowing, and we can't count on .getAttribute's presence because it could be a document-fragment\n          (!oldElt.getAttribute?.(\"id\") ||\n            oldElt.getAttribute?.(\"id\") === newElt.getAttribute?.(\"id\"))\n        );\n      }\n\n      return findBestMatch;\n    })();\n\n    //=============================================================================\n    // DOM Manipulation Functions\n    //=============================================================================\n\n    /**\n     * Gets rid of an unwanted DOM node; strategy depends on nature of its reuse:\n     * - Persistent nodes will be moved to the pantry for later reuse\n     * - Other nodes will have their hooks called, and then are removed\n     * @param {MorphContext} ctx\n     * @param {Node} node\n     */\n    function removeNode(ctx, node) {\n      // are we going to id set match this later?\n      if (ctx.idMap.has(node)) {\n        // skip callbacks and move to pantry\n        moveBefore(ctx.pantry, node, null);\n      } else {\n        // remove for realsies\n        if (ctx.callbacks.beforeNodeRemoved(node) === false) return;\n        node.parentNode?.removeChild(node);\n        ctx.callbacks.afterNodeRemoved(node);\n      }\n    }\n\n    /**\n     * Remove nodes between the start and end nodes\n     * @param {MorphContext} ctx\n     * @param {Node} startInclusive\n     * @param {Node} endExclusive\n     * @returns {Node|null}\n     */\n    function removeNodesBetween(ctx, startInclusive, endExclusive) {\n      /** @type {Node | null} */\n      let cursor = startInclusive;\n      // remove nodes until the endExclusive node\n      while (cursor && cursor !== endExclusive) {\n        let tempNode = /** @type {Node} */ (cursor);\n        cursor = cursor.nextSibling;\n        removeNode(ctx, tempNode);\n      }\n      return cursor;\n    }\n\n    /**\n     * Search for an element by id within the document and pantry, and move it using moveBefore.\n     *\n     * @param {Element} parentNode - The parent node to which the element will be moved.\n     * @param {string} id - The ID of the element to be moved.\n     * @param {Node | null} after - The reference node to insert the element before.\n     *                              If `null`, the element is appended as the last child.\n     * @param {MorphContext} ctx\n     * @returns {Element} The found element\n     */\n    function moveBeforeById(parentNode, id, after, ctx) {\n      const target =\n        /** @type {Element} - will always be found */\n        (\n          // ctx.target.id unsafe because of form input shadowing\n          // ctx.target could be a document fragment which doesn't have `getAttribute`\n          (ctx.target.getAttribute?.(\"id\") === id && ctx.target) ||\n            ctx.target.querySelector(`[id=\"${id}\"]`) ||\n            ctx.pantry.querySelector(`[id=\"${id}\"]`)\n        );\n      removeElementFromAncestorsIdMaps(target, ctx);\n      moveBefore(parentNode, target, after);\n      return target;\n    }\n\n    /**\n     * Removes an element from its ancestors' id maps. This is needed when an element is moved from the\n     * \"future\" via `moveBeforeId`. Otherwise, its erstwhile ancestors could be mistakenly moved to the\n     * pantry rather than being deleted, preventing their removal hooks from being called.\n     *\n     * @param {Element} element - element to remove from its ancestors' id maps\n     * @param {MorphContext} ctx\n     */\n    function removeElementFromAncestorsIdMaps(element, ctx) {\n      // we know id is non-null String, because this function is only called on elements with ids\n      const id = /** @type {String} */ (element.getAttribute(\"id\"));\n      /** @ts-ignore - safe to loop in this way **/\n      while ((element = element.parentNode)) {\n        let idSet = ctx.idMap.get(element);\n        if (idSet) {\n          idSet.delete(id);\n          if (!idSet.size) {\n            ctx.idMap.delete(element);\n          }\n        }\n      }\n    }\n\n    /**\n     * Moves an element before another element within the same parent.\n     * Uses the proposed `moveBefore` API if available (and working), otherwise falls back to `insertBefore`.\n     * This is essentialy a forward-compat wrapper.\n     *\n     * @param {Element} parentNode - The parent node containing the after element.\n     * @param {Node} element - The element to be moved.\n     * @param {Node | null} after - The reference node to insert `element` before.\n     *                              If `null`, `element` is appended as the last child.\n     */\n    function moveBefore(parentNode, element, after) {\n      // @ts-ignore - use proposed moveBefore feature\n      if (parentNode.moveBefore) {\n        try {\n          // @ts-ignore - use proposed moveBefore feature\n          parentNode.moveBefore(element, after);\n        } catch (e) {\n          // fall back to insertBefore as some browsers may fail on moveBefore when trying to move Dom disconnected nodes to pantry\n          parentNode.insertBefore(element, after);\n        }\n      } else {\n        parentNode.insertBefore(element, after);\n      }\n    }\n\n    return morphChildren;\n  })();\n\n  //=============================================================================\n  // Single Node Morphing Code\n  //=============================================================================\n  const morphNode = (function () {\n    /**\n     * @param {Node} oldNode root node to merge content into\n     * @param {Node} newContent new content to merge\n     * @param {MorphContext} ctx the merge context\n     * @returns {Node | null} the element that ended up in the DOM\n     */\n    function morphNode(oldNode, newContent, ctx) {\n      if (ctx.ignoreActive && oldNode === document.activeElement) {\n        // don't morph focused element\n        return null;\n      }\n\n      if (ctx.callbacks.beforeNodeMorphed(oldNode, newContent) === false) {\n        return oldNode;\n      }\n\n      if (oldNode instanceof HTMLHeadElement && ctx.head.ignore) ; else if (\n        oldNode instanceof HTMLHeadElement &&\n        ctx.head.style !== \"morph\"\n      ) {\n        // ok to cast: if newContent wasn't also a <head>, it would've got caught in the `!isSoftMatch` branch above\n        handleHeadElement(\n          oldNode,\n          /** @type {HTMLHeadElement} */ (newContent),\n          ctx,\n        );\n      } else {\n        morphAttributes(oldNode, newContent, ctx);\n        if (!ignoreValueOfActiveElement(oldNode, ctx)) {\n          // @ts-ignore newContent can be a node here because .firstChild will be null\n          morphChildren(ctx, oldNode, newContent);\n        }\n      }\n      ctx.callbacks.afterNodeMorphed(oldNode, newContent);\n      return oldNode;\n    }\n\n    /**\n     * syncs the oldNode to the newNode, copying over all attributes and\n     * inner element state from the newNode to the oldNode\n     *\n     * @param {Node} oldNode the node to copy attributes & state to\n     * @param {Node} newNode the node to copy attributes & state from\n     * @param {MorphContext} ctx the merge context\n     */\n    function morphAttributes(oldNode, newNode, ctx) {\n      let type = newNode.nodeType;\n\n      // if is an element type, sync the attributes from the\n      // new node into the new node\n      if (type === 1 /* element type */) {\n        const oldElt = /** @type {Element} */ (oldNode);\n        const newElt = /** @type {Element} */ (newNode);\n\n        const oldAttributes = oldElt.attributes;\n        const newAttributes = newElt.attributes;\n        for (const newAttribute of newAttributes) {\n          if (ignoreAttribute(newAttribute.name, oldElt, \"update\", ctx)) {\n            continue;\n          }\n          if (oldElt.getAttribute(newAttribute.name) !== newAttribute.value) {\n            oldElt.setAttribute(newAttribute.name, newAttribute.value);\n          }\n        }\n        // iterate backwards to avoid skipping over items when a delete occurs\n        for (let i = oldAttributes.length - 1; 0 <= i; i--) {\n          const oldAttribute = oldAttributes[i];\n\n          // toAttributes is a live NamedNodeMap, so iteration+mutation is unsafe\n          // e.g. custom element attribute callbacks can remove other attributes\n          if (!oldAttribute) continue;\n\n          if (!newElt.hasAttribute(oldAttribute.name)) {\n            if (ignoreAttribute(oldAttribute.name, oldElt, \"remove\", ctx)) {\n              continue;\n            }\n            oldElt.removeAttribute(oldAttribute.name);\n          }\n        }\n\n        if (!ignoreValueOfActiveElement(oldElt, ctx)) {\n          syncInputValue(oldElt, newElt, ctx);\n        }\n      }\n\n      // sync text nodes\n      if (type === 8 /* comment */ || type === 3 /* text */) {\n        if (oldNode.nodeValue !== newNode.nodeValue) {\n          oldNode.nodeValue = newNode.nodeValue;\n        }\n      }\n    }\n\n    /**\n     * NB: many bothans died to bring us information:\n     *\n     *  https://github.com/patrick-steele-idem/morphdom/blob/master/src/specialElHandlers.js\n     *  https://github.com/choojs/nanomorph/blob/master/lib/morph.jsL113\n     *\n     * @param {Element} oldElement the element to sync the input value to\n     * @param {Element} newElement the element to sync the input value from\n     * @param {MorphContext} ctx the merge context\n     */\n    function syncInputValue(oldElement, newElement, ctx) {\n      if (\n        oldElement instanceof HTMLInputElement &&\n        newElement instanceof HTMLInputElement &&\n        newElement.type !== \"file\"\n      ) {\n        let newValue = newElement.value;\n        let oldValue = oldElement.value;\n\n        // sync boolean attributes\n        syncBooleanAttribute(oldElement, newElement, \"checked\", ctx);\n        syncBooleanAttribute(oldElement, newElement, \"disabled\", ctx);\n\n        if (!newElement.hasAttribute(\"value\")) {\n          if (!ignoreAttribute(\"value\", oldElement, \"remove\", ctx)) {\n            oldElement.value = \"\";\n            oldElement.removeAttribute(\"value\");\n          }\n        } else if (oldValue !== newValue) {\n          if (!ignoreAttribute(\"value\", oldElement, \"update\", ctx)) {\n            oldElement.setAttribute(\"value\", newValue);\n            oldElement.value = newValue;\n          }\n        }\n        // TODO: QUESTION(1cg): this used to only check `newElement` unlike the other branches -- why?\n        // did I break something?\n      } else if (\n        oldElement instanceof HTMLOptionElement &&\n        newElement instanceof HTMLOptionElement\n      ) {\n        syncBooleanAttribute(oldElement, newElement, \"selected\", ctx);\n      } else if (\n        oldElement instanceof HTMLTextAreaElement &&\n        newElement instanceof HTMLTextAreaElement\n      ) {\n        let newValue = newElement.value;\n        let oldValue = oldElement.value;\n        if (ignoreAttribute(\"value\", oldElement, \"update\", ctx)) {\n          return;\n        }\n        if (newValue !== oldValue) {\n          oldElement.value = newValue;\n        }\n        if (\n          oldElement.firstChild &&\n          oldElement.firstChild.nodeValue !== newValue\n        ) {\n          oldElement.firstChild.nodeValue = newValue;\n        }\n      }\n    }\n\n    /**\n     * @param {Element} oldElement element to write the value to\n     * @param {Element} newElement element to read the value from\n     * @param {string} attributeName the attribute name\n     * @param {MorphContext} ctx the merge context\n     */\n    function syncBooleanAttribute(oldElement, newElement, attributeName, ctx) {\n      // @ts-ignore this function is only used on boolean attrs that are reflected as dom properties\n      const newLiveValue = newElement[attributeName],\n        // @ts-ignore ditto\n        oldLiveValue = oldElement[attributeName];\n      if (newLiveValue !== oldLiveValue) {\n        const ignoreUpdate = ignoreAttribute(\n          attributeName,\n          oldElement,\n          \"update\",\n          ctx,\n        );\n        if (!ignoreUpdate) {\n          // update attribute's associated DOM property\n          // @ts-ignore this function is only used on boolean attrs that are reflected as dom properties\n          oldElement[attributeName] = newElement[attributeName];\n        }\n        if (newLiveValue) {\n          if (!ignoreUpdate) {\n            // https://developer.mozilla.org/en-US/docs/Glossary/Boolean/HTML\n            // this is the correct way to set a boolean attribute to \"true\"\n            oldElement.setAttribute(attributeName, \"\");\n          }\n        } else {\n          if (!ignoreAttribute(attributeName, oldElement, \"remove\", ctx)) {\n            oldElement.removeAttribute(attributeName);\n          }\n        }\n      }\n    }\n\n    /**\n     * @param {string} attr the attribute to be mutated\n     * @param {Element} element the element that is going to be updated\n     * @param {\"update\" | \"remove\"} updateType\n     * @param {MorphContext} ctx the merge context\n     * @returns {boolean} true if the attribute should be ignored, false otherwise\n     */\n    function ignoreAttribute(attr, element, updateType, ctx) {\n      if (\n        attr === \"value\" &&\n        ctx.ignoreActiveValue &&\n        element === document.activeElement\n      ) {\n        return true;\n      }\n      return (\n        ctx.callbacks.beforeAttributeUpdated(attr, element, updateType) ===\n        false\n      );\n    }\n\n    /**\n     * @param {Node} possibleActiveElement\n     * @param {MorphContext} ctx\n     * @returns {boolean}\n     */\n    function ignoreValueOfActiveElement(possibleActiveElement, ctx) {\n      return (\n        !!ctx.ignoreActiveValue &&\n        possibleActiveElement === document.activeElement &&\n        possibleActiveElement !== document.body\n      );\n    }\n\n    return morphNode;\n  })();\n\n  //=============================================================================\n  // Head Management Functions\n  //=============================================================================\n  /**\n   * @param {MorphContext} ctx\n   * @param {Element} oldNode\n   * @param {Element} newNode\n   * @param {function} callback\n   * @returns {Node[] | Promise<Node[]>}\n   */\n  function withHeadBlocking(ctx, oldNode, newNode, callback) {\n    if (ctx.head.block) {\n      const oldHead = oldNode.querySelector(\"head\");\n      const newHead = newNode.querySelector(\"head\");\n      if (oldHead && newHead) {\n        const promises = handleHeadElement(oldHead, newHead, ctx);\n        // when head promises resolve, proceed ignoring the head tag\n        return Promise.all(promises).then(() => {\n          const newCtx = Object.assign(ctx, {\n            head: {\n              block: false,\n              ignore: true,\n            },\n          });\n          return callback(newCtx);\n        });\n      }\n    }\n    // just proceed if we not head blocking\n    return callback(ctx);\n  }\n\n  /**\n   *  The HEAD tag can be handled specially, either w/ a 'merge' or 'append' style\n   *\n   * @param {Element} oldHead\n   * @param {Element} newHead\n   * @param {MorphContext} ctx\n   * @returns {Promise<void>[]}\n   */\n  function handleHeadElement(oldHead, newHead, ctx) {\n    let added = [];\n    let removed = [];\n    let preserved = [];\n    let nodesToAppend = [];\n\n    // put all new head elements into a Map, by their outerHTML\n    let srcToNewHeadNodes = new Map();\n    for (const newHeadChild of newHead.children) {\n      srcToNewHeadNodes.set(newHeadChild.outerHTML, newHeadChild);\n    }\n\n    // for each elt in the current head\n    for (const currentHeadElt of oldHead.children) {\n      // If the current head element is in the map\n      let inNewContent = srcToNewHeadNodes.has(currentHeadElt.outerHTML);\n      let isReAppended = ctx.head.shouldReAppend(currentHeadElt);\n      let isPreserved = ctx.head.shouldPreserve(currentHeadElt);\n      if (inNewContent || isPreserved) {\n        if (isReAppended) {\n          // remove the current version and let the new version replace it and re-execute\n          removed.push(currentHeadElt);\n        } else {\n          // this element already exists and should not be re-appended, so remove it from\n          // the new content map, preserving it in the DOM\n          srcToNewHeadNodes.delete(currentHeadElt.outerHTML);\n          preserved.push(currentHeadElt);\n        }\n      } else {\n        if (ctx.head.style === \"append\") {\n          // we are appending and this existing element is not new content\n          // so if and only if it is marked for re-append do we do anything\n          if (isReAppended) {\n            removed.push(currentHeadElt);\n            nodesToAppend.push(currentHeadElt);\n          }\n        } else {\n          // if this is a merge, we remove this content since it is not in the new head\n          if (ctx.head.shouldRemove(currentHeadElt) !== false) {\n            removed.push(currentHeadElt);\n          }\n        }\n      }\n    }\n\n    // Push the remaining new head elements in the Map into the\n    // nodes to append to the head tag\n    nodesToAppend.push(...srcToNewHeadNodes.values());\n\n    let promises = [];\n    for (const newNode of nodesToAppend) {\n      // TODO: This could theoretically be null, based on type\n      let newElt = /** @type {ChildNode} */ (\n        document.createRange().createContextualFragment(newNode.outerHTML)\n          .firstChild\n      );\n      if (ctx.callbacks.beforeNodeAdded(newElt) !== false) {\n        if (\n          (\"href\" in newElt && newElt.href) ||\n          (\"src\" in newElt && newElt.src)\n        ) {\n          /** @type {(result?: any) => void} */ let resolve;\n          let promise = new Promise(function (_resolve) {\n            resolve = _resolve;\n          });\n          newElt.addEventListener(\"load\", function () {\n            resolve();\n          });\n          promises.push(promise);\n        }\n        oldHead.appendChild(newElt);\n        ctx.callbacks.afterNodeAdded(newElt);\n        added.push(newElt);\n      }\n    }\n\n    // remove all removed elements, after we have appended the new elements to avoid\n    // additional network requests for things like style sheets\n    for (const removedElement of removed) {\n      if (ctx.callbacks.beforeNodeRemoved(removedElement) !== false) {\n        oldHead.removeChild(removedElement);\n        ctx.callbacks.afterNodeRemoved(removedElement);\n      }\n    }\n\n    ctx.head.afterHeadMorphed(oldHead, {\n      added: added,\n      kept: preserved,\n      removed: removed,\n    });\n    return promises;\n  }\n\n  //=============================================================================\n  // Create Morph Context Functions\n  //=============================================================================\n  const createMorphContext = (function () {\n    /**\n     *\n     * @param {Element} oldNode\n     * @param {Element} newContent\n     * @param {Config} config\n     * @returns {MorphContext}\n     */\n    function createMorphContext(oldNode, newContent, config) {\n      const { persistentIds, idMap } = createIdMaps(oldNode, newContent);\n\n      const mergedConfig = mergeDefaults(config);\n      const morphStyle = mergedConfig.morphStyle || \"outerHTML\";\n      if (![\"innerHTML\", \"outerHTML\"].includes(morphStyle)) {\n        throw `Do not understand how to morph style ${morphStyle}`;\n      }\n\n      return {\n        target: oldNode,\n        newContent: newContent,\n        config: mergedConfig,\n        morphStyle: morphStyle,\n        ignoreActive: mergedConfig.ignoreActive,\n        ignoreActiveValue: mergedConfig.ignoreActiveValue,\n        restoreFocus: mergedConfig.restoreFocus,\n        idMap: idMap,\n        persistentIds: persistentIds,\n        pantry: createPantry(),\n        activeElementAndParents: createActiveElementAndParents(oldNode),\n        callbacks: mergedConfig.callbacks,\n        head: mergedConfig.head,\n      };\n    }\n\n    /**\n     * Deep merges the config object and the Idiomorph.defaults object to\n     * produce a final configuration object\n     * @param {Config} config\n     * @returns {ConfigInternal}\n     */\n    function mergeDefaults(config) {\n      let finalConfig = Object.assign({}, defaults);\n\n      // copy top level stuff into final config\n      Object.assign(finalConfig, config);\n\n      // copy callbacks into final config (do this to deep merge the callbacks)\n      finalConfig.callbacks = Object.assign(\n        {},\n        defaults.callbacks,\n        config.callbacks,\n      );\n\n      // copy head config into final config  (do this to deep merge the head)\n      finalConfig.head = Object.assign({}, defaults.head, config.head);\n\n      return finalConfig;\n    }\n\n    /**\n     * @returns {HTMLDivElement}\n     */\n    function createPantry() {\n      const pantry = document.createElement(\"div\");\n      pantry.hidden = true;\n      document.body.insertAdjacentElement(\"afterend\", pantry);\n      return pantry;\n    }\n\n    /**\n     * @param {Element} oldNode\n     * @returns {Element[]}\n     */\n    function createActiveElementAndParents(oldNode) {\n      /** @type {Element[]} */\n      let activeElementAndParents = [];\n      let elt = document.activeElement;\n      if (elt?.tagName !== \"BODY\" && oldNode.contains(elt)) {\n        while (elt) {\n          activeElementAndParents.push(elt);\n          if (elt === oldNode) break;\n          elt = elt.parentElement;\n        }\n      }\n      return activeElementAndParents;\n    }\n\n    /**\n     * Returns all elements with an ID contained within the root element and its descendants\n     *\n     * @param {Element} root\n     * @returns {Element[]}\n     */\n    function findIdElements(root) {\n      let elements = Array.from(root.querySelectorAll(\"[id]\"));\n      // root could be a document fragment which doesn't have `getAttribute`\n      if (root.getAttribute?.(\"id\")) {\n        elements.push(root);\n      }\n      return elements;\n    }\n\n    /**\n     * A bottom-up algorithm that populates a map of Element -> IdSet.\n     * The idSet for a given element is the set of all IDs contained within its subtree.\n     * As an optimzation, we filter these IDs through the given list of persistent IDs,\n     * because we don't need to bother considering IDed elements that won't be in the new content.\n     *\n     * @param {Map<Node, Set<string>>} idMap\n     * @param {Set<string>} persistentIds\n     * @param {Element} root\n     * @param {Element[]} elements\n     */\n    function populateIdMapWithTree(idMap, persistentIds, root, elements) {\n      for (const elt of elements) {\n        // we can pretend id is non-null String, because the .has line will reject it immediately if not\n        const id = /** @type {String} */ (elt.getAttribute(\"id\"));\n        if (persistentIds.has(id)) {\n          /** @type {Element|null} */\n          let current = elt;\n          // walk up the parent hierarchy of that element, adding the id\n          // of element to the parent's id set\n          while (current) {\n            let idSet = idMap.get(current);\n            // if the id set doesn't exist, create it and insert it in the map\n            if (idSet == null) {\n              idSet = new Set();\n              idMap.set(current, idSet);\n            }\n            idSet.add(id);\n\n            if (current === root) break;\n            current = current.parentElement;\n          }\n        }\n      }\n    }\n\n    /**\n     * This function computes a map of nodes to all ids contained within that node (inclusive of the\n     * node).  This map can be used to ask if two nodes have intersecting sets of ids, which allows\n     * for a looser definition of \"matching\" than tradition id matching, and allows child nodes\n     * to contribute to a parent nodes matching.\n     *\n     * @param {Element} oldContent  the old content that will be morphed\n     * @param {Element} newContent  the new content to morph to\n     * @returns {IdSets}\n     */\n    function createIdMaps(oldContent, newContent) {\n      const oldIdElements = findIdElements(oldContent);\n      const newIdElements = findIdElements(newContent);\n\n      const persistentIds = createPersistentIds(oldIdElements, newIdElements);\n\n      /** @type {Map<Node, Set<string>>} */\n      let idMap = new Map();\n      populateIdMapWithTree(idMap, persistentIds, oldContent, oldIdElements);\n\n      /** @ts-ignore - if newContent is a duck-typed parent, pass its single child node as the root to halt upwards iteration */\n      const newRoot = newContent.__idiomorphRoot || newContent;\n      populateIdMapWithTree(idMap, persistentIds, newRoot, newIdElements);\n\n      return { persistentIds, idMap };\n    }\n\n    /**\n     * This function computes the set of ids that persist between the two contents excluding duplicates\n     *\n     * @param {Element[]} oldIdElements\n     * @param {Element[]} newIdElements\n     * @returns {Set<string>}\n     */\n    function createPersistentIds(oldIdElements, newIdElements) {\n      let duplicateIds = new Set();\n\n      /** @type {Map<string, string>} */\n      let oldIdTagNameMap = new Map();\n      for (const { id, tagName } of oldIdElements) {\n        if (oldIdTagNameMap.has(id)) {\n          duplicateIds.add(id);\n        } else {\n          oldIdTagNameMap.set(id, tagName);\n        }\n      }\n\n      let persistentIds = new Set();\n      for (const { id, tagName } of newIdElements) {\n        if (persistentIds.has(id)) {\n          duplicateIds.add(id);\n        } else if (oldIdTagNameMap.get(id) === tagName) {\n          persistentIds.add(id);\n        }\n        // skip if tag types mismatch because its not possible to morph one tag into another\n      }\n\n      for (const id of duplicateIds) {\n        persistentIds.delete(id);\n      }\n      return persistentIds;\n    }\n\n    return createMorphContext;\n  })();\n\n  //=============================================================================\n  // HTML Normalization Functions\n  //=============================================================================\n  const { normalizeElement, normalizeParent } = (function () {\n    /** @type {WeakSet<Node>} */\n    const generatedByIdiomorph = new WeakSet();\n\n    /**\n     *\n     * @param {Element | Document} content\n     * @returns {Element}\n     */\n    function normalizeElement(content) {\n      if (content instanceof Document) {\n        return content.documentElement;\n      } else {\n        return content;\n      }\n    }\n\n    /**\n     *\n     * @param {null | string | Node | HTMLCollection | Node[] | Document & {generatedByIdiomorph:boolean}} newContent\n     * @returns {Element}\n     */\n    function normalizeParent(newContent) {\n      if (newContent == null) {\n        return document.createElement(\"div\"); // dummy parent element\n      } else if (typeof newContent === \"string\") {\n        return normalizeParent(parseContent(newContent));\n      } else if (\n        generatedByIdiomorph.has(/** @type {Element} */ (newContent))\n      ) {\n        // the template tag created by idiomorph parsing can serve as a dummy parent\n        return /** @type {Element} */ (newContent);\n      } else if (newContent instanceof Node) {\n        if (newContent.parentNode) {\n          // we can't use the parent directly because newContent may have siblings\n          // that we don't want in the morph, and reparenting might be expensive (TODO is it?),\n          // so instead we create a fake parent node that only sees a slice of its children.\n          /** @type {Element} */\n          return /** @type {any} */ (new SlicedParentNode(newContent));\n        } else {\n          // a single node is added as a child to a dummy parent\n          const dummyParent = document.createElement(\"div\");\n          dummyParent.append(newContent);\n          return dummyParent;\n        }\n      } else {\n        // all nodes in the array or HTMLElement collection are consolidated under\n        // a single dummy parent element\n        const dummyParent = document.createElement(\"div\");\n        for (const elt of [...newContent]) {\n          dummyParent.append(elt);\n        }\n        return dummyParent;\n      }\n    }\n\n    /**\n     * A fake duck-typed parent element to wrap a single node, without actually reparenting it.\n     * This is useful because the node may have siblings that we don't want in the morph, and it may also be moved\n     * or replaced with one or more elements during the morph. This class effectively allows us a window into\n     * a slice of a node's children.\n     * \"If it walks like a duck, and quacks like a duck, then it must be a duck!\" -- James Whitcomb Riley (1849\u20131916)\n     */\n    class SlicedParentNode {\n      /** @param {Node} node */\n      constructor(node) {\n        this.originalNode = node;\n        this.realParentNode = /** @type {Element} */ (node.parentNode);\n        this.previousSibling = node.previousSibling;\n        this.nextSibling = node.nextSibling;\n      }\n\n      /** @returns {Node[]} */\n      get childNodes() {\n        // return slice of realParent's current childNodes, based on previousSibling and nextSibling\n        const nodes = [];\n        let cursor = this.previousSibling\n          ? this.previousSibling.nextSibling\n          : this.realParentNode.firstChild;\n        while (cursor && cursor != this.nextSibling) {\n          nodes.push(cursor);\n          cursor = cursor.nextSibling;\n        }\n        return nodes;\n      }\n\n      /**\n       * @param {string} selector\n       * @returns {Element[]}\n       */\n      querySelectorAll(selector) {\n        return this.childNodes.reduce((results, node) => {\n          if (node instanceof Element) {\n            if (node.matches(selector)) results.push(node);\n            const nodeList = node.querySelectorAll(selector);\n            for (let i = 0; i < nodeList.length; i++) {\n              results.push(nodeList[i]);\n            }\n          }\n          return results;\n        }, /** @type {Element[]} */ ([]));\n      }\n\n      /**\n       * @param {Node} node\n       * @param {Node} referenceNode\n       * @returns {Node}\n       */\n      insertBefore(node, referenceNode) {\n        return this.realParentNode.insertBefore(node, referenceNode);\n      }\n\n      /**\n       * @param {Node} node\n       * @param {Node} referenceNode\n       * @returns {Node}\n       */\n      moveBefore(node, referenceNode) {\n        // @ts-ignore - use new moveBefore feature\n        return this.realParentNode.moveBefore(node, referenceNode);\n      }\n\n      /**\n       * for later use with populateIdMapWithTree to halt upwards iteration\n       * @returns {Node}\n       */\n      get __idiomorphRoot() {\n        return this.originalNode;\n      }\n    }\n\n    /**\n     *\n     * @param {string} newContent\n     * @returns {Node | null | DocumentFragment}\n     */\n    function parseContent(newContent) {\n      let parser = new DOMParser();\n\n      // remove svgs to avoid false-positive matches on head, etc.\n      let contentWithSvgsRemoved = newContent.replace(\n        /<svg(\\s[^>]*>|>)([\\s\\S]*?)<\\/svg>/gim,\n        \"\",\n      );\n\n      // if the newContent contains a html, head or body tag, we can simply parse it w/o wrapping\n      if (\n        contentWithSvgsRemoved.match(/<\\/html>/) ||\n        contentWithSvgsRemoved.match(/<\\/head>/) ||\n        contentWithSvgsRemoved.match(/<\\/body>/)\n      ) {\n        let content = parser.parseFromString(newContent, \"text/html\");\n        // if it is a full HTML document, return the document itself as the parent container\n        if (contentWithSvgsRemoved.match(/<\\/html>/)) {\n          generatedByIdiomorph.add(content);\n          return content;\n        } else {\n          // otherwise return the html element as the parent container\n          let htmlElement = content.firstChild;\n          if (htmlElement) {\n            generatedByIdiomorph.add(htmlElement);\n          }\n          return htmlElement;\n        }\n      } else {\n        // if it is partial HTML, wrap it in a template tag to provide a parent element and also to help\n        // deal with touchy tags like tr, tbody, etc.\n        let responseDoc = parser.parseFromString(\n          \"<body><template>\" + newContent + \"</template></body>\",\n          \"text/html\",\n        );\n        let content = /** @type {HTMLTemplateElement} */ (\n          responseDoc.body.querySelector(\"template\")\n        ).content;\n        generatedByIdiomorph.add(content);\n        return content;\n      }\n    }\n\n    return { normalizeElement, normalizeParent };\n  })();\n\n  //=============================================================================\n  // This is what ends up becoming the Idiomorph global object\n  //=============================================================================\n  return {\n    morph,\n    defaults,\n  };\n})();\n\n/**\n * Morph the state of the currentElement based on the attributes and contents of\n * the newElement. Morphing may dispatch turbo:before-morph-element,\n * turbo:before-morph-attribute, and turbo:morph-element events.\n *\n * @param currentElement Element destination of morphing changes\n * @param newElement Element source of morphing changes\n */\nfunction morphElements(currentElement, newElement, { callbacks, ...options } = {}) {\n  Idiomorph.morph(currentElement, newElement, {\n    ...options,\n    callbacks: new DefaultIdiomorphCallbacks(callbacks)\n  });\n}\n\n/**\n * Morph the child elements of the currentElement based on the child elements of\n * the newElement. Morphing children may dispatch turbo:before-morph-element,\n * turbo:before-morph-attribute, and turbo:morph-element events.\n *\n * @param currentElement Element destination of morphing children changes\n * @param newElement Element source of morphing children changes\n */\nfunction morphChildren(currentElement, newElement, options = {}) {\n  morphElements(currentElement, newElement.childNodes, {\n    ...options,\n    morphStyle: \"innerHTML\"\n  });\n}\n\nfunction shouldRefreshFrameWithMorphing(currentFrame, newFrame) {\n  return currentFrame instanceof FrameElement &&\n    currentFrame.shouldReloadWithMorph && (!newFrame || areFramesCompatibleForRefreshing(currentFrame, newFrame)) &&\n    !currentFrame.closest(\"[data-turbo-permanent]\")\n}\n\nfunction areFramesCompatibleForRefreshing(currentFrame, newFrame) {\n  // newFrame cannot yet be an instance of FrameElement because custom\n  // elements don't get initialized until they're attached to the DOM, so\n  // test its Element#nodeName instead\n  return newFrame instanceof Element && newFrame.nodeName === \"TURBO-FRAME\" && currentFrame.id === newFrame.id &&\n  (!newFrame.getAttribute(\"src\") || urlsAreEqual(currentFrame.src, newFrame.getAttribute(\"src\")))\n}\n\nfunction closestFrameReloadableWithMorphing(node) {\n  return node.parentElement.closest(\"turbo-frame[src][refresh=morph]\")\n}\n\nclass DefaultIdiomorphCallbacks {\n  #beforeNodeMorphed\n\n  constructor({ beforeNodeMorphed } = {}) {\n    this.#beforeNodeMorphed = beforeNodeMorphed || (() => true);\n  }\n\n  beforeNodeAdded = (node) => {\n    return !(node.id && node.hasAttribute(\"data-turbo-permanent\") && document.getElementById(node.id))\n  }\n\n  beforeNodeMorphed = (currentElement, newElement) => {\n    if (currentElement instanceof Element) {\n      if (!currentElement.hasAttribute(\"data-turbo-permanent\") && this.#beforeNodeMorphed(currentElement, newElement)) {\n        const event = dispatch(\"turbo:before-morph-element\", {\n          cancelable: true,\n          target: currentElement,\n          detail: { currentElement, newElement }\n        });\n\n        return !event.defaultPrevented\n      } else {\n        return false\n      }\n    }\n  }\n\n  beforeAttributeUpdated = (attributeName, target, mutationType) => {\n    const event = dispatch(\"turbo:before-morph-attribute\", {\n      cancelable: true,\n      target,\n      detail: { attributeName, mutationType }\n    });\n\n    return !event.defaultPrevented\n  }\n\n  beforeNodeRemoved = (node) => {\n    return this.beforeNodeMorphed(node)\n  }\n\n  afterNodeMorphed = (currentElement, newElement) => {\n    if (currentElement instanceof Element) {\n      dispatch(\"turbo:morph-element\", {\n        target: currentElement,\n        detail: { currentElement, newElement }\n      });\n    }\n  }\n}\n\nclass MorphingFrameRenderer extends FrameRenderer {\n  static renderElement(currentElement, newElement) {\n    dispatch(\"turbo:before-frame-morph\", {\n      target: currentElement,\n      detail: { currentElement, newElement }\n    });\n\n    morphChildren(currentElement, newElement, {\n      callbacks: {\n        beforeNodeMorphed: (node, newNode) => {\n          if (\n            shouldRefreshFrameWithMorphing(node, newNode) &&\n              closestFrameReloadableWithMorphing(node) === currentElement\n          ) {\n            node.reload();\n            return false\n          }\n          return true\n        }\n      }\n    });\n  }\n\n  async preservingPermanentElements(callback) {\n    return await callback()\n  }\n}\n\nclass ProgressBar {\n  static animationDuration = 300 /*ms*/\n\n  static get defaultCSS() {\n    return unindent`\n      .turbo-progress-bar {\n        position: fixed;\n        display: block;\n        top: 0;\n        left: 0;\n        height: 3px;\n        background: #0076ff;\n        z-index: 2147483647;\n        transition:\n          width ${ProgressBar.animationDuration}ms ease-out,\n          opacity ${ProgressBar.animationDuration / 2}ms ${ProgressBar.animationDuration / 2}ms ease-in;\n        transform: translate3d(0, 0, 0);\n      }\n    `\n  }\n\n  hiding = false\n  value = 0\n  visible = false\n\n  constructor() {\n    this.stylesheetElement = this.createStylesheetElement();\n    this.progressElement = this.createProgressElement();\n    this.installStylesheetElement();\n    this.setValue(0);\n  }\n\n  show() {\n    if (!this.visible) {\n      this.visible = true;\n      this.installProgressElement();\n      this.startTrickling();\n    }\n  }\n\n  hide() {\n    if (this.visible && !this.hiding) {\n      this.hiding = true;\n      this.fadeProgressElement(() => {\n        this.uninstallProgressElement();\n        this.stopTrickling();\n        this.visible = false;\n        this.hiding = false;\n      });\n    }\n  }\n\n  setValue(value) {\n    this.value = value;\n    this.refresh();\n  }\n\n  // Private\n\n  installStylesheetElement() {\n    document.head.insertBefore(this.stylesheetElement, document.head.firstChild);\n  }\n\n  installProgressElement() {\n    this.progressElement.style.width = \"0\";\n    this.progressElement.style.opacity = \"1\";\n    document.documentElement.insertBefore(this.progressElement, document.body);\n    this.refresh();\n  }\n\n  fadeProgressElement(callback) {\n    this.progressElement.style.opacity = \"0\";\n    setTimeout(callback, ProgressBar.animationDuration * 1.5);\n  }\n\n  uninstallProgressElement() {\n    if (this.progressElement.parentNode) {\n      document.documentElement.removeChild(this.progressElement);\n    }\n  }\n\n  startTrickling() {\n    if (!this.trickleInterval) {\n      this.trickleInterval = window.setInterval(this.trickle, ProgressBar.animationDuration);\n    }\n  }\n\n  stopTrickling() {\n    window.clearInterval(this.trickleInterval);\n    delete this.trickleInterval;\n  }\n\n  trickle = () => {\n    this.setValue(this.value + Math.random() / 100);\n  }\n\n  refresh() {\n    requestAnimationFrame(() => {\n      this.progressElement.style.width = `${10 + this.value * 90}%`;\n    });\n  }\n\n  createStylesheetElement() {\n    const element = document.createElement(\"style\");\n    element.type = \"text/css\";\n    element.textContent = ProgressBar.defaultCSS;\n    const cspNonce = getCspNonce();\n    if (cspNonce) {\n      element.nonce = cspNonce;\n    }\n    return element\n  }\n\n  createProgressElement() {\n    const element = document.createElement(\"div\");\n    element.className = \"turbo-progress-bar\";\n    return element\n  }\n}\n\nclass HeadSnapshot extends Snapshot {\n  detailsByOuterHTML = this.children\n    .filter((element) => !elementIsNoscript(element))\n    .map((element) => elementWithoutNonce(element))\n    .reduce((result, element) => {\n      const { outerHTML } = element;\n      const details =\n        outerHTML in result\n          ? result[outerHTML]\n          : {\n              type: elementType(element),\n              tracked: elementIsTracked(element),\n              elements: []\n            };\n      return {\n        ...result,\n        [outerHTML]: {\n          ...details,\n          elements: [...details.elements, element]\n        }\n      }\n    }, {})\n\n  get trackedElementSignature() {\n    return Object.keys(this.detailsByOuterHTML)\n      .filter((outerHTML) => this.detailsByOuterHTML[outerHTML].tracked)\n      .join(\"\")\n  }\n\n  getScriptElementsNotInSnapshot(snapshot) {\n    return this.getElementsMatchingTypeNotInSnapshot(\"script\", snapshot)\n  }\n\n  getStylesheetElementsNotInSnapshot(snapshot) {\n    return this.getElementsMatchingTypeNotInSnapshot(\"stylesheet\", snapshot)\n  }\n\n  getElementsMatchingTypeNotInSnapshot(matchedType, snapshot) {\n    return Object.keys(this.detailsByOuterHTML)\n      .filter((outerHTML) => !(outerHTML in snapshot.detailsByOuterHTML))\n      .map((outerHTML) => this.detailsByOuterHTML[outerHTML])\n      .filter(({ type }) => type == matchedType)\n      .map(({ elements: [element] }) => element)\n  }\n\n  get provisionalElements() {\n    return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {\n      const { type, tracked, elements } = this.detailsByOuterHTML[outerHTML];\n      if (type == null && !tracked) {\n        return [...result, ...elements]\n      } else if (elements.length > 1) {\n        return [...result, ...elements.slice(1)]\n      } else {\n        return result\n      }\n    }, [])\n  }\n\n  getMetaValue(name) {\n    const element = this.findMetaElementByName(name);\n    return element ? element.getAttribute(\"content\") : null\n  }\n\n  findMetaElementByName(name) {\n    return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {\n      const {\n        elements: [element]\n      } = this.detailsByOuterHTML[outerHTML];\n      return elementIsMetaElementWithName(element, name) ? element : result\n    }, undefined | undefined)\n  }\n}\n\nfunction elementType(element) {\n  if (elementIsScript(element)) {\n    return \"script\"\n  } else if (elementIsStylesheet(element)) {\n    return \"stylesheet\"\n  }\n}\n\nfunction elementIsTracked(element) {\n  return element.getAttribute(\"data-turbo-track\") == \"reload\"\n}\n\nfunction elementIsScript(element) {\n  const tagName = element.localName;\n  return tagName == \"script\"\n}\n\nfunction elementIsNoscript(element) {\n  const tagName = element.localName;\n  return tagName == \"noscript\"\n}\n\nfunction elementIsStylesheet(element) {\n  const tagName = element.localName;\n  return tagName == \"style\" || (tagName == \"link\" && element.getAttribute(\"rel\") == \"stylesheet\")\n}\n\nfunction elementIsMetaElementWithName(element, name) {\n  const tagName = element.localName;\n  return tagName == \"meta\" && element.getAttribute(\"name\") == name\n}\n\nfunction elementWithoutNonce(element) {\n  if (element.hasAttribute(\"nonce\")) {\n    element.setAttribute(\"nonce\", \"\");\n  }\n\n  return element\n}\n\nclass PageSnapshot extends Snapshot {\n  static fromHTMLString(html = \"\") {\n    return this.fromDocument(parseHTMLDocument(html))\n  }\n\n  static fromElement(element) {\n    return this.fromDocument(element.ownerDocument)\n  }\n\n  static fromDocument({ documentElement, body, head }) {\n    return new this(documentElement, body, new HeadSnapshot(head))\n  }\n\n  constructor(documentElement, body, headSnapshot) {\n    super(body);\n    this.documentElement = documentElement;\n    this.headSnapshot = headSnapshot;\n  }\n\n  clone() {\n    const clonedElement = this.element.cloneNode(true);\n\n    const selectElements = this.element.querySelectorAll(\"select\");\n    const clonedSelectElements = clonedElement.querySelectorAll(\"select\");\n\n    for (const [index, source] of selectElements.entries()) {\n      const clone = clonedSelectElements[index];\n      for (const option of clone.selectedOptions) option.selected = false;\n      for (const option of source.selectedOptions) clone.options[option.index].selected = true;\n    }\n\n    for (const clonedPasswordInput of clonedElement.querySelectorAll('input[type=\"password\"]')) {\n      clonedPasswordInput.value = \"\";\n    }\n\n    for (const clonedNoscriptElement of clonedElement.querySelectorAll(\"noscript\")) {\n      clonedNoscriptElement.remove();\n    }\n\n    return new PageSnapshot(this.documentElement, clonedElement, this.headSnapshot)\n  }\n\n  get lang() {\n    return this.documentElement.getAttribute(\"lang\")\n  }\n\n  get dir() {\n    return this.documentElement.getAttribute(\"dir\")\n  }\n\n  get headElement() {\n    return this.headSnapshot.element\n  }\n\n  get rootLocation() {\n    const root = this.getSetting(\"root\") ?? \"/\";\n    return expandURL(root)\n  }\n\n  get cacheControlValue() {\n    return this.getSetting(\"cache-control\")\n  }\n\n  get isPreviewable() {\n    return this.cacheControlValue != \"no-preview\"\n  }\n\n  get isCacheable() {\n    return this.cacheControlValue != \"no-cache\"\n  }\n\n  get isVisitable() {\n    return this.getSetting(\"visit-control\") != \"reload\"\n  }\n\n  get prefersViewTransitions() {\n    const viewTransitionEnabled = this.getSetting(\"view-transition\") === \"true\" || this.headSnapshot.getMetaValue(\"view-transition\") === \"same-origin\";\n    return viewTransitionEnabled && !window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches\n  }\n\n  get refreshMethod() {\n    return this.getSetting(\"refresh-method\")\n  }\n\n  get refreshScroll() {\n    return this.getSetting(\"refresh-scroll\")\n  }\n\n  // Private\n\n  getSetting(name) {\n    return this.headSnapshot.getMetaValue(`turbo-${name}`)\n  }\n}\n\nclass ViewTransitioner {\n  #viewTransitionStarted = false\n  #lastOperation = Promise.resolve()\n\n  renderChange(useViewTransition, render) {\n    if (useViewTransition && this.viewTransitionsAvailable && !this.#viewTransitionStarted) {\n      this.#viewTransitionStarted = true;\n      this.#lastOperation = this.#lastOperation.then(async () => {\n        await document.startViewTransition(render).finished;\n      });\n    } else {\n      this.#lastOperation = this.#lastOperation.then(render);\n    }\n\n    return this.#lastOperation\n  }\n\n  get viewTransitionsAvailable() {\n    return document.startViewTransition\n  }\n}\n\nconst defaultOptions = {\n  action: \"advance\",\n  historyChanged: false,\n  visitCachedSnapshot: () => {},\n  willRender: true,\n  updateHistory: true,\n  shouldCacheSnapshot: true,\n  acceptsStreamResponse: false,\n  refresh: {}\n};\n\nconst TimingMetric = {\n  visitStart: \"visitStart\",\n  requestStart: \"requestStart\",\n  requestEnd: \"requestEnd\",\n  visitEnd: \"visitEnd\"\n};\n\nconst VisitState = {\n  initialized: \"initialized\",\n  started: \"started\",\n  canceled: \"canceled\",\n  failed: \"failed\",\n  completed: \"completed\"\n};\n\nconst SystemStatusCode = {\n  networkFailure: 0,\n  timeoutFailure: -1,\n  contentTypeMismatch: -2\n};\n\nconst Direction = {\n  advance: \"forward\",\n  restore: \"back\",\n  replace: \"none\"\n};\n\nclass Visit {\n  identifier = uuid() // Required by turbo-ios\n  timingMetrics = {}\n\n  followedRedirect = false\n  historyChanged = false\n  scrolled = false\n  shouldCacheSnapshot = true\n  acceptsStreamResponse = false\n  snapshotCached = false\n  state = VisitState.initialized\n  viewTransitioner = new ViewTransitioner()\n\n  constructor(delegate, location, restorationIdentifier, options = {}) {\n    this.delegate = delegate;\n    this.location = location;\n    this.restorationIdentifier = restorationIdentifier || uuid();\n\n    const {\n      action,\n      historyChanged,\n      referrer,\n      snapshot,\n      snapshotHTML,\n      response,\n      visitCachedSnapshot,\n      willRender,\n      updateHistory,\n      shouldCacheSnapshot,\n      acceptsStreamResponse,\n      direction,\n      refresh\n    } = {\n      ...defaultOptions,\n      ...options\n    };\n    this.action = action;\n    this.historyChanged = historyChanged;\n    this.referrer = referrer;\n    this.snapshot = snapshot;\n    this.snapshotHTML = snapshotHTML;\n    this.response = response;\n    this.isPageRefresh = this.view.isPageRefresh(this);\n    this.visitCachedSnapshot = visitCachedSnapshot;\n    this.willRender = willRender;\n    this.updateHistory = updateHistory;\n    this.scrolled = !willRender;\n    this.shouldCacheSnapshot = shouldCacheSnapshot;\n    this.acceptsStreamResponse = acceptsStreamResponse;\n    this.direction = direction || Direction[action];\n    this.refresh = refresh;\n  }\n\n  get adapter() {\n    return this.delegate.adapter\n  }\n\n  get view() {\n    return this.delegate.view\n  }\n\n  get history() {\n    return this.delegate.history\n  }\n\n  get restorationData() {\n    return this.history.getRestorationDataForIdentifier(this.restorationIdentifier)\n  }\n\n  start() {\n    if (this.state == VisitState.initialized) {\n      this.recordTimingMetric(TimingMetric.visitStart);\n      this.state = VisitState.started;\n      this.adapter.visitStarted(this);\n      this.delegate.visitStarted(this);\n    }\n  }\n\n  cancel() {\n    if (this.state == VisitState.started) {\n      if (this.request) {\n        this.request.cancel();\n      }\n      this.cancelRender();\n      this.state = VisitState.canceled;\n    }\n  }\n\n  complete() {\n    if (this.state == VisitState.started) {\n      this.recordTimingMetric(TimingMetric.visitEnd);\n      this.adapter.visitCompleted(this);\n      this.state = VisitState.completed;\n      this.followRedirect();\n\n      if (!this.followedRedirect) {\n        this.delegate.visitCompleted(this);\n      }\n    }\n  }\n\n  fail() {\n    if (this.state == VisitState.started) {\n      this.state = VisitState.failed;\n      this.adapter.visitFailed(this);\n      this.delegate.visitCompleted(this);\n    }\n  }\n\n  changeHistory() {\n    if (!this.historyChanged && this.updateHistory) {\n      const actionForHistory = this.location.href === this.referrer?.href ? \"replace\" : this.action;\n      const method = getHistoryMethodForAction(actionForHistory);\n      this.history.update(method, this.location, this.restorationIdentifier);\n      this.historyChanged = true;\n    }\n  }\n\n  issueRequest() {\n    if (this.hasPreloadedResponse()) {\n      this.simulateRequest();\n    } else if (this.shouldIssueRequest() && !this.request) {\n      this.request = new FetchRequest(this, FetchMethod.get, this.location);\n      this.request.perform();\n    }\n  }\n\n  simulateRequest() {\n    if (this.response) {\n      this.startRequest();\n      this.recordResponse();\n      this.finishRequest();\n    }\n  }\n\n  startRequest() {\n    this.recordTimingMetric(TimingMetric.requestStart);\n    this.adapter.visitRequestStarted(this);\n  }\n\n  recordResponse(response = this.response) {\n    this.response = response;\n    if (response) {\n      const { statusCode } = response;\n      if (isSuccessful(statusCode)) {\n        this.adapter.visitRequestCompleted(this);\n      } else {\n        this.adapter.visitRequestFailedWithStatusCode(this, statusCode);\n      }\n    }\n  }\n\n  finishRequest() {\n    this.recordTimingMetric(TimingMetric.requestEnd);\n    this.adapter.visitRequestFinished(this);\n  }\n\n  loadResponse() {\n    if (this.response) {\n      const { statusCode, responseHTML } = this.response;\n      this.render(async () => {\n        if (this.shouldCacheSnapshot) this.cacheSnapshot();\n        if (this.view.renderPromise) await this.view.renderPromise;\n\n        if (isSuccessful(statusCode) && responseHTML != null) {\n          const snapshot = PageSnapshot.fromHTMLString(responseHTML);\n          await this.renderPageSnapshot(snapshot, false);\n\n          this.adapter.visitRendered(this);\n          this.complete();\n        } else {\n          await this.view.renderError(PageSnapshot.fromHTMLString(responseHTML), this);\n          this.adapter.visitRendered(this);\n          this.fail();\n        }\n      });\n    }\n  }\n\n  getCachedSnapshot() {\n    const snapshot = this.view.getCachedSnapshotForLocation(this.location) || this.getPreloadedSnapshot();\n\n    if (snapshot && (!getAnchor(this.location) || snapshot.hasAnchor(getAnchor(this.location)))) {\n      if (this.action == \"restore\" || snapshot.isPreviewable) {\n        return snapshot\n      }\n    }\n  }\n\n  getPreloadedSnapshot() {\n    if (this.snapshotHTML) {\n      return PageSnapshot.fromHTMLString(this.snapshotHTML)\n    }\n  }\n\n  hasCachedSnapshot() {\n    return this.getCachedSnapshot() != null\n  }\n\n  loadCachedSnapshot() {\n    const snapshot = this.getCachedSnapshot();\n    if (snapshot) {\n      const isPreview = this.shouldIssueRequest();\n      this.render(async () => {\n        this.cacheSnapshot();\n        if (this.isPageRefresh) {\n          this.adapter.visitRendered(this);\n        } else {\n          if (this.view.renderPromise) await this.view.renderPromise;\n\n          await this.renderPageSnapshot(snapshot, isPreview);\n\n          this.adapter.visitRendered(this);\n          if (!isPreview) {\n            this.complete();\n          }\n        }\n      });\n    }\n  }\n\n  followRedirect() {\n    if (this.redirectedToLocation && !this.followedRedirect && this.response?.redirected) {\n      this.adapter.visitProposedToLocation(this.redirectedToLocation, {\n        action: \"replace\",\n        response: this.response,\n        shouldCacheSnapshot: false,\n        willRender: false\n      });\n      this.followedRedirect = true;\n    }\n  }\n\n  // Fetch request delegate\n\n  prepareRequest(request) {\n    if (this.acceptsStreamResponse) {\n      request.acceptResponseType(StreamMessage.contentType);\n    }\n  }\n\n  requestStarted() {\n    this.startRequest();\n  }\n\n  requestPreventedHandlingResponse(_request, _response) {}\n\n  async requestSucceededWithResponse(request, response) {\n    const responseHTML = await response.responseHTML;\n    const { redirected, statusCode } = response;\n    if (responseHTML == undefined) {\n      this.recordResponse({\n        statusCode: SystemStatusCode.contentTypeMismatch,\n        redirected\n      });\n    } else {\n      this.redirectedToLocation = response.redirected ? response.location : undefined;\n      this.recordResponse({ statusCode: statusCode, responseHTML, redirected });\n    }\n  }\n\n  async requestFailedWithResponse(request, response) {\n    const responseHTML = await response.responseHTML;\n    const { redirected, statusCode } = response;\n    if (responseHTML == undefined) {\n      this.recordResponse({\n        statusCode: SystemStatusCode.contentTypeMismatch,\n        redirected\n      });\n    } else {\n      this.recordResponse({ statusCode: statusCode, responseHTML, redirected });\n    }\n  }\n\n  requestErrored(_request, _error) {\n    this.recordResponse({\n      statusCode: SystemStatusCode.networkFailure,\n      redirected: false\n    });\n  }\n\n  requestFinished() {\n    this.finishRequest();\n  }\n\n  // Scrolling\n\n  performScroll() {\n    if (!this.scrolled && !this.view.forceReloaded && !this.view.shouldPreserveScrollPosition(this)) {\n      if (this.action == \"restore\") {\n        this.scrollToRestoredPosition() || this.scrollToAnchor() || this.view.scrollToTop();\n      } else {\n        this.scrollToAnchor() || this.view.scrollToTop();\n      }\n\n      this.scrolled = true;\n    }\n  }\n\n  scrollToRestoredPosition() {\n    const { scrollPosition } = this.restorationData;\n    if (scrollPosition) {\n      this.view.scrollToPosition(scrollPosition);\n      return true\n    }\n  }\n\n  scrollToAnchor() {\n    const anchor = getAnchor(this.location);\n    if (anchor != null) {\n      this.view.scrollToAnchor(anchor);\n      return true\n    }\n  }\n\n  // Instrumentation\n\n  recordTimingMetric(metric) {\n    this.timingMetrics[metric] = new Date().getTime();\n  }\n\n  getTimingMetrics() {\n    return { ...this.timingMetrics }\n  }\n\n  // Private\n\n  hasPreloadedResponse() {\n    return typeof this.response == \"object\"\n  }\n\n  shouldIssueRequest() {\n    if (this.action == \"restore\") {\n      return !this.hasCachedSnapshot()\n    } else {\n      return this.willRender\n    }\n  }\n\n  cacheSnapshot() {\n    if (!this.snapshotCached) {\n      this.view.cacheSnapshot(this.snapshot).then((snapshot) => snapshot && this.visitCachedSnapshot(snapshot));\n      this.snapshotCached = true;\n    }\n  }\n\n  async render(callback) {\n    this.cancelRender();\n    await new Promise((resolve) => {\n      this.frame =\n        document.visibilityState === \"hidden\" ? setTimeout(() => resolve(), 0) : requestAnimationFrame(() => resolve());\n    });\n    await callback();\n    delete this.frame;\n  }\n\n  async renderPageSnapshot(snapshot, isPreview) {\n    await this.viewTransitioner.renderChange(this.view.shouldTransitionTo(snapshot), async () => {\n      await this.view.renderPage(snapshot, isPreview, this.willRender, this);\n      this.performScroll();\n    });\n  }\n\n  cancelRender() {\n    if (this.frame) {\n      cancelAnimationFrame(this.frame);\n      delete this.frame;\n    }\n  }\n}\n\nfunction isSuccessful(statusCode) {\n  return statusCode >= 200 && statusCode < 300\n}\n\nclass BrowserAdapter {\n  progressBar = new ProgressBar()\n\n  constructor(session) {\n    this.session = session;\n  }\n\n  visitProposedToLocation(location, options) {\n    if (locationIsVisitable(location, this.navigator.rootLocation)) {\n      this.navigator.startVisit(location, options?.restorationIdentifier || uuid(), options);\n    } else {\n      window.location.href = location.toString();\n    }\n  }\n\n  visitStarted(visit) {\n    this.location = visit.location;\n    this.redirectedToLocation = null;\n\n    visit.loadCachedSnapshot();\n    visit.issueRequest();\n  }\n\n  visitRequestStarted(visit) {\n    this.progressBar.setValue(0);\n    if (visit.hasCachedSnapshot() || visit.action != \"restore\") {\n      this.showVisitProgressBarAfterDelay();\n    } else {\n      this.showProgressBar();\n    }\n  }\n\n  visitRequestCompleted(visit) {\n    visit.loadResponse();\n\n    if (visit.response.redirected) {\n      this.redirectedToLocation = visit.redirectedToLocation;\n    }\n  }\n\n  visitRequestFailedWithStatusCode(visit, statusCode) {\n    switch (statusCode) {\n      case SystemStatusCode.networkFailure:\n      case SystemStatusCode.timeoutFailure:\n      case SystemStatusCode.contentTypeMismatch:\n        return this.reload({\n          reason: \"request_failed\",\n          context: {\n            statusCode\n          }\n        })\n      default:\n        return visit.loadResponse()\n    }\n  }\n\n  visitRequestFinished(_visit) {}\n\n  visitCompleted(_visit) {\n    this.progressBar.setValue(1);\n    this.hideVisitProgressBar();\n  }\n\n  pageInvalidated(reason) {\n    this.reload(reason);\n  }\n\n  visitFailed(_visit) {\n    this.progressBar.setValue(1);\n    this.hideVisitProgressBar();\n  }\n\n  visitRendered(_visit) {}\n\n  // Link prefetching\n\n  linkPrefetchingIsEnabledForLocation(location) {\n    return true\n  }\n\n  // Form Submission Delegate\n\n  formSubmissionStarted(_formSubmission) {\n    this.progressBar.setValue(0);\n    this.showFormProgressBarAfterDelay();\n  }\n\n  formSubmissionFinished(_formSubmission) {\n    this.progressBar.setValue(1);\n    this.hideFormProgressBar();\n  }\n\n  // Private\n\n  showVisitProgressBarAfterDelay() {\n    this.visitProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n  }\n\n  hideVisitProgressBar() {\n    this.progressBar.hide();\n    if (this.visitProgressBarTimeout != null) {\n      window.clearTimeout(this.visitProgressBarTimeout);\n      delete this.visitProgressBarTimeout;\n    }\n  }\n\n  showFormProgressBarAfterDelay() {\n    if (this.formProgressBarTimeout == null) {\n      this.formProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n    }\n  }\n\n  hideFormProgressBar() {\n    this.progressBar.hide();\n    if (this.formProgressBarTimeout != null) {\n      window.clearTimeout(this.formProgressBarTimeout);\n      delete this.formProgressBarTimeout;\n    }\n  }\n\n  showProgressBar = () => {\n    this.progressBar.show();\n  }\n\n  reload(reason) {\n    dispatch(\"turbo:reload\", { detail: reason });\n\n    window.location.href = (this.redirectedToLocation || this.location)?.toString() || window.location.href;\n  }\n\n  get navigator() {\n    return this.session.navigator\n  }\n}\n\nclass CacheObserver {\n  selector = \"[data-turbo-temporary]\"\n\n  started = false\n\n  start() {\n    if (!this.started) {\n      this.started = true;\n      addEventListener(\"turbo:before-cache\", this.removeTemporaryElements, false);\n    }\n  }\n\n  stop() {\n    if (this.started) {\n      this.started = false;\n      removeEventListener(\"turbo:before-cache\", this.removeTemporaryElements, false);\n    }\n  }\n\n  removeTemporaryElements = (_event) => {\n    for (const element of this.temporaryElements) {\n      element.remove();\n    }\n  }\n\n  get temporaryElements() {\n    return [...document.querySelectorAll(this.selector)]\n  }\n}\n\nclass FrameRedirector {\n  constructor(session, element) {\n    this.session = session;\n    this.element = element;\n    this.linkInterceptor = new LinkInterceptor(this, element);\n    this.formSubmitObserver = new FormSubmitObserver(this, element);\n  }\n\n  start() {\n    this.linkInterceptor.start();\n    this.formSubmitObserver.start();\n  }\n\n  stop() {\n    this.linkInterceptor.stop();\n    this.formSubmitObserver.stop();\n  }\n\n  // Link interceptor delegate\n\n  shouldInterceptLinkClick(element, _location, _event) {\n    return this.#shouldRedirect(element)\n  }\n\n  linkClickIntercepted(element, url, event) {\n    const frame = this.#findFrameElement(element);\n    if (frame) {\n      frame.delegate.linkClickIntercepted(element, url, event);\n    }\n  }\n\n  // Form submit observer delegate\n\n  willSubmitForm(element, submitter) {\n    return (\n      element.closest(\"turbo-frame\") == null &&\n      this.#shouldSubmit(element, submitter) &&\n      this.#shouldRedirect(element, submitter)\n    )\n  }\n\n  formSubmitted(element, submitter) {\n    const frame = this.#findFrameElement(element, submitter);\n    if (frame) {\n      frame.delegate.formSubmitted(element, submitter);\n    }\n  }\n\n  #shouldSubmit(form, submitter) {\n    const action = getAction$1(form, submitter);\n    const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n    const rootLocation = expandURL(meta?.content ?? \"/\");\n\n    return this.#shouldRedirect(form, submitter) && locationIsVisitable(action, rootLocation)\n  }\n\n  #shouldRedirect(element, submitter) {\n    const isNavigatable =\n      element instanceof HTMLFormElement\n        ? this.session.submissionIsNavigatable(element, submitter)\n        : this.session.elementIsNavigatable(element);\n\n    if (isNavigatable) {\n      const frame = this.#findFrameElement(element, submitter);\n      return frame ? frame != element.closest(\"turbo-frame\") : false\n    } else {\n      return false\n    }\n  }\n\n  #findFrameElement(element, submitter) {\n    const id = submitter?.getAttribute(\"data-turbo-frame\") || element.getAttribute(\"data-turbo-frame\");\n    if (id && id != \"_top\") {\n      const frame = this.element.querySelector(`#${id}:not([disabled])`);\n      if (frame instanceof FrameElement) {\n        return frame\n      }\n    }\n  }\n}\n\nclass History {\n  location\n  restorationIdentifier = uuid()\n  restorationData = {}\n  started = false\n  currentIndex = 0\n\n  constructor(delegate) {\n    this.delegate = delegate;\n  }\n\n  start() {\n    if (!this.started) {\n      addEventListener(\"popstate\", this.onPopState, false);\n      this.currentIndex = history.state?.turbo?.restorationIndex || 0;\n      this.started = true;\n      this.replace(new URL(window.location.href));\n    }\n  }\n\n  stop() {\n    if (this.started) {\n      removeEventListener(\"popstate\", this.onPopState, false);\n      this.started = false;\n    }\n  }\n\n  push(location, restorationIdentifier) {\n    this.update(history.pushState, location, restorationIdentifier);\n  }\n\n  replace(location, restorationIdentifier) {\n    this.update(history.replaceState, location, restorationIdentifier);\n  }\n\n  update(method, location, restorationIdentifier = uuid()) {\n    if (method === history.pushState) ++this.currentIndex;\n\n    const state = { turbo: { restorationIdentifier, restorationIndex: this.currentIndex } };\n    method.call(history, state, \"\", location.href);\n    this.location = location;\n    this.restorationIdentifier = restorationIdentifier;\n  }\n\n  // Restoration data\n\n  getRestorationDataForIdentifier(restorationIdentifier) {\n    return this.restorationData[restorationIdentifier] || {}\n  }\n\n  updateRestorationData(additionalData) {\n    const { restorationIdentifier } = this;\n    const restorationData = this.restorationData[restorationIdentifier];\n    this.restorationData[restorationIdentifier] = {\n      ...restorationData,\n      ...additionalData\n    };\n  }\n\n  // Scroll restoration\n\n  assumeControlOfScrollRestoration() {\n    if (!this.previousScrollRestoration) {\n      this.previousScrollRestoration = history.scrollRestoration ?? \"auto\";\n      history.scrollRestoration = \"manual\";\n    }\n  }\n\n  relinquishControlOfScrollRestoration() {\n    if (this.previousScrollRestoration) {\n      history.scrollRestoration = this.previousScrollRestoration;\n      delete this.previousScrollRestoration;\n    }\n  }\n\n  // Event handlers\n\n  onPopState = (event) => {\n    const { turbo } = event.state || {};\n    this.location = new URL(window.location.href);\n\n    if (turbo) {\n      const { restorationIdentifier, restorationIndex } = turbo;\n      this.restorationIdentifier = restorationIdentifier;\n      const direction = restorationIndex > this.currentIndex ? \"forward\" : \"back\";\n      this.delegate.historyPoppedToLocationWithRestorationIdentifierAndDirection(this.location, restorationIdentifier, direction);\n      this.currentIndex = restorationIndex;\n    } else {\n      this.currentIndex++;\n      this.delegate.historyPoppedWithEmptyState(this.location);\n    }\n  }\n}\n\nclass LinkPrefetchObserver {\n  started = false\n  #prefetchedLink = null\n\n  constructor(delegate, eventTarget) {\n    this.delegate = delegate;\n    this.eventTarget = eventTarget;\n  }\n\n  start() {\n    if (this.started) return\n\n    if (this.eventTarget.readyState === \"loading\") {\n      this.eventTarget.addEventListener(\"DOMContentLoaded\", this.#enable, { once: true });\n    } else {\n      this.#enable();\n    }\n  }\n\n  stop() {\n    if (!this.started) return\n\n    this.eventTarget.removeEventListener(\"mouseenter\", this.#tryToPrefetchRequest, {\n      capture: true,\n      passive: true\n    });\n    this.eventTarget.removeEventListener(\"mouseleave\", this.#cancelRequestIfObsolete, {\n      capture: true,\n      passive: true\n    });\n\n    this.eventTarget.removeEventListener(\"turbo:before-fetch-request\", this.#tryToUsePrefetchedRequest, true);\n    this.started = false;\n  }\n\n  #enable = () => {\n    this.eventTarget.addEventListener(\"mouseenter\", this.#tryToPrefetchRequest, {\n      capture: true,\n      passive: true\n    });\n    this.eventTarget.addEventListener(\"mouseleave\", this.#cancelRequestIfObsolete, {\n      capture: true,\n      passive: true\n    });\n\n    this.eventTarget.addEventListener(\"turbo:before-fetch-request\", this.#tryToUsePrefetchedRequest, true);\n    this.started = true;\n  }\n\n  #tryToPrefetchRequest = (event) => {\n    if (getMetaContent(\"turbo-prefetch\") === \"false\") return\n\n    const target = event.target;\n    const isLink = target.matches && target.matches(\"a[href]:not([target^=_]):not([download])\");\n\n    if (isLink && this.#isPrefetchable(target)) {\n      const link = target;\n      const location = getLocationForLink(link);\n\n      if (this.delegate.canPrefetchRequestToLocation(link, location)) {\n        this.#prefetchedLink = link;\n\n        const fetchRequest = new FetchRequest(\n          this,\n          FetchMethod.get,\n          location,\n          new URLSearchParams(),\n          target\n        );\n\n        fetchRequest.fetchOptions.priority = \"low\";\n\n        prefetchCache.putLater(location, fetchRequest, this.#cacheTtl);\n      }\n    }\n  }\n\n  #cancelRequestIfObsolete = (event) => {\n    if (event.target === this.#prefetchedLink) this.#cancelPrefetchRequest();\n  }\n\n  #cancelPrefetchRequest = () => {\n    prefetchCache.clear();\n    this.#prefetchedLink = null;\n  }\n\n  #tryToUsePrefetchedRequest = (event) => {\n    if (event.target.tagName !== \"FORM\" && event.detail.fetchOptions.method === \"GET\") {\n      const cached = prefetchCache.get(event.detail.url);\n\n      if (cached) {\n        // User clicked link, use cache response\n        event.detail.fetchRequest = cached;\n      }\n\n      prefetchCache.clear();\n    }\n  }\n\n  prepareRequest(request) {\n    const link = request.target;\n\n    request.headers[\"X-Sec-Purpose\"] = \"prefetch\";\n\n    const turboFrame = link.closest(\"turbo-frame\");\n    const turboFrameTarget = link.getAttribute(\"data-turbo-frame\") || turboFrame?.getAttribute(\"target\") || turboFrame?.id;\n\n    if (turboFrameTarget && turboFrameTarget !== \"_top\") {\n      request.headers[\"Turbo-Frame\"] = turboFrameTarget;\n    }\n  }\n\n  // Fetch request interface\n\n  requestSucceededWithResponse() {}\n\n  requestStarted(fetchRequest) {}\n\n  requestErrored(fetchRequest) {}\n\n  requestFinished(fetchRequest) {}\n\n  requestPreventedHandlingResponse(fetchRequest, fetchResponse) {}\n\n  requestFailedWithResponse(fetchRequest, fetchResponse) {}\n\n  get #cacheTtl() {\n    return Number(getMetaContent(\"turbo-prefetch-cache-time\")) || cacheTtl\n  }\n\n  #isPrefetchable(link) {\n    const href = link.getAttribute(\"href\");\n\n    if (!href) return false\n\n    if (unfetchableLink(link)) return false\n    if (linkToTheSamePage(link)) return false\n    if (linkOptsOut(link)) return false\n    if (nonSafeLink(link)) return false\n    if (eventPrevented(link)) return false\n\n    return true\n  }\n}\n\nconst unfetchableLink = (link) => {\n  return link.origin !== document.location.origin || ![\"http:\", \"https:\"].includes(link.protocol) || link.hasAttribute(\"target\")\n};\n\nconst linkToTheSamePage = (link) => {\n  return (link.pathname + link.search === document.location.pathname + document.location.search) || link.href.startsWith(\"#\")\n};\n\nconst linkOptsOut = (link) => {\n  if (link.getAttribute(\"data-turbo-prefetch\") === \"false\") return true\n  if (link.getAttribute(\"data-turbo\") === \"false\") return true\n\n  const turboPrefetchParent = findClosestRecursively(link, \"[data-turbo-prefetch]\");\n  if (turboPrefetchParent && turboPrefetchParent.getAttribute(\"data-turbo-prefetch\") === \"false\") return true\n\n  return false\n};\n\nconst nonSafeLink = (link) => {\n  const turboMethod = link.getAttribute(\"data-turbo-method\");\n  if (turboMethod && turboMethod.toLowerCase() !== \"get\") return true\n\n  if (isUJS(link)) return true\n  if (link.hasAttribute(\"data-turbo-confirm\")) return true\n  if (link.hasAttribute(\"data-turbo-stream\")) return true\n\n  return false\n};\n\nconst isUJS = (link) => {\n  return link.hasAttribute(\"data-remote\") || link.hasAttribute(\"data-behavior\") || link.hasAttribute(\"data-confirm\") || link.hasAttribute(\"data-method\")\n};\n\nconst eventPrevented = (link) => {\n  const event = dispatch(\"turbo:before-prefetch\", { target: link, cancelable: true });\n  return event.defaultPrevented\n};\n\nclass Navigator {\n  constructor(delegate) {\n    this.delegate = delegate;\n  }\n\n  proposeVisit(location, options = {}) {\n    if (this.delegate.allowsVisitingLocationWithAction(location, options.action)) {\n      this.delegate.visitProposedToLocation(location, options);\n    }\n  }\n\n  startVisit(locatable, restorationIdentifier, options = {}) {\n    this.stop();\n    this.currentVisit = new Visit(this, expandURL(locatable), restorationIdentifier, {\n      referrer: this.location,\n      ...options\n    });\n    this.currentVisit.start();\n  }\n\n  submitForm(form, submitter) {\n    this.stop();\n    this.formSubmission = new FormSubmission(this, form, submitter, true);\n\n    this.formSubmission.start();\n  }\n\n  stop() {\n    if (this.formSubmission) {\n      this.formSubmission.stop();\n      delete this.formSubmission;\n    }\n\n    if (this.currentVisit) {\n      this.currentVisit.cancel();\n      delete this.currentVisit;\n    }\n  }\n\n  get adapter() {\n    return this.delegate.adapter\n  }\n\n  get view() {\n    return this.delegate.view\n  }\n\n  get rootLocation() {\n    return this.view.snapshot.rootLocation\n  }\n\n  get history() {\n    return this.delegate.history\n  }\n\n  // Form submission delegate\n\n  formSubmissionStarted(formSubmission) {\n    // Not all adapters implement formSubmissionStarted\n    if (typeof this.adapter.formSubmissionStarted === \"function\") {\n      this.adapter.formSubmissionStarted(formSubmission);\n    }\n  }\n\n  async formSubmissionSucceededWithResponse(formSubmission, fetchResponse) {\n    if (formSubmission == this.formSubmission) {\n      const responseHTML = await fetchResponse.responseHTML;\n      if (responseHTML) {\n        const shouldCacheSnapshot = formSubmission.isSafe;\n        if (!shouldCacheSnapshot) {\n          this.view.clearSnapshotCache();\n        }\n\n        const { statusCode, redirected } = fetchResponse;\n        const action = this.#getActionForFormSubmission(formSubmission, fetchResponse);\n        const visitOptions = {\n          action,\n          shouldCacheSnapshot,\n          response: { statusCode, responseHTML, redirected }\n        };\n        this.proposeVisit(fetchResponse.location, visitOptions);\n      }\n    }\n  }\n\n  async formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n    const responseHTML = await fetchResponse.responseHTML;\n\n    if (responseHTML) {\n      const snapshot = PageSnapshot.fromHTMLString(responseHTML);\n      if (fetchResponse.serverError) {\n        await this.view.renderError(snapshot, this.currentVisit);\n      } else {\n        await this.view.renderPage(snapshot, false, true, this.currentVisit);\n      }\n      if (snapshot.refreshScroll !== \"preserve\") {\n        this.view.scrollToTop();\n      }\n      this.view.clearSnapshotCache();\n    }\n  }\n\n  formSubmissionErrored(formSubmission, error) {\n    console.error(error);\n  }\n\n  formSubmissionFinished(formSubmission) {\n    // Not all adapters implement formSubmissionFinished\n    if (typeof this.adapter.formSubmissionFinished === \"function\") {\n      this.adapter.formSubmissionFinished(formSubmission);\n    }\n  }\n\n  // Link prefetching\n\n  linkPrefetchingIsEnabledForLocation(location) {\n    // Not all adapters implement linkPrefetchingIsEnabledForLocation\n    if (typeof this.adapter.linkPrefetchingIsEnabledForLocation === \"function\") {\n      return this.adapter.linkPrefetchingIsEnabledForLocation(location)\n    }\n\n    return true\n  }\n\n  // Visit delegate\n\n  visitStarted(visit) {\n    this.delegate.visitStarted(visit);\n  }\n\n  visitCompleted(visit) {\n    this.delegate.visitCompleted(visit);\n    delete this.currentVisit;\n  }\n\n  // Same-page links are no longer handled with a Visit.\n  // This method is still needed for Turbo Native adapters.\n  locationWithActionIsSamePage(location, action) {\n    return false\n  }\n\n  // Visits\n\n  get location() {\n    return this.history.location\n  }\n\n  get restorationIdentifier() {\n    return this.history.restorationIdentifier\n  }\n\n  #getActionForFormSubmission(formSubmission, fetchResponse) {\n    const { submitter, formElement } = formSubmission;\n    return getVisitAction(submitter, formElement) || this.#getDefaultAction(fetchResponse)\n  }\n\n  #getDefaultAction(fetchResponse) {\n    const sameLocationRedirect = fetchResponse.redirected && fetchResponse.location.href === this.location?.href;\n    return sameLocationRedirect ? \"replace\" : \"advance\"\n  }\n}\n\nconst PageStage = {\n  initial: 0,\n  loading: 1,\n  interactive: 2,\n  complete: 3\n};\n\nclass PageObserver {\n  stage = PageStage.initial\n  started = false\n\n  constructor(delegate) {\n    this.delegate = delegate;\n  }\n\n  start() {\n    if (!this.started) {\n      if (this.stage == PageStage.initial) {\n        this.stage = PageStage.loading;\n      }\n      document.addEventListener(\"readystatechange\", this.interpretReadyState, false);\n      addEventListener(\"pagehide\", this.pageWillUnload, false);\n      this.started = true;\n    }\n  }\n\n  stop() {\n    if (this.started) {\n      document.removeEventListener(\"readystatechange\", this.interpretReadyState, false);\n      removeEventListener(\"pagehide\", this.pageWillUnload, false);\n      this.started = false;\n    }\n  }\n\n  interpretReadyState = () => {\n    const { readyState } = this;\n    if (readyState == \"interactive\") {\n      this.pageIsInteractive();\n    } else if (readyState == \"complete\") {\n      this.pageIsComplete();\n    }\n  }\n\n  pageIsInteractive() {\n    if (this.stage == PageStage.loading) {\n      this.stage = PageStage.interactive;\n      this.delegate.pageBecameInteractive();\n    }\n  }\n\n  pageIsComplete() {\n    this.pageIsInteractive();\n    if (this.stage == PageStage.interactive) {\n      this.stage = PageStage.complete;\n      this.delegate.pageLoaded();\n    }\n  }\n\n  pageWillUnload = () => {\n    this.delegate.pageWillUnload();\n  }\n\n  get readyState() {\n    return document.readyState\n  }\n}\n\nclass ScrollObserver {\n  started = false\n\n  constructor(delegate) {\n    this.delegate = delegate;\n  }\n\n  start() {\n    if (!this.started) {\n      addEventListener(\"scroll\", this.onScroll, false);\n      this.onScroll();\n      this.started = true;\n    }\n  }\n\n  stop() {\n    if (this.started) {\n      removeEventListener(\"scroll\", this.onScroll, false);\n      this.started = false;\n    }\n  }\n\n  onScroll = () => {\n    this.updatePosition({ x: window.pageXOffset, y: window.pageYOffset });\n  }\n\n  // Private\n\n  updatePosition(position) {\n    this.delegate.scrollPositionChanged(position);\n  }\n}\n\nclass StreamMessageRenderer {\n  render({ fragment }) {\n    Bardo.preservingPermanentElements(this, getPermanentElementMapForFragment(fragment), () => {\n      withAutofocusFromFragment(fragment, () => {\n        withPreservedFocus(() => {\n          document.documentElement.appendChild(fragment);\n        });\n      });\n    });\n  }\n\n  // Bardo delegate\n\n  enteringBardo(currentPermanentElement, newPermanentElement) {\n    newPermanentElement.replaceWith(currentPermanentElement.cloneNode(true));\n  }\n\n  leavingBardo() {}\n}\n\nfunction getPermanentElementMapForFragment(fragment) {\n  const permanentElementsInDocument = queryPermanentElementsAll(document.documentElement);\n  const permanentElementMap = {};\n  for (const permanentElementInDocument of permanentElementsInDocument) {\n    const { id } = permanentElementInDocument;\n\n    for (const streamElement of fragment.querySelectorAll(\"turbo-stream\")) {\n      const elementInStream = getPermanentElementById(streamElement.templateElement.content, id);\n\n      if (elementInStream) {\n        permanentElementMap[id] = [permanentElementInDocument, elementInStream];\n      }\n    }\n  }\n\n  return permanentElementMap\n}\n\nasync function withAutofocusFromFragment(fragment, callback) {\n  const generatedID = `turbo-stream-autofocus-${uuid()}`;\n  const turboStreams = fragment.querySelectorAll(\"turbo-stream\");\n  const elementWithAutofocus = firstAutofocusableElementInStreams(turboStreams);\n  let willAutofocusId = null;\n\n  if (elementWithAutofocus) {\n    if (elementWithAutofocus.id) {\n      willAutofocusId = elementWithAutofocus.id;\n    } else {\n      willAutofocusId = generatedID;\n    }\n\n    elementWithAutofocus.id = willAutofocusId;\n  }\n\n  callback();\n  await nextRepaint();\n\n  const hasNoActiveElement = document.activeElement == null || document.activeElement == document.body;\n\n  if (hasNoActiveElement && willAutofocusId) {\n    const elementToAutofocus = document.getElementById(willAutofocusId);\n\n    if (elementIsFocusable(elementToAutofocus)) {\n      elementToAutofocus.focus();\n    }\n    if (elementToAutofocus && elementToAutofocus.id == generatedID) {\n      elementToAutofocus.removeAttribute(\"id\");\n    }\n  }\n}\n\nasync function withPreservedFocus(callback) {\n  const [activeElementBeforeRender, activeElementAfterRender] = await around(callback, () => document.activeElement);\n\n  const restoreFocusTo = activeElementBeforeRender && activeElementBeforeRender.id;\n\n  if (restoreFocusTo) {\n    const elementToFocus = document.getElementById(restoreFocusTo);\n\n    if (elementIsFocusable(elementToFocus) && elementToFocus != activeElementAfterRender) {\n      elementToFocus.focus();\n    }\n  }\n}\n\nfunction firstAutofocusableElementInStreams(nodeListOfStreamElements) {\n  for (const streamElement of nodeListOfStreamElements) {\n    const elementWithAutofocus = queryAutofocusableElement(streamElement.templateElement.content);\n\n    if (elementWithAutofocus) return elementWithAutofocus\n  }\n\n  return null\n}\n\nclass StreamObserver {\n  sources = new Set()\n  #started = false\n\n  constructor(delegate) {\n    this.delegate = delegate;\n  }\n\n  start() {\n    if (!this.#started) {\n      this.#started = true;\n      addEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n    }\n  }\n\n  stop() {\n    if (this.#started) {\n      this.#started = false;\n      removeEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n    }\n  }\n\n  connectStreamSource(source) {\n    if (!this.streamSourceIsConnected(source)) {\n      this.sources.add(source);\n      source.addEventListener(\"message\", this.receiveMessageEvent, false);\n    }\n  }\n\n  disconnectStreamSource(source) {\n    if (this.streamSourceIsConnected(source)) {\n      this.sources.delete(source);\n      source.removeEventListener(\"message\", this.receiveMessageEvent, false);\n    }\n  }\n\n  streamSourceIsConnected(source) {\n    return this.sources.has(source)\n  }\n\n  inspectFetchResponse = (event) => {\n    const response = fetchResponseFromEvent(event);\n    if (response && fetchResponseIsStream(response)) {\n      event.preventDefault();\n      this.receiveMessageResponse(response);\n    }\n  }\n\n  receiveMessageEvent = (event) => {\n    if (this.#started && typeof event.data == \"string\") {\n      this.receiveMessageHTML(event.data);\n    }\n  }\n\n  async receiveMessageResponse(response) {\n    const html = await response.responseHTML;\n    if (html) {\n      this.receiveMessageHTML(html);\n    }\n  }\n\n  receiveMessageHTML(html) {\n    this.delegate.receivedMessageFromStream(StreamMessage.wrap(html));\n  }\n}\n\nfunction fetchResponseFromEvent(event) {\n  const fetchResponse = event.detail?.fetchResponse;\n  if (fetchResponse instanceof FetchResponse) {\n    return fetchResponse\n  }\n}\n\nfunction fetchResponseIsStream(response) {\n  const contentType = response.contentType ?? \"\";\n  return contentType.startsWith(StreamMessage.contentType)\n}\n\nclass ErrorRenderer extends Renderer {\n  static renderElement(currentElement, newElement) {\n    const { documentElement, body } = document;\n\n    documentElement.replaceChild(newElement, body);\n  }\n\n  async render() {\n    this.replaceHeadAndBody();\n    this.activateScriptElements();\n  }\n\n  replaceHeadAndBody() {\n    const { documentElement, head } = document;\n    documentElement.replaceChild(this.newHead, head);\n    this.renderElement(this.currentElement, this.newElement);\n  }\n\n  activateScriptElements() {\n    for (const replaceableElement of this.scriptElements) {\n      const parentNode = replaceableElement.parentNode;\n      if (parentNode) {\n        const element = activateScriptElement(replaceableElement);\n        parentNode.replaceChild(element, replaceableElement);\n      }\n    }\n  }\n\n  get newHead() {\n    return this.newSnapshot.headSnapshot.element\n  }\n\n  get scriptElements() {\n    return document.documentElement.querySelectorAll(\"script\")\n  }\n}\n\nclass PageRenderer extends Renderer {\n  static renderElement(currentElement, newElement) {\n    if (document.body && newElement instanceof HTMLBodyElement) {\n      document.body.replaceWith(newElement);\n    } else {\n      document.documentElement.appendChild(newElement);\n    }\n  }\n\n  get shouldRender() {\n    return this.newSnapshot.isVisitable && this.trackedElementsAreIdentical\n  }\n\n  get reloadReason() {\n    if (!this.newSnapshot.isVisitable) {\n      return {\n        reason: \"turbo_visit_control_is_reload\"\n      }\n    }\n\n    if (!this.trackedElementsAreIdentical) {\n      return {\n        reason: \"tracked_element_mismatch\"\n      }\n    }\n  }\n\n  async prepareToRender() {\n    this.#setLanguage();\n    await this.mergeHead();\n  }\n\n  async render() {\n    if (this.willRender) {\n      await this.replaceBody();\n    }\n  }\n\n  finishRendering() {\n    super.finishRendering();\n    if (!this.isPreview) {\n      this.focusFirstAutofocusableElement();\n    }\n  }\n\n  get currentHeadSnapshot() {\n    return this.currentSnapshot.headSnapshot\n  }\n\n  get newHeadSnapshot() {\n    return this.newSnapshot.headSnapshot\n  }\n\n  get newElement() {\n    return this.newSnapshot.element\n  }\n\n  #setLanguage() {\n    const { documentElement } = this.currentSnapshot;\n    const { dir, lang } = this.newSnapshot;\n\n    if (lang) {\n      documentElement.setAttribute(\"lang\", lang);\n    } else {\n      documentElement.removeAttribute(\"lang\");\n    }\n    if (dir) {\n      documentElement.setAttribute(\"dir\", dir);\n    } else {\n      documentElement.removeAttribute(\"dir\");\n    }\n  }\n\n  async mergeHead() {\n    const mergedHeadElements = this.mergeProvisionalElements();\n    const newStylesheetElements = this.copyNewHeadStylesheetElements();\n    this.copyNewHeadScriptElements();\n\n    await mergedHeadElements;\n    await newStylesheetElements;\n\n    if (this.willRender) {\n      this.removeUnusedDynamicStylesheetElements();\n    }\n  }\n\n  async replaceBody() {\n    await this.preservingPermanentElements(async () => {\n      this.activateNewBody();\n      await this.assignNewBody();\n    });\n  }\n\n  get trackedElementsAreIdentical() {\n    return this.currentHeadSnapshot.trackedElementSignature == this.newHeadSnapshot.trackedElementSignature\n  }\n\n  async copyNewHeadStylesheetElements() {\n    const loadingElements = [];\n\n    for (const element of this.newHeadStylesheetElements) {\n      loadingElements.push(waitForLoad(element));\n\n      document.head.appendChild(element);\n    }\n\n    await Promise.all(loadingElements);\n  }\n\n  copyNewHeadScriptElements() {\n    for (const element of this.newHeadScriptElements) {\n      document.head.appendChild(activateScriptElement(element));\n    }\n  }\n\n  removeUnusedDynamicStylesheetElements() {\n    for (const element of this.unusedDynamicStylesheetElements) {\n      document.head.removeChild(element);\n    }\n  }\n\n  async mergeProvisionalElements() {\n    const newHeadElements = [...this.newHeadProvisionalElements];\n\n    for (const element of this.currentHeadProvisionalElements) {\n      if (!this.isCurrentElementInElementList(element, newHeadElements)) {\n        document.head.removeChild(element);\n      }\n    }\n\n    for (const element of newHeadElements) {\n      document.head.appendChild(element);\n    }\n  }\n\n  isCurrentElementInElementList(element, elementList) {\n    for (const [index, newElement] of elementList.entries()) {\n      // if title element...\n      if (element.tagName == \"TITLE\") {\n        if (newElement.tagName != \"TITLE\") {\n          continue\n        }\n        if (element.innerHTML == newElement.innerHTML) {\n          elementList.splice(index, 1);\n          return true\n        }\n      }\n\n      // if any other element...\n      if (newElement.isEqualNode(element)) {\n        elementList.splice(index, 1);\n        return true\n      }\n    }\n\n    return false\n  }\n\n  removeCurrentHeadProvisionalElements() {\n    for (const element of this.currentHeadProvisionalElements) {\n      document.head.removeChild(element);\n    }\n  }\n\n  copyNewHeadProvisionalElements() {\n    for (const element of this.newHeadProvisionalElements) {\n      document.head.appendChild(element);\n    }\n  }\n\n  activateNewBody() {\n    document.adoptNode(this.newElement);\n    this.removeNoscriptElements();\n    this.activateNewBodyScriptElements();\n  }\n\n  removeNoscriptElements() {\n    for (const noscriptElement of this.newElement.querySelectorAll(\"noscript\")) {\n      noscriptElement.remove();\n    }\n  }\n\n  activateNewBodyScriptElements() {\n    for (const inertScriptElement of this.newBodyScriptElements) {\n      const activatedScriptElement = activateScriptElement(inertScriptElement);\n      inertScriptElement.replaceWith(activatedScriptElement);\n    }\n  }\n\n  async assignNewBody() {\n    await this.renderElement(this.currentElement, this.newElement);\n  }\n\n  get unusedDynamicStylesheetElements() {\n    return this.oldHeadStylesheetElements.filter((element) => {\n      return element.getAttribute(\"data-turbo-track\") === \"dynamic\"\n    })\n  }\n\n  get oldHeadStylesheetElements() {\n    return this.currentHeadSnapshot.getStylesheetElementsNotInSnapshot(this.newHeadSnapshot)\n  }\n\n  get newHeadStylesheetElements() {\n    return this.newHeadSnapshot.getStylesheetElementsNotInSnapshot(this.currentHeadSnapshot)\n  }\n\n  get newHeadScriptElements() {\n    return this.newHeadSnapshot.getScriptElementsNotInSnapshot(this.currentHeadSnapshot)\n  }\n\n  get currentHeadProvisionalElements() {\n    return this.currentHeadSnapshot.provisionalElements\n  }\n\n  get newHeadProvisionalElements() {\n    return this.newHeadSnapshot.provisionalElements\n  }\n\n  get newBodyScriptElements() {\n    return this.newElement.querySelectorAll(\"script\")\n  }\n}\n\nclass MorphingPageRenderer extends PageRenderer {\n  static renderElement(currentElement, newElement) {\n    morphElements(currentElement, newElement, {\n      callbacks: {\n        beforeNodeMorphed: (node, newNode) => {\n          if (\n            shouldRefreshFrameWithMorphing(node, newNode) &&\n              !closestFrameReloadableWithMorphing(node)\n          ) {\n            node.reload();\n            return false\n          }\n          return true\n        }\n      }\n    });\n\n    dispatch(\"turbo:morph\", { detail: { currentElement, newElement } });\n  }\n\n  async preservingPermanentElements(callback) {\n    return await callback()\n  }\n\n  get renderMethod() {\n    return \"morph\"\n  }\n\n  get shouldAutofocus() {\n    return false\n  }\n}\n\nclass SnapshotCache extends LRUCache {\n  constructor(size) {\n    super(size, toCacheKey);\n  }\n\n  get snapshots() {\n    return this.entries\n  }\n}\n\nclass PageView extends View {\n  snapshotCache = new SnapshotCache(10)\n  lastRenderedLocation = new URL(location.href)\n  forceReloaded = false\n\n  shouldTransitionTo(newSnapshot) {\n    return this.snapshot.prefersViewTransitions && newSnapshot.prefersViewTransitions\n  }\n\n  renderPage(snapshot, isPreview = false, willRender = true, visit) {\n    const shouldMorphPage = this.isPageRefresh(visit) && (visit?.refresh?.method || this.snapshot.refreshMethod) === \"morph\";\n    const rendererClass = shouldMorphPage ? MorphingPageRenderer : PageRenderer;\n\n    const renderer = new rendererClass(this.snapshot, snapshot, isPreview, willRender);\n\n    if (!renderer.shouldRender) {\n      this.forceReloaded = true;\n    } else {\n      visit?.changeHistory();\n    }\n\n    return this.render(renderer)\n  }\n\n  renderError(snapshot, visit) {\n    visit?.changeHistory();\n    const renderer = new ErrorRenderer(this.snapshot, snapshot, false);\n    return this.render(renderer)\n  }\n\n  clearSnapshotCache() {\n    this.snapshotCache.clear();\n  }\n\n  async cacheSnapshot(snapshot = this.snapshot) {\n    if (snapshot.isCacheable) {\n      this.delegate.viewWillCacheSnapshot();\n      const { lastRenderedLocation: location } = this;\n      await nextEventLoopTick();\n      const cachedSnapshot = snapshot.clone();\n      this.snapshotCache.put(location, cachedSnapshot);\n      return cachedSnapshot\n    }\n  }\n\n  getCachedSnapshotForLocation(location) {\n    return this.snapshotCache.get(location)\n  }\n\n  isPageRefresh(visit) {\n    return !visit || (this.lastRenderedLocation.pathname === visit.location.pathname && visit.action === \"replace\")\n  }\n\n  shouldPreserveScrollPosition(visit) {\n    return this.isPageRefresh(visit) && (visit?.refresh?.scroll || this.snapshot.refreshScroll) === \"preserve\"\n  }\n\n  get snapshot() {\n    return PageSnapshot.fromElement(this.element)\n  }\n}\n\nclass Preloader {\n  selector = \"a[data-turbo-preload]\"\n\n  constructor(delegate, snapshotCache) {\n    this.delegate = delegate;\n    this.snapshotCache = snapshotCache;\n  }\n\n  start() {\n    if (document.readyState === \"loading\") {\n      document.addEventListener(\"DOMContentLoaded\", this.#preloadAll);\n    } else {\n      this.preloadOnLoadLinksForView(document.body);\n    }\n  }\n\n  stop() {\n    document.removeEventListener(\"DOMContentLoaded\", this.#preloadAll);\n  }\n\n  preloadOnLoadLinksForView(element) {\n    for (const link of element.querySelectorAll(this.selector)) {\n      if (this.delegate.shouldPreloadLink(link)) {\n        this.preloadURL(link);\n      }\n    }\n  }\n\n  async preloadURL(link) {\n    const location = new URL(link.href);\n\n    if (this.snapshotCache.has(location)) {\n      return\n    }\n\n    const fetchRequest = new FetchRequest(this, FetchMethod.get, location, new URLSearchParams(), link);\n    await fetchRequest.perform();\n  }\n\n  // Fetch request delegate\n\n  prepareRequest(fetchRequest) {\n    fetchRequest.headers[\"X-Sec-Purpose\"] = \"prefetch\";\n  }\n\n  async requestSucceededWithResponse(fetchRequest, fetchResponse) {\n    try {\n      const responseHTML = await fetchResponse.responseHTML;\n      const snapshot = PageSnapshot.fromHTMLString(responseHTML);\n\n      this.snapshotCache.put(fetchRequest.url, snapshot);\n    } catch (_) {\n      // If we cannot preload that is ok!\n    }\n  }\n\n  requestStarted(fetchRequest) {}\n\n  requestErrored(fetchRequest) {}\n\n  requestFinished(fetchRequest) {}\n\n  requestPreventedHandlingResponse(fetchRequest, fetchResponse) {}\n\n  requestFailedWithResponse(fetchRequest, fetchResponse) {}\n\n  #preloadAll = () => {\n    this.preloadOnLoadLinksForView(document.body);\n  }\n}\n\nclass Cache {\n  constructor(session) {\n    this.session = session;\n  }\n\n  clear() {\n    this.session.clearCache();\n  }\n\n  resetCacheControl() {\n    this.#setCacheControl(\"\");\n  }\n\n  exemptPageFromCache() {\n    this.#setCacheControl(\"no-cache\");\n  }\n\n  exemptPageFromPreview() {\n    this.#setCacheControl(\"no-preview\");\n  }\n\n  #setCacheControl(value) {\n    setMetaContent(\"turbo-cache-control\", value);\n  }\n}\n\nclass Session {\n  navigator = new Navigator(this)\n  history = new History(this)\n  view = new PageView(this, document.documentElement)\n  adapter = new BrowserAdapter(this)\n\n  pageObserver = new PageObserver(this)\n  cacheObserver = new CacheObserver()\n  linkPrefetchObserver = new LinkPrefetchObserver(this, document)\n  linkClickObserver = new LinkClickObserver(this, window)\n  formSubmitObserver = new FormSubmitObserver(this, document)\n  scrollObserver = new ScrollObserver(this)\n  streamObserver = new StreamObserver(this)\n  formLinkClickObserver = new FormLinkClickObserver(this, document.documentElement)\n  frameRedirector = new FrameRedirector(this, document.documentElement)\n  streamMessageRenderer = new StreamMessageRenderer()\n  cache = new Cache(this)\n\n  enabled = true\n  started = false\n  #pageRefreshDebouncePeriod = 150\n\n  constructor(recentRequests) {\n    this.recentRequests = recentRequests;\n    this.preloader = new Preloader(this, this.view.snapshotCache);\n    this.debouncedRefresh = this.refresh;\n    this.pageRefreshDebouncePeriod = this.pageRefreshDebouncePeriod;\n  }\n\n  start() {\n    if (!this.started) {\n      this.pageObserver.start();\n      this.cacheObserver.start();\n      this.linkPrefetchObserver.start();\n      this.formLinkClickObserver.start();\n      this.linkClickObserver.start();\n      this.formSubmitObserver.start();\n      this.scrollObserver.start();\n      this.streamObserver.start();\n      this.frameRedirector.start();\n      this.history.start();\n      this.preloader.start();\n      this.started = true;\n      this.enabled = true;\n    }\n  }\n\n  disable() {\n    this.enabled = false;\n  }\n\n  stop() {\n    if (this.started) {\n      this.pageObserver.stop();\n      this.cacheObserver.stop();\n      this.linkPrefetchObserver.stop();\n      this.formLinkClickObserver.stop();\n      this.linkClickObserver.stop();\n      this.formSubmitObserver.stop();\n      this.scrollObserver.stop();\n      this.streamObserver.stop();\n      this.frameRedirector.stop();\n      this.history.stop();\n      this.preloader.stop();\n      this.started = false;\n    }\n  }\n\n  registerAdapter(adapter) {\n    this.adapter = adapter;\n  }\n\n  visit(location, options = {}) {\n    const frameElement = options.frame ? document.getElementById(options.frame) : null;\n\n    if (frameElement instanceof FrameElement) {\n      const action = options.action || getVisitAction(frameElement);\n\n      frameElement.delegate.proposeVisitIfNavigatedWithAction(frameElement, action);\n      frameElement.src = location.toString();\n    } else {\n      this.navigator.proposeVisit(expandURL(location), options);\n    }\n  }\n\n  refresh(url, options = {}) {\n    options = typeof options === \"string\" ? { requestId: options } : options;\n\n    const { method, requestId, scroll } = options;\n    const isRecentRequest = requestId && this.recentRequests.has(requestId);\n    const isCurrentUrl = url === document.baseURI;\n    if (!isRecentRequest && !this.navigator.currentVisit && isCurrentUrl) {\n      this.visit(url, { action: \"replace\", shouldCacheSnapshot: false, refresh: { method, scroll } });\n    }\n  }\n\n  connectStreamSource(source) {\n    this.streamObserver.connectStreamSource(source);\n  }\n\n  disconnectStreamSource(source) {\n    this.streamObserver.disconnectStreamSource(source);\n  }\n\n  renderStreamMessage(message) {\n    this.streamMessageRenderer.render(StreamMessage.wrap(message));\n  }\n\n  clearCache() {\n    this.view.clearSnapshotCache();\n  }\n\n  setProgressBarDelay(delay) {\n    console.warn(\n      \"Please replace `session.setProgressBarDelay(delay)` with `session.progressBarDelay = delay`. The function is deprecated and will be removed in a future version of Turbo.`\"\n    );\n\n    this.progressBarDelay = delay;\n  }\n\n  set progressBarDelay(delay) {\n    config.drive.progressBarDelay = delay;\n  }\n\n  get progressBarDelay() {\n    return config.drive.progressBarDelay\n  }\n\n  set drive(value) {\n    config.drive.enabled = value;\n  }\n\n  get drive() {\n    return config.drive.enabled\n  }\n\n  set formMode(value) {\n    config.forms.mode = value;\n  }\n\n  get formMode() {\n    return config.forms.mode\n  }\n\n  get location() {\n    return this.history.location\n  }\n\n  get restorationIdentifier() {\n    return this.history.restorationIdentifier\n  }\n\n  get pageRefreshDebouncePeriod() {\n    return this.#pageRefreshDebouncePeriod\n  }\n\n  set pageRefreshDebouncePeriod(value) {\n    this.refresh = debounce(this.debouncedRefresh.bind(this), value);\n    this.#pageRefreshDebouncePeriod = value;\n  }\n\n  // Preloader delegate\n\n  shouldPreloadLink(element) {\n    const isUnsafe = element.hasAttribute(\"data-turbo-method\");\n    const isStream = element.hasAttribute(\"data-turbo-stream\");\n    const frameTarget = element.getAttribute(\"data-turbo-frame\");\n    const frame = frameTarget == \"_top\" ?\n      null :\n      document.getElementById(frameTarget) || findClosestRecursively(element, \"turbo-frame:not([disabled])\");\n\n    if (isUnsafe || isStream || frame instanceof FrameElement) {\n      return false\n    } else {\n      const location = new URL(element.href);\n\n      return this.elementIsNavigatable(element) && locationIsVisitable(location, this.snapshot.rootLocation)\n    }\n  }\n\n  // History delegate\n\n  historyPoppedToLocationWithRestorationIdentifierAndDirection(location, restorationIdentifier, direction) {\n    if (this.enabled) {\n      this.navigator.startVisit(location, restorationIdentifier, {\n        action: \"restore\",\n        historyChanged: true,\n        direction\n      });\n    } else {\n      this.adapter.pageInvalidated({\n        reason: \"turbo_disabled\"\n      });\n    }\n  }\n\n  historyPoppedWithEmptyState(location) {\n    this.history.replace(location);\n    this.view.lastRenderedLocation = location;\n    this.view.cacheSnapshot();\n  }\n\n  // Scroll observer delegate\n\n  scrollPositionChanged(position) {\n    this.history.updateRestorationData({ scrollPosition: position });\n  }\n\n  // Form click observer delegate\n\n  willSubmitFormLinkToLocation(link, location) {\n    return this.elementIsNavigatable(link) && locationIsVisitable(location, this.snapshot.rootLocation)\n  }\n\n  submittedFormLinkToLocation() {}\n\n  // Link hover observer delegate\n\n  canPrefetchRequestToLocation(link, location) {\n    return (\n      this.elementIsNavigatable(link) &&\n      locationIsVisitable(location, this.snapshot.rootLocation) &&\n      this.navigator.linkPrefetchingIsEnabledForLocation(location)\n    )\n  }\n\n  // Link click observer delegate\n\n  willFollowLinkToLocation(link, location, event) {\n    return (\n      this.elementIsNavigatable(link) &&\n      locationIsVisitable(location, this.snapshot.rootLocation) &&\n      this.applicationAllowsFollowingLinkToLocation(link, location, event)\n    )\n  }\n\n  followedLinkToLocation(link, location) {\n    const action = this.getActionForLink(link);\n    const acceptsStreamResponse = link.hasAttribute(\"data-turbo-stream\");\n\n    this.visit(location.href, { action, acceptsStreamResponse });\n  }\n\n  // Navigator delegate\n\n  allowsVisitingLocationWithAction(location, action) {\n    return this.applicationAllowsVisitingLocation(location)\n  }\n\n  visitProposedToLocation(location, options) {\n    extendURLWithDeprecatedProperties(location);\n    this.adapter.visitProposedToLocation(location, options);\n  }\n\n  // Visit delegate\n\n  visitStarted(visit) {\n    if (!visit.acceptsStreamResponse) {\n      markAsBusy(document.documentElement);\n      this.view.markVisitDirection(visit.direction);\n    }\n    extendURLWithDeprecatedProperties(visit.location);\n    this.notifyApplicationAfterVisitingLocation(visit.location, visit.action);\n  }\n\n  visitCompleted(visit) {\n    this.view.unmarkVisitDirection();\n    clearBusyState(document.documentElement);\n    this.notifyApplicationAfterPageLoad(visit.getTimingMetrics());\n  }\n\n  // Form submit observer delegate\n\n  willSubmitForm(form, submitter) {\n    const action = getAction$1(form, submitter);\n\n    return (\n      this.submissionIsNavigatable(form, submitter) &&\n      locationIsVisitable(expandURL(action), this.snapshot.rootLocation)\n    )\n  }\n\n  formSubmitted(form, submitter) {\n    this.navigator.submitForm(form, submitter);\n  }\n\n  // Page observer delegate\n\n  pageBecameInteractive() {\n    this.view.lastRenderedLocation = this.location;\n    this.notifyApplicationAfterPageLoad();\n  }\n\n  pageLoaded() {\n    this.history.assumeControlOfScrollRestoration();\n  }\n\n  pageWillUnload() {\n    this.history.relinquishControlOfScrollRestoration();\n  }\n\n  // Stream observer delegate\n\n  receivedMessageFromStream(message) {\n    this.renderStreamMessage(message);\n  }\n\n  // Page view delegate\n\n  viewWillCacheSnapshot() {\n    this.notifyApplicationBeforeCachingSnapshot();\n  }\n\n  allowsImmediateRender({ element }, options) {\n    const event = this.notifyApplicationBeforeRender(element, options);\n    const {\n      defaultPrevented,\n      detail: { render }\n    } = event;\n\n    if (this.view.renderer && render) {\n      this.view.renderer.renderElement = render;\n    }\n\n    return !defaultPrevented\n  }\n\n  viewRenderedSnapshot(_snapshot, _isPreview, renderMethod) {\n    this.view.lastRenderedLocation = this.history.location;\n    this.notifyApplicationAfterRender(renderMethod);\n  }\n\n  preloadOnLoadLinksForView(element) {\n    this.preloader.preloadOnLoadLinksForView(element);\n  }\n\n  viewInvalidated(reason) {\n    this.adapter.pageInvalidated(reason);\n  }\n\n  // Frame element\n\n  frameLoaded(frame) {\n    this.notifyApplicationAfterFrameLoad(frame);\n  }\n\n  frameRendered(fetchResponse, frame) {\n    this.notifyApplicationAfterFrameRender(fetchResponse, frame);\n  }\n\n  // Application events\n\n  applicationAllowsFollowingLinkToLocation(link, location, ev) {\n    const event = this.notifyApplicationAfterClickingLinkToLocation(link, location, ev);\n    return !event.defaultPrevented\n  }\n\n  applicationAllowsVisitingLocation(location) {\n    const event = this.notifyApplicationBeforeVisitingLocation(location);\n    return !event.defaultPrevented\n  }\n\n  notifyApplicationAfterClickingLinkToLocation(link, location, event) {\n    return dispatch(\"turbo:click\", {\n      target: link,\n      detail: { url: location.href, originalEvent: event },\n      cancelable: true\n    })\n  }\n\n  notifyApplicationBeforeVisitingLocation(location) {\n    return dispatch(\"turbo:before-visit\", {\n      detail: { url: location.href },\n      cancelable: true\n    })\n  }\n\n  notifyApplicationAfterVisitingLocation(location, action) {\n    return dispatch(\"turbo:visit\", { detail: { url: location.href, action } })\n  }\n\n  notifyApplicationBeforeCachingSnapshot() {\n    return dispatch(\"turbo:before-cache\")\n  }\n\n  notifyApplicationBeforeRender(newBody, options) {\n    return dispatch(\"turbo:before-render\", {\n      detail: { newBody, ...options },\n      cancelable: true\n    })\n  }\n\n  notifyApplicationAfterRender(renderMethod) {\n    return dispatch(\"turbo:render\", { detail: { renderMethod } })\n  }\n\n  notifyApplicationAfterPageLoad(timing = {}) {\n    return dispatch(\"turbo:load\", {\n      detail: { url: this.location.href, timing }\n    })\n  }\n\n  notifyApplicationAfterFrameLoad(frame) {\n    return dispatch(\"turbo:frame-load\", { target: frame })\n  }\n\n  notifyApplicationAfterFrameRender(fetchResponse, frame) {\n    return dispatch(\"turbo:frame-render\", {\n      detail: { fetchResponse },\n      target: frame,\n      cancelable: true\n    })\n  }\n\n  // Helpers\n\n  submissionIsNavigatable(form, submitter) {\n    if (config.forms.mode == \"off\") {\n      return false\n    } else {\n      const submitterIsNavigatable = submitter ? this.elementIsNavigatable(submitter) : true;\n\n      if (config.forms.mode == \"optin\") {\n        return submitterIsNavigatable && form.closest('[data-turbo=\"true\"]') != null\n      } else {\n        return submitterIsNavigatable && this.elementIsNavigatable(form)\n      }\n    }\n  }\n\n  elementIsNavigatable(element) {\n    const container = findClosestRecursively(element, \"[data-turbo]\");\n    const withinFrame = findClosestRecursively(element, \"turbo-frame\");\n\n    // Check if Drive is enabled on the session or we're within a Frame.\n    if (config.drive.enabled || withinFrame) {\n      // Element is navigatable by default, unless `data-turbo=\"false\"`.\n      if (container) {\n        return container.getAttribute(\"data-turbo\") != \"false\"\n      } else {\n        return true\n      }\n    } else {\n      // Element isn't navigatable by default, unless `data-turbo=\"true\"`.\n      if (container) {\n        return container.getAttribute(\"data-turbo\") == \"true\"\n      } else {\n        return false\n      }\n    }\n  }\n\n  // Private\n\n  getActionForLink(link) {\n    return getVisitAction(link) || \"advance\"\n  }\n\n  get snapshot() {\n    return this.view.snapshot\n  }\n}\n\n// Older versions of the Turbo Native adapters referenced the\n// `Location#absoluteURL` property in their implementations of\n// the `Adapter#visitProposedToLocation()` and `#visitStarted()`\n// methods. The Location class has since been removed in favor\n// of the DOM URL API, and accordingly all Adapter methods now\n// receive URL objects.\n//\n// We alias #absoluteURL to #toString() here to avoid crashing\n// older adapters which do not expect URL objects. We should\n// consider removing this support at some point in the future.\n\nfunction extendURLWithDeprecatedProperties(url) {\n  Object.defineProperties(url, deprecatedLocationPropertyDescriptors);\n}\n\nconst deprecatedLocationPropertyDescriptors = {\n  absoluteURL: {\n    get() {\n      return this.toString()\n    }\n  }\n};\n\nconst session = new Session(recentRequests);\n\n// Rename `navigator` to avoid shadowing `window.navigator`\nconst { cache, navigator: sessionNavigator } = session;\n\n/**\n * Starts the main session.\n * This initialises any necessary observers such as those to monitor\n * link interactions.\n */\nfunction start() {\n  session.start();\n}\n\n/**\n * Registers an adapter for the main session.\n *\n * @param adapter Adapter to register\n */\nfunction registerAdapter(adapter) {\n  session.registerAdapter(adapter);\n}\n\n/**\n * Performs an application visit to the given location.\n *\n * @param location Location to visit (a URL or path)\n * @param options Options to apply\n * @param options.action Type of history navigation to apply (\"restore\",\n * \"replace\" or \"advance\")\n * @param options.historyChanged Specifies whether the browser history has\n * already been changed for this visit or not\n * @param options.referrer Specifies the referrer of this visit such that\n * navigations to the same page will not result in a new history entry.\n * @param options.snapshotHTML Cached snapshot to render\n * @param options.response Response of the specified location\n */\nfunction visit(location, options) {\n  session.visit(location, options);\n}\n\n/**\n * Connects a stream source to the main session.\n *\n * @param source Stream source to connect\n */\nfunction connectStreamSource(source) {\n  session.connectStreamSource(source);\n}\n\n/**\n * Disconnects a stream source from the main session.\n *\n * @param source Stream source to disconnect\n */\nfunction disconnectStreamSource(source) {\n  session.disconnectStreamSource(source);\n}\n\n/**\n * Renders a stream message to the main session by appending it to the\n * current document.\n *\n * @param message Message to render\n */\nfunction renderStreamMessage(message) {\n  session.renderStreamMessage(message);\n}\n\n/**\n * Sets the delay after which the progress bar will appear during navigation.\n *\n * The progress bar appears after 500ms by default.\n *\n * Note that this method has no effect when used with the iOS or Android\n * adapters.\n *\n * @param delay Time to delay in milliseconds\n */\nfunction setProgressBarDelay(delay) {\n  console.warn(\n    \"Please replace `Turbo.setProgressBarDelay(delay)` with `Turbo.config.drive.progressBarDelay = delay`. The top-level function is deprecated and will be removed in a future version of Turbo.`\"\n  );\n  config.drive.progressBarDelay = delay;\n}\n\nfunction setConfirmMethod(confirmMethod) {\n  console.warn(\n    \"Please replace `Turbo.setConfirmMethod(confirmMethod)` with `Turbo.config.forms.confirm = confirmMethod`. The top-level function is deprecated and will be removed in a future version of Turbo.`\"\n  );\n  config.forms.confirm = confirmMethod;\n}\n\nfunction setFormMode(mode) {\n  console.warn(\n    \"Please replace `Turbo.setFormMode(mode)` with `Turbo.config.forms.mode = mode`. The top-level function is deprecated and will be removed in a future version of Turbo.`\"\n  );\n  config.forms.mode = mode;\n}\n\n/**\n * Morph the state of the currentBody based on the attributes and contents of\n * the newBody. Morphing body elements may dispatch turbo:morph,\n * turbo:before-morph-element, turbo:before-morph-attribute, and\n * turbo:morph-element events.\n *\n * @param currentBody HTMLBodyElement destination of morphing changes\n * @param newBody HTMLBodyElement source of morphing changes\n */\nfunction morphBodyElements(currentBody, newBody) {\n  MorphingPageRenderer.renderElement(currentBody, newBody);\n}\n\n/**\n * Morph the child elements of the currentFrame based on the child elements of\n * the newFrame. Morphing turbo-frame elements may dispatch turbo:before-frame-morph,\n * turbo:before-morph-element, turbo:before-morph-attribute, and\n * turbo:morph-element events.\n *\n * @param currentFrame FrameElement destination of morphing children changes\n * @param newFrame FrameElement source of morphing children changes\n */\nfunction morphTurboFrameElements(currentFrame, newFrame) {\n  MorphingFrameRenderer.renderElement(currentFrame, newFrame);\n}\n\nvar Turbo = /*#__PURE__*/Object.freeze({\n  __proto__: null,\n  PageRenderer: PageRenderer,\n  PageSnapshot: PageSnapshot,\n  FrameRenderer: FrameRenderer,\n  fetch: fetchWithTurboHeaders,\n  config: config,\n  session: session,\n  cache: cache,\n  navigator: sessionNavigator,\n  start: start,\n  registerAdapter: registerAdapter,\n  visit: visit,\n  connectStreamSource: connectStreamSource,\n  disconnectStreamSource: disconnectStreamSource,\n  renderStreamMessage: renderStreamMessage,\n  setProgressBarDelay: setProgressBarDelay,\n  setConfirmMethod: setConfirmMethod,\n  setFormMode: setFormMode,\n  morphBodyElements: morphBodyElements,\n  morphTurboFrameElements: morphTurboFrameElements,\n  morphChildren: morphChildren,\n  morphElements: morphElements\n});\n\nclass TurboFrameMissingError extends Error {}\n\nclass FrameController {\n  fetchResponseLoaded = (_fetchResponse) => Promise.resolve()\n  #currentFetchRequest = null\n  #resolveVisitPromise = () => {}\n  #connected = false\n  #hasBeenLoaded = false\n  #ignoredAttributes = new Set()\n  #shouldMorphFrame = false\n  action = null\n\n  constructor(element) {\n    this.element = element;\n    this.view = new FrameView(this, this.element);\n    this.appearanceObserver = new AppearanceObserver(this, this.element);\n    this.formLinkClickObserver = new FormLinkClickObserver(this, this.element);\n    this.linkInterceptor = new LinkInterceptor(this, this.element);\n    this.restorationIdentifier = uuid();\n    this.formSubmitObserver = new FormSubmitObserver(this, this.element);\n  }\n\n  // Frame delegate\n\n  connect() {\n    if (!this.#connected) {\n      this.#connected = true;\n      if (this.loadingStyle == FrameLoadingStyle.lazy) {\n        this.appearanceObserver.start();\n      } else {\n        this.#loadSourceURL();\n      }\n      this.formLinkClickObserver.start();\n      this.linkInterceptor.start();\n      this.formSubmitObserver.start();\n    }\n  }\n\n  disconnect() {\n    if (this.#connected) {\n      this.#connected = false;\n      this.appearanceObserver.stop();\n      this.formLinkClickObserver.stop();\n      this.linkInterceptor.stop();\n      this.formSubmitObserver.stop();\n\n      if (!this.element.hasAttribute(\"recurse\")) {\n        this.#currentFetchRequest?.cancel();\n      }\n    }\n  }\n\n  disabledChanged() {\n    if (this.disabled) {\n      this.#currentFetchRequest?.cancel();\n    } else if (this.loadingStyle == FrameLoadingStyle.eager) {\n      this.#loadSourceURL();\n    }\n  }\n\n  sourceURLChanged() {\n    if (this.#isIgnoringChangesTo(\"src\")) return\n\n    if (!this.sourceURL) {\n      this.#currentFetchRequest?.cancel();\n    }\n\n    if (this.element.isConnected) {\n      this.complete = false;\n    }\n\n    if (this.loadingStyle == FrameLoadingStyle.eager || this.#hasBeenLoaded) {\n      this.#loadSourceURL();\n    }\n  }\n\n  sourceURLReloaded() {\n    const { refresh, src } = this.element;\n\n    this.#shouldMorphFrame = src && refresh === \"morph\";\n\n    this.element.removeAttribute(\"complete\");\n    this.element.src = null;\n    this.element.src = src;\n    return this.element.loaded\n  }\n\n  loadingStyleChanged() {\n    if (this.loadingStyle == FrameLoadingStyle.lazy) {\n      this.appearanceObserver.start();\n    } else {\n      this.appearanceObserver.stop();\n      this.#loadSourceURL();\n    }\n  }\n\n  async #loadSourceURL() {\n    if (this.enabled && this.isActive && !this.complete && this.sourceURL) {\n      this.element.loaded = this.#visit(expandURL(this.sourceURL));\n      this.appearanceObserver.stop();\n      await this.element.loaded;\n      this.#hasBeenLoaded = true;\n    }\n  }\n\n  async loadResponse(fetchResponse) {\n    if (fetchResponse.redirected || (fetchResponse.succeeded && fetchResponse.isHTML)) {\n      this.sourceURL = fetchResponse.response.url;\n    }\n\n    try {\n      const html = await fetchResponse.responseHTML;\n      if (html) {\n        const document = parseHTMLDocument(html);\n        const pageSnapshot = PageSnapshot.fromDocument(document);\n\n        if (pageSnapshot.isVisitable) {\n          await this.#loadFrameResponse(fetchResponse, document);\n        } else {\n          await this.#handleUnvisitableFrameResponse(fetchResponse);\n        }\n      }\n    } finally {\n      this.#shouldMorphFrame = false;\n      this.fetchResponseLoaded = () => Promise.resolve();\n    }\n  }\n\n  // Appearance observer delegate\n\n  elementAppearedInViewport(element) {\n    this.proposeVisitIfNavigatedWithAction(element, getVisitAction(element));\n    this.#loadSourceURL();\n  }\n\n  // Form link click observer delegate\n\n  willSubmitFormLinkToLocation(link) {\n    return this.#shouldInterceptNavigation(link)\n  }\n\n  submittedFormLinkToLocation(link, _location, form) {\n    const frame = this.#findFrameElement(link);\n    if (frame) form.setAttribute(\"data-turbo-frame\", frame.id);\n  }\n\n  // Link interceptor delegate\n\n  shouldInterceptLinkClick(element, _location, _event) {\n    return this.#shouldInterceptNavigation(element)\n  }\n\n  linkClickIntercepted(element, location) {\n    this.#navigateFrame(element, location);\n  }\n\n  // Form submit observer delegate\n\n  willSubmitForm(element, submitter) {\n    return element.closest(\"turbo-frame\") == this.element && this.#shouldInterceptNavigation(element, submitter)\n  }\n\n  formSubmitted(element, submitter) {\n    if (this.formSubmission) {\n      this.formSubmission.stop();\n    }\n\n    this.formSubmission = new FormSubmission(this, element, submitter);\n\n    const { fetchRequest } = this.formSubmission;\n    const frame = this.#findFrameElement(element, submitter);\n\n    this.prepareRequest(fetchRequest, frame);\n    this.formSubmission.start();\n  }\n\n  // Fetch request delegate\n\n  prepareRequest(request, frame = this) {\n    request.headers[\"Turbo-Frame\"] = frame.id;\n\n    if (this.currentNavigationElement?.hasAttribute(\"data-turbo-stream\")) {\n      request.acceptResponseType(StreamMessage.contentType);\n    }\n  }\n\n  requestStarted(_request) {\n    markAsBusy(this.element);\n  }\n\n  requestPreventedHandlingResponse(_request, _response) {\n    this.#resolveVisitPromise();\n  }\n\n  async requestSucceededWithResponse(request, response) {\n    await this.loadResponse(response);\n    this.#resolveVisitPromise();\n  }\n\n  async requestFailedWithResponse(request, response) {\n    await this.loadResponse(response);\n    this.#resolveVisitPromise();\n  }\n\n  requestErrored(request, error) {\n    console.error(error);\n    this.#resolveVisitPromise();\n  }\n\n  requestFinished(_request) {\n    clearBusyState(this.element);\n  }\n\n  // Form submission delegate\n\n  formSubmissionStarted({ formElement }) {\n    markAsBusy(formElement, this.#findFrameElement(formElement));\n  }\n\n  formSubmissionSucceededWithResponse(formSubmission, response) {\n    const frame = this.#findFrameElement(formSubmission.formElement, formSubmission.submitter);\n\n    frame.delegate.proposeVisitIfNavigatedWithAction(frame, getVisitAction(formSubmission.submitter, formSubmission.formElement, frame));\n    frame.delegate.loadResponse(response);\n\n    if (!formSubmission.isSafe) {\n      session.clearCache();\n    }\n  }\n\n  formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n    this.element.delegate.loadResponse(fetchResponse);\n    session.clearCache();\n  }\n\n  formSubmissionErrored(formSubmission, error) {\n    console.error(error);\n  }\n\n  formSubmissionFinished({ formElement }) {\n    clearBusyState(formElement, this.#findFrameElement(formElement));\n  }\n\n  // View delegate\n\n  allowsImmediateRender({ element: newFrame }, options) {\n    const event = dispatch(\"turbo:before-frame-render\", {\n      target: this.element,\n      detail: { newFrame, ...options },\n      cancelable: true\n    });\n\n    const {\n      defaultPrevented,\n      detail: { render }\n    } = event;\n\n    if (this.view.renderer && render) {\n      this.view.renderer.renderElement = render;\n    }\n\n    return !defaultPrevented\n  }\n\n  viewRenderedSnapshot(_snapshot, _isPreview, _renderMethod) {}\n\n  preloadOnLoadLinksForView(element) {\n    session.preloadOnLoadLinksForView(element);\n  }\n\n  viewInvalidated() {}\n\n  // Frame renderer delegate\n\n  willRenderFrame(currentElement, _newElement) {\n    this.previousFrameElement = currentElement.cloneNode(true);\n  }\n\n  visitCachedSnapshot = ({ element }) => {\n    const frame = element.querySelector(\"#\" + this.element.id);\n\n    if (frame && this.previousFrameElement) {\n      frame.replaceChildren(...this.previousFrameElement.children);\n    }\n\n    delete this.previousFrameElement;\n  }\n\n  // Private\n\n  async #loadFrameResponse(fetchResponse, document) {\n    const newFrameElement = await this.extractForeignFrameElement(document.body);\n    const rendererClass = this.#shouldMorphFrame ? MorphingFrameRenderer : FrameRenderer;\n\n    if (newFrameElement) {\n      const snapshot = new Snapshot(newFrameElement);\n      const renderer = new rendererClass(this, this.view.snapshot, snapshot, false, false);\n      if (this.view.renderPromise) await this.view.renderPromise;\n      this.changeHistory();\n\n      await this.view.render(renderer);\n      this.complete = true;\n      session.frameRendered(fetchResponse, this.element);\n      session.frameLoaded(this.element);\n      await this.fetchResponseLoaded(fetchResponse);\n    } else if (this.#willHandleFrameMissingFromResponse(fetchResponse)) {\n      this.#handleFrameMissingFromResponse(fetchResponse);\n    }\n  }\n\n  async #visit(url) {\n    const request = new FetchRequest(this, FetchMethod.get, url, new URLSearchParams(), this.element);\n\n    this.#currentFetchRequest?.cancel();\n    this.#currentFetchRequest = request;\n\n    return new Promise((resolve) => {\n      this.#resolveVisitPromise = () => {\n        this.#resolveVisitPromise = () => {};\n        this.#currentFetchRequest = null;\n        resolve();\n      };\n      request.perform();\n    })\n  }\n\n  #navigateFrame(element, url, submitter) {\n    const frame = this.#findFrameElement(element, submitter);\n\n    frame.delegate.proposeVisitIfNavigatedWithAction(frame, getVisitAction(submitter, element, frame));\n\n    this.#withCurrentNavigationElement(element, () => {\n      frame.src = url;\n    });\n  }\n\n  proposeVisitIfNavigatedWithAction(frame, action = null) {\n    this.action = action;\n\n    if (this.action) {\n      const pageSnapshot = PageSnapshot.fromElement(frame).clone();\n      const { visitCachedSnapshot } = frame.delegate;\n\n      frame.delegate.fetchResponseLoaded = async (fetchResponse) => {\n        if (frame.src) {\n          const { statusCode, redirected } = fetchResponse;\n          const responseHTML = await fetchResponse.responseHTML;\n          const response = { statusCode, redirected, responseHTML };\n          const options = {\n            response,\n            visitCachedSnapshot,\n            willRender: false,\n            updateHistory: false,\n            restorationIdentifier: this.restorationIdentifier,\n            snapshot: pageSnapshot\n          };\n\n          if (this.action) options.action = this.action;\n\n          session.visit(frame.src, options);\n        }\n      };\n    }\n  }\n\n  changeHistory() {\n    if (this.action) {\n      const method = getHistoryMethodForAction(this.action);\n      session.history.update(method, expandURL(this.element.src || \"\"), this.restorationIdentifier);\n    }\n  }\n\n  async #handleUnvisitableFrameResponse(fetchResponse) {\n    console.warn(\n      `The response (${fetchResponse.statusCode}) from <turbo-frame id=\"${this.element.id}\"> is performing a full page visit due to turbo-visit-control.`\n    );\n\n    await this.#visitResponse(fetchResponse.response);\n  }\n\n  #willHandleFrameMissingFromResponse(fetchResponse) {\n    this.element.setAttribute(\"complete\", \"\");\n\n    const response = fetchResponse.response;\n    const visit = async (url, options) => {\n      if (url instanceof Response) {\n        this.#visitResponse(url);\n      } else {\n        session.visit(url, options);\n      }\n    };\n\n    const event = dispatch(\"turbo:frame-missing\", {\n      target: this.element,\n      detail: { response, visit },\n      cancelable: true\n    });\n\n    return !event.defaultPrevented\n  }\n\n  #handleFrameMissingFromResponse(fetchResponse) {\n    this.view.missing();\n    this.#throwFrameMissingError(fetchResponse);\n  }\n\n  #throwFrameMissingError(fetchResponse) {\n    const message = `The response (${fetchResponse.statusCode}) did not contain the expected <turbo-frame id=\"${this.element.id}\"> and will be ignored. To perform a full page visit instead, set turbo-visit-control to reload.`;\n    throw new TurboFrameMissingError(message)\n  }\n\n  async #visitResponse(response) {\n    const wrapped = new FetchResponse(response);\n    const responseHTML = await wrapped.responseHTML;\n    const { location, redirected, statusCode } = wrapped;\n\n    return session.visit(location, { response: { redirected, statusCode, responseHTML } })\n  }\n\n  #findFrameElement(element, submitter) {\n    const id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n    const target = this.#getFrameElementById(id);\n\n    return target instanceof FrameElement ? target : this.element\n  }\n\n  async extractForeignFrameElement(container) {\n    let element;\n    const id = CSS.escape(this.id);\n\n    try {\n      element = activateElement(container.querySelector(`turbo-frame#${id}`), this.sourceURL);\n      if (element) {\n        return element\n      }\n\n      element = activateElement(container.querySelector(`turbo-frame[src][recurse~=${id}]`), this.sourceURL);\n      if (element) {\n        await element.loaded;\n        return await this.extractForeignFrameElement(element)\n      }\n    } catch (error) {\n      console.error(error);\n      return new FrameElement()\n    }\n\n    return null\n  }\n\n  #formActionIsVisitable(form, submitter) {\n    const action = getAction$1(form, submitter);\n\n    return locationIsVisitable(expandURL(action), this.rootLocation)\n  }\n\n  #shouldInterceptNavigation(element, submitter) {\n    const id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n\n    if (element instanceof HTMLFormElement && !this.#formActionIsVisitable(element, submitter)) {\n      return false\n    }\n\n    if (!this.enabled || id == \"_top\") {\n      return false\n    }\n\n    if (id) {\n      const frameElement = this.#getFrameElementById(id);\n      if (frameElement) {\n        return !frameElement.disabled\n      } else if (id == \"_parent\") {\n        return false\n      }\n    }\n\n    if (!session.elementIsNavigatable(element)) {\n      return false\n    }\n\n    if (submitter && !session.elementIsNavigatable(submitter)) {\n      return false\n    }\n\n    return true\n  }\n\n  // Computed properties\n\n  get id() {\n    return this.element.id\n  }\n\n  get disabled() {\n    return this.element.disabled\n  }\n\n  get enabled() {\n    return !this.disabled\n  }\n\n  get sourceURL() {\n    if (this.element.src) {\n      return this.element.src\n    }\n  }\n\n  set sourceURL(sourceURL) {\n    this.#ignoringChangesToAttribute(\"src\", () => {\n      this.element.src = sourceURL ?? null;\n    });\n  }\n\n  get loadingStyle() {\n    return this.element.loading\n  }\n\n  get isLoading() {\n    return this.formSubmission !== undefined || this.#resolveVisitPromise() !== undefined\n  }\n\n  get complete() {\n    return this.element.hasAttribute(\"complete\")\n  }\n\n  set complete(value) {\n    if (value) {\n      this.element.setAttribute(\"complete\", \"\");\n    } else {\n      this.element.removeAttribute(\"complete\");\n    }\n  }\n\n  get isActive() {\n    return this.element.isActive && this.#connected\n  }\n\n  get rootLocation() {\n    const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n    const root = meta?.content ?? \"/\";\n    return expandURL(root)\n  }\n\n  #isIgnoringChangesTo(attributeName) {\n    return this.#ignoredAttributes.has(attributeName)\n  }\n\n  #ignoringChangesToAttribute(attributeName, callback) {\n    this.#ignoredAttributes.add(attributeName);\n    callback();\n    this.#ignoredAttributes.delete(attributeName);\n  }\n\n  #withCurrentNavigationElement(element, callback) {\n    this.currentNavigationElement = element;\n    callback();\n    delete this.currentNavigationElement;\n  }\n\n  #getFrameElementById(id) {\n    if (id != null) {\n      const element = id === \"_parent\" ?\n        this.element.parentElement.closest(\"turbo-frame\") :\n        document.getElementById(id);\n      if (element instanceof FrameElement) {\n        return element\n      }\n    }\n  }\n}\n\nfunction activateElement(element, currentURL) {\n  if (element) {\n    const src = element.getAttribute(\"src\");\n    if (src != null && currentURL != null && urlsAreEqual(src, currentURL)) {\n      throw new Error(`Matching <turbo-frame id=\"${element.id}\"> element has a source URL which references itself`)\n    }\n    if (element.ownerDocument !== document) {\n      element = document.importNode(element, true);\n    }\n\n    if (element instanceof FrameElement) {\n      element.connectedCallback();\n      element.disconnectedCallback();\n      return element\n    }\n  }\n}\n\nconst StreamActions = {\n  after() {\n    this.removeDuplicateTargetSiblings();\n    this.targetElements.forEach((e) => e.parentElement?.insertBefore(this.templateContent, e.nextSibling));\n  },\n\n  append() {\n    this.removeDuplicateTargetChildren();\n    this.targetElements.forEach((e) => e.append(this.templateContent));\n  },\n\n  before() {\n    this.removeDuplicateTargetSiblings();\n    this.targetElements.forEach((e) => e.parentElement?.insertBefore(this.templateContent, e));\n  },\n\n  prepend() {\n    this.removeDuplicateTargetChildren();\n    this.targetElements.forEach((e) => e.prepend(this.templateContent));\n  },\n\n  remove() {\n    this.targetElements.forEach((e) => e.remove());\n  },\n\n  replace() {\n    const method = this.getAttribute(\"method\");\n\n    this.targetElements.forEach((targetElement) => {\n      if (method === \"morph\") {\n        morphElements(targetElement, this.templateContent);\n      } else {\n        targetElement.replaceWith(this.templateContent);\n      }\n    });\n  },\n\n  update() {\n    const method = this.getAttribute(\"method\");\n\n    this.targetElements.forEach((targetElement) => {\n      if (method === \"morph\") {\n        morphChildren(targetElement, this.templateContent);\n      } else {\n        targetElement.innerHTML = \"\";\n        targetElement.append(this.templateContent);\n      }\n    });\n  },\n\n  refresh() {\n    const method = this.getAttribute(\"method\");\n    const requestId = this.requestId;\n    const scroll = this.getAttribute(\"scroll\");\n\n    session.refresh(this.baseURI, { method, requestId, scroll });\n  }\n};\n\n// <turbo-stream action=replace target=id><template>...\n\n/**\n * Renders updates to the page from a stream of messages.\n *\n * Using the `action` attribute, this can be configured one of eight ways:\n *\n * - `after` - inserts the result after the target\n * - `append` - appends the result to the target\n * - `before` - inserts the result before the target\n * - `prepend` - prepends the result to the target\n * - `refresh` - initiates a page refresh\n * - `remove` - removes the target\n * - `replace` - replaces the outer HTML of the target\n * - `update` - replaces the inner HTML of the target\n *\n * @customElement turbo-stream\n * @example\n *   <turbo-stream action=\"append\" target=\"dom_id\">\n *     <template>\n *       Content to append to target designated with the dom_id.\n *     </template>\n *   </turbo-stream>\n */\nclass StreamElement extends HTMLElement {\n  static async renderElement(newElement) {\n    await newElement.performAction();\n  }\n\n  async connectedCallback() {\n    try {\n      await this.render();\n    } catch (error) {\n      console.error(error);\n    } finally {\n      this.disconnect();\n    }\n  }\n\n  async render() {\n    return (this.renderPromise ??= (async () => {\n      const event = this.beforeRenderEvent;\n\n      if (this.dispatchEvent(event)) {\n        await nextRepaint();\n        await event.detail.render(this);\n      }\n    })())\n  }\n\n  disconnect() {\n    try {\n      this.remove();\n      // eslint-disable-next-line no-empty\n    } catch {}\n  }\n\n  /**\n   * Removes duplicate children (by ID)\n   */\n  removeDuplicateTargetChildren() {\n    this.duplicateChildren.forEach((c) => c.remove());\n  }\n\n  /**\n   * Gets the list of duplicate children (i.e. those with the same ID)\n   */\n  get duplicateChildren() {\n    const existingChildren = this.targetElements.flatMap((e) => [...e.children]).filter((c) => !!c.getAttribute(\"id\"));\n    const newChildrenIds = [...(this.templateContent?.children || [])].filter((c) => !!c.getAttribute(\"id\")).map((c) => c.getAttribute(\"id\"));\n\n    return existingChildren.filter((c) => newChildrenIds.includes(c.getAttribute(\"id\")))\n  }\n\n  /**\n  * Removes duplicate siblings (by ID)\n  */\n  removeDuplicateTargetSiblings() {\n    this.duplicateSiblings.forEach((c) => c.remove());\n  }\n\n  /**\n  * Gets the list of duplicate siblings (i.e. those with the same ID)\n  */\n  get duplicateSiblings() {\n    const existingChildren = this.targetElements.flatMap((e) => [...e.parentElement.children]).filter((c) => !!c.id);\n    const newChildrenIds = [...(this.templateContent?.children || [])].filter((c) => !!c.id).map((c) => c.id);\n\n    return existingChildren.filter((c) => newChildrenIds.includes(c.id))\n  }\n\n  /**\n   * Gets the action function to be performed.\n   */\n  get performAction() {\n    if (this.action) {\n      const actionFunction = StreamActions[this.action];\n      if (actionFunction) {\n        return actionFunction\n      }\n      this.#raise(\"unknown action\");\n    }\n    this.#raise(\"action attribute is missing\");\n  }\n\n  /**\n   * Gets the target elements which the template will be rendered to.\n   */\n  get targetElements() {\n    if (this.target) {\n      return this.targetElementsById\n    } else if (this.targets) {\n      return this.targetElementsByQuery\n    } else {\n      this.#raise(\"target or targets attribute is missing\");\n    }\n  }\n\n  /**\n   * Gets the contents of the main `<template>`.\n   */\n  get templateContent() {\n    return this.templateElement.content.cloneNode(true)\n  }\n\n  /**\n   * Gets the main `<template>` used for rendering\n   */\n  get templateElement() {\n    if (this.firstElementChild === null) {\n      const template = this.ownerDocument.createElement(\"template\");\n      this.appendChild(template);\n      return template\n    } else if (this.firstElementChild instanceof HTMLTemplateElement) {\n      return this.firstElementChild\n    }\n    this.#raise(\"first child element must be a <template> element\");\n  }\n\n  /**\n   * Gets the current action.\n   */\n  get action() {\n    return this.getAttribute(\"action\")\n  }\n\n  /**\n   * Gets the current target (an element ID) to which the result will\n   * be rendered.\n   */\n  get target() {\n    return this.getAttribute(\"target\")\n  }\n\n  /**\n   * Gets the current \"targets\" selector (a CSS selector)\n   */\n  get targets() {\n    return this.getAttribute(\"targets\")\n  }\n\n  /**\n   * Reads the request-id attribute\n   */\n  get requestId() {\n    return this.getAttribute(\"request-id\")\n  }\n\n  #raise(message) {\n    throw new Error(`${this.description}: ${message}`)\n  }\n\n  get description() {\n    return (this.outerHTML.match(/<[^>]+>/) ?? [])[0] ?? \"<turbo-stream>\"\n  }\n\n  get beforeRenderEvent() {\n    return new CustomEvent(\"turbo:before-stream-render\", {\n      bubbles: true,\n      cancelable: true,\n      detail: { newStream: this, render: StreamElement.renderElement }\n    })\n  }\n\n  get targetElementsById() {\n    const element = this.ownerDocument?.getElementById(this.target);\n\n    if (element !== null) {\n      return [element]\n    } else {\n      return []\n    }\n  }\n\n  get targetElementsByQuery() {\n    const elements = this.ownerDocument?.querySelectorAll(this.targets);\n\n    if (elements.length !== 0) {\n      return Array.prototype.slice.call(elements)\n    } else {\n      return []\n    }\n  }\n}\n\nclass StreamSourceElement extends HTMLElement {\n  streamSource = null\n\n  connectedCallback() {\n    this.streamSource = this.src.match(/^ws{1,2}:/) ? new WebSocket(this.src) : new EventSource(this.src);\n\n    connectStreamSource(this.streamSource);\n  }\n\n  disconnectedCallback() {\n    if (this.streamSource) {\n      this.streamSource.close();\n\n      disconnectStreamSource(this.streamSource);\n    }\n  }\n\n  get src() {\n    return this.getAttribute(\"src\") || \"\"\n  }\n}\n\nFrameElement.delegateConstructor = FrameController;\n\nif (customElements.get(\"turbo-frame\") === undefined) {\n  customElements.define(\"turbo-frame\", FrameElement);\n}\n\nif (customElements.get(\"turbo-stream\") === undefined) {\n  customElements.define(\"turbo-stream\", StreamElement);\n}\n\nif (customElements.get(\"turbo-stream-source\") === undefined) {\n  customElements.define(\"turbo-stream-source\", StreamSourceElement);\n}\n\n(() => {\n  const scriptElement = document.currentScript;\n  if (!scriptElement) return\n  if (scriptElement.hasAttribute(\"data-turbo-suppress-warning\")) return\n\n  let element = scriptElement.parentElement;\n  while (element) {\n    if (element == document.body) {\n      return console.warn(\n        unindent`\n        You are loading Turbo from a <script> element inside the <body> element. This is probably not what you meant to do!\n\n        Load your application\u2019s JavaScript bundle inside the <head> element instead. <script> elements in <body> are evaluated with each page change.\n\n        For more information, see: https://turbo.hotwired.dev/handbook/building#working-with-script-elements\n\n        \u2014\u2014\n        Suppress this warning by adding a \"data-turbo-suppress-warning\" attribute to: %s\n      `,\n        scriptElement.outerHTML\n      )\n    }\n\n    element = element.parentElement;\n  }\n})();\n\nwindow.Turbo = { ...Turbo, StreamActions };\nstart();\n\nexport { FetchEnctype, FetchMethod, FetchRequest, FetchResponse, FrameElement, FrameLoadingStyle, FrameRenderer, PageRenderer, PageSnapshot, StreamActions, StreamElement, StreamSourceElement, cache, config, connectStreamSource, disconnectStreamSource, fetchWithTurboHeaders as fetch, fetchEnctypeFromString, fetchMethodFromString, isSafe, morphBodyElements, morphChildren, morphElements, morphTurboFrameElements, sessionNavigator as navigator, registerAdapter, renderStreamMessage, session, setConfirmMethod, setFormMode, setProgressBarDelay, start, visit };\n", "let consumer\n\nexport async function getConsumer() {\n  return consumer || setConsumer(createConsumer().then(setConsumer))\n}\n\nexport function setConsumer(newConsumer) {\n  return consumer = newConsumer\n}\n\nexport async function createConsumer() {\n  const { createConsumer } = await import(/* webpackChunkName: \"actioncable\" */ \"@rails/actioncable/src\")\n  return createConsumer()\n}\n\nexport async function subscribeTo(channel, mixin) {\n  const { subscriptions } = await getConsumer()\n  return subscriptions.create(channel, mixin)\n}\n", "// Based on https://github.com/nathan7/snakeize\n//\n// This software is released under the MIT license:\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\nexport default function walk (obj) {\n    if (!obj || typeof obj !== 'object') return obj;\n    if (obj instanceof Date || obj instanceof RegExp) return obj;\n    if (Array.isArray(obj)) return obj.map(walk);\n    return Object.keys(obj).reduce(function (acc, key) {\n        var camel = key[0].toLowerCase() + key.slice(1).replace(/([A-Z]+)/g, function (m, x) {\n            return '_' + x.toLowerCase();\n        });\n        acc[camel] = walk(obj[key]);\n        return acc;\n    }, {});\n};", "import { connectStreamSource, disconnectStreamSource } from \"@hotwired/turbo\"\nimport { subscribeTo } from \"./cable\"\nimport snakeize from \"./snakeize\"\n\nclass TurboCableStreamSourceElement extends HTMLElement {\n  static observedAttributes = [\"channel\", \"signed-stream-name\"]\n\n  async connectedCallback() {\n    connectStreamSource(this)\n    this.subscription = await subscribeTo(this.channel, {\n      received: this.dispatchMessageEvent.bind(this),\n      connected: this.subscriptionConnected.bind(this),\n      disconnected: this.subscriptionDisconnected.bind(this)\n    })\n  }\n\n  disconnectedCallback() {\n    disconnectStreamSource(this)\n    if (this.subscription) this.subscription.unsubscribe()\n    this.subscriptionDisconnected()\n  }\n\n  attributeChangedCallback() {\n    if (this.subscription) {\n      this.disconnectedCallback()\n      this.connectedCallback()\n    }\n  }\n\n  dispatchMessageEvent(data) {\n    const event = new MessageEvent(\"message\", { data })\n    return this.dispatchEvent(event)\n  }\n\n  subscriptionConnected() {\n    this.setAttribute(\"connected\", \"\")\n  }\n\n  subscriptionDisconnected() {\n    this.removeAttribute(\"connected\")\n  }\n\n  get channel() {\n    const channel = this.getAttribute(\"channel\")\n    const signed_stream_name = this.getAttribute(\"signed-stream-name\")\n    return { channel, signed_stream_name, ...snakeize({ ...this.dataset }) }\n  }\n}\n\n\nif (customElements.get(\"turbo-cable-stream-source\") === undefined) {\n  customElements.define(\"turbo-cable-stream-source\", TurboCableStreamSourceElement)\n}\n", "export function encodeMethodIntoRequestBody(event) {\n  if (event.target instanceof HTMLFormElement) {\n    const { target: form, detail: { fetchOptions } } = event\n\n    form.addEventListener(\"turbo:submit-start\", ({ detail: { formSubmission: { submitter } } }) => {\n      const body = isBodyInit(fetchOptions.body) ? fetchOptions.body : new URLSearchParams()\n      const method = determineFetchMethod(submitter, body, form)\n\n      if (!/get/i.test(method)) {\n        if (/post/i.test(method)) {\n          body.delete(\"_method\")\n        } else {\n          body.set(\"_method\", method)\n        }\n\n        fetchOptions.method = \"post\"\n      }\n    }, { once: true })\n  }\n}\n\nfunction determineFetchMethod(submitter, body, form) {\n  const formMethod = determineFormMethod(submitter)\n  const overrideMethod = body.get(\"_method\")\n  const method = form.getAttribute(\"method\") || \"get\"\n\n  if (typeof formMethod == \"string\") {\n    return formMethod\n  } else if (typeof overrideMethod == \"string\") {\n    return overrideMethod\n  } else {\n    return method\n  }\n}\n\nfunction determineFormMethod(submitter) {\n  if (submitter instanceof HTMLButtonElement || submitter instanceof HTMLInputElement) {\n    // Rails 7 ActionView::Helpers::FormBuilder#button method has an override\n    // for formmethod if the button does not have name or value attributes\n    // set, which is the default. This means that if you use <%= f.button\n    // formmethod: :delete %>, it will generate a <button name=\"_method\"\n    // value=\"delete\" formmethod=\"post\">. Therefore, if the submitter's name\n    // is already _method, it's value attribute already contains the desired\n    // method.\n    if (submitter.name === '_method') {\n      return submitter.value\n    } else if (submitter.hasAttribute(\"formmethod\")) {\n      return submitter.formMethod\n    } else {\n      return null\n    }\n  } else {\n    return null\n  }\n}\n\nfunction isBodyInit(body) {\n  return body instanceof FormData || body instanceof URLSearchParams\n}\n", "import \"./cable_stream_source_element\"\n\nimport * as Turbo from \"@hotwired/turbo\"\nexport { Turbo }\n\nimport * as cable from \"./cable\"\nexport { cable }\n\nimport { encodeMethodIntoRequestBody } from \"./fetch_requests\"\n\nwindow.Turbo = Turbo\n\naddEventListener(\"turbo:before-fetch-request\", encodeMethodIntoRequestBody)\n", "/*\nStimulus 3.2.1\nCopyright \u00A9 2023 Basecamp, LLC\n */\nclass EventListener {\n    constructor(eventTarget, eventName, eventOptions) {\n        this.eventTarget = eventTarget;\n        this.eventName = eventName;\n        this.eventOptions = eventOptions;\n        this.unorderedBindings = new Set();\n    }\n    connect() {\n        this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n    }\n    disconnect() {\n        this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n    }\n    bindingConnected(binding) {\n        this.unorderedBindings.add(binding);\n    }\n    bindingDisconnected(binding) {\n        this.unorderedBindings.delete(binding);\n    }\n    handleEvent(event) {\n        const extendedEvent = extendEvent(event);\n        for (const binding of this.bindings) {\n            if (extendedEvent.immediatePropagationStopped) {\n                break;\n            }\n            else {\n                binding.handleEvent(extendedEvent);\n            }\n        }\n    }\n    hasBindings() {\n        return this.unorderedBindings.size > 0;\n    }\n    get bindings() {\n        return Array.from(this.unorderedBindings).sort((left, right) => {\n            const leftIndex = left.index, rightIndex = right.index;\n            return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n        });\n    }\n}\nfunction extendEvent(event) {\n    if (\"immediatePropagationStopped\" in event) {\n        return event;\n    }\n    else {\n        const { stopImmediatePropagation } = event;\n        return Object.assign(event, {\n            immediatePropagationStopped: false,\n            stopImmediatePropagation() {\n                this.immediatePropagationStopped = true;\n                stopImmediatePropagation.call(this);\n            },\n        });\n    }\n}\n\nclass Dispatcher {\n    constructor(application) {\n        this.application = application;\n        this.eventListenerMaps = new Map();\n        this.started = false;\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.eventListeners.forEach((eventListener) => eventListener.connect());\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.started = false;\n            this.eventListeners.forEach((eventListener) => eventListener.disconnect());\n        }\n    }\n    get eventListeners() {\n        return Array.from(this.eventListenerMaps.values()).reduce((listeners, map) => listeners.concat(Array.from(map.values())), []);\n    }\n    bindingConnected(binding) {\n        this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n    }\n    bindingDisconnected(binding, clearEventListeners = false) {\n        this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n        if (clearEventListeners)\n            this.clearEventListenersForBinding(binding);\n    }\n    handleError(error, message, detail = {}) {\n        this.application.handleError(error, `Error ${message}`, detail);\n    }\n    clearEventListenersForBinding(binding) {\n        const eventListener = this.fetchEventListenerForBinding(binding);\n        if (!eventListener.hasBindings()) {\n            eventListener.disconnect();\n            this.removeMappedEventListenerFor(binding);\n        }\n    }\n    removeMappedEventListenerFor(binding) {\n        const { eventTarget, eventName, eventOptions } = binding;\n        const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n        const cacheKey = this.cacheKey(eventName, eventOptions);\n        eventListenerMap.delete(cacheKey);\n        if (eventListenerMap.size == 0)\n            this.eventListenerMaps.delete(eventTarget);\n    }\n    fetchEventListenerForBinding(binding) {\n        const { eventTarget, eventName, eventOptions } = binding;\n        return this.fetchEventListener(eventTarget, eventName, eventOptions);\n    }\n    fetchEventListener(eventTarget, eventName, eventOptions) {\n        const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n        const cacheKey = this.cacheKey(eventName, eventOptions);\n        let eventListener = eventListenerMap.get(cacheKey);\n        if (!eventListener) {\n            eventListener = this.createEventListener(eventTarget, eventName, eventOptions);\n            eventListenerMap.set(cacheKey, eventListener);\n        }\n        return eventListener;\n    }\n    createEventListener(eventTarget, eventName, eventOptions) {\n        const eventListener = new EventListener(eventTarget, eventName, eventOptions);\n        if (this.started) {\n            eventListener.connect();\n        }\n        return eventListener;\n    }\n    fetchEventListenerMapForEventTarget(eventTarget) {\n        let eventListenerMap = this.eventListenerMaps.get(eventTarget);\n        if (!eventListenerMap) {\n            eventListenerMap = new Map();\n            this.eventListenerMaps.set(eventTarget, eventListenerMap);\n        }\n        return eventListenerMap;\n    }\n    cacheKey(eventName, eventOptions) {\n        const parts = [eventName];\n        Object.keys(eventOptions)\n            .sort()\n            .forEach((key) => {\n            parts.push(`${eventOptions[key] ? \"\" : \"!\"}${key}`);\n        });\n        return parts.join(\":\");\n    }\n}\n\nconst defaultActionDescriptorFilters = {\n    stop({ event, value }) {\n        if (value)\n            event.stopPropagation();\n        return true;\n    },\n    prevent({ event, value }) {\n        if (value)\n            event.preventDefault();\n        return true;\n    },\n    self({ event, value, element }) {\n        if (value) {\n            return element === event.target;\n        }\n        else {\n            return true;\n        }\n    },\n};\nconst descriptorPattern = /^(?:(?:([^.]+?)\\+)?(.+?)(?:\\.(.+?))?(?:@(window|document))?->)?(.+?)(?:#([^:]+?))(?::(.+))?$/;\nfunction parseActionDescriptorString(descriptorString) {\n    const source = descriptorString.trim();\n    const matches = source.match(descriptorPattern) || [];\n    let eventName = matches[2];\n    let keyFilter = matches[3];\n    if (keyFilter && ![\"keydown\", \"keyup\", \"keypress\"].includes(eventName)) {\n        eventName += `.${keyFilter}`;\n        keyFilter = \"\";\n    }\n    return {\n        eventTarget: parseEventTarget(matches[4]),\n        eventName,\n        eventOptions: matches[7] ? parseEventOptions(matches[7]) : {},\n        identifier: matches[5],\n        methodName: matches[6],\n        keyFilter: matches[1] || keyFilter,\n    };\n}\nfunction parseEventTarget(eventTargetName) {\n    if (eventTargetName == \"window\") {\n        return window;\n    }\n    else if (eventTargetName == \"document\") {\n        return document;\n    }\n}\nfunction parseEventOptions(eventOptions) {\n    return eventOptions\n        .split(\":\")\n        .reduce((options, token) => Object.assign(options, { [token.replace(/^!/, \"\")]: !/^!/.test(token) }), {});\n}\nfunction stringifyEventTarget(eventTarget) {\n    if (eventTarget == window) {\n        return \"window\";\n    }\n    else if (eventTarget == document) {\n        return \"document\";\n    }\n}\n\nfunction camelize(value) {\n    return value.replace(/(?:[_-])([a-z0-9])/g, (_, char) => char.toUpperCase());\n}\nfunction namespaceCamelize(value) {\n    return camelize(value.replace(/--/g, \"-\").replace(/__/g, \"_\"));\n}\nfunction capitalize(value) {\n    return value.charAt(0).toUpperCase() + value.slice(1);\n}\nfunction dasherize(value) {\n    return value.replace(/([A-Z])/g, (_, char) => `-${char.toLowerCase()}`);\n}\nfunction tokenize(value) {\n    return value.match(/[^\\s]+/g) || [];\n}\n\nfunction isSomething(object) {\n    return object !== null && object !== undefined;\n}\nfunction hasProperty(object, property) {\n    return Object.prototype.hasOwnProperty.call(object, property);\n}\n\nconst allModifiers = [\"meta\", \"ctrl\", \"alt\", \"shift\"];\nclass Action {\n    constructor(element, index, descriptor, schema) {\n        this.element = element;\n        this.index = index;\n        this.eventTarget = descriptor.eventTarget || element;\n        this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n        this.eventOptions = descriptor.eventOptions || {};\n        this.identifier = descriptor.identifier || error(\"missing identifier\");\n        this.methodName = descriptor.methodName || error(\"missing method name\");\n        this.keyFilter = descriptor.keyFilter || \"\";\n        this.schema = schema;\n    }\n    static forToken(token, schema) {\n        return new this(token.element, token.index, parseActionDescriptorString(token.content), schema);\n    }\n    toString() {\n        const eventFilter = this.keyFilter ? `.${this.keyFilter}` : \"\";\n        const eventTarget = this.eventTargetName ? `@${this.eventTargetName}` : \"\";\n        return `${this.eventName}${eventFilter}${eventTarget}->${this.identifier}#${this.methodName}`;\n    }\n    shouldIgnoreKeyboardEvent(event) {\n        if (!this.keyFilter) {\n            return false;\n        }\n        const filters = this.keyFilter.split(\"+\");\n        if (this.keyFilterDissatisfied(event, filters)) {\n            return true;\n        }\n        const standardFilter = filters.filter((key) => !allModifiers.includes(key))[0];\n        if (!standardFilter) {\n            return false;\n        }\n        if (!hasProperty(this.keyMappings, standardFilter)) {\n            error(`contains unknown key filter: ${this.keyFilter}`);\n        }\n        return this.keyMappings[standardFilter].toLowerCase() !== event.key.toLowerCase();\n    }\n    shouldIgnoreMouseEvent(event) {\n        if (!this.keyFilter) {\n            return false;\n        }\n        const filters = [this.keyFilter];\n        if (this.keyFilterDissatisfied(event, filters)) {\n            return true;\n        }\n        return false;\n    }\n    get params() {\n        const params = {};\n        const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`, \"i\");\n        for (const { name, value } of Array.from(this.element.attributes)) {\n            const match = name.match(pattern);\n            const key = match && match[1];\n            if (key) {\n                params[camelize(key)] = typecast(value);\n            }\n        }\n        return params;\n    }\n    get eventTargetName() {\n        return stringifyEventTarget(this.eventTarget);\n    }\n    get keyMappings() {\n        return this.schema.keyMappings;\n    }\n    keyFilterDissatisfied(event, filters) {\n        const [meta, ctrl, alt, shift] = allModifiers.map((modifier) => filters.includes(modifier));\n        return event.metaKey !== meta || event.ctrlKey !== ctrl || event.altKey !== alt || event.shiftKey !== shift;\n    }\n}\nconst defaultEventNames = {\n    a: () => \"click\",\n    button: () => \"click\",\n    form: () => \"submit\",\n    details: () => \"toggle\",\n    input: (e) => (e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\"),\n    select: () => \"change\",\n    textarea: () => \"input\",\n};\nfunction getDefaultEventNameForElement(element) {\n    const tagName = element.tagName.toLowerCase();\n    if (tagName in defaultEventNames) {\n        return defaultEventNames[tagName](element);\n    }\n}\nfunction error(message) {\n    throw new Error(message);\n}\nfunction typecast(value) {\n    try {\n        return JSON.parse(value);\n    }\n    catch (o_O) {\n        return value;\n    }\n}\n\nclass Binding {\n    constructor(context, action) {\n        this.context = context;\n        this.action = action;\n    }\n    get index() {\n        return this.action.index;\n    }\n    get eventTarget() {\n        return this.action.eventTarget;\n    }\n    get eventOptions() {\n        return this.action.eventOptions;\n    }\n    get identifier() {\n        return this.context.identifier;\n    }\n    handleEvent(event) {\n        const actionEvent = this.prepareActionEvent(event);\n        if (this.willBeInvokedByEvent(event) && this.applyEventModifiers(actionEvent)) {\n            this.invokeWithEvent(actionEvent);\n        }\n    }\n    get eventName() {\n        return this.action.eventName;\n    }\n    get method() {\n        const method = this.controller[this.methodName];\n        if (typeof method == \"function\") {\n            return method;\n        }\n        throw new Error(`Action \"${this.action}\" references undefined method \"${this.methodName}\"`);\n    }\n    applyEventModifiers(event) {\n        const { element } = this.action;\n        const { actionDescriptorFilters } = this.context.application;\n        const { controller } = this.context;\n        let passes = true;\n        for (const [name, value] of Object.entries(this.eventOptions)) {\n            if (name in actionDescriptorFilters) {\n                const filter = actionDescriptorFilters[name];\n                passes = passes && filter({ name, value, event, element, controller });\n            }\n            else {\n                continue;\n            }\n        }\n        return passes;\n    }\n    prepareActionEvent(event) {\n        return Object.assign(event, { params: this.action.params });\n    }\n    invokeWithEvent(event) {\n        const { target, currentTarget } = event;\n        try {\n            this.method.call(this.controller, event);\n            this.context.logDebugActivity(this.methodName, { event, target, currentTarget, action: this.methodName });\n        }\n        catch (error) {\n            const { identifier, controller, element, index } = this;\n            const detail = { identifier, controller, element, index, event };\n            this.context.handleError(error, `invoking action \"${this.action}\"`, detail);\n        }\n    }\n    willBeInvokedByEvent(event) {\n        const eventTarget = event.target;\n        if (event instanceof KeyboardEvent && this.action.shouldIgnoreKeyboardEvent(event)) {\n            return false;\n        }\n        if (event instanceof MouseEvent && this.action.shouldIgnoreMouseEvent(event)) {\n            return false;\n        }\n        if (this.element === eventTarget) {\n            return true;\n        }\n        else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n            return this.scope.containsElement(eventTarget);\n        }\n        else {\n            return this.scope.containsElement(this.action.element);\n        }\n    }\n    get controller() {\n        return this.context.controller;\n    }\n    get methodName() {\n        return this.action.methodName;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get scope() {\n        return this.context.scope;\n    }\n}\n\nclass ElementObserver {\n    constructor(element, delegate) {\n        this.mutationObserverInit = { attributes: true, childList: true, subtree: true };\n        this.element = element;\n        this.started = false;\n        this.delegate = delegate;\n        this.elements = new Set();\n        this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.mutationObserver.observe(this.element, this.mutationObserverInit);\n            this.refresh();\n        }\n    }\n    pause(callback) {\n        if (this.started) {\n            this.mutationObserver.disconnect();\n            this.started = false;\n        }\n        callback();\n        if (!this.started) {\n            this.mutationObserver.observe(this.element, this.mutationObserverInit);\n            this.started = true;\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.mutationObserver.takeRecords();\n            this.mutationObserver.disconnect();\n            this.started = false;\n        }\n    }\n    refresh() {\n        if (this.started) {\n            const matches = new Set(this.matchElementsInTree());\n            for (const element of Array.from(this.elements)) {\n                if (!matches.has(element)) {\n                    this.removeElement(element);\n                }\n            }\n            for (const element of Array.from(matches)) {\n                this.addElement(element);\n            }\n        }\n    }\n    processMutations(mutations) {\n        if (this.started) {\n            for (const mutation of mutations) {\n                this.processMutation(mutation);\n            }\n        }\n    }\n    processMutation(mutation) {\n        if (mutation.type == \"attributes\") {\n            this.processAttributeChange(mutation.target, mutation.attributeName);\n        }\n        else if (mutation.type == \"childList\") {\n            this.processRemovedNodes(mutation.removedNodes);\n            this.processAddedNodes(mutation.addedNodes);\n        }\n    }\n    processAttributeChange(element, attributeName) {\n        if (this.elements.has(element)) {\n            if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n                this.delegate.elementAttributeChanged(element, attributeName);\n            }\n            else {\n                this.removeElement(element);\n            }\n        }\n        else if (this.matchElement(element)) {\n            this.addElement(element);\n        }\n    }\n    processRemovedNodes(nodes) {\n        for (const node of Array.from(nodes)) {\n            const element = this.elementFromNode(node);\n            if (element) {\n                this.processTree(element, this.removeElement);\n            }\n        }\n    }\n    processAddedNodes(nodes) {\n        for (const node of Array.from(nodes)) {\n            const element = this.elementFromNode(node);\n            if (element && this.elementIsActive(element)) {\n                this.processTree(element, this.addElement);\n            }\n        }\n    }\n    matchElement(element) {\n        return this.delegate.matchElement(element);\n    }\n    matchElementsInTree(tree = this.element) {\n        return this.delegate.matchElementsInTree(tree);\n    }\n    processTree(tree, processor) {\n        for (const element of this.matchElementsInTree(tree)) {\n            processor.call(this, element);\n        }\n    }\n    elementFromNode(node) {\n        if (node.nodeType == Node.ELEMENT_NODE) {\n            return node;\n        }\n    }\n    elementIsActive(element) {\n        if (element.isConnected != this.element.isConnected) {\n            return false;\n        }\n        else {\n            return this.element.contains(element);\n        }\n    }\n    addElement(element) {\n        if (!this.elements.has(element)) {\n            if (this.elementIsActive(element)) {\n                this.elements.add(element);\n                if (this.delegate.elementMatched) {\n                    this.delegate.elementMatched(element);\n                }\n            }\n        }\n    }\n    removeElement(element) {\n        if (this.elements.has(element)) {\n            this.elements.delete(element);\n            if (this.delegate.elementUnmatched) {\n                this.delegate.elementUnmatched(element);\n            }\n        }\n    }\n}\n\nclass AttributeObserver {\n    constructor(element, attributeName, delegate) {\n        this.attributeName = attributeName;\n        this.delegate = delegate;\n        this.elementObserver = new ElementObserver(element, this);\n    }\n    get element() {\n        return this.elementObserver.element;\n    }\n    get selector() {\n        return `[${this.attributeName}]`;\n    }\n    start() {\n        this.elementObserver.start();\n    }\n    pause(callback) {\n        this.elementObserver.pause(callback);\n    }\n    stop() {\n        this.elementObserver.stop();\n    }\n    refresh() {\n        this.elementObserver.refresh();\n    }\n    get started() {\n        return this.elementObserver.started;\n    }\n    matchElement(element) {\n        return element.hasAttribute(this.attributeName);\n    }\n    matchElementsInTree(tree) {\n        const match = this.matchElement(tree) ? [tree] : [];\n        const matches = Array.from(tree.querySelectorAll(this.selector));\n        return match.concat(matches);\n    }\n    elementMatched(element) {\n        if (this.delegate.elementMatchedAttribute) {\n            this.delegate.elementMatchedAttribute(element, this.attributeName);\n        }\n    }\n    elementUnmatched(element) {\n        if (this.delegate.elementUnmatchedAttribute) {\n            this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n        }\n    }\n    elementAttributeChanged(element, attributeName) {\n        if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n            this.delegate.elementAttributeValueChanged(element, attributeName);\n        }\n    }\n}\n\nfunction add(map, key, value) {\n    fetch(map, key).add(value);\n}\nfunction del(map, key, value) {\n    fetch(map, key).delete(value);\n    prune(map, key);\n}\nfunction fetch(map, key) {\n    let values = map.get(key);\n    if (!values) {\n        values = new Set();\n        map.set(key, values);\n    }\n    return values;\n}\nfunction prune(map, key) {\n    const values = map.get(key);\n    if (values != null && values.size == 0) {\n        map.delete(key);\n    }\n}\n\nclass Multimap {\n    constructor() {\n        this.valuesByKey = new Map();\n    }\n    get keys() {\n        return Array.from(this.valuesByKey.keys());\n    }\n    get values() {\n        const sets = Array.from(this.valuesByKey.values());\n        return sets.reduce((values, set) => values.concat(Array.from(set)), []);\n    }\n    get size() {\n        const sets = Array.from(this.valuesByKey.values());\n        return sets.reduce((size, set) => size + set.size, 0);\n    }\n    add(key, value) {\n        add(this.valuesByKey, key, value);\n    }\n    delete(key, value) {\n        del(this.valuesByKey, key, value);\n    }\n    has(key, value) {\n        const values = this.valuesByKey.get(key);\n        return values != null && values.has(value);\n    }\n    hasKey(key) {\n        return this.valuesByKey.has(key);\n    }\n    hasValue(value) {\n        const sets = Array.from(this.valuesByKey.values());\n        return sets.some((set) => set.has(value));\n    }\n    getValuesForKey(key) {\n        const values = this.valuesByKey.get(key);\n        return values ? Array.from(values) : [];\n    }\n    getKeysForValue(value) {\n        return Array.from(this.valuesByKey)\n            .filter(([_key, values]) => values.has(value))\n            .map(([key, _values]) => key);\n    }\n}\n\nclass IndexedMultimap extends Multimap {\n    constructor() {\n        super();\n        this.keysByValue = new Map();\n    }\n    get values() {\n        return Array.from(this.keysByValue.keys());\n    }\n    add(key, value) {\n        super.add(key, value);\n        add(this.keysByValue, value, key);\n    }\n    delete(key, value) {\n        super.delete(key, value);\n        del(this.keysByValue, value, key);\n    }\n    hasValue(value) {\n        return this.keysByValue.has(value);\n    }\n    getKeysForValue(value) {\n        const set = this.keysByValue.get(value);\n        return set ? Array.from(set) : [];\n    }\n}\n\nclass SelectorObserver {\n    constructor(element, selector, delegate, details) {\n        this._selector = selector;\n        this.details = details;\n        this.elementObserver = new ElementObserver(element, this);\n        this.delegate = delegate;\n        this.matchesByElement = new Multimap();\n    }\n    get started() {\n        return this.elementObserver.started;\n    }\n    get selector() {\n        return this._selector;\n    }\n    set selector(selector) {\n        this._selector = selector;\n        this.refresh();\n    }\n    start() {\n        this.elementObserver.start();\n    }\n    pause(callback) {\n        this.elementObserver.pause(callback);\n    }\n    stop() {\n        this.elementObserver.stop();\n    }\n    refresh() {\n        this.elementObserver.refresh();\n    }\n    get element() {\n        return this.elementObserver.element;\n    }\n    matchElement(element) {\n        const { selector } = this;\n        if (selector) {\n            const matches = element.matches(selector);\n            if (this.delegate.selectorMatchElement) {\n                return matches && this.delegate.selectorMatchElement(element, this.details);\n            }\n            return matches;\n        }\n        else {\n            return false;\n        }\n    }\n    matchElementsInTree(tree) {\n        const { selector } = this;\n        if (selector) {\n            const match = this.matchElement(tree) ? [tree] : [];\n            const matches = Array.from(tree.querySelectorAll(selector)).filter((match) => this.matchElement(match));\n            return match.concat(matches);\n        }\n        else {\n            return [];\n        }\n    }\n    elementMatched(element) {\n        const { selector } = this;\n        if (selector) {\n            this.selectorMatched(element, selector);\n        }\n    }\n    elementUnmatched(element) {\n        const selectors = this.matchesByElement.getKeysForValue(element);\n        for (const selector of selectors) {\n            this.selectorUnmatched(element, selector);\n        }\n    }\n    elementAttributeChanged(element, _attributeName) {\n        const { selector } = this;\n        if (selector) {\n            const matches = this.matchElement(element);\n            const matchedBefore = this.matchesByElement.has(selector, element);\n            if (matches && !matchedBefore) {\n                this.selectorMatched(element, selector);\n            }\n            else if (!matches && matchedBefore) {\n                this.selectorUnmatched(element, selector);\n            }\n        }\n    }\n    selectorMatched(element, selector) {\n        this.delegate.selectorMatched(element, selector, this.details);\n        this.matchesByElement.add(selector, element);\n    }\n    selectorUnmatched(element, selector) {\n        this.delegate.selectorUnmatched(element, selector, this.details);\n        this.matchesByElement.delete(selector, element);\n    }\n}\n\nclass StringMapObserver {\n    constructor(element, delegate) {\n        this.element = element;\n        this.delegate = delegate;\n        this.started = false;\n        this.stringMap = new Map();\n        this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.mutationObserver.observe(this.element, { attributes: true, attributeOldValue: true });\n            this.refresh();\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.mutationObserver.takeRecords();\n            this.mutationObserver.disconnect();\n            this.started = false;\n        }\n    }\n    refresh() {\n        if (this.started) {\n            for (const attributeName of this.knownAttributeNames) {\n                this.refreshAttribute(attributeName, null);\n            }\n        }\n    }\n    processMutations(mutations) {\n        if (this.started) {\n            for (const mutation of mutations) {\n                this.processMutation(mutation);\n            }\n        }\n    }\n    processMutation(mutation) {\n        const attributeName = mutation.attributeName;\n        if (attributeName) {\n            this.refreshAttribute(attributeName, mutation.oldValue);\n        }\n    }\n    refreshAttribute(attributeName, oldValue) {\n        const key = this.delegate.getStringMapKeyForAttribute(attributeName);\n        if (key != null) {\n            if (!this.stringMap.has(attributeName)) {\n                this.stringMapKeyAdded(key, attributeName);\n            }\n            const value = this.element.getAttribute(attributeName);\n            if (this.stringMap.get(attributeName) != value) {\n                this.stringMapValueChanged(value, key, oldValue);\n            }\n            if (value == null) {\n                const oldValue = this.stringMap.get(attributeName);\n                this.stringMap.delete(attributeName);\n                if (oldValue)\n                    this.stringMapKeyRemoved(key, attributeName, oldValue);\n            }\n            else {\n                this.stringMap.set(attributeName, value);\n            }\n        }\n    }\n    stringMapKeyAdded(key, attributeName) {\n        if (this.delegate.stringMapKeyAdded) {\n            this.delegate.stringMapKeyAdded(key, attributeName);\n        }\n    }\n    stringMapValueChanged(value, key, oldValue) {\n        if (this.delegate.stringMapValueChanged) {\n            this.delegate.stringMapValueChanged(value, key, oldValue);\n        }\n    }\n    stringMapKeyRemoved(key, attributeName, oldValue) {\n        if (this.delegate.stringMapKeyRemoved) {\n            this.delegate.stringMapKeyRemoved(key, attributeName, oldValue);\n        }\n    }\n    get knownAttributeNames() {\n        return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n    }\n    get currentAttributeNames() {\n        return Array.from(this.element.attributes).map((attribute) => attribute.name);\n    }\n    get recordedAttributeNames() {\n        return Array.from(this.stringMap.keys());\n    }\n}\n\nclass TokenListObserver {\n    constructor(element, attributeName, delegate) {\n        this.attributeObserver = new AttributeObserver(element, attributeName, this);\n        this.delegate = delegate;\n        this.tokensByElement = new Multimap();\n    }\n    get started() {\n        return this.attributeObserver.started;\n    }\n    start() {\n        this.attributeObserver.start();\n    }\n    pause(callback) {\n        this.attributeObserver.pause(callback);\n    }\n    stop() {\n        this.attributeObserver.stop();\n    }\n    refresh() {\n        this.attributeObserver.refresh();\n    }\n    get element() {\n        return this.attributeObserver.element;\n    }\n    get attributeName() {\n        return this.attributeObserver.attributeName;\n    }\n    elementMatchedAttribute(element) {\n        this.tokensMatched(this.readTokensForElement(element));\n    }\n    elementAttributeValueChanged(element) {\n        const [unmatchedTokens, matchedTokens] = this.refreshTokensForElement(element);\n        this.tokensUnmatched(unmatchedTokens);\n        this.tokensMatched(matchedTokens);\n    }\n    elementUnmatchedAttribute(element) {\n        this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n    }\n    tokensMatched(tokens) {\n        tokens.forEach((token) => this.tokenMatched(token));\n    }\n    tokensUnmatched(tokens) {\n        tokens.forEach((token) => this.tokenUnmatched(token));\n    }\n    tokenMatched(token) {\n        this.delegate.tokenMatched(token);\n        this.tokensByElement.add(token.element, token);\n    }\n    tokenUnmatched(token) {\n        this.delegate.tokenUnmatched(token);\n        this.tokensByElement.delete(token.element, token);\n    }\n    refreshTokensForElement(element) {\n        const previousTokens = this.tokensByElement.getValuesForKey(element);\n        const currentTokens = this.readTokensForElement(element);\n        const firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(([previousToken, currentToken]) => !tokensAreEqual(previousToken, currentToken));\n        if (firstDifferingIndex == -1) {\n            return [[], []];\n        }\n        else {\n            return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n        }\n    }\n    readTokensForElement(element) {\n        const attributeName = this.attributeName;\n        const tokenString = element.getAttribute(attributeName) || \"\";\n        return parseTokenString(tokenString, element, attributeName);\n    }\n}\nfunction parseTokenString(tokenString, element, attributeName) {\n    return tokenString\n        .trim()\n        .split(/\\s+/)\n        .filter((content) => content.length)\n        .map((content, index) => ({ element, attributeName, content, index }));\n}\nfunction zip(left, right) {\n    const length = Math.max(left.length, right.length);\n    return Array.from({ length }, (_, index) => [left[index], right[index]]);\n}\nfunction tokensAreEqual(left, right) {\n    return left && right && left.index == right.index && left.content == right.content;\n}\n\nclass ValueListObserver {\n    constructor(element, attributeName, delegate) {\n        this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n        this.delegate = delegate;\n        this.parseResultsByToken = new WeakMap();\n        this.valuesByTokenByElement = new WeakMap();\n    }\n    get started() {\n        return this.tokenListObserver.started;\n    }\n    start() {\n        this.tokenListObserver.start();\n    }\n    stop() {\n        this.tokenListObserver.stop();\n    }\n    refresh() {\n        this.tokenListObserver.refresh();\n    }\n    get element() {\n        return this.tokenListObserver.element;\n    }\n    get attributeName() {\n        return this.tokenListObserver.attributeName;\n    }\n    tokenMatched(token) {\n        const { element } = token;\n        const { value } = this.fetchParseResultForToken(token);\n        if (value) {\n            this.fetchValuesByTokenForElement(element).set(token, value);\n            this.delegate.elementMatchedValue(element, value);\n        }\n    }\n    tokenUnmatched(token) {\n        const { element } = token;\n        const { value } = this.fetchParseResultForToken(token);\n        if (value) {\n            this.fetchValuesByTokenForElement(element).delete(token);\n            this.delegate.elementUnmatchedValue(element, value);\n        }\n    }\n    fetchParseResultForToken(token) {\n        let parseResult = this.parseResultsByToken.get(token);\n        if (!parseResult) {\n            parseResult = this.parseToken(token);\n            this.parseResultsByToken.set(token, parseResult);\n        }\n        return parseResult;\n    }\n    fetchValuesByTokenForElement(element) {\n        let valuesByToken = this.valuesByTokenByElement.get(element);\n        if (!valuesByToken) {\n            valuesByToken = new Map();\n            this.valuesByTokenByElement.set(element, valuesByToken);\n        }\n        return valuesByToken;\n    }\n    parseToken(token) {\n        try {\n            const value = this.delegate.parseValueForToken(token);\n            return { value };\n        }\n        catch (error) {\n            return { error };\n        }\n    }\n}\n\nclass BindingObserver {\n    constructor(context, delegate) {\n        this.context = context;\n        this.delegate = delegate;\n        this.bindingsByAction = new Map();\n    }\n    start() {\n        if (!this.valueListObserver) {\n            this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n            this.valueListObserver.start();\n        }\n    }\n    stop() {\n        if (this.valueListObserver) {\n            this.valueListObserver.stop();\n            delete this.valueListObserver;\n            this.disconnectAllActions();\n        }\n    }\n    get element() {\n        return this.context.element;\n    }\n    get identifier() {\n        return this.context.identifier;\n    }\n    get actionAttribute() {\n        return this.schema.actionAttribute;\n    }\n    get schema() {\n        return this.context.schema;\n    }\n    get bindings() {\n        return Array.from(this.bindingsByAction.values());\n    }\n    connectAction(action) {\n        const binding = new Binding(this.context, action);\n        this.bindingsByAction.set(action, binding);\n        this.delegate.bindingConnected(binding);\n    }\n    disconnectAction(action) {\n        const binding = this.bindingsByAction.get(action);\n        if (binding) {\n            this.bindingsByAction.delete(action);\n            this.delegate.bindingDisconnected(binding);\n        }\n    }\n    disconnectAllActions() {\n        this.bindings.forEach((binding) => this.delegate.bindingDisconnected(binding, true));\n        this.bindingsByAction.clear();\n    }\n    parseValueForToken(token) {\n        const action = Action.forToken(token, this.schema);\n        if (action.identifier == this.identifier) {\n            return action;\n        }\n    }\n    elementMatchedValue(element, action) {\n        this.connectAction(action);\n    }\n    elementUnmatchedValue(element, action) {\n        this.disconnectAction(action);\n    }\n}\n\nclass ValueObserver {\n    constructor(context, receiver) {\n        this.context = context;\n        this.receiver = receiver;\n        this.stringMapObserver = new StringMapObserver(this.element, this);\n        this.valueDescriptorMap = this.controller.valueDescriptorMap;\n    }\n    start() {\n        this.stringMapObserver.start();\n        this.invokeChangedCallbacksForDefaultValues();\n    }\n    stop() {\n        this.stringMapObserver.stop();\n    }\n    get element() {\n        return this.context.element;\n    }\n    get controller() {\n        return this.context.controller;\n    }\n    getStringMapKeyForAttribute(attributeName) {\n        if (attributeName in this.valueDescriptorMap) {\n            return this.valueDescriptorMap[attributeName].name;\n        }\n    }\n    stringMapKeyAdded(key, attributeName) {\n        const descriptor = this.valueDescriptorMap[attributeName];\n        if (!this.hasValue(key)) {\n            this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), descriptor.writer(descriptor.defaultValue));\n        }\n    }\n    stringMapValueChanged(value, name, oldValue) {\n        const descriptor = this.valueDescriptorNameMap[name];\n        if (value === null)\n            return;\n        if (oldValue === null) {\n            oldValue = descriptor.writer(descriptor.defaultValue);\n        }\n        this.invokeChangedCallback(name, value, oldValue);\n    }\n    stringMapKeyRemoved(key, attributeName, oldValue) {\n        const descriptor = this.valueDescriptorNameMap[key];\n        if (this.hasValue(key)) {\n            this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), oldValue);\n        }\n        else {\n            this.invokeChangedCallback(key, descriptor.writer(descriptor.defaultValue), oldValue);\n        }\n    }\n    invokeChangedCallbacksForDefaultValues() {\n        for (const { key, name, defaultValue, writer } of this.valueDescriptors) {\n            if (defaultValue != undefined && !this.controller.data.has(key)) {\n                this.invokeChangedCallback(name, writer(defaultValue), undefined);\n            }\n        }\n    }\n    invokeChangedCallback(name, rawValue, rawOldValue) {\n        const changedMethodName = `${name}Changed`;\n        const changedMethod = this.receiver[changedMethodName];\n        if (typeof changedMethod == \"function\") {\n            const descriptor = this.valueDescriptorNameMap[name];\n            try {\n                const value = descriptor.reader(rawValue);\n                let oldValue = rawOldValue;\n                if (rawOldValue) {\n                    oldValue = descriptor.reader(rawOldValue);\n                }\n                changedMethod.call(this.receiver, value, oldValue);\n            }\n            catch (error) {\n                if (error instanceof TypeError) {\n                    error.message = `Stimulus Value \"${this.context.identifier}.${descriptor.name}\" - ${error.message}`;\n                }\n                throw error;\n            }\n        }\n    }\n    get valueDescriptors() {\n        const { valueDescriptorMap } = this;\n        return Object.keys(valueDescriptorMap).map((key) => valueDescriptorMap[key]);\n    }\n    get valueDescriptorNameMap() {\n        const descriptors = {};\n        Object.keys(this.valueDescriptorMap).forEach((key) => {\n            const descriptor = this.valueDescriptorMap[key];\n            descriptors[descriptor.name] = descriptor;\n        });\n        return descriptors;\n    }\n    hasValue(attributeName) {\n        const descriptor = this.valueDescriptorNameMap[attributeName];\n        const hasMethodName = `has${capitalize(descriptor.name)}`;\n        return this.receiver[hasMethodName];\n    }\n}\n\nclass TargetObserver {\n    constructor(context, delegate) {\n        this.context = context;\n        this.delegate = delegate;\n        this.targetsByName = new Multimap();\n    }\n    start() {\n        if (!this.tokenListObserver) {\n            this.tokenListObserver = new TokenListObserver(this.element, this.attributeName, this);\n            this.tokenListObserver.start();\n        }\n    }\n    stop() {\n        if (this.tokenListObserver) {\n            this.disconnectAllTargets();\n            this.tokenListObserver.stop();\n            delete this.tokenListObserver;\n        }\n    }\n    tokenMatched({ element, content: name }) {\n        if (this.scope.containsElement(element)) {\n            this.connectTarget(element, name);\n        }\n    }\n    tokenUnmatched({ element, content: name }) {\n        this.disconnectTarget(element, name);\n    }\n    connectTarget(element, name) {\n        var _a;\n        if (!this.targetsByName.has(name, element)) {\n            this.targetsByName.add(name, element);\n            (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetConnected(element, name));\n        }\n    }\n    disconnectTarget(element, name) {\n        var _a;\n        if (this.targetsByName.has(name, element)) {\n            this.targetsByName.delete(name, element);\n            (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetDisconnected(element, name));\n        }\n    }\n    disconnectAllTargets() {\n        for (const name of this.targetsByName.keys) {\n            for (const element of this.targetsByName.getValuesForKey(name)) {\n                this.disconnectTarget(element, name);\n            }\n        }\n    }\n    get attributeName() {\n        return `data-${this.context.identifier}-target`;\n    }\n    get element() {\n        return this.context.element;\n    }\n    get scope() {\n        return this.context.scope;\n    }\n}\n\nfunction readInheritableStaticArrayValues(constructor, propertyName) {\n    const ancestors = getAncestorsForConstructor(constructor);\n    return Array.from(ancestors.reduce((values, constructor) => {\n        getOwnStaticArrayValues(constructor, propertyName).forEach((name) => values.add(name));\n        return values;\n    }, new Set()));\n}\nfunction readInheritableStaticObjectPairs(constructor, propertyName) {\n    const ancestors = getAncestorsForConstructor(constructor);\n    return ancestors.reduce((pairs, constructor) => {\n        pairs.push(...getOwnStaticObjectPairs(constructor, propertyName));\n        return pairs;\n    }, []);\n}\nfunction getAncestorsForConstructor(constructor) {\n    const ancestors = [];\n    while (constructor) {\n        ancestors.push(constructor);\n        constructor = Object.getPrototypeOf(constructor);\n    }\n    return ancestors.reverse();\n}\nfunction getOwnStaticArrayValues(constructor, propertyName) {\n    const definition = constructor[propertyName];\n    return Array.isArray(definition) ? definition : [];\n}\nfunction getOwnStaticObjectPairs(constructor, propertyName) {\n    const definition = constructor[propertyName];\n    return definition ? Object.keys(definition).map((key) => [key, definition[key]]) : [];\n}\n\nclass OutletObserver {\n    constructor(context, delegate) {\n        this.started = false;\n        this.context = context;\n        this.delegate = delegate;\n        this.outletsByName = new Multimap();\n        this.outletElementsByName = new Multimap();\n        this.selectorObserverMap = new Map();\n        this.attributeObserverMap = new Map();\n    }\n    start() {\n        if (!this.started) {\n            this.outletDefinitions.forEach((outletName) => {\n                this.setupSelectorObserverForOutlet(outletName);\n                this.setupAttributeObserverForOutlet(outletName);\n            });\n            this.started = true;\n            this.dependentContexts.forEach((context) => context.refresh());\n        }\n    }\n    refresh() {\n        this.selectorObserverMap.forEach((observer) => observer.refresh());\n        this.attributeObserverMap.forEach((observer) => observer.refresh());\n    }\n    stop() {\n        if (this.started) {\n            this.started = false;\n            this.disconnectAllOutlets();\n            this.stopSelectorObservers();\n            this.stopAttributeObservers();\n        }\n    }\n    stopSelectorObservers() {\n        if (this.selectorObserverMap.size > 0) {\n            this.selectorObserverMap.forEach((observer) => observer.stop());\n            this.selectorObserverMap.clear();\n        }\n    }\n    stopAttributeObservers() {\n        if (this.attributeObserverMap.size > 0) {\n            this.attributeObserverMap.forEach((observer) => observer.stop());\n            this.attributeObserverMap.clear();\n        }\n    }\n    selectorMatched(element, _selector, { outletName }) {\n        const outlet = this.getOutlet(element, outletName);\n        if (outlet) {\n            this.connectOutlet(outlet, element, outletName);\n        }\n    }\n    selectorUnmatched(element, _selector, { outletName }) {\n        const outlet = this.getOutletFromMap(element, outletName);\n        if (outlet) {\n            this.disconnectOutlet(outlet, element, outletName);\n        }\n    }\n    selectorMatchElement(element, { outletName }) {\n        const selector = this.selector(outletName);\n        const hasOutlet = this.hasOutlet(element, outletName);\n        const hasOutletController = element.matches(`[${this.schema.controllerAttribute}~=${outletName}]`);\n        if (selector) {\n            return hasOutlet && hasOutletController && element.matches(selector);\n        }\n        else {\n            return false;\n        }\n    }\n    elementMatchedAttribute(_element, attributeName) {\n        const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n        if (outletName) {\n            this.updateSelectorObserverForOutlet(outletName);\n        }\n    }\n    elementAttributeValueChanged(_element, attributeName) {\n        const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n        if (outletName) {\n            this.updateSelectorObserverForOutlet(outletName);\n        }\n    }\n    elementUnmatchedAttribute(_element, attributeName) {\n        const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n        if (outletName) {\n            this.updateSelectorObserverForOutlet(outletName);\n        }\n    }\n    connectOutlet(outlet, element, outletName) {\n        var _a;\n        if (!this.outletElementsByName.has(outletName, element)) {\n            this.outletsByName.add(outletName, outlet);\n            this.outletElementsByName.add(outletName, element);\n            (_a = this.selectorObserverMap.get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletConnected(outlet, element, outletName));\n        }\n    }\n    disconnectOutlet(outlet, element, outletName) {\n        var _a;\n        if (this.outletElementsByName.has(outletName, element)) {\n            this.outletsByName.delete(outletName, outlet);\n            this.outletElementsByName.delete(outletName, element);\n            (_a = this.selectorObserverMap\n                .get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletDisconnected(outlet, element, outletName));\n        }\n    }\n    disconnectAllOutlets() {\n        for (const outletName of this.outletElementsByName.keys) {\n            for (const element of this.outletElementsByName.getValuesForKey(outletName)) {\n                for (const outlet of this.outletsByName.getValuesForKey(outletName)) {\n                    this.disconnectOutlet(outlet, element, outletName);\n                }\n            }\n        }\n    }\n    updateSelectorObserverForOutlet(outletName) {\n        const observer = this.selectorObserverMap.get(outletName);\n        if (observer) {\n            observer.selector = this.selector(outletName);\n        }\n    }\n    setupSelectorObserverForOutlet(outletName) {\n        const selector = this.selector(outletName);\n        const selectorObserver = new SelectorObserver(document.body, selector, this, { outletName });\n        this.selectorObserverMap.set(outletName, selectorObserver);\n        selectorObserver.start();\n    }\n    setupAttributeObserverForOutlet(outletName) {\n        const attributeName = this.attributeNameForOutletName(outletName);\n        const attributeObserver = new AttributeObserver(this.scope.element, attributeName, this);\n        this.attributeObserverMap.set(outletName, attributeObserver);\n        attributeObserver.start();\n    }\n    selector(outletName) {\n        return this.scope.outlets.getSelectorForOutletName(outletName);\n    }\n    attributeNameForOutletName(outletName) {\n        return this.scope.schema.outletAttributeForScope(this.identifier, outletName);\n    }\n    getOutletNameFromOutletAttributeName(attributeName) {\n        return this.outletDefinitions.find((outletName) => this.attributeNameForOutletName(outletName) === attributeName);\n    }\n    get outletDependencies() {\n        const dependencies = new Multimap();\n        this.router.modules.forEach((module) => {\n            const constructor = module.definition.controllerConstructor;\n            const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n            outlets.forEach((outlet) => dependencies.add(outlet, module.identifier));\n        });\n        return dependencies;\n    }\n    get outletDefinitions() {\n        return this.outletDependencies.getKeysForValue(this.identifier);\n    }\n    get dependentControllerIdentifiers() {\n        return this.outletDependencies.getValuesForKey(this.identifier);\n    }\n    get dependentContexts() {\n        const identifiers = this.dependentControllerIdentifiers;\n        return this.router.contexts.filter((context) => identifiers.includes(context.identifier));\n    }\n    hasOutlet(element, outletName) {\n        return !!this.getOutlet(element, outletName) || !!this.getOutletFromMap(element, outletName);\n    }\n    getOutlet(element, outletName) {\n        return this.application.getControllerForElementAndIdentifier(element, outletName);\n    }\n    getOutletFromMap(element, outletName) {\n        return this.outletsByName.getValuesForKey(outletName).find((outlet) => outlet.element === element);\n    }\n    get scope() {\n        return this.context.scope;\n    }\n    get schema() {\n        return this.context.schema;\n    }\n    get identifier() {\n        return this.context.identifier;\n    }\n    get application() {\n        return this.context.application;\n    }\n    get router() {\n        return this.application.router;\n    }\n}\n\nclass Context {\n    constructor(module, scope) {\n        this.logDebugActivity = (functionName, detail = {}) => {\n            const { identifier, controller, element } = this;\n            detail = Object.assign({ identifier, controller, element }, detail);\n            this.application.logDebugActivity(this.identifier, functionName, detail);\n        };\n        this.module = module;\n        this.scope = scope;\n        this.controller = new module.controllerConstructor(this);\n        this.bindingObserver = new BindingObserver(this, this.dispatcher);\n        this.valueObserver = new ValueObserver(this, this.controller);\n        this.targetObserver = new TargetObserver(this, this);\n        this.outletObserver = new OutletObserver(this, this);\n        try {\n            this.controller.initialize();\n            this.logDebugActivity(\"initialize\");\n        }\n        catch (error) {\n            this.handleError(error, \"initializing controller\");\n        }\n    }\n    connect() {\n        this.bindingObserver.start();\n        this.valueObserver.start();\n        this.targetObserver.start();\n        this.outletObserver.start();\n        try {\n            this.controller.connect();\n            this.logDebugActivity(\"connect\");\n        }\n        catch (error) {\n            this.handleError(error, \"connecting controller\");\n        }\n    }\n    refresh() {\n        this.outletObserver.refresh();\n    }\n    disconnect() {\n        try {\n            this.controller.disconnect();\n            this.logDebugActivity(\"disconnect\");\n        }\n        catch (error) {\n            this.handleError(error, \"disconnecting controller\");\n        }\n        this.outletObserver.stop();\n        this.targetObserver.stop();\n        this.valueObserver.stop();\n        this.bindingObserver.stop();\n    }\n    get application() {\n        return this.module.application;\n    }\n    get identifier() {\n        return this.module.identifier;\n    }\n    get schema() {\n        return this.application.schema;\n    }\n    get dispatcher() {\n        return this.application.dispatcher;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get parentElement() {\n        return this.element.parentElement;\n    }\n    handleError(error, message, detail = {}) {\n        const { identifier, controller, element } = this;\n        detail = Object.assign({ identifier, controller, element }, detail);\n        this.application.handleError(error, `Error ${message}`, detail);\n    }\n    targetConnected(element, name) {\n        this.invokeControllerMethod(`${name}TargetConnected`, element);\n    }\n    targetDisconnected(element, name) {\n        this.invokeControllerMethod(`${name}TargetDisconnected`, element);\n    }\n    outletConnected(outlet, element, name) {\n        this.invokeControllerMethod(`${namespaceCamelize(name)}OutletConnected`, outlet, element);\n    }\n    outletDisconnected(outlet, element, name) {\n        this.invokeControllerMethod(`${namespaceCamelize(name)}OutletDisconnected`, outlet, element);\n    }\n    invokeControllerMethod(methodName, ...args) {\n        const controller = this.controller;\n        if (typeof controller[methodName] == \"function\") {\n            controller[methodName](...args);\n        }\n    }\n}\n\nfunction bless(constructor) {\n    return shadow(constructor, getBlessedProperties(constructor));\n}\nfunction shadow(constructor, properties) {\n    const shadowConstructor = extend(constructor);\n    const shadowProperties = getShadowProperties(constructor.prototype, properties);\n    Object.defineProperties(shadowConstructor.prototype, shadowProperties);\n    return shadowConstructor;\n}\nfunction getBlessedProperties(constructor) {\n    const blessings = readInheritableStaticArrayValues(constructor, \"blessings\");\n    return blessings.reduce((blessedProperties, blessing) => {\n        const properties = blessing(constructor);\n        for (const key in properties) {\n            const descriptor = blessedProperties[key] || {};\n            blessedProperties[key] = Object.assign(descriptor, properties[key]);\n        }\n        return blessedProperties;\n    }, {});\n}\nfunction getShadowProperties(prototype, properties) {\n    return getOwnKeys(properties).reduce((shadowProperties, key) => {\n        const descriptor = getShadowedDescriptor(prototype, properties, key);\n        if (descriptor) {\n            Object.assign(shadowProperties, { [key]: descriptor });\n        }\n        return shadowProperties;\n    }, {});\n}\nfunction getShadowedDescriptor(prototype, properties, key) {\n    const shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);\n    const shadowedByValue = shadowingDescriptor && \"value\" in shadowingDescriptor;\n    if (!shadowedByValue) {\n        const descriptor = Object.getOwnPropertyDescriptor(properties, key).value;\n        if (shadowingDescriptor) {\n            descriptor.get = shadowingDescriptor.get || descriptor.get;\n            descriptor.set = shadowingDescriptor.set || descriptor.set;\n        }\n        return descriptor;\n    }\n}\nconst getOwnKeys = (() => {\n    if (typeof Object.getOwnPropertySymbols == \"function\") {\n        return (object) => [...Object.getOwnPropertyNames(object), ...Object.getOwnPropertySymbols(object)];\n    }\n    else {\n        return Object.getOwnPropertyNames;\n    }\n})();\nconst extend = (() => {\n    function extendWithReflect(constructor) {\n        function extended() {\n            return Reflect.construct(constructor, arguments, new.target);\n        }\n        extended.prototype = Object.create(constructor.prototype, {\n            constructor: { value: extended },\n        });\n        Reflect.setPrototypeOf(extended, constructor);\n        return extended;\n    }\n    function testReflectExtension() {\n        const a = function () {\n            this.a.call(this);\n        };\n        const b = extendWithReflect(a);\n        b.prototype.a = function () { };\n        return new b();\n    }\n    try {\n        testReflectExtension();\n        return extendWithReflect;\n    }\n    catch (error) {\n        return (constructor) => class extended extends constructor {\n        };\n    }\n})();\n\nfunction blessDefinition(definition) {\n    return {\n        identifier: definition.identifier,\n        controllerConstructor: bless(definition.controllerConstructor),\n    };\n}\n\nclass Module {\n    constructor(application, definition) {\n        this.application = application;\n        this.definition = blessDefinition(definition);\n        this.contextsByScope = new WeakMap();\n        this.connectedContexts = new Set();\n    }\n    get identifier() {\n        return this.definition.identifier;\n    }\n    get controllerConstructor() {\n        return this.definition.controllerConstructor;\n    }\n    get contexts() {\n        return Array.from(this.connectedContexts);\n    }\n    connectContextForScope(scope) {\n        const context = this.fetchContextForScope(scope);\n        this.connectedContexts.add(context);\n        context.connect();\n    }\n    disconnectContextForScope(scope) {\n        const context = this.contextsByScope.get(scope);\n        if (context) {\n            this.connectedContexts.delete(context);\n            context.disconnect();\n        }\n    }\n    fetchContextForScope(scope) {\n        let context = this.contextsByScope.get(scope);\n        if (!context) {\n            context = new Context(this, scope);\n            this.contextsByScope.set(scope, context);\n        }\n        return context;\n    }\n}\n\nclass ClassMap {\n    constructor(scope) {\n        this.scope = scope;\n    }\n    has(name) {\n        return this.data.has(this.getDataKey(name));\n    }\n    get(name) {\n        return this.getAll(name)[0];\n    }\n    getAll(name) {\n        const tokenString = this.data.get(this.getDataKey(name)) || \"\";\n        return tokenize(tokenString);\n    }\n    getAttributeName(name) {\n        return this.data.getAttributeNameForKey(this.getDataKey(name));\n    }\n    getDataKey(name) {\n        return `${name}-class`;\n    }\n    get data() {\n        return this.scope.data;\n    }\n}\n\nclass DataMap {\n    constructor(scope) {\n        this.scope = scope;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get(key) {\n        const name = this.getAttributeNameForKey(key);\n        return this.element.getAttribute(name);\n    }\n    set(key, value) {\n        const name = this.getAttributeNameForKey(key);\n        this.element.setAttribute(name, value);\n        return this.get(key);\n    }\n    has(key) {\n        const name = this.getAttributeNameForKey(key);\n        return this.element.hasAttribute(name);\n    }\n    delete(key) {\n        if (this.has(key)) {\n            const name = this.getAttributeNameForKey(key);\n            this.element.removeAttribute(name);\n            return true;\n        }\n        else {\n            return false;\n        }\n    }\n    getAttributeNameForKey(key) {\n        return `data-${this.identifier}-${dasherize(key)}`;\n    }\n}\n\nclass Guide {\n    constructor(logger) {\n        this.warnedKeysByObject = new WeakMap();\n        this.logger = logger;\n    }\n    warn(object, key, message) {\n        let warnedKeys = this.warnedKeysByObject.get(object);\n        if (!warnedKeys) {\n            warnedKeys = new Set();\n            this.warnedKeysByObject.set(object, warnedKeys);\n        }\n        if (!warnedKeys.has(key)) {\n            warnedKeys.add(key);\n            this.logger.warn(message, object);\n        }\n    }\n}\n\nfunction attributeValueContainsToken(attributeName, token) {\n    return `[${attributeName}~=\"${token}\"]`;\n}\n\nclass TargetSet {\n    constructor(scope) {\n        this.scope = scope;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get schema() {\n        return this.scope.schema;\n    }\n    has(targetName) {\n        return this.find(targetName) != null;\n    }\n    find(...targetNames) {\n        return targetNames.reduce((target, targetName) => target || this.findTarget(targetName) || this.findLegacyTarget(targetName), undefined);\n    }\n    findAll(...targetNames) {\n        return targetNames.reduce((targets, targetName) => [\n            ...targets,\n            ...this.findAllTargets(targetName),\n            ...this.findAllLegacyTargets(targetName),\n        ], []);\n    }\n    findTarget(targetName) {\n        const selector = this.getSelectorForTargetName(targetName);\n        return this.scope.findElement(selector);\n    }\n    findAllTargets(targetName) {\n        const selector = this.getSelectorForTargetName(targetName);\n        return this.scope.findAllElements(selector);\n    }\n    getSelectorForTargetName(targetName) {\n        const attributeName = this.schema.targetAttributeForScope(this.identifier);\n        return attributeValueContainsToken(attributeName, targetName);\n    }\n    findLegacyTarget(targetName) {\n        const selector = this.getLegacySelectorForTargetName(targetName);\n        return this.deprecate(this.scope.findElement(selector), targetName);\n    }\n    findAllLegacyTargets(targetName) {\n        const selector = this.getLegacySelectorForTargetName(targetName);\n        return this.scope.findAllElements(selector).map((element) => this.deprecate(element, targetName));\n    }\n    getLegacySelectorForTargetName(targetName) {\n        const targetDescriptor = `${this.identifier}.${targetName}`;\n        return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n    }\n    deprecate(element, targetName) {\n        if (element) {\n            const { identifier } = this;\n            const attributeName = this.schema.targetAttribute;\n            const revisedAttributeName = this.schema.targetAttributeForScope(identifier);\n            this.guide.warn(element, `target:${targetName}`, `Please replace ${attributeName}=\"${identifier}.${targetName}\" with ${revisedAttributeName}=\"${targetName}\". ` +\n                `The ${attributeName} attribute is deprecated and will be removed in a future version of Stimulus.`);\n        }\n        return element;\n    }\n    get guide() {\n        return this.scope.guide;\n    }\n}\n\nclass OutletSet {\n    constructor(scope, controllerElement) {\n        this.scope = scope;\n        this.controllerElement = controllerElement;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get schema() {\n        return this.scope.schema;\n    }\n    has(outletName) {\n        return this.find(outletName) != null;\n    }\n    find(...outletNames) {\n        return outletNames.reduce((outlet, outletName) => outlet || this.findOutlet(outletName), undefined);\n    }\n    findAll(...outletNames) {\n        return outletNames.reduce((outlets, outletName) => [...outlets, ...this.findAllOutlets(outletName)], []);\n    }\n    getSelectorForOutletName(outletName) {\n        const attributeName = this.schema.outletAttributeForScope(this.identifier, outletName);\n        return this.controllerElement.getAttribute(attributeName);\n    }\n    findOutlet(outletName) {\n        const selector = this.getSelectorForOutletName(outletName);\n        if (selector)\n            return this.findElement(selector, outletName);\n    }\n    findAllOutlets(outletName) {\n        const selector = this.getSelectorForOutletName(outletName);\n        return selector ? this.findAllElements(selector, outletName) : [];\n    }\n    findElement(selector, outletName) {\n        const elements = this.scope.queryElements(selector);\n        return elements.filter((element) => this.matchesElement(element, selector, outletName))[0];\n    }\n    findAllElements(selector, outletName) {\n        const elements = this.scope.queryElements(selector);\n        return elements.filter((element) => this.matchesElement(element, selector, outletName));\n    }\n    matchesElement(element, selector, outletName) {\n        const controllerAttribute = element.getAttribute(this.scope.schema.controllerAttribute) || \"\";\n        return element.matches(selector) && controllerAttribute.split(\" \").includes(outletName);\n    }\n}\n\nclass Scope {\n    constructor(schema, element, identifier, logger) {\n        this.targets = new TargetSet(this);\n        this.classes = new ClassMap(this);\n        this.data = new DataMap(this);\n        this.containsElement = (element) => {\n            return element.closest(this.controllerSelector) === this.element;\n        };\n        this.schema = schema;\n        this.element = element;\n        this.identifier = identifier;\n        this.guide = new Guide(logger);\n        this.outlets = new OutletSet(this.documentScope, element);\n    }\n    findElement(selector) {\n        return this.element.matches(selector) ? this.element : this.queryElements(selector).find(this.containsElement);\n    }\n    findAllElements(selector) {\n        return [\n            ...(this.element.matches(selector) ? [this.element] : []),\n            ...this.queryElements(selector).filter(this.containsElement),\n        ];\n    }\n    queryElements(selector) {\n        return Array.from(this.element.querySelectorAll(selector));\n    }\n    get controllerSelector() {\n        return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n    }\n    get isDocumentScope() {\n        return this.element === document.documentElement;\n    }\n    get documentScope() {\n        return this.isDocumentScope\n            ? this\n            : new Scope(this.schema, document.documentElement, this.identifier, this.guide.logger);\n    }\n}\n\nclass ScopeObserver {\n    constructor(element, schema, delegate) {\n        this.element = element;\n        this.schema = schema;\n        this.delegate = delegate;\n        this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n        this.scopesByIdentifierByElement = new WeakMap();\n        this.scopeReferenceCounts = new WeakMap();\n    }\n    start() {\n        this.valueListObserver.start();\n    }\n    stop() {\n        this.valueListObserver.stop();\n    }\n    get controllerAttribute() {\n        return this.schema.controllerAttribute;\n    }\n    parseValueForToken(token) {\n        const { element, content: identifier } = token;\n        return this.parseValueForElementAndIdentifier(element, identifier);\n    }\n    parseValueForElementAndIdentifier(element, identifier) {\n        const scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n        let scope = scopesByIdentifier.get(identifier);\n        if (!scope) {\n            scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);\n            scopesByIdentifier.set(identifier, scope);\n        }\n        return scope;\n    }\n    elementMatchedValue(element, value) {\n        const referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n        this.scopeReferenceCounts.set(value, referenceCount);\n        if (referenceCount == 1) {\n            this.delegate.scopeConnected(value);\n        }\n    }\n    elementUnmatchedValue(element, value) {\n        const referenceCount = this.scopeReferenceCounts.get(value);\n        if (referenceCount) {\n            this.scopeReferenceCounts.set(value, referenceCount - 1);\n            if (referenceCount == 1) {\n                this.delegate.scopeDisconnected(value);\n            }\n        }\n    }\n    fetchScopesByIdentifierForElement(element) {\n        let scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n        if (!scopesByIdentifier) {\n            scopesByIdentifier = new Map();\n            this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n        }\n        return scopesByIdentifier;\n    }\n}\n\nclass Router {\n    constructor(application) {\n        this.application = application;\n        this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n        this.scopesByIdentifier = new Multimap();\n        this.modulesByIdentifier = new Map();\n    }\n    get element() {\n        return this.application.element;\n    }\n    get schema() {\n        return this.application.schema;\n    }\n    get logger() {\n        return this.application.logger;\n    }\n    get controllerAttribute() {\n        return this.schema.controllerAttribute;\n    }\n    get modules() {\n        return Array.from(this.modulesByIdentifier.values());\n    }\n    get contexts() {\n        return this.modules.reduce((contexts, module) => contexts.concat(module.contexts), []);\n    }\n    start() {\n        this.scopeObserver.start();\n    }\n    stop() {\n        this.scopeObserver.stop();\n    }\n    loadDefinition(definition) {\n        this.unloadIdentifier(definition.identifier);\n        const module = new Module(this.application, definition);\n        this.connectModule(module);\n        const afterLoad = definition.controllerConstructor.afterLoad;\n        if (afterLoad) {\n            afterLoad.call(definition.controllerConstructor, definition.identifier, this.application);\n        }\n    }\n    unloadIdentifier(identifier) {\n        const module = this.modulesByIdentifier.get(identifier);\n        if (module) {\n            this.disconnectModule(module);\n        }\n    }\n    getContextForElementAndIdentifier(element, identifier) {\n        const module = this.modulesByIdentifier.get(identifier);\n        if (module) {\n            return module.contexts.find((context) => context.element == element);\n        }\n    }\n    proposeToConnectScopeForElementAndIdentifier(element, identifier) {\n        const scope = this.scopeObserver.parseValueForElementAndIdentifier(element, identifier);\n        if (scope) {\n            this.scopeObserver.elementMatchedValue(scope.element, scope);\n        }\n        else {\n            console.error(`Couldn't find or create scope for identifier: \"${identifier}\" and element:`, element);\n        }\n    }\n    handleError(error, message, detail) {\n        this.application.handleError(error, message, detail);\n    }\n    createScopeForElementAndIdentifier(element, identifier) {\n        return new Scope(this.schema, element, identifier, this.logger);\n    }\n    scopeConnected(scope) {\n        this.scopesByIdentifier.add(scope.identifier, scope);\n        const module = this.modulesByIdentifier.get(scope.identifier);\n        if (module) {\n            module.connectContextForScope(scope);\n        }\n    }\n    scopeDisconnected(scope) {\n        this.scopesByIdentifier.delete(scope.identifier, scope);\n        const module = this.modulesByIdentifier.get(scope.identifier);\n        if (module) {\n            module.disconnectContextForScope(scope);\n        }\n    }\n    connectModule(module) {\n        this.modulesByIdentifier.set(module.identifier, module);\n        const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n        scopes.forEach((scope) => module.connectContextForScope(scope));\n    }\n    disconnectModule(module) {\n        this.modulesByIdentifier.delete(module.identifier);\n        const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n        scopes.forEach((scope) => module.disconnectContextForScope(scope));\n    }\n}\n\nconst defaultSchema = {\n    controllerAttribute: \"data-controller\",\n    actionAttribute: \"data-action\",\n    targetAttribute: \"data-target\",\n    targetAttributeForScope: (identifier) => `data-${identifier}-target`,\n    outletAttributeForScope: (identifier, outlet) => `data-${identifier}-${outlet}-outlet`,\n    keyMappings: Object.assign(Object.assign({ enter: \"Enter\", tab: \"Tab\", esc: \"Escape\", space: \" \", up: \"ArrowUp\", down: \"ArrowDown\", left: \"ArrowLeft\", right: \"ArrowRight\", home: \"Home\", end: \"End\", page_up: \"PageUp\", page_down: \"PageDown\" }, objectFromEntries(\"abcdefghijklmnopqrstuvwxyz\".split(\"\").map((c) => [c, c]))), objectFromEntries(\"0123456789\".split(\"\").map((n) => [n, n]))),\n};\nfunction objectFromEntries(array) {\n    return array.reduce((memo, [k, v]) => (Object.assign(Object.assign({}, memo), { [k]: v })), {});\n}\n\nclass Application {\n    constructor(element = document.documentElement, schema = defaultSchema) {\n        this.logger = console;\n        this.debug = false;\n        this.logDebugActivity = (identifier, functionName, detail = {}) => {\n            if (this.debug) {\n                this.logFormattedMessage(identifier, functionName, detail);\n            }\n        };\n        this.element = element;\n        this.schema = schema;\n        this.dispatcher = new Dispatcher(this);\n        this.router = new Router(this);\n        this.actionDescriptorFilters = Object.assign({}, defaultActionDescriptorFilters);\n    }\n    static start(element, schema) {\n        const application = new this(element, schema);\n        application.start();\n        return application;\n    }\n    async start() {\n        await domReady();\n        this.logDebugActivity(\"application\", \"starting\");\n        this.dispatcher.start();\n        this.router.start();\n        this.logDebugActivity(\"application\", \"start\");\n    }\n    stop() {\n        this.logDebugActivity(\"application\", \"stopping\");\n        this.dispatcher.stop();\n        this.router.stop();\n        this.logDebugActivity(\"application\", \"stop\");\n    }\n    register(identifier, controllerConstructor) {\n        this.load({ identifier, controllerConstructor });\n    }\n    registerActionOption(name, filter) {\n        this.actionDescriptorFilters[name] = filter;\n    }\n    load(head, ...rest) {\n        const definitions = Array.isArray(head) ? head : [head, ...rest];\n        definitions.forEach((definition) => {\n            if (definition.controllerConstructor.shouldLoad) {\n                this.router.loadDefinition(definition);\n            }\n        });\n    }\n    unload(head, ...rest) {\n        const identifiers = Array.isArray(head) ? head : [head, ...rest];\n        identifiers.forEach((identifier) => this.router.unloadIdentifier(identifier));\n    }\n    get controllers() {\n        return this.router.contexts.map((context) => context.controller);\n    }\n    getControllerForElementAndIdentifier(element, identifier) {\n        const context = this.router.getContextForElementAndIdentifier(element, identifier);\n        return context ? context.controller : null;\n    }\n    handleError(error, message, detail) {\n        var _a;\n        this.logger.error(`%s\\n\\n%o\\n\\n%o`, message, error, detail);\n        (_a = window.onerror) === null || _a === void 0 ? void 0 : _a.call(window, message, \"\", 0, 0, error);\n    }\n    logFormattedMessage(identifier, functionName, detail = {}) {\n        detail = Object.assign({ application: this }, detail);\n        this.logger.groupCollapsed(`${identifier} #${functionName}`);\n        this.logger.log(\"details:\", Object.assign({}, detail));\n        this.logger.groupEnd();\n    }\n}\nfunction domReady() {\n    return new Promise((resolve) => {\n        if (document.readyState == \"loading\") {\n            document.addEventListener(\"DOMContentLoaded\", () => resolve());\n        }\n        else {\n            resolve();\n        }\n    });\n}\n\nfunction ClassPropertiesBlessing(constructor) {\n    const classes = readInheritableStaticArrayValues(constructor, \"classes\");\n    return classes.reduce((properties, classDefinition) => {\n        return Object.assign(properties, propertiesForClassDefinition(classDefinition));\n    }, {});\n}\nfunction propertiesForClassDefinition(key) {\n    return {\n        [`${key}Class`]: {\n            get() {\n                const { classes } = this;\n                if (classes.has(key)) {\n                    return classes.get(key);\n                }\n                else {\n                    const attribute = classes.getAttributeName(key);\n                    throw new Error(`Missing attribute \"${attribute}\"`);\n                }\n            },\n        },\n        [`${key}Classes`]: {\n            get() {\n                return this.classes.getAll(key);\n            },\n        },\n        [`has${capitalize(key)}Class`]: {\n            get() {\n                return this.classes.has(key);\n            },\n        },\n    };\n}\n\nfunction OutletPropertiesBlessing(constructor) {\n    const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n    return outlets.reduce((properties, outletDefinition) => {\n        return Object.assign(properties, propertiesForOutletDefinition(outletDefinition));\n    }, {});\n}\nfunction getOutletController(controller, element, identifier) {\n    return controller.application.getControllerForElementAndIdentifier(element, identifier);\n}\nfunction getControllerAndEnsureConnectedScope(controller, element, outletName) {\n    let outletController = getOutletController(controller, element, outletName);\n    if (outletController)\n        return outletController;\n    controller.application.router.proposeToConnectScopeForElementAndIdentifier(element, outletName);\n    outletController = getOutletController(controller, element, outletName);\n    if (outletController)\n        return outletController;\n}\nfunction propertiesForOutletDefinition(name) {\n    const camelizedName = namespaceCamelize(name);\n    return {\n        [`${camelizedName}Outlet`]: {\n            get() {\n                const outletElement = this.outlets.find(name);\n                const selector = this.outlets.getSelectorForOutletName(name);\n                if (outletElement) {\n                    const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n                    if (outletController)\n                        return outletController;\n                    throw new Error(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`);\n                }\n                throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n            },\n        },\n        [`${camelizedName}Outlets`]: {\n            get() {\n                const outlets = this.outlets.findAll(name);\n                if (outlets.length > 0) {\n                    return outlets\n                        .map((outletElement) => {\n                        const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n                        if (outletController)\n                            return outletController;\n                        console.warn(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`, outletElement);\n                    })\n                        .filter((controller) => controller);\n                }\n                return [];\n            },\n        },\n        [`${camelizedName}OutletElement`]: {\n            get() {\n                const outletElement = this.outlets.find(name);\n                const selector = this.outlets.getSelectorForOutletName(name);\n                if (outletElement) {\n                    return outletElement;\n                }\n                else {\n                    throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n                }\n            },\n        },\n        [`${camelizedName}OutletElements`]: {\n            get() {\n                return this.outlets.findAll(name);\n            },\n        },\n        [`has${capitalize(camelizedName)}Outlet`]: {\n            get() {\n                return this.outlets.has(name);\n            },\n        },\n    };\n}\n\nfunction TargetPropertiesBlessing(constructor) {\n    const targets = readInheritableStaticArrayValues(constructor, \"targets\");\n    return targets.reduce((properties, targetDefinition) => {\n        return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));\n    }, {});\n}\nfunction propertiesForTargetDefinition(name) {\n    return {\n        [`${name}Target`]: {\n            get() {\n                const target = this.targets.find(name);\n                if (target) {\n                    return target;\n                }\n                else {\n                    throw new Error(`Missing target element \"${name}\" for \"${this.identifier}\" controller`);\n                }\n            },\n        },\n        [`${name}Targets`]: {\n            get() {\n                return this.targets.findAll(name);\n            },\n        },\n        [`has${capitalize(name)}Target`]: {\n            get() {\n                return this.targets.has(name);\n            },\n        },\n    };\n}\n\nfunction ValuePropertiesBlessing(constructor) {\n    const valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n    const propertyDescriptorMap = {\n        valueDescriptorMap: {\n            get() {\n                return valueDefinitionPairs.reduce((result, valueDefinitionPair) => {\n                    const valueDescriptor = parseValueDefinitionPair(valueDefinitionPair, this.identifier);\n                    const attributeName = this.data.getAttributeNameForKey(valueDescriptor.key);\n                    return Object.assign(result, { [attributeName]: valueDescriptor });\n                }, {});\n            },\n        },\n    };\n    return valueDefinitionPairs.reduce((properties, valueDefinitionPair) => {\n        return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n    }, propertyDescriptorMap);\n}\nfunction propertiesForValueDefinitionPair(valueDefinitionPair, controller) {\n    const definition = parseValueDefinitionPair(valueDefinitionPair, controller);\n    const { key, name, reader: read, writer: write } = definition;\n    return {\n        [name]: {\n            get() {\n                const value = this.data.get(key);\n                if (value !== null) {\n                    return read(value);\n                }\n                else {\n                    return definition.defaultValue;\n                }\n            },\n            set(value) {\n                if (value === undefined) {\n                    this.data.delete(key);\n                }\n                else {\n                    this.data.set(key, write(value));\n                }\n            },\n        },\n        [`has${capitalize(name)}`]: {\n            get() {\n                return this.data.has(key) || definition.hasCustomDefaultValue;\n            },\n        },\n    };\n}\nfunction parseValueDefinitionPair([token, typeDefinition], controller) {\n    return valueDescriptorForTokenAndTypeDefinition({\n        controller,\n        token,\n        typeDefinition,\n    });\n}\nfunction parseValueTypeConstant(constant) {\n    switch (constant) {\n        case Array:\n            return \"array\";\n        case Boolean:\n            return \"boolean\";\n        case Number:\n            return \"number\";\n        case Object:\n            return \"object\";\n        case String:\n            return \"string\";\n    }\n}\nfunction parseValueTypeDefault(defaultValue) {\n    switch (typeof defaultValue) {\n        case \"boolean\":\n            return \"boolean\";\n        case \"number\":\n            return \"number\";\n        case \"string\":\n            return \"string\";\n    }\n    if (Array.isArray(defaultValue))\n        return \"array\";\n    if (Object.prototype.toString.call(defaultValue) === \"[object Object]\")\n        return \"object\";\n}\nfunction parseValueTypeObject(payload) {\n    const { controller, token, typeObject } = payload;\n    const hasType = isSomething(typeObject.type);\n    const hasDefault = isSomething(typeObject.default);\n    const fullObject = hasType && hasDefault;\n    const onlyType = hasType && !hasDefault;\n    const onlyDefault = !hasType && hasDefault;\n    const typeFromObject = parseValueTypeConstant(typeObject.type);\n    const typeFromDefaultValue = parseValueTypeDefault(payload.typeObject.default);\n    if (onlyType)\n        return typeFromObject;\n    if (onlyDefault)\n        return typeFromDefaultValue;\n    if (typeFromObject !== typeFromDefaultValue) {\n        const propertyPath = controller ? `${controller}.${token}` : token;\n        throw new Error(`The specified default value for the Stimulus Value \"${propertyPath}\" must match the defined type \"${typeFromObject}\". The provided default value of \"${typeObject.default}\" is of type \"${typeFromDefaultValue}\".`);\n    }\n    if (fullObject)\n        return typeFromObject;\n}\nfunction parseValueTypeDefinition(payload) {\n    const { controller, token, typeDefinition } = payload;\n    const typeObject = { controller, token, typeObject: typeDefinition };\n    const typeFromObject = parseValueTypeObject(typeObject);\n    const typeFromDefaultValue = parseValueTypeDefault(typeDefinition);\n    const typeFromConstant = parseValueTypeConstant(typeDefinition);\n    const type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n    if (type)\n        return type;\n    const propertyPath = controller ? `${controller}.${typeDefinition}` : token;\n    throw new Error(`Unknown value type \"${propertyPath}\" for \"${token}\" value`);\n}\nfunction defaultValueForDefinition(typeDefinition) {\n    const constant = parseValueTypeConstant(typeDefinition);\n    if (constant)\n        return defaultValuesByType[constant];\n    const hasDefault = hasProperty(typeDefinition, \"default\");\n    const hasType = hasProperty(typeDefinition, \"type\");\n    const typeObject = typeDefinition;\n    if (hasDefault)\n        return typeObject.default;\n    if (hasType) {\n        const { type } = typeObject;\n        const constantFromType = parseValueTypeConstant(type);\n        if (constantFromType)\n            return defaultValuesByType[constantFromType];\n    }\n    return typeDefinition;\n}\nfunction valueDescriptorForTokenAndTypeDefinition(payload) {\n    const { token, typeDefinition } = payload;\n    const key = `${dasherize(token)}-value`;\n    const type = parseValueTypeDefinition(payload);\n    return {\n        type,\n        key,\n        name: camelize(key),\n        get defaultValue() {\n            return defaultValueForDefinition(typeDefinition);\n        },\n        get hasCustomDefaultValue() {\n            return parseValueTypeDefault(typeDefinition) !== undefined;\n        },\n        reader: readers[type],\n        writer: writers[type] || writers.default,\n    };\n}\nconst defaultValuesByType = {\n    get array() {\n        return [];\n    },\n    boolean: false,\n    number: 0,\n    get object() {\n        return {};\n    },\n    string: \"\",\n};\nconst readers = {\n    array(value) {\n        const array = JSON.parse(value);\n        if (!Array.isArray(array)) {\n            throw new TypeError(`expected value of type \"array\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(array)}\"`);\n        }\n        return array;\n    },\n    boolean(value) {\n        return !(value == \"0\" || String(value).toLowerCase() == \"false\");\n    },\n    number(value) {\n        return Number(value.replace(/_/g, \"\"));\n    },\n    object(value) {\n        const object = JSON.parse(value);\n        if (object === null || typeof object != \"object\" || Array.isArray(object)) {\n            throw new TypeError(`expected value of type \"object\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(object)}\"`);\n        }\n        return object;\n    },\n    string(value) {\n        return value;\n    },\n};\nconst writers = {\n    default: writeString,\n    array: writeJSON,\n    object: writeJSON,\n};\nfunction writeJSON(value) {\n    return JSON.stringify(value);\n}\nfunction writeString(value) {\n    return `${value}`;\n}\n\nclass Controller {\n    constructor(context) {\n        this.context = context;\n    }\n    static get shouldLoad() {\n        return true;\n    }\n    static afterLoad(_identifier, _application) {\n        return;\n    }\n    get application() {\n        return this.context.application;\n    }\n    get scope() {\n        return this.context.scope;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get targets() {\n        return this.scope.targets;\n    }\n    get outlets() {\n        return this.scope.outlets;\n    }\n    get classes() {\n        return this.scope.classes;\n    }\n    get data() {\n        return this.scope.data;\n    }\n    initialize() {\n    }\n    connect() {\n    }\n    disconnect() {\n    }\n    dispatch(eventName, { target = this.element, detail = {}, prefix = this.identifier, bubbles = true, cancelable = true, } = {}) {\n        const type = prefix ? `${prefix}:${eventName}` : eventName;\n        const event = new CustomEvent(type, { detail, bubbles, cancelable });\n        target.dispatchEvent(event);\n        return event;\n    }\n}\nController.blessings = [\n    ClassPropertiesBlessing,\n    TargetPropertiesBlessing,\n    ValuePropertiesBlessing,\n    OutletPropertiesBlessing,\n];\nController.targets = [];\nController.outlets = [];\nController.values = {};\n\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, SelectorObserver, StringMapObserver, TokenListObserver, ValueListObserver, add, defaultSchema, del, fetch, prune };\n", "var adapters = {\n  logger: typeof console !== \"undefined\" ? console : undefined,\n  WebSocket: typeof WebSocket !== \"undefined\" ? WebSocket : undefined\n};\n\nvar logger = {\n  log(...messages) {\n    if (this.enabled) {\n      messages.push(Date.now());\n      adapters.logger.log(\"[ActionCable]\", ...messages);\n    }\n  }\n};\n\nconst now = () => (new Date).getTime();\n\nconst secondsSince = time => (now() - time) / 1e3;\n\nclass ConnectionMonitor {\n  constructor(connection) {\n    this.visibilityDidChange = this.visibilityDidChange.bind(this);\n    this.connection = connection;\n    this.reconnectAttempts = 0;\n  }\n  start() {\n    if (!this.isRunning()) {\n      this.startedAt = now();\n      delete this.stoppedAt;\n      this.startPolling();\n      addEventListener(\"visibilitychange\", this.visibilityDidChange);\n      logger.log(`ConnectionMonitor started. stale threshold = ${this.constructor.staleThreshold} s`);\n    }\n  }\n  stop() {\n    if (this.isRunning()) {\n      this.stoppedAt = now();\n      this.stopPolling();\n      removeEventListener(\"visibilitychange\", this.visibilityDidChange);\n      logger.log(\"ConnectionMonitor stopped\");\n    }\n  }\n  isRunning() {\n    return this.startedAt && !this.stoppedAt;\n  }\n  recordMessage() {\n    this.pingedAt = now();\n  }\n  recordConnect() {\n    this.reconnectAttempts = 0;\n    delete this.disconnectedAt;\n    logger.log(\"ConnectionMonitor recorded connect\");\n  }\n  recordDisconnect() {\n    this.disconnectedAt = now();\n    logger.log(\"ConnectionMonitor recorded disconnect\");\n  }\n  startPolling() {\n    this.stopPolling();\n    this.poll();\n  }\n  stopPolling() {\n    clearTimeout(this.pollTimeout);\n  }\n  poll() {\n    this.pollTimeout = setTimeout((() => {\n      this.reconnectIfStale();\n      this.poll();\n    }), this.getPollInterval());\n  }\n  getPollInterval() {\n    const {staleThreshold: staleThreshold, reconnectionBackoffRate: reconnectionBackoffRate} = this.constructor;\n    const backoff = Math.pow(1 + reconnectionBackoffRate, Math.min(this.reconnectAttempts, 10));\n    const jitterMax = this.reconnectAttempts === 0 ? 1 : reconnectionBackoffRate;\n    const jitter = jitterMax * Math.random();\n    return staleThreshold * 1e3 * backoff * (1 + jitter);\n  }\n  reconnectIfStale() {\n    if (this.connectionIsStale()) {\n      logger.log(`ConnectionMonitor detected stale connection. reconnectAttempts = ${this.reconnectAttempts}, time stale = ${secondsSince(this.refreshedAt)} s, stale threshold = ${this.constructor.staleThreshold} s`);\n      this.reconnectAttempts++;\n      if (this.disconnectedRecently()) {\n        logger.log(`ConnectionMonitor skipping reopening recent disconnect. time disconnected = ${secondsSince(this.disconnectedAt)} s`);\n      } else {\n        logger.log(\"ConnectionMonitor reopening\");\n        this.connection.reopen();\n      }\n    }\n  }\n  get refreshedAt() {\n    return this.pingedAt ? this.pingedAt : this.startedAt;\n  }\n  connectionIsStale() {\n    return secondsSince(this.refreshedAt) > this.constructor.staleThreshold;\n  }\n  disconnectedRecently() {\n    return this.disconnectedAt && secondsSince(this.disconnectedAt) < this.constructor.staleThreshold;\n  }\n  visibilityDidChange() {\n    if (document.visibilityState === \"visible\") {\n      setTimeout((() => {\n        if (this.connectionIsStale() || !this.connection.isOpen()) {\n          logger.log(`ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = ${document.visibilityState}`);\n          this.connection.reopen();\n        }\n      }), 200);\n    }\n  }\n}\n\nConnectionMonitor.staleThreshold = 6;\n\nConnectionMonitor.reconnectionBackoffRate = .15;\n\nvar INTERNAL = {\n  message_types: {\n    welcome: \"welcome\",\n    disconnect: \"disconnect\",\n    ping: \"ping\",\n    confirmation: \"confirm_subscription\",\n    rejection: \"reject_subscription\"\n  },\n  disconnect_reasons: {\n    unauthorized: \"unauthorized\",\n    invalid_request: \"invalid_request\",\n    server_restart: \"server_restart\",\n    remote: \"remote\"\n  },\n  default_mount_path: \"/cable\",\n  protocols: [ \"actioncable-v1-json\", \"actioncable-unsupported\" ]\n};\n\nconst {message_types: message_types, protocols: protocols} = INTERNAL;\n\nconst supportedProtocols = protocols.slice(0, protocols.length - 1);\n\nconst indexOf = [].indexOf;\n\nclass Connection {\n  constructor(consumer) {\n    this.open = this.open.bind(this);\n    this.consumer = consumer;\n    this.subscriptions = this.consumer.subscriptions;\n    this.monitor = new ConnectionMonitor(this);\n    this.disconnected = true;\n  }\n  send(data) {\n    if (this.isOpen()) {\n      this.webSocket.send(JSON.stringify(data));\n      return true;\n    } else {\n      return false;\n    }\n  }\n  open() {\n    if (this.isActive()) {\n      logger.log(`Attempted to open WebSocket, but existing socket is ${this.getState()}`);\n      return false;\n    } else {\n      const socketProtocols = [ ...protocols, ...this.consumer.subprotocols || [] ];\n      logger.log(`Opening WebSocket, current state is ${this.getState()}, subprotocols: ${socketProtocols}`);\n      if (this.webSocket) {\n        this.uninstallEventHandlers();\n      }\n      this.webSocket = new adapters.WebSocket(this.consumer.url, socketProtocols);\n      this.installEventHandlers();\n      this.monitor.start();\n      return true;\n    }\n  }\n  close({allowReconnect: allowReconnect} = {\n    allowReconnect: true\n  }) {\n    if (!allowReconnect) {\n      this.monitor.stop();\n    }\n    if (this.isOpen()) {\n      return this.webSocket.close();\n    }\n  }\n  reopen() {\n    logger.log(`Reopening WebSocket, current state is ${this.getState()}`);\n    if (this.isActive()) {\n      try {\n        return this.close();\n      } catch (error) {\n        logger.log(\"Failed to reopen WebSocket\", error);\n      } finally {\n        logger.log(`Reopening WebSocket in ${this.constructor.reopenDelay}ms`);\n        setTimeout(this.open, this.constructor.reopenDelay);\n      }\n    } else {\n      return this.open();\n    }\n  }\n  getProtocol() {\n    if (this.webSocket) {\n      return this.webSocket.protocol;\n    }\n  }\n  isOpen() {\n    return this.isState(\"open\");\n  }\n  isActive() {\n    return this.isState(\"open\", \"connecting\");\n  }\n  triedToReconnect() {\n    return this.monitor.reconnectAttempts > 0;\n  }\n  isProtocolSupported() {\n    return indexOf.call(supportedProtocols, this.getProtocol()) >= 0;\n  }\n  isState(...states) {\n    return indexOf.call(states, this.getState()) >= 0;\n  }\n  getState() {\n    if (this.webSocket) {\n      for (let state in adapters.WebSocket) {\n        if (adapters.WebSocket[state] === this.webSocket.readyState) {\n          return state.toLowerCase();\n        }\n      }\n    }\n    return null;\n  }\n  installEventHandlers() {\n    for (let eventName in this.events) {\n      const handler = this.events[eventName].bind(this);\n      this.webSocket[`on${eventName}`] = handler;\n    }\n  }\n  uninstallEventHandlers() {\n    for (let eventName in this.events) {\n      this.webSocket[`on${eventName}`] = function() {};\n    }\n  }\n}\n\nConnection.reopenDelay = 500;\n\nConnection.prototype.events = {\n  message(event) {\n    if (!this.isProtocolSupported()) {\n      return;\n    }\n    const {identifier: identifier, message: message, reason: reason, reconnect: reconnect, type: type} = JSON.parse(event.data);\n    this.monitor.recordMessage();\n    switch (type) {\n     case message_types.welcome:\n      if (this.triedToReconnect()) {\n        this.reconnectAttempted = true;\n      }\n      this.monitor.recordConnect();\n      return this.subscriptions.reload();\n\n     case message_types.disconnect:\n      logger.log(`Disconnecting. Reason: ${reason}`);\n      return this.close({\n        allowReconnect: reconnect\n      });\n\n     case message_types.ping:\n      return null;\n\n     case message_types.confirmation:\n      this.subscriptions.confirmSubscription(identifier);\n      if (this.reconnectAttempted) {\n        this.reconnectAttempted = false;\n        return this.subscriptions.notify(identifier, \"connected\", {\n          reconnected: true\n        });\n      } else {\n        return this.subscriptions.notify(identifier, \"connected\", {\n          reconnected: false\n        });\n      }\n\n     case message_types.rejection:\n      return this.subscriptions.reject(identifier);\n\n     default:\n      return this.subscriptions.notify(identifier, \"received\", message);\n    }\n  },\n  open() {\n    logger.log(`WebSocket onopen event, using '${this.getProtocol()}' subprotocol`);\n    this.disconnected = false;\n    if (!this.isProtocolSupported()) {\n      logger.log(\"Protocol is unsupported. Stopping monitor and disconnecting.\");\n      return this.close({\n        allowReconnect: false\n      });\n    }\n  },\n  close(event) {\n    logger.log(\"WebSocket onclose event\");\n    if (this.disconnected) {\n      return;\n    }\n    this.disconnected = true;\n    this.monitor.recordDisconnect();\n    return this.subscriptions.notifyAll(\"disconnected\", {\n      willAttemptReconnect: this.monitor.isRunning()\n    });\n  },\n  error() {\n    logger.log(\"WebSocket onerror event\");\n  }\n};\n\nconst extend = function(object, properties) {\n  if (properties != null) {\n    for (let key in properties) {\n      const value = properties[key];\n      object[key] = value;\n    }\n  }\n  return object;\n};\n\nclass Subscription {\n  constructor(consumer, params = {}, mixin) {\n    this.consumer = consumer;\n    this.identifier = JSON.stringify(params);\n    extend(this, mixin);\n  }\n  perform(action, data = {}) {\n    data.action = action;\n    return this.send(data);\n  }\n  send(data) {\n    return this.consumer.send({\n      command: \"message\",\n      identifier: this.identifier,\n      data: JSON.stringify(data)\n    });\n  }\n  unsubscribe() {\n    return this.consumer.subscriptions.remove(this);\n  }\n}\n\nclass SubscriptionGuarantor {\n  constructor(subscriptions) {\n    this.subscriptions = subscriptions;\n    this.pendingSubscriptions = [];\n  }\n  guarantee(subscription) {\n    if (this.pendingSubscriptions.indexOf(subscription) == -1) {\n      logger.log(`SubscriptionGuarantor guaranteeing ${subscription.identifier}`);\n      this.pendingSubscriptions.push(subscription);\n    } else {\n      logger.log(`SubscriptionGuarantor already guaranteeing ${subscription.identifier}`);\n    }\n    this.startGuaranteeing();\n  }\n  forget(subscription) {\n    logger.log(`SubscriptionGuarantor forgetting ${subscription.identifier}`);\n    this.pendingSubscriptions = this.pendingSubscriptions.filter((s => s !== subscription));\n  }\n  startGuaranteeing() {\n    this.stopGuaranteeing();\n    this.retrySubscribing();\n  }\n  stopGuaranteeing() {\n    clearTimeout(this.retryTimeout);\n  }\n  retrySubscribing() {\n    this.retryTimeout = setTimeout((() => {\n      if (this.subscriptions && typeof this.subscriptions.subscribe === \"function\") {\n        this.pendingSubscriptions.map((subscription => {\n          logger.log(`SubscriptionGuarantor resubscribing ${subscription.identifier}`);\n          this.subscriptions.subscribe(subscription);\n        }));\n      }\n    }), 500);\n  }\n}\n\nclass Subscriptions {\n  constructor(consumer) {\n    this.consumer = consumer;\n    this.guarantor = new SubscriptionGuarantor(this);\n    this.subscriptions = [];\n  }\n  create(channelName, mixin) {\n    const channel = channelName;\n    const params = typeof channel === \"object\" ? channel : {\n      channel: channel\n    };\n    const subscription = new Subscription(this.consumer, params, mixin);\n    return this.add(subscription);\n  }\n  add(subscription) {\n    this.subscriptions.push(subscription);\n    this.consumer.ensureActiveConnection();\n    this.notify(subscription, \"initialized\");\n    this.subscribe(subscription);\n    return subscription;\n  }\n  remove(subscription) {\n    this.forget(subscription);\n    if (!this.findAll(subscription.identifier).length) {\n      this.sendCommand(subscription, \"unsubscribe\");\n    }\n    return subscription;\n  }\n  reject(identifier) {\n    return this.findAll(identifier).map((subscription => {\n      this.forget(subscription);\n      this.notify(subscription, \"rejected\");\n      return subscription;\n    }));\n  }\n  forget(subscription) {\n    this.guarantor.forget(subscription);\n    this.subscriptions = this.subscriptions.filter((s => s !== subscription));\n    return subscription;\n  }\n  findAll(identifier) {\n    return this.subscriptions.filter((s => s.identifier === identifier));\n  }\n  reload() {\n    return this.subscriptions.map((subscription => this.subscribe(subscription)));\n  }\n  notifyAll(callbackName, ...args) {\n    return this.subscriptions.map((subscription => this.notify(subscription, callbackName, ...args)));\n  }\n  notify(subscription, callbackName, ...args) {\n    let subscriptions;\n    if (typeof subscription === \"string\") {\n      subscriptions = this.findAll(subscription);\n    } else {\n      subscriptions = [ subscription ];\n    }\n    return subscriptions.map((subscription => typeof subscription[callbackName] === \"function\" ? subscription[callbackName](...args) : undefined));\n  }\n  subscribe(subscription) {\n    if (this.sendCommand(subscription, \"subscribe\")) {\n      this.guarantor.guarantee(subscription);\n    }\n  }\n  confirmSubscription(identifier) {\n    logger.log(`Subscription confirmed ${identifier}`);\n    this.findAll(identifier).map((subscription => this.guarantor.forget(subscription)));\n  }\n  sendCommand(subscription, command) {\n    const {identifier: identifier} = subscription;\n    return this.consumer.send({\n      command: command,\n      identifier: identifier\n    });\n  }\n}\n\nclass Consumer {\n  constructor(url) {\n    this._url = url;\n    this.subscriptions = new Subscriptions(this);\n    this.connection = new Connection(this);\n    this.subprotocols = [];\n  }\n  get url() {\n    return createWebSocketURL(this._url);\n  }\n  send(data) {\n    return this.connection.send(data);\n  }\n  connect() {\n    return this.connection.open();\n  }\n  disconnect() {\n    return this.connection.close({\n      allowReconnect: false\n    });\n  }\n  ensureActiveConnection() {\n    if (!this.connection.isActive()) {\n      return this.connection.open();\n    }\n  }\n  addSubProtocol(subprotocol) {\n    this.subprotocols = [ ...this.subprotocols, subprotocol ];\n  }\n}\n\nfunction createWebSocketURL(url) {\n  if (typeof url === \"function\") {\n    url = url();\n  }\n  if (url && !/^wss?:/i.test(url)) {\n    const a = document.createElement(\"a\");\n    a.href = url;\n    a.href = a.href;\n    a.protocol = a.protocol.replace(\"http\", \"ws\");\n    return a.href;\n  } else {\n    return url;\n  }\n}\n\nfunction createConsumer(url = getConfig(\"url\") || INTERNAL.default_mount_path) {\n  return new Consumer(url);\n}\n\nfunction getConfig(name) {\n  const element = document.head.querySelector(`meta[name='action-cable-${name}']`);\n  if (element) {\n    return element.getAttribute(\"content\");\n  }\n}\n\nexport { Connection, ConnectionMonitor, Consumer, INTERNAL, Subscription, SubscriptionGuarantor, Subscriptions, adapters, createConsumer, createWebSocketURL, getConfig, logger };\n", "/**\n * The standard format for an error that is passed to AppSignal.\n */\nexport type SpanError = {\n  name: string\n  message?: string\n  backtrace?: string[]\n}\n\n/**\n * Check if the given object is an error-like object.\n *\n * @param   {Error | T}     error      An `Error` object or an error-like object\n *\n * @return  {boolean}\n */\nexport function isError<T extends Error>(error: Error | T): boolean {\n  return (\n    typeof error === \"object\" && typeof (error as any).message !== \"undefined\"\n  )\n}\n\n/**\n * Get backtrace from an `Error` object, or an error-like object\n *\n * @param   {Error | T}     error      An `Error` object or an error-like object\n *\n * @return  {string[]}                 A backtrace\n */\nexport function getStacktrace<T extends Error>(error: Error | T): string[] {\n  if (\n    typeof (error as any).stacktrace !== \"undefined\" ||\n    typeof (error as any)[\"opera#sourceloc\"] !== \"undefined\"\n  ) {\n    // probably opera\n    const { stacktrace = \"\" } = error as any\n    return stacktrace\n      .split(\"\\n\")\n      .filter((line: string | undefined) => line !== \"\")\n  } else if (error.stack) {\n    // an Error or a plain object that resembles an error\n    const { stack = \"\" } = error\n    return stack.split(\"\\n\").filter(line => line !== \"\")\n  } else {\n    // probably IE9 :(\n    return [\"No stacktrace available\"]\n  }\n}\n", "/**\n * `HashMapValue` is a union type that corresponds to the valid types accepted\n * inside the AppSignal processors `HashMap` type in Rust.\n */\nexport type HashMapValue = string | number | boolean\n\n/**\n * A generic HashMap, with a string as the indexable value.\n */\nexport type HashMap<T> = {\n  [key: string]: T\n}\n\n/**\n * Converts all values in a flat object to a string.\n *\n * Adapted from https://stackoverflow.com/questions/46982698/how-do-i-convert-all-property-values-in-an-object-to-type-string\n */\nexport function toHashMapString(\n  obj?: HashMap<any>\n): HashMap<string> | undefined {\n  if (!obj) return\n\n  const hm: HashMap<string> = {}\n\n  Object.keys(obj).forEach(k => {\n    if (typeof obj[k] === \"object\") {\n      hm[k] = JSON.stringify(obj[k])\n    } else {\n      hm[k] = String(obj[k])\n    }\n  })\n\n  return hm\n}\n\n/**\n * Converts any non-string, boolean or number value in an object to a string\n */\nexport function toHashMap(\n  obj?: HashMap<any>\n): HashMap<HashMapValue> | undefined {\n  if (!obj) return\n\n  const hm: HashMap<HashMapValue> = {}\n\n  Object.keys(obj).forEach(k => {\n    if (\n      typeof obj[k] === \"string\" ||\n      typeof obj[k] === \"boolean\" ||\n      typeof obj[k] === \"number\"\n    ) {\n      hm[k] = obj[k]\n    } else {\n      hm[k] = JSON.stringify(obj[k])\n    }\n  })\n\n  return hm\n}\n", "// Do not touch this file, auto-generated by scripts/create-version\nexport const VERSION = \"1.6.0\"\n", "export class Environment {\n  /**\n   * Serializes the current browser environment into an object.\n   */\n  public static serialize(): { [key: string]: string } {\n    return {\n      transport: this.transport(),\n      origin: this.origin()\n    }\n  }\n\n  /**\n   * Returns the origin of the current context.\n   *\n   * @return  {string}       The origin URL\n   */\n  public static origin(): string {\n    const globals = getGlobalObject<Window>()\n\n    // environments like nodejs or react native where an origin isn't relavent\n    if (!globals.location) {\n      return \"\"\n    }\n\n    return (\n      globals.location.origin ||\n      `${globals.location.protocol}//${globals.location.hostname}`\n    )\n  }\n\n  /**\n   * Returns the best currently available API that the current browser supports\n   * for making HTTP requests.\n   *\n   * @return  {string}       The name of the best availble HTTP transport\n   */\n  public static transport(): string {\n    // we throw out the typechecking here as the transports aren't exported\n    // using TS' `Window` type\n    const globals = getGlobalObject<Window>() as any\n\n    // we ignore jest here, as it's a false positive for a node\n    // environment and breaks the tests\n    if (isNodeEnv() && typeof jest === \"undefined\") {\n      return \"NodeHTTP\"\n    } else if (globals.XDomainRequest) {\n      return \"XDomainRequest\"\n    } else if (globals.XMLHttpRequest && !globals.fetch) {\n      return \"XMLHttpRequest\"\n    } else {\n      return \"fetch\"\n    }\n  }\n\n  /**\n   * Indicates whether promises are available in the current browser\n   * or environment.\n   *\n   * Adapted from https://github.com/Modernizr/Modernizr/blob/master/feature-detects/es6/promises.js\n   *\n   * @return  {boolean}       A value indicating if Promises are supported\n   */\n  public static supportsPromises(): boolean {\n    // we throw out the typechecking here as the transports aren't exported\n    // using TS' `Window` type\n    const globals = getGlobalObject<Window>() as any\n\n    return (\n      \"Promise\" in globals &&\n      // Some of these methods are missing from\n      // Firefox/Chrome experimental implementations\n      \"resolve\" in globals.Promise &&\n      \"reject\" in globals.Promise &&\n      \"all\" in globals.Promise &&\n      \"race\" in globals.Promise &&\n      // Older version of the spec had a resolver object\n      // as the arg rather than a function\n      (function () {\n        var resolve\n        new globals.Promise(function (r: any) {\n          resolve = r\n        })\n        return typeof resolve === \"function\"\n      })()\n    )\n  }\n}\n\n/**\n * Checks whether we're in the Node.js or Browser environment\n *\n * Originally from https://github.com/getsentry/sentry-javascript/\n */\n\nexport function isNodeEnv(): boolean {\n  return (\n    Object.prototype.toString.call(\n      typeof process !== \"undefined\" ? process : 0\n    ) === \"[object process]\"\n  )\n}\n\n/**\n * Safely get global scope object\n *\n * Originally from https://github.com/getsentry/sentry-javascript/\n */\nexport function getGlobalObject<T>(): T {\n  return (isNodeEnv()\n    ? global\n    : typeof window !== \"undefined\"\n    ? window\n    : typeof self !== \"undefined\"\n    ? self\n    : {}) as T\n}\n", "import { Transport } from \"../transport\"\n\n// Fixes TypeScript complaining about this class\n// not existing\ndeclare var XDomainRequest: any\n\nexport class XDomainTransport implements Transport {\n  public url: string\n\n  constructor(url: string) {\n    this.url = url\n  }\n\n  public send(data: string): Promise<any> {\n    return new Promise((resolve, reject) => {\n      const req = new XDomainRequest()\n      const rx = new RegExp(\"^https?:\")\n\n      req.onload = () => resolve({})\n\n      // XDomainRequest will only make a request to a URL with\n      // the same protocol\n      req.open(\"POST\", this.url.replace(rx, window?.location?.protocol))\n\n      setTimeout(() => {\n        try {\n          req.send(data)\n        } catch (e) {\n          reject(e)\n        }\n      }, 0)\n    })\n  }\n}\n", "import { Transport } from \"../transport\"\n\nexport class XHRTransport implements Transport {\n  public url: string\n\n  constructor(url: string) {\n    this.url = url\n  }\n\n  public send(data: string): Promise<any> {\n    return new Promise((resolve, reject) => {\n      try {\n        const req = new XMLHttpRequest()\n\n        req.onreadystatechange = () => {\n          if (req.readyState === XMLHttpRequest.DONE) {\n            resolve({})\n          }\n        }\n\n        req.open(\"POST\", this.url)\n        req.send(data)\n      } catch (e) {\n        reject(e)\n      }\n    })\n  }\n}\n", "import { Transport } from \"../transport\"\n\nexport class FetchTransport implements Transport {\n  public url: string\n\n  constructor(url: string, headers?: { [key: string]: string }) {\n    this.url = url\n  }\n\n  public async send(data: string): Promise<any> {\n    const res = await fetch(this.url, {\n      method: \"POST\",\n      body: data\n    })\n\n    const { statusText, ok } = res\n\n    return ok ? Promise.resolve({}) : Promise.reject({ statusText })\n  }\n}\n", "import { Transport } from \"../transport\"\nimport type https from \"https\"\nexport class NodeTransport implements Transport {\n  public url: string\n  private https: Promise<typeof https>\n\n  constructor(url: string) {\n    this.url = url\n    this.https = import(\"https\")\n  }\n\n  public send(data: string): Promise<any> {\n    const options = {\n      method: \"POST\",\n      headers: {\n        \"Content-Type\": \"application/json\",\n        \"Content-Length\": data.length\n      }\n    }\n\n    return new Promise((resolve, reject) => {\n      this.https\n        .then(https => {\n          const req = https\n            .request(this.url, options, () => {})\n            .on(\"error\", error => reject(error))\n\n          req.write(data)\n          req.end()\n\n          resolve({})\n        })\n        .catch(reason => {\n          console.warn(\n            \"NodeTransport is being used, but the HTTPS module could not be imported. No data will be sent to AppSignal.\"\n          )\n          reject(reason)\n        })\n    })\n  }\n}\n", "import { Environment } from \"./environment\"\nimport { Span } from \"./span\"\n\nimport { XDomainTransport } from \"./transports/xdomain\"\nimport { XHRTransport } from \"./transports/xhr\"\nimport { FetchTransport } from \"./transports/fetch\"\nimport { NodeTransport } from \"./transports/node\"\n\nimport { PushApiOptions } from \"./options\"\nimport { Transport } from \"./transport\"\n\nexport class PushApi {\n  private _uri: string\n  private _apiKey: string\n  private _clientVersion: string\n  private _transport: Transport\n\n  /**\n   * Creates a new instance of the Push API client.\n   *\n   * @constructor\n   *\n   * @param   {object}  options  An object of options to configure the Push API client\n   */\n  constructor(options: PushApiOptions) {\n    this._uri = options.uri || \"https://appsignal-endpoint.net/collect\"\n    this._apiKey = options.key\n    this._clientVersion = options.version\n\n    this._transport = this._createTransport(this._url())\n  }\n\n  /**\n   * Pushes a transaction to the Push API.\n   *\n   * @param   {Span}     span     A single API `Span`\n   *\n   * @return  {Promise<Span>}     A single API `Span`\n   */\n  public async push(span: Span): Promise<Span> {\n    await this._transport.send(span.toJSON())\n    return span\n  }\n\n  /**\n   * Creates an instance of a new `Transport` object. A `Transport` is a\n   * browser API that is able to sent HTTP requests to an endpoint. A\n   * transport is selected based on the best available in the current\n   * environment.\n   *\n   * @return  {ITransport}  A Transport object\n   */\n  private _createTransport(url: string): Transport {\n    switch (Environment.transport()) {\n      case \"XDomainRequest\":\n        return new XDomainTransport(url)\n      case \"XMLHttpRequest\":\n        return new XHRTransport(url)\n      case \"NodeHTTP\":\n        return new NodeTransport(url)\n      default:\n        return new FetchTransport(url)\n    }\n  }\n\n  /**\n   * Constructs a complete URL for accessing the Push API.\n   *\n   * @return  {string}  A Push API URL string\n   */\n  private _url(): string {\n    const auth = this._authorization()\n    return `${this._uri}?${urlEncode(auth)}`\n  }\n\n  /**\n   * Creates an object of API credentials.\n   *\n   * @return  {object}  API credentials\n   */\n  private _authorization(): object {\n    return {\n      api_key: this._apiKey,\n      version: this._clientVersion\n    }\n  }\n}\n\n/**\n * Encodes given object into url-friendly format\n *\n * @param   {object}  object:   [object: An object that contains serializable values]\n *\n * @return  {string}            [Encoded URI params]\n */\nexport function urlEncode(object: { [key: string]: any }): string {\n  return Object.keys(object)\n    .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(object[key])}`)\n    .join(\"&\")\n}\n", "export class Serializable<T = [] | {}> {\n  protected _data: T\n\n  constructor(data: T) {\n    this._data = data\n  }\n\n  public toJSON(): string {\n    return JSON.stringify(this._data)\n  }\n\n  public serialize(): T {\n    return this._data\n  }\n}\n", "import { getStacktrace, isError } from \"./error\"\nimport { Serializable } from \"./serializable\"\nimport { toHashMapString } from \"./hashmap\"\nimport type { HashMap, HashMapValue } from \"./hashmap\"\n\nimport type { Breadcrumb } from \"./breadcrumb\"\nimport type { SpanError } from \"./error\"\nimport { BacktraceMatcher } from \"./options\"\n\n/**\n * The internal data structure of a `Span` inside the JavaScript integration.\n */\nexport interface SpanData {\n  timestamp: number\n  action?: string\n  namespace: string\n  error: SpanError\n  revision?: string\n  tags?: HashMap<string>\n  params?: HashMap<any>\n  environment?: HashMap<string>\n  breadcrumbs?: Breadcrumb[]\n}\n\nexport class Span extends Serializable<SpanData> {\n  constructor(span?: Partial<SpanData>) {\n    super({\n      timestamp: Math.round(new Date().getTime() / 1000),\n      namespace: \"frontend\",\n      error: {\n        name: \"NullError\",\n        message: \"No error has been set\",\n        backtrace: []\n      },\n      ...span\n    })\n  }\n\n  public setAction(name: string): this {\n    if (!name || typeof name !== \"string\") {\n      return this\n    }\n\n    this._data.action = name\n    return this\n  }\n\n  public getAction(): string | undefined {\n    return this._data.action\n  }\n\n  public setNamespace(name: string): this {\n    if (!name || typeof name !== \"string\") {\n      return this\n    }\n\n    this._data.namespace = name\n    return this\n  }\n\n  public getNamespace(): string | undefined {\n    return this._data.namespace\n  }\n\n  public setError<T extends Error>(error: Error | T): this {\n    if (!error || !isError(error)) return this\n\n    this._data.error = {\n      name: error.name || \"[unknown]\",\n      message: error.message,\n      backtrace: getStacktrace(error)\n    }\n\n    return this\n  }\n\n  public getError(): SpanError | undefined {\n    return this._data.error\n  }\n\n  public setTags(tags: HashMap<string>): this {\n    this._data.tags = { ...this._data.tags, ...toHashMapString(tags) }\n    return this\n  }\n\n  public getTags(): HashMap<string> {\n    return this._data.tags ?? {}\n  }\n\n  public setParams(params: HashMap<any>): this {\n    this._data.params = { ...this._data.params, ...params }\n    return this\n  }\n\n  public getParams(): HashMap<any> {\n    return this._data.params ?? {}\n  }\n\n  public setBreadcrumbs(breadcrumbs: Breadcrumb[]): this {\n    this._data.breadcrumbs = breadcrumbs\n    return this\n  }\n\n  public getBreadcrumbs(): Breadcrumb[] {\n    return this._data.breadcrumbs ?? []\n  }\n\n  public setEnvironment(environment: HashMap<string>): this {\n    this._data.environment = { ...this._data.environment, ...environment }\n    return this\n  }\n\n  public getEnvironment(): HashMap<string> {\n    return this._data.environment ?? {}\n  }\n\n  // @private\n  // Do not use this function directly. Instead, set the `matchBacktracePaths`\n  // configuration option when initializing AppSignal.\n  public cleanBacktracePath(matchBacktracePaths: BacktraceMatcher[]): this {\n    if (matchBacktracePaths.length === 0) {\n      return this\n    }\n\n    if (!this._data.error || !this._data.error.backtrace) {\n      return this\n    }\n\n    let linesMatched = 0\n\n    this._data.error.backtrace = this._data.error.backtrace.map(line => {\n      const path = extractPath(line)\n      if (!path) {\n        return line\n      }\n\n      for (const matcher of matchBacktracePaths) {\n        const relevantPath = matcher(path)\n        if (!relevantPath) {\n          continue\n        }\n\n        linesMatched++\n        return line.replace(path, relevantPath)\n      }\n\n      return line\n    })\n\n    if (linesMatched > 0) {\n      this.setEnvironment({\n        backtrace_paths_matched: linesMatched.toString()\n      })\n    }\n\n    return this\n  }\n}\n\n// @private\n// Do not use this function directly. Instead, set the `matchBacktracePaths`\n// configuration option when initializing AppSignal.\n//\n// Converts a `RegExp` object into a `BacktraceMatcher` function that returns\n// the concatenated matches from that object.\nexport function toBacktraceMatcher(regexp: RegExp): BacktraceMatcher {\n  return (path: string): string | undefined => {\n    const match = path.match(regexp)\n    if (!match || match.length < 2) {\n      return\n    }\n\n    return match.slice(1).join(\"\")\n  }\n}\n\n// Backtrace formats are different between browsers, and generally not\n// meant to be parsed by machines. This function does a best-effort to\n// extract whatever is at the location in the line where the path\n// usually appears.\n//\n// If it returns `undefined`, it means that it could not find where the\n// path is located in the backtrace line. If it returns a string, that\n// string _may_ be a path, but it may contain non-path elements as well.\nfunction extractPath(backtraceLine: string): string | undefined {\n  // A Chrome backtrace line always contains `at` near the beginning,\n  // preceded by space characters and followed by one space.\n  const IS_CHROME = /^\\s*at\\s/\n\n  // In a Chrome backtrace line, the path (if it is available)\n  // is located after the \"at\" towards the end of the line, along with\n  // the line number and column number, separated by colons.\n  // When the function name is available, the path is enclosed in\n  // parentheses. When there is no function name, the path comes\n  // immediately after the \"at\".\n  // We check for the line and column numbers to reject clear non-paths.\n  const CHROME_PATH_WITH_FUNCTION_NAME = /^\\s*at(?:\\s[^\\(]+)?\\s\\((.*):\\d+:\\d+\\)$/\n  const CHROME_PATH_WITHOUT_FUNCTION_NAME = /^\\s*at\\s(.*):\\d+:\\d+$/\n\n  if (backtraceLine.match(IS_CHROME)) {\n    return (\n      backtraceLine.match(CHROME_PATH_WITH_FUNCTION_NAME)?.[1] ??\n      backtraceLine.match(CHROME_PATH_WITHOUT_FUNCTION_NAME)?.[1]\n    )\n  }\n\n  // A Safari or Firefox backtrace line always contains `@` after the first\n  // term in the line.\n  const IS_SAFARI_FF = /^.*@/\n\n  // In a Safari or Firefox backtrace line, the path (if it is available)\n  // is located after the \"@\" at the towards end of the line, followed by\n  // the line number and column number, separated by colons. We check for\n  // those to reject clear non-paths.\n  const SAFARI_FF_PATH = /^.*@\\s?(.*):\\d+:\\d+$/\n\n  if (backtraceLine.match(IS_SAFARI_FF)) {\n    return backtraceLine.match(SAFARI_FF_PATH)?.[1]\n  }\n}\n", "import { Span } from \"./span\"\n\nexport class Queue {\n  private _data: Span[]\n\n  constructor(data?: Span[]) {\n    this._data = data || []\n  }\n\n  public clear() {\n    this._data = []\n  }\n\n  public values(): Span[] {\n    return this._data\n  }\n\n  public push(item: Span | Span[]) {\n    return Array.isArray(item)\n      ? this._data.push(...item)\n      : this._data.push(item)\n  }\n\n  public *drain() {\n    while (this._data.length > 0) {\n      yield this._data.shift()\n    }\n  }\n}\n", "import { getGlobalObject } from \"./environment\"\n\nimport { Queue } from \"./queue\"\nimport { PushApi } from \"./api\"\n\ntype DispatcherOptions = { limit: number; initialDuration: number }\n\nexport class Dispatcher {\n  public options: DispatcherOptions\n\n  private _queue: Queue\n  private _api: PushApi\n  private _retries = 0\n  private _timerID = 0\n  private _duration = 0\n\n  constructor(\n    queue: Queue,\n    api: PushApi,\n    options?: Partial<DispatcherOptions>\n  ) {\n    this._api = api\n    this._queue = queue\n\n    this.options = {\n      limit: 5,\n      initialDuration: 1000,\n      ...options\n    }\n\n    this.reset()\n  }\n\n  public schedule(time = this._duration): number {\n    const globals = getGlobalObject<Window>()\n\n    // @TODO: make this configurable?\n    const BACKOFF_FACTOR = 1.3\n\n    const cb = async () => {\n      for (let span of this._queue.drain()) {\n        if (!span) return\n\n        try {\n          await this._api.push(span)\n        } catch (e) {\n          // when the first promise fails, reschedule a timer\n          const expDuration = Math.floor(Math.pow(time, BACKOFF_FACTOR))\n\n          this._retries = this._retries - 1\n\n          if (this._retries === 0) {\n            this.reset()\n          } else {\n            this._queue.push(span)\n            this._timerID = this.schedule(expDuration)\n          }\n\n          return\n        }\n      }\n\n      // reset once all promises are cleared\n      this.reset()\n    }\n\n    return globals.setTimeout(cb, time)\n  }\n\n  public reset() {\n    const { limit, initialDuration } = this.options\n    this._retries = limit\n    this._duration = initialDuration\n  }\n}\n", "/**\n * The AppSignal client.\n * @module Appsignal\n */\n\nimport type { Breadcrumb } from \"./breadcrumb\"\nexport type { Breadcrumb }\nimport type { Decorator, Override } from \"./hook\"\nimport type { HashMap } from \"./hashmap\"\n\nexport { isError } from \"./error\"\n\nimport { toHashMap } from \"./hashmap\"\nimport { VERSION } from \"./version\"\nimport { PushApi } from \"./api\"\nimport { Environment } from \"./environment\"\nimport { Span, toBacktraceMatcher } from \"./span\"\nexport { Span }\nimport { Queue } from \"./queue\"\nimport { Dispatcher } from \"./dispatcher\"\n\nimport { AppsignalOptions, BacktraceMatcher } from \"./options\"\n\nexport default class Appsignal {\n  public VERSION = VERSION\n  public ignored: RegExp[] = []\n  private backtraceMatchers: BacktraceMatcher[] = []\n\n  private _dispatcher: Dispatcher\n  private _options: AppsignalOptions\n  private _api: PushApi\n  private _breadcrumbs: Breadcrumb[] = []\n\n  private _hooks = {\n    decorators: Array<Decorator>(),\n    overrides: Array<Override>()\n  }\n\n  private _env = Environment.serialize()\n  private _queue = new Queue([])\n\n  /**\n   * Creates a new instance of the AppSignal client.\n   *\n   * @constructor\n   *\n   * @param   {AppsignalOptions}  options        An object of options to configure the AppSignal client\n   */\n  constructor(options: AppsignalOptions) {\n    const {\n      key = \"\",\n      uri,\n      revision,\n      ignoreErrors,\n      matchBacktracePaths\n    } = options\n\n    // `revision` should be a `string`, but we attempt to\n    // normalise to one anyway\n    if (revision && typeof revision !== \"string\") {\n      options.revision = String(revision)\n    }\n\n    // starting with no key means nothing will be sent to the API\n    if (key === \"\") {\n      console.info(\n        \"[APPSIGNAL]: No API key provided. Started in development mode. No data will be sent.\"\n      )\n    }\n\n    this._api = new PushApi({\n      key,\n      uri,\n      version: this.VERSION\n    })\n\n    // ignored exceptions are checked against the `message`\n    // property of a given `Error`\n    if (ignoreErrors && Array.isArray(ignoreErrors)) {\n      this.ignored = ignoreErrors\n        .filter(value => value instanceof RegExp)\n        .map(unglobalize)\n    }\n\n    if (matchBacktracePaths) {\n      let paths: (RegExp | BacktraceMatcher)[]\n\n      if (Array.isArray(matchBacktracePaths)) {\n        paths = matchBacktracePaths\n      } else {\n        paths = [matchBacktracePaths]\n      }\n\n      for (const matcher of paths) {\n        if (matcher instanceof RegExp) {\n          this.backtraceMatchers.push(toBacktraceMatcher(unglobalize(matcher)))\n        } else if (typeof matcher === \"function\") {\n          this.backtraceMatchers.push(matcher)\n        }\n      }\n    }\n\n    this._dispatcher = new Dispatcher(this._queue, this._api)\n\n    this._options = options\n  }\n\n  /**\n   * Records and sends a browser `Error` to AppSignal.\n   *\n   * @param   {Error | ErrorEvent}             error          A JavaScript Error object\n   * @param   {Function | void}                fn             Optional callback function to modify span before it's sent.\n   *\n   * @return  {Promise<Span> | void}             An API response, or `void` if `Promise` is unsupported.\n   */\n  public send<T>(error: Error, fn?: (span: Span) => T): Promise<Span> | void\n\n  /**\n   * Records and sends a browser `Error` to AppSignal.\n   *\n   * @param   {Error | ErrorEvent}             error          A JavaScript Error object\n   * @param   {object}                         tags           An key, value object of tags\n   * @param   {string}                         namespace      An optional namespace name\n   *\n   * @return  {Promise<Span> | void}             An API response, or `void` if `Promise` is unsupported.\n   */\n  public send(\n    error: Error | ErrorEvent,\n    tags?: object,\n    namespace?: string\n  ): Promise<Span> | void\n\n  /**\n   * Records and sends an Appsignal `Span` object to AppSignal.\n   *\n   * @param   {Span}             span          An Appsignal Span object\n   *\n   * @return  {Promise<Span>}                    An API response, or `void` if `Promise` is unsupported.\n   */\n  public send(span: Span): Promise<Span> | void\n\n  /**\n   *\n   * @param   {Error | Span | ErrorEvent}  data           A JavaScript Error or Appsignal Span object\n   * @param   {object | Function}          tagsOrFn       An key-value object of tags or a callback function to customize the span before it is sent.\n   * @param   {string}                     namespace      DEPRECATED: An optional namespace name.\n   *\n   * @return  {Promise<Span> | void}             An API response, or `void` if `Promise` is unsupported.\n   */\n  public send<T>(\n    data: Error | Span | ErrorEvent,\n    tagsOrFn?: object | ((span: Span) => T),\n    namespace?: string\n  ): Promise<any> | void {\n    if (\n      !(data instanceof Error) &&\n      !(data instanceof Span) &&\n      !(data && data.error instanceof Error)\n    ) {\n      // @TODO: route this through a central logger\n      console.error(\n        \"[APPSIGNAL]: Can't send error, given error is not a valid type\"\n      )\n      return\n    }\n\n    let error: Error | Span\n\n    if (\"error\" in data) {\n      error = data.error as Error // handle ErrorEvent\n    } else {\n      error = data\n    }\n\n    // a \"span\" currently refers to a fixed point in time, as opposed to\n    // a range or length in time. this may change in future!\n    let span = error instanceof Span ? error : this._createSpanFromError(error)\n\n    // A Span can be \"decorated\" with metadata after it has been created,\n    // but before it is sent to the API and before metadata provided\n    // as arguments is added\n\n    for (const decorator of this._hooks.decorators) {\n      const previousSpan = span\n      span = decorator(span)\n      // In previous versions of this integration, the return value was\n      // ignored, and the original span was used. This was a bug, but it\n      // worked given an implicit expectation that the span would be\n      // modified in place.\n      //\n      // Avoid a breaking change for \"broken\" decorators that do not\n      // return a value by using the previous span.\n      if (span === undefined) {\n        span = previousSpan\n      }\n    }\n\n    if (tagsOrFn) {\n      if (typeof tagsOrFn === \"function\") {\n        const callback = tagsOrFn\n        callback(span)\n      } else {\n        console.warn(\n          \"[APPSIGNAL]: DEPRECATED: Calling the `send`/`sendError` function with a tags object is deprecated. Use the callback argument instead.\"\n        )\n        const tags = (toHashMap(tagsOrFn) || {}) as HashMap<string>\n        span.setTags(tags)\n      }\n    }\n    if (namespace) {\n      console.warn(\n        \"[APPSIGNAL]: DEPRECATED: Calling the `send`/`sendError` function with a namespace is deprecated. Use the callback argument instead.\"\n      )\n      span.setNamespace(namespace)\n    }\n\n    if (this._breadcrumbs.length > 0) span.setBreadcrumbs(this._breadcrumbs)\n\n    // A Span can be \"overridden\" with metadata after it has been created,\n    // but before it is sent to the API and after metadata provided\n    // as arguments is added\n\n    for (const override of this._hooks.overrides) {\n      const previousSpan = span\n      const nextSpan = override(span)\n\n      if (nextSpan === false) {\n        // If the override returns false, we ignore this span.\n        console.warn(\"[APPSIGNAL]: Ignored a span due to override.\")\n        return\n      }\n\n      // In previous versions of this integration, the return value was\n      // ignored, and the original span was used. This was a bug, but it\n      // worked given an implicit expectation that the span would be\n      // modified in place.\n      //\n      // Avoid a breaking change for \"broken\" overrides that do not\n      // return a value by using the previous span.\n      span = nextSpan ?? previousSpan\n    }\n\n    // Ignore user defined errors after overrides.\n    const message = span.getError()?.message\n\n    if (message && this.ignored.some(el => el.test(message))) {\n      console.warn(`[APPSIGNAL]: Ignored a span: ${message}`)\n      return\n    }\n\n    span.cleanBacktracePath(this.backtraceMatchers)\n\n    if (Environment.supportsPromises()) {\n      // clear breadcrumbs as they are now loaded into the span,\n      // and we are sure that it's possible to send them\n      this._breadcrumbs = []\n\n      // if no key is supplied, we just output the span to the console\n      if (!this._options.key) {\n        // @TODO: route this through a central logger\n        console.warn(\n          \"[APPSIGNAL]: Span not sent because we're in development mode:\",\n          span\n        )\n      } else {\n        // attempt to push to the API\n        return this._api.push(span).catch(() => {\n          this._queue.push(span)\n\n          // schedule on next tick\n          setTimeout(() => this._dispatcher.schedule(), 0)\n        })\n      }\n    } else {\n      // @TODO: route this through a central logger\n      console.error(\n        \"[APPSIGNAL]: Error not sent. A Promise polyfill is required.\"\n      )\n      return\n    }\n  }\n\n  sendError<T>(error: Error | ErrorEvent): Promise<Span> | void\n  sendError<T>(\n    error: Error | ErrorEvent,\n    callback: (span: Span) => T\n  ): Promise<Span> | void\n  sendError<T>(\n    error: Error | ErrorEvent,\n    tags?: object,\n    namespace?: string\n  ): Promise<Span> | void\n\n  /**\n   * Records and sends a browser `Error` to AppSignal. An alias to `#send()`\n   * to maintain compatibility.\n   *\n   * @param   {Error | ErrorEvent}  error          A JavaScript Error object\n   * @param   {object | Function}   tagsOrFn       An key-value object of tags or callback function to customize the span before it is sent.\n   * @param   {string}              namespace      DEPRECATED: An optional namespace name\n   *\n   * @return  {Promise<Span> | void}               An API response, or `void` if `Promise` is unsupported.\n   */\n  public sendError<T>(\n    error: Error | ErrorEvent,\n    tagsOrFn?: object | ((span: Span) => T),\n    namespace?: string\n  ): Promise<Span> | void {\n    return this.send(error, tagsOrFn, namespace)\n  }\n\n  /**\n   * Registers and installs a valid plugin.\n   *\n   * A plugin is typically a function that can be used to provide a\n   * reference to the `Appsignal` instance via returning a function\n   * that can be bound to `this`.\n   *\n   * @param   {Plugin}            plugin         A JavaScript Error object\n   *\n   * @return  {void}\n   */\n  public use(plugin: Function): void {\n    plugin.call(this)\n  }\n\n  /**\n   * Creates a new `Span`, augmented with the current environment.\n   *\n   * @param   {Function | void}   fn         Optional function to modify span\n   *\n   * @return  {Span}              An AppSignal `Span` object\n   */\n  public createSpan(fn?: (span: Span) => void): Span {\n    const { revision = \"\", namespace } = this._options\n\n    const span = new Span({\n      environment: this._env,\n      revision\n    })\n\n    // set default namespace from constructor if none is set\n    if (namespace) span.setNamespace(namespace)\n\n    if (fn && typeof fn === \"function\") fn(span)\n\n    return span\n  }\n\n  /**\n   * Wraps and catches errors within a given function. If the function throws an\n   * error, a rejected `Promise` will be returned and the error thrown will be\n   * logged to AppSignal.\n   */\n  public async wrap<T>(fn: () => T, callbackFn?: (span: Span) => T): Promise<T>\n\n  /**\n   * Wraps and catches errors within a given function. If the function throws an\n   * error, a rejected `Promise` will be returned and the error thrown will be\n   * logged to AppSignal.\n   */\n  public async wrap<T>(\n    fn: () => T,\n    tags?: object,\n    namespace?: string\n  ): Promise<T>\n\n  /**\n   * Wraps and catches errors within a given function. If the function throws an\n   * error, a rejected `Promise` will be returned and the error thrown will be\n   * logged to AppSignal.\n   *\n   * @param   {Function}          fn             A function to wrap\n   * @param   {object | Function} tagsOrFn       An key-value object of tags or a callback function to customize the span before it is sent.\n   * @param   {string}            namespace      DEPRECATED: An optional namespace name\n   *\n   * @return  {Promise<any>}      A Promise containing the return value of the function, or a `Span` if an error was thrown.\n   */\n  public async wrap<T>(\n    fn: () => T,\n    tagsOrFn?: object | ((span: Span) => T),\n    namespace?: string\n  ): Promise<T> {\n    try {\n      return await fn()\n    } catch (e) {\n      if (e instanceof Error || e instanceof ErrorEvent) {\n        await this.sendError(e, tagsOrFn, namespace)\n      }\n      return Promise.reject(e)\n    }\n  }\n\n  /**\n   * Registers a span decorator to be applied every time a Span\n   * is sent to the Push API\n   *\n   * @param   {Function}  decorator  A decorator function, returning `Span`\n   *\n   * @return  {void}\n   */\n  public addDecorator<T extends Decorator>(decorator: T): void {\n    this._hooks.decorators.push(decorator)\n  }\n\n  /**\n   * Registers a span override to be applied every time a Span\n   * is sent to the Push API\n   *\n   * @param   {Function}  override  An override function, returning `Span`\n   *\n   * @return  {void}\n   */\n  public addOverride<T extends Override>(override: T): void {\n    this._hooks.overrides.push(override)\n  }\n\n  /**\n   * Sends a demonstration error to AppSignal.\n   *\n   * @return  {void}\n   */\n  public demo(): void {\n    const span = this._createSpanFromError(\n      new Error(\n        \"Hello world! This is an error used for demonstration purposes.\"\n      )\n    )\n\n    span\n      .setAction(\"TestAction\")\n      .setParams({\n        path: \"/hello\",\n        method: \"GET\"\n      })\n      .setTags({\n        demo_sample: \"true\"\n      })\n\n    this.send(span)\n  }\n\n  /**\n   * Adds a breadcrumb.\n   *\n   * @param   {Breadcrumb}  breadcrumb  A valid breadcrumb\n   *\n   * @return  {void}\n   */\n  public addBreadcrumb(breadcrumb: Omit<Breadcrumb, \"timestamp\">): void {\n    const crumb: Breadcrumb = {\n      timestamp: Math.round(new Date().getTime() / 1000),\n      ...breadcrumb,\n      metadata: toHashMap(breadcrumb.metadata)\n    }\n\n    if (!crumb.category) {\n      console.warn(\"[APPSIGNAL]: Breadcrumb not added. `category` is missing.\")\n      return\n    }\n\n    if (!crumb.action) {\n      console.warn(\"[APPSIGNAL]: Breadcrumb not added. `action` is missing.\")\n      return\n    }\n\n    if (this._breadcrumbs.length === 20) {\n      this._breadcrumbs.pop()\n    }\n\n    this._breadcrumbs.unshift(crumb)\n  }\n\n  /**\n   * Creates a valid AppSignal `Span` from a JavaScript `Error`\n   * object.\n   *\n   * @param   {Error}  error  A JavaScript error\n   *\n   * @return  {Span}         An AppSignal event\n   */\n  private _createSpanFromError(error: Error): Span {\n    const event = this.createSpan()\n    event.setError(error)\n\n    return event\n  }\n}\n\n// Returns a new `RegExp` object with the global flag removed.\n// This fixes issues where using global regexes repeatedly with `test` against\n// different strings will return unexpected results, due to the regex object\n// storing the location of its last match and resuming the search from there.\nfunction unglobalize(regexp: RegExp): RegExp {\n  return new RegExp(regexp.source, regexp.flags.replace(\"g\", \"\"))\n}\n", "import type Appsignal from \"@appsignal/javascript\"\nimport type { Span } from \"@appsignal/javascript\"\n\nexport function installErrorHandler(appsignal: Appsignal, application: any) {\n  const prevHandler = application.handleError\n\n  application.handleError = function (\n    error: Error,\n    message: string,\n    detail: { identifier?: string }\n  ) {\n    const span = appsignal.createSpan((span: Span) =>\n      span\n        .setAction(detail?.identifier || \"[unknown Stimulus controller]\")\n        .setTags({ framework: \"Stimulus\", message })\n        .setError(error)\n    )\n\n    appsignal.send(span)\n\n    if (prevHandler && typeof prevHandler === \"function\") {\n      prevHandler.apply(this, arguments as any)\n    }\n  }\n}\n", "import { Application } from '@hotwired/stimulus';\nimport * as ActionCable from '@rails/actioncable';\nimport * as Turbo from '@hotwired/turbo';\n\nimport Appsignal from '@appsignal/javascript';\nimport { installErrorHandler } from '@appsignal/stimulus';\n\nconst application = Application.start();\n\n// Parse config data injected via HTML\n// See shared/_js_config_data partial\nlet config = {};\n\nconst configMeta = document.querySelector('meta[name=\"js-config-data\"]');\nif (configMeta) {\n  try {\n    config = JSON.parse(configMeta.getAttribute('content'));\n  } catch (error) {\n    console.error('Failed to parse JSON config:', error);\n  }\n}\n\nif (config.RAILS_ENV !== 'production') {\n  // Enable ActionCable logging\n  ActionCable.logger.enabled = true;\n\n  // Configure Stimulus development experience\n  application.warnings = true;\n  application.debug = true;\n  window.Stimulus = application;\n}\n\nconst appsignal = new Appsignal({\n  key: config.APPSIGNAL_KEY,\n  revision: config.APPSIGNAL_REVISION\n});\ninstallErrorHandler(appsignal, application);\n\n// Custom configm dialog support\nconst confirmMethod = (title, element, submitter) => {\n  const dialog = document.getElementById('turbo-confirm');\n\n  // To keep data-turbo-confirm: true gives default confirm dialog behavior\n  if (title && title !== 'true') dialog.querySelector('#title').innerHTML = title;\n\n  const subtext = submitter?.getAttribute('data-turbo-confirm-subtext');\n  if (subtext) {\n    dialog.querySelector('#subtext').innerHTML = subtext;\n  }\n\n  dialog.showModal();\n\n  return new Promise((resolve, reject) => {\n    dialog.addEventListener('close', () => {\n      resolve(dialog.returnValue === 'confirm');\n    }, { once: true });\n  });\n};\n\n// Shows our custom confirm dialog which replaces the browser confirm dialog when using data-turbo-confirm\nTurbo.config.forms.confirm = confirmMethod;\n\nexport { application, confirmMethod, appsignal };\n", "var x=Object.defineProperty;var V=(t,s,e)=>s in t?x(t,s,{enumerable:!0,configurable:!0,writable:!0,value:e}):t[s]=e;var i=(t,s,e)=>V(t,typeof s!=\"symbol\"?s+\"\":s,e);import{Controller as y}from\"@hotwired/stimulus\";async function n(t,s,e={}){s?await T(t,e):await b(t,e)}async function T(t,s={}){let{transitionClasses:e,fromClasses:a,toClasses:o,toggleClass:r}=C(\"Enter\",t,s);return v(t,{firstFrame(){t.classList.add(...e.split(\" \")),t.classList.add(...a.split(\" \")),t.classList.remove(...o.split(\" \")),t.classList.remove(...r.split(\" \"))},secondFrame(){t.classList.remove(...a.split(\" \")),t.classList.add(...o.split(\" \"))},ending(){t.classList.remove(...e.split(\" \"))}})}async function b(t,s={}){let{transitionClasses:e,fromClasses:a,toClasses:o,toggleClass:r}=C(\"Leave\",t,s);return v(t,{firstFrame(){t.classList.add(...a.split(\" \")),t.classList.remove(...o.split(\" \")),t.classList.add(...e.split(\" \"))},secondFrame(){t.classList.remove(...a.split(\" \")),t.classList.add(...o.split(\" \"))},ending(){t.classList.remove(...e.split(\" \")),t.classList.add(...r.split(\" \"))}})}function C(t,s,e){return{transitionClasses:s.dataset[`transition${t}`]||e[t.toLowerCase()]||t.toLowerCase(),fromClasses:s.dataset[`transition${t}From`]||e[`${t.toLowerCase()}From`]||`${t.toLowerCase()}-from`,toClasses:s.dataset[`transition${t}To`]||e[`${t.toLowerCase()}To`]||`${t.toLowerCase()}-to`,toggleClass:s.dataset.toggleClass||e.toggleClass||e.toggle||\"hidden\"}}function L(t){t._stimulus_transition={timeout:null,interrupted:!1}}function w(t){t._stimulus_transition&&t._stimulus_transition.interrupt&&t._stimulus_transition.interrupt()}function v(t,s){t._stimulus_transition&&w(t);let e,a,o;return L(t),t._stimulus_transition.cleanup=()=>{a||s.firstFrame(),o||s.secondFrame(),s.ending(),t._stimulus_transition=null},t._stimulus_transition.interrupt=()=>{e=!0,t._stimulus_transition.timeout&&clearTimeout(t._stimulus_transition.timeout),t._stimulus_transition.cleanup()},new Promise(r=>{e||requestAnimationFrame(()=>{e||(s.firstFrame(),a=!0,requestAnimationFrame(()=>{e||(s.secondFrame(),o=!0,t._stimulus_transition&&(t._stimulus_transition.timeout=setTimeout(()=>{if(e){r();return}t._stimulus_transition.cleanup(),r()},I(t))))}))})})}function I(t){let s=Number(getComputedStyle(t).transitionDuration.replace(/,.*/,\"\").replace(\"s\",\"\"))*1e3,e=Number(getComputedStyle(t).transitionDelay.replace(/,.*/,\"\").replace(\"s\",\"\"))*1e3;return s===0&&(s=Number(getComputedStyle(t).animationDuration.replace(\"s\",\"\"))*1e3),s+e}var p=class extends y{connect(){setTimeout(()=>{T(this.element)},this.showDelayValue),this.hasDismissAfterValue&&setTimeout(()=>{this.close()},this.dismissAfterValue)}close(){b(this.element).then(()=>{this.element.remove()})}};i(p,\"values\",{dismissAfter:Number,showDelay:{type:Number,default:0}});import{Controller as A}from\"@hotwired/stimulus\";var h=class extends A{connect(){this.timeout=null}save(){clearTimeout(this.timeout),this.timeout=setTimeout(()=>{this.statusTarget.textContent=this.submittingTextValue,this.formTarget.requestSubmit()},this.submitDurationValue)}success(){this.setStatus(this.successTextValue)}error(){this.setStatus(this.errorTextValue)}setStatus(t){this.statusTarget.textContent=t,this.timeout=setTimeout(()=>{this.statusTarget.textContent=\"\"},this.statusDurationValue)}};i(h,\"targets\",[\"form\",\"status\"]),i(h,\"values\",{submitDuration:{type:Number,default:1e3},statusDuration:{type:Number,default:2e3},submittingText:{type:String,default:\"Saving...\"},successText:{type:String,default:\"Saved!\"},errorText:{type:String,default:\"Unable to save.\"}});import{Controller as _}from\"@hotwired/stimulus\";var c=class extends _{update(){this.preview=this.colorTarget.value}set preview(t){this.previewTarget.style[this.styleValue]=t;let s=this._getContrastYIQ(t);this.styleValue===\"color\"?this.previewTarget.style.backgroundColor=s:this.previewTarget.style.color=s}_getContrastYIQ(t){t=t.replace(\"#\",\"\");let s=128,e=parseInt(t.substr(0,2),16),a=parseInt(t.substr(2,2),16),o=parseInt(t.substr(4,2),16);return(e*299+a*587+o*114)/1e3>=s?\"#000\":\"#fff\"}};i(c,\"targets\",[\"preview\",\"color\"]),i(c,\"values\",{style:{type:String,default:\"backgroundColor\"}});import{Controller as D}from\"@hotwired/stimulus\";var l=class extends D{connect(){this.boundBeforeCache=this.beforeCache.bind(this),document.addEventListener(\"turbo:before-cache\",this.boundBeforeCache)}disconnect(){document.removeEventListener(\"turbo:before-cache\",this.boundBeforeCache)}openValueChanged(){n(this.menuTarget,this.openValue,this.transitionOptions),this.openValue===!0&&this.hasMenuItemTarget&&this.menuItemTargets[0].focus()}show(){this.openValue=!0}close(){this.openValue=!1}hide(t){this.closeOnClickOutsideValue&&t.target.nodeType&&this.element.contains(t.target)===!1&&this.openValue&&(this.openValue=!1),this.closeOnEscapeValue&&t.key===\"Escape\"&&this.openValue&&(this.openValue=!1)}toggle(){this.openValue=!this.openValue}nextItem(t){t.preventDefault(),this.menuItemTargets[this.nextIndex].focus()}previousItem(t){t.preventDefault(),this.menuItemTargets[this.previousIndex].focus()}get currentItemIndex(){return this.menuItemTargets.indexOf(document.activeElement)}get nextIndex(){return Math.min(this.currentItemIndex+1,this.menuItemTargets.length-1)}get previousIndex(){return Math.max(this.currentItemIndex-1,0)}get transitionOptions(){return{enter:this.hasEnterClass?this.enterClasses.join(\" \"):\"transition ease-out duration-100\",enterFrom:this.hasEnterFromClass?this.enterFromClasses.join(\" \"):\"transform opacity-0 scale-95\",enterTo:this.hasEnterToClass?this.enterToClasses.join(\" \"):\"transform opacity-100 scale-100\",leave:this.hasLeaveClass?this.leaveClasses.join(\" \"):\"transition ease-in duration-75\",leaveFrom:this.hasLeaveFromClass?this.leaveFromClasses.join(\" \"):\"transform opacity-100 scale-100\",leaveTo:this.hasLeaveToClass?this.leaveToClasses.join(\" \"):\"transform opacity-0 scale-95\",toggleClass:this.hasToggleClass?this.toggleClasses.join(\" \"):\"hidden\"}}beforeCache(){this.openValue=!1,this.hasMenuTarget&&this.menuTarget.classList.add(this.transitionOptions.toggleClass)}};i(l,\"targets\",[\"menu\",\"button\",\"menuItem\"]),i(l,\"values\",{open:{type:Boolean,default:!1},closeOnEscape:{type:Boolean,default:!0},closeOnClickOutside:{type:Boolean,default:!0}}),i(l,\"classes\",[\"enter\",\"enterFrom\",\"enterTo\",\"leave\",\"leaveFrom\",\"leaveTo\",\"toggle\"]);import{Controller as S}from\"@hotwired/stimulus\";var d=class extends S{connect(){this.openValue&&this.open(),this.boundBeforeCache=this.beforeCache.bind(this),document.addEventListener(\"turbo:before-cache\",this.boundBeforeCache)}disconnect(){document.removeEventListener(\"turbo:before-cache\",this.boundBeforeCache)}open(){this.dialogTarget.showModal()}close(){this.dialogTarget.setAttribute(\"closing\",\"\"),Promise.all(this.dialogTarget.getAnimations().map(t=>t.finished)).then(()=>{this.dialogTarget.removeAttribute(\"closing\"),this.dialogTarget.close()})}backdropClose(t){t.target.nodeName===\"DIALOG\"&&(window.getSelection().toString().length>0||this.close())}show(){this.dialogTarget.show()}hide(){this.close()}beforeCache(){this.hasDialogTarget&&this.close()}};i(d,\"targets\",[\"dialog\"]),i(d,\"values\",{open:Boolean});import{Controller as F}from\"@hotwired/stimulus\";var f=class extends F{openValueChanged(){n(this.contentTarget,this.openValue),this.shouldAutoDismiss&&this.scheduleDismissal()}show(t){this.shouldAutoDismiss&&this.scheduleDismissal(),this.openValue=!0}hide(){this.openValue=!1}toggle(){this.openValue=!this.openValue}get shouldAutoDismiss(){return this.openValue&&this.hasDismissAfterValue}scheduleDismissal(){this.hasDismissAfterValue&&(this.cancelDismissal(),this.timeoutId=setTimeout(()=>{this.hide(),this.timeoutId=void 0},this.dismissAfterValue))}cancelDismissal(){typeof this.timeoutId==\"number\"&&(clearTimeout(this.timeoutId),this.timeoutId=void 0)}};i(f,\"targets\",[\"content\"]),i(f,\"values\",{dismissAfter:Number,open:{type:Boolean,default:!1}});import{Controller as B}from\"@hotwired/stimulus\";var m=class extends B{connect(){this.openValue&&this.open(),this.boundBeforeCache=this.beforeCache,document.addEventListener(\"turbo:before-cache\",this.boundBeforeCache)}disconnect(){document.removeEventListener(\"turbo:before-cache\",this.boundBeforeCache)}open(){this.dialogTarget.showModal()}close(){this.dialogTarget.setAttribute(\"closing\",\"\"),Promise.all(this.dialogTarget.getAnimations().map(t=>t.finished)).then(()=>{this.dialogTarget.removeAttribute(\"closing\"),this.dialogTarget.close()})}backdropClose(t){t.target.nodeName===\"DIALOG\"&&(window.getSelection().toString().length>0||this.close())}show(){this.open()}hide(){this.close()}beforeCache(){this.hasDialogTarget&&this.close()}};i(m,\"targets\",[\"dialog\"]),i(m,\"values\",{open:Boolean});import{Controller as E}from\"@hotwired/stimulus\";var u=class extends E{initialize(){this.updateAnchorValue&&this.anchor&&(this.indexValue=this.tabTargets.findIndex(t=>t.id===this.anchor))}connect(){this.showTab()}change(t){t.currentTarget.tagName===\"SELECT\"?this.indexValue=t.currentTarget.selectedIndex:t.currentTarget.dataset.index?this.indexValue=t.currentTarget.dataset.index:t.currentTarget.dataset.id?this.indexValue=this.tabTargets.findIndex(s=>s.id==t.currentTarget.dataset.id):this.indexValue=this.tabTargets.indexOf(t.currentTarget)}nextTab(){this.indexValue=Math.min(this.indexValue+1,this.tabsCount-1)}previousTab(){this.indexValue=Math.max(this.indexValue-1,0)}firstTab(){this.indexValue=0}lastTab(){this.indexValue=this.tabsCount-1}indexValueChanged(){if(this.showTab(),this.dispatch(\"tab-change\",{target:this.tabTargets[this.indexValue],detail:{activeIndex:this.indexValue}}),this.updateAnchorValue){let t=this.tabTargets[this.indexValue].id;if(this.scrollToAnchorValue)location.hash=t;else{let e=window.location.href.split(\"#\")[0]+\"#\"+t;typeof Turbo<\"u\"?Turbo.navigator.history.replace(new URL(e)):history.replaceState({},document.title,e)}}}showTab(){this.panelTargets.forEach((t,s)=>{let e=this.tabTargets[s];s===this.indexValue?(t.classList.remove(\"hidden\"),e.ariaSelected=\"true\",e.dataset.active=!0,this.hasInactiveTabClass&&e?.classList?.remove(...this.inactiveTabClasses),this.hasActiveTabClass&&e?.classList?.add(...this.activeTabClasses)):(t.classList.add(\"hidden\"),e.ariaSelected=null,delete e.dataset.active,this.hasActiveTabClass&&e?.classList?.remove(...this.activeTabClasses),this.hasInactiveTabClass&&e?.classList?.add(...this.inactiveTabClasses))}),this.hasSelectTarget&&(this.selectTarget.selectedIndex=this.indexValue),this.scrollActiveTabIntoViewValue&&this.scrollToActiveTab()}scrollToActiveTab(){let t=this.element.querySelector(\"[aria-selected]\");t&&t.scrollIntoView({inline:\"center\"})}get tabsCount(){return this.tabTargets.length}get anchor(){return document.URL.split(\"#\").length>1?document.URL.split(\"#\")[1]:null}};i(u,\"classes\",[\"activeTab\",\"inactiveTab\"]),i(u,\"targets\",[\"tab\",\"panel\",\"select\"]),i(u,\"values\",{index:0,updateAnchor:Boolean,scrollToAnchor:Boolean,scrollActiveTabIntoView:Boolean});import{Controller as N}from\"@hotwired/stimulus\";var g=class extends N{toggle(t){this.openValue=!this.openValue,this.animate()}toggleInput(t){this.openValue=t.target.checked,this.animate()}hide(){this.openValue=!1,this.animate()}show(){this.openValue=!0,this.animate()}animate(){this.toggleableTargets.forEach(t=>{n(t,this.openValue)})}};i(g,\"targets\",[\"toggleable\"]),i(g,\"values\",{open:{type:Boolean,default:!1}});export{p as Alert,h as Autosave,c as ColorPreview,l as Dropdown,d as Modal,f as Popover,m as Slideover,u as Tabs,g as Toggle,n as transition};\n", "import { Controller } from '@hotwired/stimulus';\nexport default class extends Controller {\n  static targets = ['toggle', 'grouped', 'single'];\n\n  connect () {\n    this.toggle();\n  }\n\n  get noneSelected () {\n    return this.toggleTarget.value === 'none';\n  }\n\n  toggle () {\n    if (this.noneSelected) {\n      this.showSingleMenu();\n    } else {\n      this.showGroupedMenu();\n    }\n  }\n\n  showGroupedMenu () {\n    this.groupedTarget.hidden = false;\n    this.singleTarget.hidden = true;\n  }\n\n  showSingleMenu () {\n    this.groupedTarget.hidden = true;\n    this.singleTarget.hidden = false;\n  }\n}\n", "import {\n  isFunction,\n  isPlainObject,\n  isString,\n  isNumber,\n} from '@segment/analytics-core'\nimport { Context } from '../context'\nimport {\n  Callback,\n  Options,\n  EventProperties,\n  SegmentEvent,\n  Traits,\n  GroupTraits,\n  UserTraits,\n} from '../events'\nimport { ID, WithId } from '../user'\n\n/**\n * Helper for the track method\n */\nexport function resolveArguments(\n  eventName: string | SegmentEvent,\n  properties?: EventProperties | Callback,\n  options?: Options | Callback,\n  callback?: Callback\n): [string, EventProperties | Callback, Options, Callback | undefined] {\n  const args = [eventName, properties, options, callback]\n\n  const name = isPlainObject(eventName) ? eventName.event : eventName\n  if (!name || !isString(name)) {\n    throw new Error('Event missing')\n  }\n\n  const data = isPlainObject(eventName)\n    ? eventName.properties ?? {}\n    : isPlainObject(properties)\n    ? properties\n    : {}\n\n  let opts: Options = {}\n  if (!isFunction(options)) {\n    opts = options ?? {}\n  }\n\n  if (isPlainObject(eventName) && !isFunction(properties)) {\n    opts = properties ?? {}\n  }\n\n  const cb = args.find(isFunction) as Callback | undefined\n  return [name, data, opts, cb]\n}\n\n/**\n * Helper for page, screen methods\n */\nexport function resolvePageArguments(\n  category?: string | object | null,\n  name?: string | object | Callback | null,\n  properties?: EventProperties | Options | Callback | null,\n  options?: Options | Callback,\n  callback?: Callback\n): [\n  string | null,\n  string | null,\n  EventProperties,\n  Options,\n  Callback | undefined\n] {\n  let resolvedProperties: EventProperties\n  let resolvedOptions: Options\n  let resolvedCategory: string | undefined | null = null\n  let resolvedName: string | undefined | null = null\n  const args = [category, name, properties, options, callback]\n\n  // The legacy logic is basically:\n  // - If there is a string, it's the name\n  // - If there are two strings, it's category and name\n  const strings = args.filter(isString)\n  if (strings.length === 1) {\n    if (isString(args[1])) {\n      resolvedName = args[1]\n      resolvedCategory = null\n    } else {\n      resolvedName = strings[0]\n      resolvedCategory = null\n    }\n  } else if (strings.length === 2) {\n    if (typeof args[0] === 'string') {\n      resolvedCategory = args[0]\n    }\n    if (typeof args[1] === 'string') {\n      resolvedName = args[1]\n    }\n  }\n\n  // handle: analytics.page('category', 'name', properties, options, callback)\n  const resolvedCallback = args.find(isFunction) as Callback | undefined\n\n  // handle:\n  // - analytics.page('name')\n  // - analytics.page('category', 'name')\n  // - analytics.page(properties)\n  // - analytics.page(properties, options)\n  // - analytics.page('name', properties)\n  // - analytics.page('name', properties, options)\n  // - analytics.page('category', 'name', properties, options)\n  // - analytics.page('category', 'name', properties, options, callback)\n  // - analytics.page('category', 'name', callback)\n  // - analytics.page(callback), etc\n\n  // The legacy logic is basically:\n  // - If there is a plain object, it's the properties\n  // - If there are two plain objects, it's properties and options\n  const objects = args.filter(isPlainObject)\n  if (objects.length === 1) {\n    if (isPlainObject(args[2])) {\n      resolvedOptions = {}\n      resolvedProperties = args[2]\n    } else if (isPlainObject(args[3])) {\n      resolvedProperties = {}\n      resolvedOptions = args[3]\n    } else {\n      resolvedProperties = objects[0]\n      resolvedOptions = {}\n    }\n  } else if (objects.length === 2) {\n    resolvedProperties = objects[0]\n    resolvedOptions = objects[1]\n  }\n\n  return [\n    resolvedCategory,\n    resolvedName,\n    (resolvedProperties ??= {}),\n    (resolvedOptions ??= {}),\n    resolvedCallback,\n  ]\n}\n\n/**\n * Helper for group, identify methods\n */\nexport const resolveUserArguments = <T extends Traits, U extends WithId>(\n  user: U\n): ResolveUser<T> => {\n  return (...args): ReturnType<ResolveUser<T>> => {\n    const values: {\n      id?: ID\n      traits?: T | null\n      options?: Options\n      callback?: Callback\n    } = {}\n    // It's a stack so it's reversed so that we go through each of the expected arguments\n    const orderStack: Array<keyof typeof values> = [\n      'callback',\n      'options',\n      'traits',\n      'id',\n    ]\n\n    // Read each argument and eval the possible values here\n    for (const arg of args) {\n      let current = orderStack.pop()\n      if (current === 'id') {\n        if (isString(arg) || isNumber(arg)) {\n          values.id = arg.toString()\n          continue\n        }\n        if (arg === null || arg === undefined) {\n          continue\n        }\n        // First argument should always be the id, if it is not a valid value we can skip it\n        current = orderStack.pop()\n      }\n\n      // Traits and Options\n      if (\n        (current === 'traits' || current === 'options') &&\n        (arg === null || arg === undefined || isPlainObject(arg))\n      ) {\n        values[current] = arg as T\n      }\n\n      // Callback\n      if (isFunction(arg)) {\n        values.callback = arg as Callback\n        break // This is always the last argument\n      }\n    }\n\n    return [\n      values.id ?? user.id(),\n      (values.traits ?? {}) as T,\n      values.options ?? {},\n      values.callback,\n    ]\n  }\n}\n\n/**\n * Helper for alias method\n */\nexport function resolveAliasArguments(\n  to: string | number,\n  from?: string | number | Options,\n  options?: Options | Callback,\n  callback?: Callback\n): [string, string | null, Options, Callback | undefined] {\n  if (isNumber(to)) to = to.toString() // Legacy behaviour - allow integers for alias calls\n  if (isNumber(from)) from = from.toString()\n  const args = [to, from, options, callback]\n\n  const [aliasTo = to, aliasFrom = null] = args.filter(isString)\n  const [opts = {}] = args.filter(isPlainObject)\n  const resolvedCallback = args.find(isFunction) as Callback | undefined\n\n  return [aliasTo, aliasFrom, opts, resolvedCallback]\n}\n\ntype ResolveUser<T extends Traits> = (\n  id?: ID | object,\n  traits?: T | Callback | null,\n  options?: Options | Callback,\n  callback?: Callback\n) => [ID, T, Options, Callback | undefined]\n\nexport type IdentifyParams = Parameters<ResolveUser<UserTraits>>\nexport type GroupParams = Parameters<ResolveUser<GroupTraits>>\nexport type EventParams = Parameters<typeof resolveArguments>\nexport type PageParams = Parameters<typeof resolvePageArguments>\nexport type AliasParams = Parameters<typeof resolveAliasArguments>\n\nexport type DispatchedEvent = Context\n", "import {\n  AliasParams,\n  DispatchedEvent,\n  EventParams,\n  GroupParams,\n  PageParams,\n  resolveAliasArguments,\n  resolveArguments,\n  resolvePageArguments,\n  resolveUserArguments,\n  IdentifyParams,\n} from '../arguments-resolver'\nimport type { FormArgs, LinkArgs } from '../auto-track'\nimport { isOffline } from '../connection'\nimport { Context } from '../context'\nimport { dispatch } from '@segment/analytics-core'\nimport { Emitter } from '@segment/analytics-generic-utils'\nimport {\n  Callback,\n  EventFactory,\n  EventProperties,\n  SegmentEvent,\n} from '../events'\nimport { isDestinationPluginWithAddMiddleware, Plugin } from '../plugin'\nimport { EventQueue } from '../queue/event-queue'\nimport { Group, ID, User } from '../user'\nimport autoBind from '../../lib/bind-all'\nimport { PersistedPriorityQueue } from '../../lib/priority-queue/persisted'\nimport type { LegacyIntegration } from '../../plugins/ajs-destination/types'\nimport type {\n  DestinationMiddlewareFunction,\n  MiddlewareFunction,\n} from '../../plugins/middleware'\nimport { version } from '../../generated/version'\nimport { PriorityQueue } from '../../lib/priority-queue'\nimport { getGlobal } from '../../lib/get-global'\nimport { AnalyticsClassic, AnalyticsCore } from './interfaces'\nimport type { CDNSettings } from '../../browser'\nimport {\n  CookieOptions,\n  MemoryStorage,\n  UniversalStorage,\n  StoreType,\n  applyCookieOptions,\n  initializeStorages,\n  isArrayOfStoreType,\n} from '../storage'\nimport { setGlobalAnalytics } from '../../lib/global-analytics-helper'\nimport { popPageContext } from '../buffer'\nimport {\n  isSegmentPlugin,\n  SegmentIOPluginMetadata,\n} from '../../plugins/segmentio'\nimport {\n  AnalyticsSettings,\n  IntegrationsInitOptions,\n  InitOptions,\n} from '../../browser/settings'\n\nexport type { InitOptions, AnalyticsSettings }\n\nconst deprecationWarning =\n  'This is being deprecated and will be not be available in future releases of Analytics JS'\n\n// reference any pre-existing \"analytics\" object so a user can restore the reference\nconst global: any = getGlobal()\nconst _analytics = global?.analytics\n\nfunction createDefaultQueue(\n  name: string,\n  retryQueue = false,\n  disablePersistance = false\n) {\n  const maxAttempts = retryQueue ? 10 : 1\n  const priorityQueue = disablePersistance\n    ? new PriorityQueue(maxAttempts, [])\n    : new PersistedPriorityQueue(maxAttempts, name)\n  return new EventQueue(priorityQueue)\n}\n\n/**\n * The public settings that are set on the analytics instance\n */\nexport class AnalyticsInstanceSettings {\n  readonly writeKey: string\n  /**\n   * This is an unstable API, it may change in the future without warning.\n   */\n  readonly cdnSettings: CDNSettings\n  readonly cdnURL?: string\n  get apiHost(): string | undefined {\n    return this._getSegmentPluginMetadata?.()?.apiHost\n  }\n  private _getSegmentPluginMetadata?: () => SegmentIOPluginMetadata | undefined\n\n  /**\n   * Auto-track specific timeout setting for legacy purposes.\n   */\n  timeout = 300\n\n  constructor(settings: AnalyticsSettings, queue: EventQueue) {\n    this._getSegmentPluginMetadata = () =>\n      queue.plugins.find(isSegmentPlugin)?.metadata\n    this.writeKey = settings.writeKey\n\n    // this is basically just to satisfy typescript / so we don't need to change the function sig of every test.\n    // when loadAnalytics is called, cdnSettings will always be available.\n    const emptyCDNSettings: CDNSettings = {\n      integrations: {\n        'Segment.io': {\n          apiKey: '',\n        },\n      },\n    }\n    this.cdnSettings = settings.cdnSettings ?? emptyCDNSettings\n    this.cdnURL = settings.cdnURL\n  }\n}\n\n/* analytics-classic stubs */\nfunction _stub(this: never) {\n  console.warn(deprecationWarning)\n}\n\nexport class Analytics\n  extends Emitter\n  implements AnalyticsCore, AnalyticsClassic\n{\n  settings: AnalyticsInstanceSettings\n  private _user: User\n  private _group: Group\n  private eventFactory: EventFactory\n  private _debug = false\n  private _universalStorage: UniversalStorage\n\n  initialized = false\n  integrations: IntegrationsInitOptions\n  options: InitOptions\n  queue: EventQueue\n\n  constructor(\n    settings: AnalyticsSettings,\n    options?: InitOptions,\n    queue?: EventQueue,\n    user?: User,\n    group?: Group\n  ) {\n    super()\n    const cookieOptions = options?.cookie\n    const disablePersistance = options?.disableClientPersistence ?? false\n\n    this.queue =\n      queue ??\n      createDefaultQueue(\n        `${settings.writeKey}:event-queue`,\n        options?.retryQueue,\n        disablePersistance\n      )\n    this.settings = new AnalyticsInstanceSettings(settings, this.queue)\n\n    const storageSetting = options?.storage\n    this._universalStorage = this.createStore(\n      disablePersistance,\n      storageSetting,\n      cookieOptions\n    )\n\n    this._user =\n      user ??\n      new User(\n        {\n          persist: !disablePersistance,\n          storage: options?.storage,\n          // Any User specific options override everything else\n          ...options?.user,\n        },\n        cookieOptions\n      ).load()\n    this._group =\n      group ??\n      new Group(\n        {\n          persist: !disablePersistance,\n          storage: options?.storage,\n          // Any group specific options override everything else\n          ...options?.group,\n        },\n        cookieOptions\n      ).load()\n    this.eventFactory = new EventFactory(this._user)\n    this.integrations = options?.integrations ?? {}\n    this.options = options ?? {}\n    autoBind(this)\n  }\n\n  user = (): User => {\n    return this._user\n  }\n\n  /**\n   * Creates the storage system based on the settings received\n   * @returns Storage\n   */\n  private createStore(\n    disablePersistance: boolean,\n    storageSetting: InitOptions['storage'],\n    cookieOptions?: CookieOptions | undefined\n  ): UniversalStorage {\n    // DisablePersistance option overrides all, no storage will be used outside of memory even if specified\n    if (disablePersistance) {\n      return new UniversalStorage([new MemoryStorage()])\n    } else {\n      if (storageSetting) {\n        if (isArrayOfStoreType(storageSetting)) {\n          // We will create the store with the priority for customer settings\n          return new UniversalStorage(\n            initializeStorages(\n              applyCookieOptions(storageSetting.stores, cookieOptions)\n            )\n          )\n        }\n      }\n    }\n    // We default to our multi storage with priority\n    return new UniversalStorage(\n      initializeStorages([\n        StoreType.LocalStorage,\n        {\n          name: StoreType.Cookie,\n          settings: cookieOptions,\n        },\n        StoreType.Memory,\n      ])\n    )\n  }\n\n  get storage(): UniversalStorage {\n    return this._universalStorage\n  }\n\n  async track(...args: EventParams): Promise<DispatchedEvent> {\n    const pageCtx = popPageContext(args)\n    const [name, data, opts, cb] = resolveArguments(...args)\n\n    const segmentEvent = this.eventFactory.track(\n      name,\n      data as EventProperties,\n      opts,\n      this.integrations,\n      pageCtx\n    )\n\n    return this._dispatch(segmentEvent, cb).then((ctx) => {\n      this.emit('track', name, ctx.event.properties, ctx.event.options)\n      return ctx\n    })\n  }\n\n  async page(...args: PageParams): Promise<DispatchedEvent> {\n    const pageCtx = popPageContext(args)\n    const [category, page, properties, options, callback] =\n      resolvePageArguments(...args)\n\n    const segmentEvent = this.eventFactory.page(\n      category,\n      page,\n      properties,\n      options,\n      this.integrations,\n      pageCtx\n    )\n\n    return this._dispatch(segmentEvent, callback).then((ctx) => {\n      this.emit('page', category, page, ctx.event.properties, ctx.event.options)\n      return ctx\n    })\n  }\n\n  async identify(...args: IdentifyParams): Promise<DispatchedEvent> {\n    const pageCtx = popPageContext(args)\n    const [id, _traits, options, callback] = resolveUserArguments(this._user)(\n      ...args\n    )\n\n    this._user.identify(id, _traits)\n    const segmentEvent = this.eventFactory.identify(\n      this._user.id(),\n      this._user.traits(),\n      options,\n      this.integrations,\n      pageCtx\n    )\n\n    return this._dispatch(segmentEvent, callback).then((ctx) => {\n      this.emit(\n        'identify',\n        ctx.event.userId,\n        ctx.event.traits,\n        ctx.event.options\n      )\n      return ctx\n    })\n  }\n\n  group(): Group\n  group(...args: GroupParams): Promise<DispatchedEvent>\n  group(...args: GroupParams): Promise<DispatchedEvent> | Group {\n    const pageCtx = popPageContext(args)\n    if (args.length === 0) {\n      return this._group\n    }\n\n    const [id, _traits, options, callback] = resolveUserArguments(this._group)(\n      ...args\n    )\n\n    this._group.identify(id, _traits)\n    const groupId = this._group.id()\n    const groupTraits = this._group.traits()\n\n    const segmentEvent = this.eventFactory.group(\n      groupId,\n      groupTraits,\n      options,\n      this.integrations,\n      pageCtx\n    )\n\n    return this._dispatch(segmentEvent, callback).then((ctx) => {\n      this.emit('group', ctx.event.groupId, ctx.event.traits, ctx.event.options)\n      return ctx\n    })\n  }\n\n  async alias(...args: AliasParams): Promise<DispatchedEvent> {\n    const pageCtx = popPageContext(args)\n    const [to, from, options, callback] = resolveAliasArguments(...args)\n    const segmentEvent = this.eventFactory.alias(\n      to,\n      from,\n      options,\n      this.integrations,\n      pageCtx\n    )\n    return this._dispatch(segmentEvent, callback).then((ctx) => {\n      this.emit('alias', to, from, ctx.event.options)\n      return ctx\n    })\n  }\n\n  async screen(...args: PageParams): Promise<DispatchedEvent> {\n    const pageCtx = popPageContext(args)\n    const [category, page, properties, options, callback] =\n      resolvePageArguments(...args)\n\n    const segmentEvent = this.eventFactory.screen(\n      category,\n      page,\n      properties,\n      options,\n      this.integrations,\n      pageCtx\n    )\n    return this._dispatch(segmentEvent, callback).then((ctx) => {\n      this.emit(\n        'screen',\n        category,\n        page,\n        ctx.event.properties,\n        ctx.event.options\n      )\n      return ctx\n    })\n  }\n\n  async trackClick(...args: LinkArgs): Promise<Analytics> {\n    const autotrack = await import(\n      /* webpackChunkName: \"auto-track\" */ '../auto-track'\n    )\n    return autotrack.link.call(this, ...args)\n  }\n\n  async trackLink(...args: LinkArgs): Promise<Analytics> {\n    const autotrack = await import(\n      /* webpackChunkName: \"auto-track\" */ '../auto-track'\n    )\n    return autotrack.link.call(this, ...args)\n  }\n\n  async trackSubmit(...args: FormArgs): Promise<Analytics> {\n    const autotrack = await import(\n      /* webpackChunkName: \"auto-track\" */ '../auto-track'\n    )\n    return autotrack.form.call(this, ...args)\n  }\n\n  async trackForm(...args: FormArgs): Promise<Analytics> {\n    const autotrack = await import(\n      /* webpackChunkName: \"auto-track\" */ '../auto-track'\n    )\n    return autotrack.form.call(this, ...args)\n  }\n\n  async register(...plugins: Plugin[]): Promise<Context> {\n    const ctx = Context.system()\n\n    const registrations = plugins.map((xt) =>\n      this.queue.register(ctx, xt, this)\n    )\n    await Promise.all(registrations)\n\n    return ctx\n  }\n\n  async deregister(...plugins: string[]): Promise<Context> {\n    const ctx = Context.system()\n\n    const deregistrations = plugins.map((pl) => {\n      const plugin = this.queue.plugins.find((p) => p.name === pl)\n      if (plugin) {\n        return this.queue.deregister(ctx, plugin, this)\n      } else {\n        ctx.log('warn', `plugin ${pl} not found`)\n      }\n    })\n\n    await Promise.all(deregistrations)\n\n    return ctx\n  }\n\n  debug(toggle: boolean): Analytics {\n    // Make sure legacy ajs debug gets turned off if it was enabled before upgrading.\n    if (toggle === false && localStorage.getItem('debug')) {\n      localStorage.removeItem('debug')\n    }\n    this._debug = toggle\n    return this\n  }\n\n  reset(): void {\n    this._user.reset()\n    this._group.reset()\n    this.emit('reset')\n  }\n\n  timeout(timeout: number): void {\n    this.settings.timeout = timeout\n  }\n\n  private async _dispatch(\n    event: SegmentEvent,\n    callback?: Callback\n  ): Promise<DispatchedEvent> {\n    const ctx = new Context(event)\n    ctx.stats.increment('analytics_js.invoke', 1, [event.type])\n    if (isOffline() && !this.options.retryQueue) {\n      return ctx\n    }\n    return dispatch(ctx, this.queue, this, {\n      callback,\n      debug: this._debug,\n      timeout: this.settings.timeout,\n    })\n  }\n\n  async addSourceMiddleware(fn: MiddlewareFunction): Promise<Analytics> {\n    await this.queue.criticalTasks.run(async () => {\n      const { sourceMiddlewarePlugin } = await import(\n        /* webpackChunkName: \"middleware\" */ '../../plugins/middleware'\n      )\n\n      const integrations: Record<string, boolean> = {}\n      this.queue.plugins.forEach((plugin) => {\n        if (plugin.type === 'destination') {\n          return (integrations[plugin.name] = true)\n        }\n      })\n\n      const plugin = sourceMiddlewarePlugin(fn, integrations)\n      await this.register(plugin)\n    })\n\n    return this\n  }\n\n  /* TODO: This does not have to return a promise? */\n  addDestinationMiddleware(\n    integrationName: string,\n    ...middlewares: DestinationMiddlewareFunction[]\n  ): Promise<Analytics> {\n    this.queue.plugins\n      .filter(isDestinationPluginWithAddMiddleware)\n      .forEach((p) => {\n        if (\n          integrationName === '*' ||\n          p.name.toLowerCase() === integrationName.toLowerCase()\n        ) {\n          p.addMiddleware(...middlewares)\n        }\n      })\n\n    return Promise.resolve(this)\n  }\n\n  setAnonymousId(id?: string): ID {\n    return this._user.anonymousId(id)\n  }\n\n  async queryString(query: string): Promise<Context[]> {\n    if (this.options.useQueryString === false) {\n      return []\n    }\n\n    const { queryString } = await import(\n      /* webpackChunkName: \"queryString\" */ '../query-string'\n    )\n    return queryString(this, query)\n  }\n\n  /**\n   * @deprecated This function does not register a destination plugin.\n   *\n   * Instantiates a legacy Analytics.js destination.\n   *\n   * This function does not register the destination as an Analytics.JS plugin,\n   * all the it does it to invoke the factory function back.\n   */\n  use(legacyPluginFactory: (analytics: Analytics) => void): Analytics {\n    legacyPluginFactory(this)\n    return this\n  }\n\n  async ready(\n    callback: Function = (res: Promise<unknown>[]): Promise<unknown>[] => res\n  ): Promise<unknown> {\n    return Promise.all(\n      this.queue.plugins.map((i) => (i.ready ? i.ready() : Promise.resolve()))\n    ).then((res) => {\n      callback(res)\n      return res\n    })\n  }\n\n  // analytics-classic api\n\n  noConflict(): Analytics {\n    console.warn(deprecationWarning)\n    setGlobalAnalytics(_analytics ?? this)\n    return this\n  }\n\n  normalize(msg: SegmentEvent): SegmentEvent {\n    console.warn(deprecationWarning)\n    return this.eventFactory['normalize'](msg)\n  }\n\n  get failedInitializations(): string[] {\n    console.warn(deprecationWarning)\n    return this.queue.failedInitializations\n  }\n\n  get VERSION(): string {\n    return version\n  }\n\n  /* @deprecated - noop */\n  async initialize(\n    _settings?: AnalyticsSettings,\n    _options?: InitOptions\n  ): Promise<Analytics> {\n    console.warn(deprecationWarning)\n    return Promise.resolve(this)\n  }\n\n  init = this.initialize.bind(this)\n\n  async pageview(url: string): Promise<Analytics> {\n    console.warn(deprecationWarning)\n    await this.page({ path: url })\n    return this\n  }\n\n  get plugins() {\n    console.warn(deprecationWarning)\n    // @ts-expect-error\n    return this._plugins ?? {}\n  }\n\n  get Integrations() {\n    console.warn(deprecationWarning)\n    const integrations = this.queue.plugins\n      .filter((plugin) => plugin.type === 'destination')\n      .reduce((acc, plugin) => {\n        const name = `${plugin.name\n          .toLowerCase()\n          .replace('.', '')\n          .split(' ')\n          .join('-')}Integration`\n\n        // @ts-expect-error\n        const integration = window[name] as\n          | (LegacyIntegration & { Integration?: LegacyIntegration })\n          | undefined\n\n        if (!integration) {\n          return acc\n        }\n\n        const nested = integration.Integration // hack - Google Analytics function resides in the \"Integration\" field\n        if (nested) {\n          acc[plugin.name] = nested\n          return acc\n        }\n\n        acc[plugin.name] = integration as LegacyIntegration\n        return acc\n      }, {} as Record<string, LegacyIntegration>)\n\n    return integrations\n  }\n\n  log = _stub\n  addIntegrationMiddleware = _stub\n  listeners = _stub\n  addEventListener = _stub\n  removeAllListeners = _stub\n  removeListener = _stub\n  removeEventListener = _stub\n  hasListeners = _stub\n  add = _stub\n  addIntegration = _stub\n\n  // snippet function\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  push(args: any[]) {\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    const an = this as any\n    const method = args.shift()\n    if (method) {\n      if (!an[method]) return\n    }\n    an[method].apply(this, args)\n  }\n}\n\n/**\n * @returns a no-op analytics instance that does not create cookies or localstorage, or send any events to segment.\n */\nexport class NullAnalytics extends Analytics {\n  constructor() {\n    super({ writeKey: '' }, { disableClientPersistence: true })\n    this.initialized = true\n  }\n}\n", "import { v4 as uuid } from '@lukeed/uuid'\nimport { ID, User } from '../user'\nimport { Options, EventProperties, Traits, SegmentEvent } from './interfaces'\nimport { addPageContext, PageContext } from '../page'\nimport { CoreEventFactory, IntegrationsOptions } from '@segment/analytics-core'\n\nexport * from './interfaces'\n\nexport class EventFactory extends CoreEventFactory {\n  user: User\n  constructor(user: User) {\n    super({\n      createMessageId: () => `ajs-next-${Date.now()}-${uuid()}`,\n      onEventMethodCall: ({ options }) => {\n        this.maybeUpdateAnonId(options)\n      },\n      onFinishedEvent: (event) => {\n        this.addIdentity(event)\n        return event\n      },\n    })\n    this.user = user\n  }\n\n  /**\n   * Updates the anonymousId *globally* if it's provided in the options.\n   * This should generally be done in the identify method, but some customers rely on this.\n   */\n  private maybeUpdateAnonId(options: Options | undefined): void {\n    options?.anonymousId && this.user.anonymousId(options.anonymousId)\n  }\n\n  /**\n   * add user id / anonymous id to the event\n   */\n  private addIdentity(event: SegmentEvent) {\n    if (this.user.id()) {\n      event.userId = this.user.id()\n    }\n\n    if (this.user.anonymousId()) {\n      event.anonymousId = this.user.anonymousId()\n    }\n  }\n\n  override track(\n    event: string,\n    properties?: EventProperties,\n    options?: Options,\n    integrationsOptions?: IntegrationsOptions,\n    pageCtx?: PageContext\n  ): SegmentEvent {\n    const ev = super.track(event, properties, options, integrationsOptions)\n    addPageContext(ev, pageCtx)\n    return ev\n  }\n\n  override page(\n    category: string | null,\n    page: string | null,\n    properties?: EventProperties,\n    options?: Options,\n    integrationsOptions?: IntegrationsOptions,\n    pageCtx?: PageContext\n  ): SegmentEvent {\n    const ev = super.page(\n      category,\n      page,\n      properties,\n      options,\n      integrationsOptions\n    )\n    addPageContext(ev, pageCtx)\n    return ev\n  }\n\n  override screen(\n    category: string | null,\n    screen: string | null,\n    properties?: EventProperties,\n    options?: Options,\n    integrationsOptions?: IntegrationsOptions,\n    pageCtx?: PageContext\n  ): SegmentEvent {\n    const ev = super.screen(\n      category,\n      screen,\n      properties,\n      options,\n      integrationsOptions\n    )\n    addPageContext(ev, pageCtx)\n    return ev\n  }\n\n  override identify(\n    userId: ID,\n    traits?: Traits,\n    options?: Options,\n    integrationsOptions?: IntegrationsOptions,\n    pageCtx?: PageContext\n  ): SegmentEvent {\n    const ev = super.identify(userId, traits, options, integrationsOptions)\n    addPageContext(ev, pageCtx)\n    return ev\n  }\n\n  override group(\n    groupId: ID,\n    traits?: Traits,\n    options?: Options,\n    integrationsOptions?: IntegrationsOptions,\n    pageCtx?: PageContext\n  ): SegmentEvent {\n    const ev = super.group(groupId, traits, options, integrationsOptions)\n    addPageContext(ev, pageCtx)\n    return ev\n  }\n\n  override alias(\n    to: string,\n    from: string | null,\n    options?: Options,\n    integrationsOptions?: IntegrationsOptions,\n    pageCtx?: PageContext\n  ): SegmentEvent {\n    const ev = super.alias(to, from, options, integrationsOptions)\n    addPageContext(ev, pageCtx)\n    return ev\n  }\n}\n", "// src/page-context.ts\nfunction isPlainObject(obj) {\n    return Object.prototype.toString.call(obj).slice(8, -1).toLowerCase() === \"object\";\n}\nvar BufferedPageContextDiscriminant = \"bpc\";\nvar createBufferedPageContext = function(url, canonicalUrl, search, path, title, referrer) {\n    return {\n        __t: BufferedPageContextDiscriminant,\n        c: canonicalUrl,\n        p: path,\n        u: url,\n        s: search,\n        t: title,\n        r: referrer\n    };\n};\nvar BUFFERED_PAGE_CONTEXT_KEYS = Object.keys(createBufferedPageContext(\"\", \"\", \"\", \"\", \"\", \"\"));\nfunction isBufferedPageContext(bufferedPageCtx) {\n    if (!isPlainObject(bufferedPageCtx)) return false;\n    if (bufferedPageCtx.__t !== BufferedPageContextDiscriminant) return false;\n    for(var k in bufferedPageCtx){\n        if (!BUFFERED_PAGE_CONTEXT_KEYS.includes(k)) {\n            return false;\n        }\n    }\n    return true;\n}\nvar createCanonicalURL = function(canonicalUrl, searchParams) {\n    return canonicalUrl.indexOf(\"?\") > -1 ? canonicalUrl : canonicalUrl + searchParams;\n};\nvar removeHash = function(href) {\n    var hashIdx = href.indexOf(\"#\");\n    return hashIdx === -1 ? href : href.slice(0, hashIdx);\n};\nvar parseCanonicalPath = function(canonicalUrl) {\n    try {\n        return new URL(canonicalUrl).pathname;\n    } catch (_e) {\n        return canonicalUrl[0] === \"/\" ? canonicalUrl : \"/\" + canonicalUrl;\n    }\n};\nvar createPageContext = function(param) {\n    var canonicalUrl = param.c, pathname = param.p, search = param.s, url = param.u, referrer = param.r, title = param.t;\n    var newPath = canonicalUrl ? parseCanonicalPath(canonicalUrl) : pathname;\n    var newUrl = canonicalUrl ? createCanonicalURL(canonicalUrl, search) : removeHash(url);\n    return {\n        path: newPath,\n        referrer: referrer,\n        search: search,\n        title: title,\n        url: newUrl\n    };\n};\nvar getDefaultBufferedPageContext = function() {\n    var c = document.querySelector(\"link[rel='canonical']\");\n    return createBufferedPageContext(location.href, c && c.getAttribute(\"href\") || void 0, location.search, location.pathname, document.title, document.referrer);\n};\nvar getDefaultPageContext = function() {\n    return createPageContext(getDefaultBufferedPageContext());\n};\nexport { BufferedPageContextDiscriminant, createBufferedPageContext, createPageContext, getDefaultBufferedPageContext, getDefaultPageContext, isBufferedPageContext };\n", "export function pick<T extends Record<string, any>, K extends keyof T>(\n  object: T,\n  keys: readonly K[]\n): Pick<T, K>\n\nexport function pick<T extends Record<string, any>>(\n  object: T,\n  keys: string[]\n): Partial<T>\n\n/**\n * @example\n * pick({ 'a': 1, 'b': '2', 'c': 3 }, ['a', 'c'])\n * => { 'a': 1, 'c': 3 }\n */\nexport function pick<T extends Record<string, any>, K extends keyof T>(\n  object: T,\n  keys: string[] | K[] | readonly K[]\n) {\n  return Object.assign(\n    {},\n    ...keys.map((key) => {\n      if (object && Object.prototype.hasOwnProperty.call(object, key)) {\n        return { [key]: object[key] }\n      }\n    })\n  )\n}\n", "import { pick } from '../../lib/pick'\nimport { EventProperties, SegmentEvent } from '../events'\nimport { getDefaultPageContext } from '@segment/analytics-page-tools'\n\n/**\n * Augments a segment event with information about the current page.\n * Page information like URL changes frequently, so this is meant to be captured as close to the event call as possible.\n * Things like `userAgent` do not change, so they can be added later in the flow.\n * We prefer not to add this information to this function, as it increases the main bundle size.\n */\nexport const addPageContext = (\n  event: SegmentEvent,\n  pageCtx = getDefaultPageContext()\n): void => {\n  const evtCtx = event.context! // Context should be set earlier in the flow\n  let pageContextFromEventProps: Pick<EventProperties, string> | undefined\n  if (event.type === 'page') {\n    pageContextFromEventProps =\n      event.properties && pick(event.properties, Object.keys(pageCtx))\n\n    event.properties = {\n      ...pageCtx,\n      ...event.properties,\n      ...(event.name ? { name: event.name } : {}),\n    }\n  }\n\n  evtCtx.page = {\n    ...pageCtx,\n    ...pageContextFromEventProps,\n    ...evtCtx.page,\n  }\n}\n", "import type { CorePlugin } from '@segment/analytics-core'\nimport type { DestinationMiddlewareFunction } from '../../plugins/middleware'\nimport type { Analytics } from '../analytics'\nimport type { Context } from '../context'\n\nexport interface Plugin extends CorePlugin<Context, Analytics> {}\n\nexport interface InternalPluginWithAddMiddleware extends Plugin {\n  addMiddleware: (...fns: DestinationMiddlewareFunction[]) => void\n}\n\nexport interface InternalDestinationPluginWithAddMiddleware\n  extends InternalPluginWithAddMiddleware {\n  type: 'destination'\n}\n\nexport const isDestinationPluginWithAddMiddleware = (\n  plugin: Plugin\n): plugin is InternalDestinationPluginWithAddMiddleware => {\n  // FYI: segment's plugin does not currently have an 'addMiddleware' method\n  return 'addMiddleware' in plugin && plugin.type === 'destination'\n}\n", "import { PriorityQueue } from '../../lib/priority-queue'\nimport { PersistedPriorityQueue } from '../../lib/priority-queue/persisted'\nimport { Context } from '../context'\nimport { Plugin } from '../plugin'\nimport { CoreEventQueue } from '@segment/analytics-core'\nimport { isOffline } from '../connection'\n\nexport class EventQueue extends CoreEventQueue<Context, Plugin> {\n  constructor(name: string)\n  constructor(priorityQueue: PriorityQueue<Context>)\n  constructor(nameOrQueue: string | PriorityQueue<Context>) {\n    super(\n      typeof nameOrQueue === 'string'\n        ? new PersistedPriorityQueue(4, nameOrQueue)\n        : nameOrQueue\n    )\n  }\n  async flush(): Promise<Context[]> {\n    if (isOffline()) return []\n    return super.flush()\n  }\n}\n", "import { v4 as uuid } from '@lukeed/uuid'\nimport autoBind from '../../lib/bind-all'\nimport { Traits } from '../events'\nimport {\n  CookieOptions,\n  UniversalStorage,\n  MemoryStorage,\n  StorageObject,\n  StorageSettings,\n  StoreType,\n  applyCookieOptions,\n  initializeStorages,\n  isArrayOfStoreType,\n} from '../storage'\n\nexport type ID = string | null | undefined\n\nexport interface UserOptions {\n  /**\n   * Disables storing any data about the user.\n   */\n  disable?: boolean\n  localStorageFallbackDisabled?: boolean\n  persist?: boolean\n\n  cookie?: {\n    key?: string\n    oldKey?: string\n  }\n\n  localStorage?: {\n    key: string\n  }\n\n  /**\n   * Store priority\n   * @example stores: [StoreType.Cookie, StoreType.Memory]\n   */\n  storage?: StorageSettings\n}\n\nconst defaults = {\n  persist: true,\n  cookie: {\n    key: 'ajs_user_id',\n    oldKey: 'ajs_user',\n  },\n  localStorage: {\n    key: 'ajs_user_traits',\n  },\n}\n\nexport interface WithId {\n  id(id?: ID): ID\n}\n\nexport class User implements WithId {\n  static defaults = defaults\n\n  private idKey: string\n  private traitsKey: string\n  private anonKey: string\n  private cookieOptions?: CookieOptions\n\n  private legacyUserStore: UniversalStorage<{\n    [k: string]:\n      | {\n          id?: string\n          traits?: Traits\n        }\n      | string\n  }>\n  private traitsStore: UniversalStorage<{\n    [k: string]: Traits\n  }>\n\n  private identityStore: UniversalStorage<{\n    [k: string]: string\n  }>\n\n  options: UserOptions = {}\n\n  constructor(options: UserOptions = defaults, cookieOptions?: CookieOptions) {\n    this.options = { ...defaults, ...options }\n    this.cookieOptions = cookieOptions\n\n    this.idKey = options.cookie?.key ?? defaults.cookie.key\n    this.traitsKey = options.localStorage?.key ?? defaults.localStorage.key\n    this.anonKey = 'ajs_anonymous_id'\n\n    this.identityStore = this.createStorage(this.options, cookieOptions)\n\n    // using only cookies for legacy user store\n    this.legacyUserStore = this.createStorage(\n      this.options,\n      cookieOptions,\n      (s) => s === StoreType.Cookie\n    )\n\n    // using only localStorage / memory for traits store\n    this.traitsStore = this.createStorage(\n      this.options,\n      cookieOptions,\n      (s) => s !== StoreType.Cookie\n    )\n\n    const legacyUser = this.legacyUserStore.get(defaults.cookie.oldKey)\n    if (legacyUser && typeof legacyUser === 'object') {\n      legacyUser.id && this.id(legacyUser.id)\n      legacyUser.traits && this.traits(legacyUser.traits)\n    }\n    autoBind(this)\n  }\n\n  id = (id?: ID): ID => {\n    if (this.options.disable) {\n      return null\n    }\n\n    const prevId = this.identityStore.getAndSync(this.idKey)\n\n    if (id !== undefined) {\n      this.identityStore.set(this.idKey, id)\n\n      const changingIdentity = id !== prevId && prevId !== null && id !== null\n      if (changingIdentity) {\n        this.anonymousId(null)\n      }\n    }\n\n    const retId = this.identityStore.getAndSync(this.idKey)\n    if (retId) return retId\n\n    const retLeg = this.legacyUserStore.get(defaults.cookie.oldKey)\n    return retLeg ? (typeof retLeg === 'object' ? retLeg.id : retLeg) : null\n  }\n\n  private legacySIO(): [string, string] | null {\n    const val = this.legacyUserStore.get('_sio') as string\n    if (!val) {\n      return null\n    }\n    const [anon, user] = val.split('----')\n    return [anon, user]\n  }\n\n  anonymousId = (id?: ID): ID => {\n    if (this.options.disable) {\n      return null\n    }\n\n    if (id === undefined) {\n      const val =\n        this.identityStore.getAndSync(this.anonKey) ?? this.legacySIO()?.[0]\n\n      if (val) {\n        return val\n      }\n    }\n\n    if (id === null) {\n      this.identityStore.set(this.anonKey, null)\n      return this.identityStore.getAndSync(this.anonKey)\n    }\n\n    this.identityStore.set(this.anonKey, id ?? uuid())\n    return this.identityStore.getAndSync(this.anonKey)\n  }\n\n  traits = (traits?: Traits | null): Traits | undefined => {\n    if (this.options.disable) {\n      return\n    }\n\n    if (traits === null) {\n      traits = {}\n    }\n\n    if (traits) {\n      this.traitsStore.set(this.traitsKey, traits ?? {})\n    }\n\n    return this.traitsStore.get(this.traitsKey) ?? {}\n  }\n\n  identify(id?: ID, traits?: Traits): void {\n    if (this.options.disable) {\n      return\n    }\n\n    traits = traits ?? {}\n    const currentId = this.id()\n\n    if (currentId === null || currentId === id) {\n      traits = {\n        ...this.traits(),\n        ...traits,\n      }\n    }\n\n    if (id) {\n      this.id(id)\n    }\n\n    this.traits(traits)\n  }\n\n  logout(): void {\n    this.anonymousId(null)\n    this.id(null)\n    this.traits({})\n  }\n\n  reset(): void {\n    this.logout()\n    this.identityStore.clear(this.idKey)\n    this.identityStore.clear(this.anonKey)\n    this.traitsStore.clear(this.traitsKey)\n  }\n\n  load(): User {\n    return new User(this.options, this.cookieOptions)\n  }\n\n  save(): boolean {\n    return true\n  }\n\n  /**\n   * Creates the right storage system applying all the user options, cookie options and particular filters\n   * @param options UserOptions\n   * @param cookieOpts CookieOptions\n   * @param filterStores filter function to apply to any StoreTypes (skipped if options specify using a custom storage)\n   * @returns a Storage object\n   */\n  private createStorage<T extends StorageObject = StorageObject>(\n    options: UserOptions,\n    cookieOpts?: CookieOptions,\n    filterStores?: (value: StoreType) => boolean\n  ): UniversalStorage<T> {\n    let stores: StoreType[] = [\n      StoreType.LocalStorage,\n      StoreType.Cookie,\n      StoreType.Memory,\n    ]\n\n    // If disabled we won't have any storage functionality\n    if (options.disable) {\n      return new UniversalStorage<T>([])\n    }\n\n    // If persistance is disabled we will always fallback to Memory Storage\n    if (!options.persist) {\n      return new UniversalStorage<T>([new MemoryStorage<T>()])\n    }\n\n    if (options.storage !== undefined && options.storage !== null) {\n      if (isArrayOfStoreType(options.storage)) {\n        // If the user only specified order of stores we will still apply filters and transformations e.g. not using localStorage if localStorageFallbackDisabled\n        stores = options.storage.stores\n      }\n    }\n\n    // Disable LocalStorage\n    if (options.localStorageFallbackDisabled) {\n      stores = stores.filter((s) => s !== StoreType.LocalStorage)\n    }\n\n    // Apply Additional filters\n    if (filterStores) {\n      stores = stores.filter(filterStores)\n    }\n\n    return new UniversalStorage(\n      initializeStorages(applyCookieOptions(stores, cookieOpts))\n    )\n  }\n}\n\nconst groupDefaults: UserOptions = {\n  persist: true,\n  cookie: {\n    key: 'ajs_group_id',\n  },\n  localStorage: {\n    key: 'ajs_group_properties',\n  },\n}\n\nexport class Group extends User {\n  constructor(options: UserOptions = groupDefaults, cookie?: CookieOptions) {\n    super({ ...groupDefaults, ...options }, cookie)\n    autoBind(this)\n  }\n\n  anonymousId = (_id?: ID): ID => {\n    return undefined\n  }\n}\n", "export default function bindAll<\n  ObjType extends { [key: string]: any },\n  KeyType extends keyof ObjType\n>(obj: ObjType): ObjType {\n  const proto = obj.constructor.prototype\n  for (const key of Object.getOwnPropertyNames(proto)) {\n    if (key !== 'constructor') {\n      const desc = Object.getOwnPropertyDescriptor(\n        obj.constructor.prototype,\n        key\n      )\n      if (!!desc && typeof desc.value === 'function') {\n        obj[key as KeyType] = obj[key].bind(obj)\n      }\n    }\n  }\n\n  return obj\n}\n", "/*! js-cookie v3.0.1 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n    for (var key in source) {\n      target[key] = source[key];\n    }\n  }\n  return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n  read: function (value) {\n    if (value[0] === '\"') {\n      value = value.slice(1, -1);\n    }\n    return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n  },\n  write: function (value) {\n    return encodeURIComponent(value).replace(\n      /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n      decodeURIComponent\n    )\n  }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n  function set (key, value, attributes) {\n    if (typeof document === 'undefined') {\n      return\n    }\n\n    attributes = assign({}, defaultAttributes, attributes);\n\n    if (typeof attributes.expires === 'number') {\n      attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n    }\n    if (attributes.expires) {\n      attributes.expires = attributes.expires.toUTCString();\n    }\n\n    key = encodeURIComponent(key)\n      .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n      .replace(/[()]/g, escape);\n\n    var stringifiedAttributes = '';\n    for (var attributeName in attributes) {\n      if (!attributes[attributeName]) {\n        continue\n      }\n\n      stringifiedAttributes += '; ' + attributeName;\n\n      if (attributes[attributeName] === true) {\n        continue\n      }\n\n      // Considers RFC 6265 section 5.2:\n      // ...\n      // 3.  If the remaining unparsed-attributes contains a %x3B (\";\")\n      //     character:\n      // Consume the characters of the unparsed-attributes up to,\n      // not including, the first %x3B (\";\") character.\n      // ...\n      stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n    }\n\n    return (document.cookie =\n      key + '=' + converter.write(value, key) + stringifiedAttributes)\n  }\n\n  function get (key) {\n    if (typeof document === 'undefined' || (arguments.length && !key)) {\n      return\n    }\n\n    // To prevent the for loop in the first place assign an empty array\n    // in case there are no cookies at all.\n    var cookies = document.cookie ? document.cookie.split('; ') : [];\n    var jar = {};\n    for (var i = 0; i < cookies.length; i++) {\n      var parts = cookies[i].split('=');\n      var value = parts.slice(1).join('=');\n\n      try {\n        var foundKey = decodeURIComponent(parts[0]);\n        jar[foundKey] = converter.read(value, foundKey);\n\n        if (key === foundKey) {\n          break\n        }\n      } catch (e) {}\n    }\n\n    return key ? jar[key] : jar\n  }\n\n  return Object.create(\n    {\n      set: set,\n      get: get,\n      remove: function (key, attributes) {\n        set(\n          key,\n          '',\n          assign({}, attributes, {\n            expires: -1\n          })\n        );\n      },\n      withAttributes: function (attributes) {\n        return init(this.converter, assign({}, this.attributes, attributes))\n      },\n      withConverter: function (converter) {\n        return init(assign({}, this.converter, converter), this.attributes)\n      }\n    },\n    {\n      attributes: { value: Object.freeze(defaultAttributes) },\n      converter: { value: Object.freeze(converter) }\n    }\n  )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport default api;\n", "import cookie from 'js-cookie'\n\n/**\n * Levels returns all levels of the given url.\n *\n * @param {string} url\n * @return {Array}\n * @api public\n */\nfunction levels(url: URL): string[] {\n  const host = url.hostname\n  const parts = host.split('.')\n  const last = parts[parts.length - 1]\n  const levels: string[] = []\n\n  // Ip address.\n  if (parts.length === 4 && parseInt(last, 10) > 0) {\n    return levels\n  }\n\n  // Localhost.\n  if (parts.length <= 1) {\n    return levels\n  }\n\n  // Create levels.\n  for (let i = parts.length - 2; i >= 0; --i) {\n    levels.push(parts.slice(i).join('.'))\n  }\n\n  return levels\n}\n\nfunction parseUrl(url: string): URL | undefined {\n  try {\n    return new URL(url)\n  } catch {\n    return\n  }\n}\n\nexport function tld(url: string): string | undefined {\n  const parsedUrl = parseUrl(url)\n  if (!parsedUrl) return\n\n  const lvls = levels(parsedUrl)\n\n  // Lookup the real top level one.\n  for (let i = 0; i < lvls.length; ++i) {\n    const cname = '__tld__'\n    const domain = lvls[i]\n    const opts = { domain: '.' + domain }\n\n    try {\n      // cookie access throw an error if the library is ran inside a sandboxed environment (e.g. sandboxed iframe)\n      cookie.set(cname, '1', opts)\n      if (cookie.get(cname)) {\n        cookie.remove(cname, opts)\n        return domain\n      }\n    } catch (_) {\n      return\n    }\n  }\n}\n", "import { Store, StorageObject } from './types'\nimport jar from 'js-cookie'\nimport { tld } from '../user/tld'\n\nconst ONE_YEAR = 365\n\nexport interface CookieOptions {\n  maxage?: number\n  domain?: string\n  path?: string\n  secure?: boolean\n  sameSite?: string\n}\n\n/**\n * Data storage using browser cookies\n */\nexport class CookieStorage<Data extends StorageObject = StorageObject>\n  implements Store<Data>\n{\n  static get defaults(): CookieOptions {\n    return {\n      maxage: ONE_YEAR,\n      domain: tld(window.location.href),\n      path: '/',\n      sameSite: 'Lax',\n    }\n  }\n\n  private options: Required<CookieOptions>\n\n  constructor(options: CookieOptions = CookieStorage.defaults) {\n    this.options = {\n      ...CookieStorage.defaults,\n      ...options,\n    } as Required<CookieOptions>\n  }\n\n  private opts(): jar.CookieAttributes {\n    return {\n      sameSite: this.options.sameSite as jar.CookieAttributes['sameSite'],\n      expires: this.options.maxage,\n      domain: this.options.domain,\n      path: this.options.path,\n      secure: this.options.secure,\n    }\n  }\n\n  get<K extends keyof Data>(key: K): Data[K] | null {\n    try {\n      const value = jar.get(key)\n\n      if (value === undefined || value === null) {\n        return null\n      }\n\n      try {\n        return JSON.parse(value) ?? null\n      } catch (e) {\n        return (value ?? null) as unknown as Data[K] | null\n      }\n    } catch (e) {\n      return null\n    }\n  }\n\n  set<K extends keyof Data>(key: K, value: Data[K] | null): void {\n    if (typeof value === 'string') {\n      jar.set(key, value, this.opts())\n    } else if (value === null) {\n      jar.remove(key, this.opts())\n    } else {\n      jar.set(key, JSON.stringify(value), this.opts())\n    }\n  }\n\n  remove<K extends keyof Data>(key: K): void {\n    return jar.remove(key, this.opts())\n  }\n}\n", "import { StorageObject, Store } from './types'\n\n/**\n * Data storage using browser's localStorage\n */\nexport class LocalStorage<Data extends StorageObject = StorageObject>\n  implements Store<Data>\n{\n  private localStorageWarning(key: keyof Data, state: 'full' | 'unavailable') {\n    console.warn(`Unable to access ${key}, localStorage may be ${state}`)\n  }\n\n  get<K extends keyof Data>(key: K): Data[K] | null {\n    try {\n      const val = localStorage.getItem(key)\n      if (val === null) {\n        return null\n      }\n      try {\n        return JSON.parse(val) ?? null\n      } catch (e) {\n        return (val ?? null) as unknown as Data[K] | null\n      }\n    } catch (err) {\n      this.localStorageWarning(key, 'unavailable')\n      return null\n    }\n  }\n\n  set<K extends keyof Data>(key: K, value: Data[K] | null): void {\n    try {\n      localStorage.setItem(key, JSON.stringify(value))\n    } catch {\n      this.localStorageWarning(key, 'full')\n    }\n  }\n\n  remove<K extends keyof Data>(key: K): void {\n    try {\n      return localStorage.removeItem(key)\n    } catch (err) {\n      this.localStorageWarning(key, 'unavailable')\n    }\n  }\n}\n", "import { Store, StorageObject } from './types'\n\n/**\n * Data Storage using in memory object\n */\nexport class MemoryStorage<Data extends StorageObject = StorageObject>\n  implements Store<Data>\n{\n  private cache: Record<string, unknown> = {}\n\n  get<K extends keyof Data>(key: K): Data[K] | null {\n    return (this.cache[key] ?? null) as Data[K] | null\n  }\n\n  set<K extends keyof Data>(key: K, value: Data[K] | null): void {\n    this.cache[key] = value\n  }\n\n  remove<K extends keyof Data>(key: K): void {\n    delete this.cache[key]\n  }\n}\n", "import { CookieOptions } from './cookieStorage'\n\nexport const StoreType = {\n  Cookie: 'cookie',\n  LocalStorage: 'localStorage',\n  Memory: 'memory',\n} as const\n\n/**\n * Known Storage Types\n *\n * Convenience settings for storage systems that AJS includes support for\n */\nexport type StoreType = typeof StoreType[keyof typeof StoreType]\n\nexport type StorageObject = Record<string, unknown>\n\n/**\n * Defines a Storage object for use in AJS Client.\n */\nexport interface Store<Data extends StorageObject = StorageObject> {\n  /**\n   * get value for the key from the stores. it will return the first value found in the stores\n   * @param key key for the value to be retrieved\n   * @returns value for the key or null if not found\n   */\n  get<K extends keyof Data>(key: K): Data[K] | null\n\n  /**\n   * it will set the value for the key in all the stores\n   * @param key key for the value to be stored\n   * @param value value to be stored\n   * @returns value that was stored\n   */\n  set<K extends keyof Data>(key: K, value: Data[K] | null): void\n  /**\n   * remove the value for the key from all the stores\n   * @param key key for the value to be removed\n   * @param storeTypes optional array of store types to be used for removing the value\n   */\n  remove<K extends keyof Data>(key: K): void\n}\n\nexport interface StoreTypeWithSettings<T extends StoreType = StoreType> {\n  name: T\n  settings?: T extends 'cookie' ? CookieOptions : never\n}\n\nexport type InitializeStorageArgs = (StoreTypeWithSettings | StoreType)[]\n", "import { StoreType, StoreTypeWithSettings } from './types'\n\nexport type UniversalStorageSettings = { stores: StoreType[] }\n\n// This is setup this way to permit eventually a different set of settings for custom storage\nexport type StorageSettings = UniversalStorageSettings\n\nexport function isArrayOfStoreType(\n  s: StorageSettings\n): s is UniversalStorageSettings {\n  return (\n    s &&\n    s.stores &&\n    Array.isArray(s.stores) &&\n    s.stores.every((e) => Object.values(StoreType).includes(e))\n  )\n}\n\nexport function isStoreTypeWithSettings(\n  s: StoreTypeWithSettings | StoreType\n): s is StoreTypeWithSettings {\n  return typeof s === 'object' && s.name !== undefined\n}\n", "import { Store, StorageObject } from './types'\n\n// not adding to private method because those method names do not get minified atm, and does not use 'this'\nconst _logStoreKeyError = (\n  store: Store,\n  action: 'set' | 'get' | 'remove',\n  key: string,\n  err: unknown\n) => {\n  console.warn(\n    `${store.constructor.name}: Can't ${action} key \"${key}\" | Err: ${err}`\n  )\n}\n\n/**\n * Uses multiple storages in a priority list to get/set values in the order they are specified.\n */\nexport class UniversalStorage<Data extends StorageObject = StorageObject> {\n  private stores: Store[]\n\n  constructor(stores: Store[]) {\n    this.stores = stores\n  }\n\n  get<K extends keyof Data>(key: K): Data[K] | null {\n    let val: Data[K] | null = null\n\n    for (const store of this.stores) {\n      try {\n        val = store.get(key) as Data[K] | null\n        if (val !== undefined && val !== null) {\n          return val\n        }\n      } catch (e) {\n        _logStoreKeyError(store, 'get', key, e)\n      }\n    }\n    return null\n  }\n\n  set<K extends keyof Data>(key: K, value: Data[K] | null): void {\n    this.stores.forEach((store) => {\n      try {\n        store.set(key, value)\n      } catch (e) {\n        _logStoreKeyError(store, 'set', key, e)\n      }\n    })\n  }\n\n  clear<K extends keyof Data>(key: K): void {\n    this.stores.forEach((store) => {\n      try {\n        store.remove(key)\n      } catch (e) {\n        _logStoreKeyError(store, 'remove', key, e)\n      }\n    })\n  }\n\n  /*\n    This is to support few scenarios where:\n    - value exist in one of the stores ( as a result of other stores being cleared from browser ) and we want to resync them\n    - read values in AJS 1.0 format ( for customers after 1.0 --> 2.0 migration ) and then re-write them in AJS 2.0 format\n  */\n  getAndSync<K extends keyof Data>(key: K): Data[K] | null {\n    const val = this.get(key)\n\n    // legacy behavior, getAndSync can change the type of a value from number to string (AJS 1.0 stores numerical values as a number)\n    const coercedValue = (typeof val === 'number' ? val.toString() : val) as\n      | Data[K]\n      | null\n\n    this.set(key, coercedValue)\n\n    return coercedValue\n  }\n}\n", "import { CookieOptions, CookieStorage } from './cookieStorage'\nimport { LocalStorage } from './localStorage'\nimport { MemoryStorage } from './memoryStorage'\nimport { isStoreTypeWithSettings } from './settings'\nimport { StoreType, Store, InitializeStorageArgs } from './types'\n\nexport * from './types'\nexport * from './localStorage'\nexport * from './cookieStorage'\nexport * from './memoryStorage'\nexport * from './universalStorage'\nexport * from './settings'\n\n/**\n * Creates multiple storage systems from an array of StoreType and options\n * @param args StoreType and options\n * @returns Storage array\n */\nexport function initializeStorages(args: InitializeStorageArgs): Store[] {\n  const storages = args.map((s) => {\n    let type: StoreType\n    let settings\n\n    if (isStoreTypeWithSettings(s)) {\n      type = s.name\n      settings = s.settings\n    } else {\n      type = s\n    }\n\n    switch (type) {\n      case StoreType.Cookie:\n        return new CookieStorage(settings)\n      case StoreType.LocalStorage:\n        return new LocalStorage()\n      case StoreType.Memory:\n        return new MemoryStorage()\n      default:\n        throw new Error(`Unknown Store Type: ${s}`)\n    }\n  })\n  return storages\n}\n\n/**\n * Injects the CookieOptions into a the arguments for initializeStorage\n * @param storeTypes list of storeType\n * @param cookieOptions cookie Options\n * @returns arguments for initializeStorage\n */\nexport function applyCookieOptions(\n  storeTypes: StoreType[],\n  cookieOptions?: CookieOptions\n): InitializeStorageArgs {\n  return storeTypes.map((s) => {\n    if (cookieOptions && s === StoreType.Cookie) {\n      return {\n        name: s,\n        settings: cookieOptions,\n      }\n    }\n    return s\n  })\n}\n", "/**\n *  Check if  thenable\n *  (instanceof Promise doesn't respect realms)\n */\nexport const isThenable = (value: unknown): boolean =>\n  typeof value === 'object' &&\n  value !== null &&\n  'then' in value &&\n  typeof (value as any).then === 'function'\n", "import { Analytics } from '../analytics'\nimport { Context } from '../context'\nimport { isThenable } from '../../lib/is-thenable'\nimport { AnalyticsBrowserCore } from '../analytics/interfaces'\nimport { version } from '../../generated/version'\nimport { getGlobalAnalytics } from '../../lib/global-analytics-helper'\nimport {\n  isBufferedPageContext,\n  getDefaultBufferedPageContext,\n  createPageContext,\n  BufferedPageContext,\n  PageContext,\n} from '../page'\nimport { getVersionType } from '../../lib/version-type'\n\n/**\n * The names of any AnalyticsBrowser methods that also exist on Analytics\n */\nexport type PreInitMethodName =\n  | 'screen'\n  | 'register'\n  | 'deregister'\n  | 'user'\n  | 'trackSubmit'\n  | 'trackClick'\n  | 'trackLink'\n  | 'trackForm'\n  | 'pageview'\n  | 'identify'\n  | 'reset'\n  | 'group'\n  | 'track'\n  | 'ready'\n  | 'alias'\n  | 'debug'\n  | 'page'\n  | 'once'\n  | 'off'\n  | 'on'\n  | 'addSourceMiddleware'\n  | 'setAnonymousId'\n  | 'addDestinationMiddleware'\n\n// Union of all analytics methods that _do not_ return a Promise\ntype SyncPreInitMethodName = {\n  [MethodName in PreInitMethodName]: ReturnType<\n    Analytics[MethodName]\n  > extends Promise<any>\n    ? never\n    : MethodName\n}[PreInitMethodName]\n\nconst flushSyncAnalyticsCalls = (\n  name: SyncPreInitMethodName,\n  analytics: Analytics,\n  buffer: PreInitMethodCallBuffer\n): void => {\n  buffer.getAndRemove(name).forEach((c) => {\n    // While the underlying methods are synchronous, the callAnalyticsMethod returns a promise,\n    // which normalizes success and error states between async and non-async methods, with no perf penalty.\n    callAnalyticsMethod(analytics, c).catch(console.error)\n  })\n}\n\nexport const flushAddSourceMiddleware = async (\n  analytics: Analytics,\n  buffer: PreInitMethodCallBuffer\n) => {\n  for (const c of buffer.getAndRemove('addSourceMiddleware')) {\n    await callAnalyticsMethod(analytics, c).catch(console.error)\n  }\n}\n\n/**\n *  Flush register plugin\n */\nexport const flushRegister = async (\n  analytics: Analytics,\n  buffer: PreInitMethodCallBuffer\n) => {\n  for (const c of buffer.getAndRemove('register')) {\n    await callAnalyticsMethod(analytics, c).catch(console.error)\n  }\n}\n\nexport const flushOn = flushSyncAnalyticsCalls.bind(this, 'on')\n\nexport const flushSetAnonymousID = flushSyncAnalyticsCalls.bind(\n  this,\n  'setAnonymousId'\n)\n\nexport const flushAnalyticsCallsInNewTask = (\n  analytics: Analytics,\n  buffer: PreInitMethodCallBuffer\n): void => {\n  ;(Object.keys(buffer.calls) as (keyof typeof buffer.calls)[]).forEach((m) => {\n    buffer.getAndRemove(m).forEach((c) => {\n      // No one remembers why this event loop optimization is/was neccessary. Lost to history.\n      setTimeout(() => {\n        callAnalyticsMethod(analytics, c).catch(console.error)\n      }, 0)\n    })\n  })\n}\n\nexport const popPageContext = (args: unknown[]): PageContext | undefined => {\n  if (hasBufferedPageContextAsLastArg(args)) {\n    const ctx = args.pop() as BufferedPageContext\n    return createPageContext(ctx)\n  }\n}\n\nexport const hasBufferedPageContextAsLastArg = (\n  args: unknown[]\n): args is [...unknown[], BufferedPageContext] | [BufferedPageContext] => {\n  const lastArg = args[args.length - 1]\n  return isBufferedPageContext(lastArg)\n}\n\n/**\n *  Represents a buffered method call that occurred before initialization.\n */\nexport class PreInitMethodCall<\n  MethodName extends PreInitMethodName = PreInitMethodName\n> {\n  method: MethodName\n  args: PreInitMethodParams<MethodName>\n  called: boolean\n  resolve: (v: ReturnType<Analytics[MethodName]>) => void\n  reject: (reason: any) => void\n  constructor(\n    method: PreInitMethodCall<MethodName>['method'],\n    args: PreInitMethodParams<MethodName>,\n    resolve: PreInitMethodCall<MethodName>['resolve'] = () => {},\n    reject: PreInitMethodCall<MethodName>['reject'] = console.error\n  ) {\n    this.method = method\n    this.resolve = resolve\n    this.reject = reject\n    this.called = false\n    this.args = args\n  }\n}\n\nexport type PreInitMethodParams<MethodName extends PreInitMethodName> =\n  | [...Parameters<Analytics[MethodName]>, BufferedPageContext]\n  | Parameters<Analytics[MethodName]>\n\n/**\n * Infer return type; if return type is promise, unwrap it.\n */\ntype ReturnTypeUnwrap<Fn> = Fn extends (...args: any[]) => infer ReturnT\n  ? ReturnT extends PromiseLike<infer Unwrapped>\n    ? Unwrapped\n    : ReturnT\n  : never\n\ntype MethodCallMap = Partial<Record<PreInitMethodName, PreInitMethodCall[]>>\n\ntype SnippetWindowBufferedMethodCall<\n  MethodName extends PreInitMethodName = PreInitMethodName\n> = [MethodName, ...PreInitMethodParams<MethodName>]\n\n/**\n * A list of the method calls before initialization for snippet users\n * For example, [[\"track\", \"foo\", {bar: 123}], [\"page\"], [\"on\", \"ready\", function(){..}]\n */\ntype SnippetBuffer = SnippetWindowBufferedMethodCall[]\n\n/**\n *  Represents any and all the buffered method calls that occurred before initialization.\n */\nexport class PreInitMethodCallBuffer {\n  private _callMap: MethodCallMap = {}\n\n  constructor(...calls: PreInitMethodCall[]) {\n    this.add(...calls)\n  }\n\n  /**\n   * Pull any buffered method calls from the window object, and use them to hydrate the instance buffer.\n   */\n  public get calls() {\n    this._pushSnippetWindowBuffer()\n    return this._callMap\n  }\n\n  private set calls(calls: MethodCallMap) {\n    this._callMap = calls\n  }\n\n  get<T extends PreInitMethodName>(methodName: T): PreInitMethodCall<T>[] {\n    return (this.calls[methodName] ?? []) as PreInitMethodCall<T>[]\n  }\n\n  /**\n   * Get all buffered method calls for a given method name, and clear them from the buffer.\n   */\n  getAndRemove<T extends PreInitMethodName>(\n    methodName: T\n  ): PreInitMethodCall<T>[] {\n    const calls = this.get(methodName)\n    this.calls[methodName] = []\n    return calls\n  }\n\n  add(...calls: PreInitMethodCall[]): void {\n    calls.forEach((call) => {\n      const eventsExpectingPageContext: PreInitMethodName[] = [\n        'track',\n        'screen',\n        'alias',\n        'group',\n        'page',\n        'identify',\n      ]\n      if (\n        eventsExpectingPageContext.includes(call.method) &&\n        !hasBufferedPageContextAsLastArg(call.args)\n      ) {\n        call.args = [...call.args, getDefaultBufferedPageContext()]\n      }\n\n      if (this.calls[call.method]) {\n        this.calls[call.method]!.push(call)\n      } else {\n        this.calls[call.method] = [call]\n      }\n    })\n  }\n\n  clear(): void {\n    // clear calls in the global snippet buffered array.\n    this._pushSnippetWindowBuffer()\n    // clear calls in this instance\n    this.calls = {}\n  }\n\n  toArray(): PreInitMethodCall[] {\n    return ([] as PreInitMethodCall[]).concat(...Object.values(this.calls))\n  }\n\n  /**\n   * Fetch the buffered method calls from the window object,\n   * normalize them, and use them to hydrate the buffer.\n   * This removes existing buffered calls from the window object.\n   */\n  private _pushSnippetWindowBuffer(): void {\n    // if this is the npm version, we don't want to read from the window object.\n    // This avoids namespace conflicts if there is a seperate analytics library on the page.\n    if (getVersionType() === 'npm') {\n      return undefined\n    }\n    const wa = getGlobalAnalytics()\n    if (!Array.isArray(wa)) return undefined\n    const buffered: SnippetBuffer = wa.splice(0, wa.length)\n    const calls = buffered.map(\n      ([methodName, ...args]) => new PreInitMethodCall(methodName, args)\n    )\n    this.add(...calls)\n  }\n}\n\n/**\n *  Call method and mark as \"called\"\n *  This function should never throw an error\n */\nexport async function callAnalyticsMethod<T extends PreInitMethodName>(\n  analytics: Analytics,\n  call: PreInitMethodCall<T>\n): Promise<void> {\n  try {\n    if (call.called) {\n      return undefined\n    }\n    call.called = true\n\n    const result: ReturnType<Analytics[T]> = (\n      analytics[call.method] as Function\n    )(...call.args)\n\n    if (isThenable(result)) {\n      // do not defer for non-async methods\n      await result\n    }\n\n    call.resolve(result)\n  } catch (err) {\n    call.reject(err)\n  }\n}\n\nexport type AnalyticsLoader = (\n  preInitBuffer: PreInitMethodCallBuffer\n) => Promise<[Analytics, Context]>\n\nexport class AnalyticsBuffered\n  implements PromiseLike<[Analytics, Context]>, AnalyticsBrowserCore\n{\n  instance?: Analytics\n  ctx?: Context\n  private _preInitBuffer: PreInitMethodCallBuffer\n  private _promise: Promise<[Analytics, Context]>\n  constructor(loader: AnalyticsLoader) {\n    this._preInitBuffer = new PreInitMethodCallBuffer()\n    this._promise = loader(this._preInitBuffer)\n    this._promise\n      .then(([ajs, ctx]) => {\n        this.instance = ajs\n        this.ctx = ctx\n      })\n      .catch(() => {\n        // intentionally do nothing...\n        // this result of this promise will be caught by the 'catch' block on this class.\n      })\n  }\n\n  then<T1, T2 = never>(\n    ...args: [\n      onfulfilled:\n        | ((instance: [Analytics, Context]) => T1 | PromiseLike<T1>)\n        | null\n        | undefined,\n      onrejected?: (reason: unknown) => T2 | PromiseLike<T2>\n    ]\n  ) {\n    return this._promise.then(...args)\n  }\n\n  catch<TResult = never>(\n    ...args: [\n      onrejected?:\n        | ((reason: any) => TResult | PromiseLike<TResult>)\n        | undefined\n        | null\n    ]\n  ) {\n    return this._promise.catch(...args)\n  }\n\n  finally(...args: [onfinally?: (() => void) | undefined | null]) {\n    return this._promise.finally(...args)\n  }\n\n  trackSubmit = this._createMethod('trackSubmit')\n  trackClick = this._createMethod('trackClick')\n  trackLink = this._createMethod('trackLink')\n  pageView = this._createMethod('pageview')\n  identify = this._createMethod('identify')\n  reset = this._createMethod('reset')\n  group = this._createMethod('group') as AnalyticsBrowserCore['group']\n  track = this._createMethod('track')\n  ready = this._createMethod('ready')\n  alias = this._createMethod('alias')\n  debug = this._createChainableMethod('debug')\n  page = this._createMethod('page')\n  once = this._createChainableMethod('once')\n  off = this._createChainableMethod('off')\n  on = this._createChainableMethod('on')\n  addSourceMiddleware = this._createMethod('addSourceMiddleware')\n  setAnonymousId = this._createMethod('setAnonymousId')\n  addDestinationMiddleware = this._createMethod('addDestinationMiddleware')\n\n  screen = this._createMethod('screen')\n  register = this._createMethod('register')\n  deregister = this._createMethod('deregister')\n  user = this._createMethod('user')\n  readonly VERSION = version\n\n  private _createMethod<T extends PreInitMethodName>(methodName: T) {\n    return (\n      ...args: Parameters<Analytics[T]>\n    ): Promise<ReturnTypeUnwrap<Analytics[T]>> => {\n      if (this.instance) {\n        const result = (this.instance[methodName] as Function)(...args)\n        return Promise.resolve(result)\n      }\n      return new Promise((resolve, reject) => {\n        this._preInitBuffer.add(\n          new PreInitMethodCall(methodName, args, resolve as any, reject)\n        )\n      })\n    }\n  }\n\n  /**\n   *  These are for methods that where determining when the method gets \"flushed\" is not important.\n   *  These methods will resolve when analytics is fully initialized, and return type (other than Analytics)will not be available.\n   */\n  private _createChainableMethod<T extends PreInitMethodName>(methodName: T) {\n    return (...args: Parameters<Analytics[T]>): AnalyticsBuffered => {\n      if (this.instance) {\n        void (this.instance[methodName] as Function)(...args)\n        return this\n      } else {\n        this._preInitBuffer.add(new PreInitMethodCall(methodName, args))\n      }\n\n      return this\n    }\n  }\n}\n", "import { Facade } from '@segment/facade'\nimport { Analytics } from '../../core/analytics'\nimport { CDNSettings } from '../../browser'\nimport { isOffline } from '../../core/connection'\nimport { Context } from '../../core/context'\nimport { Plugin } from '../../core/plugin'\nimport { PriorityQueue } from '../../lib/priority-queue'\nimport { PersistedPriorityQueue } from '../../lib/priority-queue/persisted'\nimport { toFacade } from '../../lib/to-facade'\nimport batch from './batched-dispatcher'\nimport standard from './fetch-dispatcher'\nimport { normalize } from './normalize'\nimport { scheduleFlush } from './schedule-flush'\nimport { SEGMENT_API_HOST } from '../../core/constants'\nimport { DeliveryStrategy } from './shared-dispatcher'\n\nexport type SegmentioSettings = {\n  apiKey: string\n  apiHost?: string\n  protocol?: 'http' | 'https'\n\n  addBundledMetadata?: boolean\n  unbundledIntegrations?: string[]\n  bundledConfigIds?: string[]\n  unbundledConfigIds?: string[]\n\n  maybeBundledConfigIds?: Record<string, string[]>\n\n  deliveryStrategy?: DeliveryStrategy\n}\n\ntype JSON = ReturnType<Facade['json']>\n\nfunction onAlias(analytics: Analytics, json: JSON): JSON {\n  const user = analytics.user()\n  json.previousId =\n    json.previousId ?? json.from ?? user.id() ?? user.anonymousId()\n  json.userId = json.userId ?? json.to\n  delete json.from\n  delete json.to\n  return json\n}\n\nexport type SegmentIOPluginMetadata = {\n  writeKey: string\n  apiHost: string\n  protocol: string\n}\nexport interface SegmentIOPlugin extends Plugin {\n  metadata: SegmentIOPluginMetadata\n}\n\nexport const isSegmentPlugin = (plugin: Plugin): plugin is SegmentIOPlugin => {\n  return plugin.name === 'Segment.io'\n}\n\nexport function segmentio(\n  analytics: Analytics,\n  settings?: SegmentioSettings,\n  integrations?: CDNSettings['integrations']\n): Plugin {\n  // Attach `pagehide` before buffer is created so that inflight events are added\n  // to the buffer before the buffer persists events in its own `pagehide` handler.\n  window.addEventListener('pagehide', () => {\n    buffer.push(...Array.from(inflightEvents))\n    inflightEvents.clear()\n  })\n\n  const writeKey = settings?.apiKey ?? ''\n\n  const buffer = analytics.options.disableClientPersistence\n    ? new PriorityQueue<Context>(analytics.queue.queue.maxAttempts, [])\n    : new PersistedPriorityQueue(\n        analytics.queue.queue.maxAttempts,\n        `${writeKey}:dest-Segment.io`\n      )\n\n  const inflightEvents = new Set<Context>()\n  const flushing = false\n\n  const apiHost = settings?.apiHost ?? SEGMENT_API_HOST\n  const protocol = settings?.protocol ?? 'https'\n  const remote = `${protocol}://${apiHost}`\n\n  const deliveryStrategy = settings?.deliveryStrategy\n  const client =\n    deliveryStrategy &&\n    'strategy' in deliveryStrategy &&\n    deliveryStrategy.strategy === 'batching'\n      ? batch(apiHost, deliveryStrategy.config)\n      : standard(deliveryStrategy?.config)\n\n  async function send(ctx: Context): Promise<Context> {\n    if (isOffline()) {\n      buffer.push(ctx)\n      // eslint-disable-next-line @typescript-eslint/no-use-before-define\n      scheduleFlush(flushing, buffer, segmentio, scheduleFlush)\n      return ctx\n    }\n\n    inflightEvents.add(ctx)\n\n    const path = ctx.event.type.charAt(0)\n\n    let json = toFacade(ctx.event).json()\n\n    if (ctx.event.type === 'track') {\n      delete json.traits\n    }\n\n    if (ctx.event.type === 'alias') {\n      json = onAlias(analytics, json)\n    }\n\n    if (buffer.getAttempts(ctx) >= buffer.maxAttempts) {\n      inflightEvents.delete(ctx)\n      return ctx\n    }\n\n    return client\n      .dispatch(\n        `${remote}/${path}`,\n        normalize(analytics, json, settings, integrations, ctx)\n      )\n      .then(() => ctx)\n      .catch((error) => {\n        ctx.log('error', 'Error sending event', error)\n        if (error.name === 'RateLimitError') {\n          const timeout = error.retryTimeout\n          buffer.pushWithBackoff(ctx, timeout)\n        } else {\n          buffer.pushWithBackoff(ctx)\n        }\n        // eslint-disable-next-line @typescript-eslint/no-use-before-define\n        scheduleFlush(flushing, buffer, segmentio, scheduleFlush)\n        return ctx\n      })\n      .finally(() => {\n        inflightEvents.delete(ctx)\n      })\n  }\n\n  const segmentio: SegmentIOPlugin = {\n    metadata: {\n      writeKey,\n      apiHost,\n      protocol,\n    },\n    name: 'Segment.io',\n    type: 'destination',\n    version: '0.1.0',\n    isLoaded: (): boolean => true,\n    load: (): Promise<void> => Promise.resolve(),\n    track: send,\n    identify: send,\n    page: send,\n    alias: send,\n    group: send,\n    screen: send,\n  }\n\n  // Buffer may already have items if they were previously stored in localStorage.\n  // Start flushing them immediately.\n  if (buffer.todo) {\n    scheduleFlush(flushing, buffer, segmentio, scheduleFlush)\n  }\n\n  return segmentio\n}\n", "import { SegmentEvent } from '../../core/events'\nimport { fetch } from '../../lib/fetch'\nimport { onPageChange } from '../../lib/on-page-change'\nimport { SegmentFacade } from '../../lib/to-facade'\nimport { RateLimitError } from './ratelimit-error'\nimport { Context } from '../../core/context'\nimport { BatchingDispatchConfig, createHeaders } from './shared-dispatcher'\n\nconst MAX_PAYLOAD_SIZE = 500\nconst MAX_KEEPALIVE_SIZE = 64\n\nfunction kilobytes(buffer: unknown): number {\n  const size = encodeURI(JSON.stringify(buffer)).split(/%..|./).length - 1\n  return size / 1024\n}\n\n/**\n * Checks if the payload is over or close to\n * the maximum payload size allowed by tracking\n * API.\n */\nfunction approachingTrackingAPILimit(buffer: unknown): boolean {\n  return kilobytes(buffer) >= MAX_PAYLOAD_SIZE - 50\n}\n\n/**\n * Checks if payload is over or approaching the limit for keepalive\n * requests. If keepalive is enabled we want to avoid\n * going over this to prevent data loss.\n */\nfunction passedKeepaliveLimit(buffer: unknown): boolean {\n  return kilobytes(buffer) >= MAX_KEEPALIVE_SIZE - 10\n}\n\nfunction chunks(batch: object[]): Array<object[]> {\n  const result: object[][] = []\n  let index = 0\n\n  batch.forEach((item) => {\n    const size = kilobytes(result[index])\n    if (size >= 64) {\n      index++\n    }\n\n    if (result[index]) {\n      result[index].push(item)\n    } else {\n      result[index] = [item]\n    }\n  })\n\n  return result\n}\n\nexport default function batch(\n  apiHost: string,\n  config?: BatchingDispatchConfig\n) {\n  let buffer: object[] = []\n  let pageUnloaded = false\n\n  const limit = config?.size ?? 10\n  const timeout = config?.timeout ?? 5000\n  let rateLimitTimeout = 0\n\n  function sendBatch(batch: object[]) {\n    if (batch.length === 0) {\n      return\n    }\n\n    const writeKey = (batch[0] as SegmentEvent)?.writeKey\n\n    // Remove sentAt from every event as batching only needs a single timestamp\n    const updatedBatch = batch.map((event) => {\n      const { sentAt, ...newEvent } = event as SegmentEvent\n      return newEvent\n    })\n\n    return fetch(`https://${apiHost}/b`, {\n      credentials: config?.credentials,\n      keepalive: config?.keepalive || pageUnloaded,\n      headers: createHeaders(config?.headers),\n      method: 'post',\n      body: JSON.stringify({\n        writeKey,\n        batch: updatedBatch,\n        sentAt: new Date().toISOString(),\n      }),\n      // @ts-ignore - not in the ts lib yet\n      priority: config?.priority,\n    }).then((res) => {\n      if (res.status >= 500) {\n        throw new Error(`Bad response from server: ${res.status}`)\n      }\n      if (res.status === 429) {\n        const retryTimeoutStringSecs = res.headers?.get('x-ratelimit-reset')\n        const retryTimeoutMS =\n          typeof retryTimeoutStringSecs == 'string'\n            ? parseInt(retryTimeoutStringSecs) * 1000\n            : timeout\n        throw new RateLimitError(\n          `Rate limit exceeded: ${res.status}`,\n          retryTimeoutMS\n        )\n      }\n    })\n  }\n\n  async function flush(attempt = 1): Promise<unknown> {\n    if (buffer.length) {\n      const batch = buffer\n      buffer = []\n      return sendBatch(batch)?.catch((error) => {\n        const ctx = Context.system()\n        ctx.log('error', 'Error sending batch', error)\n        if (attempt <= (config?.maxRetries ?? 10)) {\n          if (error.name === 'RateLimitError') {\n            rateLimitTimeout = error.retryTimeout\n          }\n          buffer.push(...batch)\n          buffer.map((event) => {\n            if ('_metadata' in event) {\n              const segmentEvent = event as ReturnType<SegmentFacade['json']>\n              segmentEvent._metadata = {\n                ...segmentEvent._metadata,\n                retryCount: attempt,\n              }\n            }\n          })\n          scheduleFlush(attempt + 1)\n        }\n      })\n    }\n  }\n\n  let schedule: NodeJS.Timeout | undefined\n\n  function scheduleFlush(attempt = 1): void {\n    if (schedule) {\n      return\n    }\n\n    schedule = setTimeout(\n      () => {\n        schedule = undefined\n        flush(attempt).catch(console.error)\n      },\n      rateLimitTimeout ? rateLimitTimeout : timeout\n    )\n    rateLimitTimeout = 0\n  }\n\n  onPageChange((unloaded) => {\n    pageUnloaded = unloaded\n\n    if (pageUnloaded && buffer.length) {\n      const reqs = chunks(buffer).map(sendBatch)\n      Promise.all(reqs).catch(console.error)\n    }\n  })\n\n  async function dispatch(_url: string, body: object): Promise<unknown> {\n    buffer.push(body)\n\n    const bufferOverflow =\n      buffer.length >= limit ||\n      approachingTrackingAPILimit(buffer) ||\n      (config?.keepalive && passedKeepaliveLimit(buffer))\n\n    return bufferOverflow || pageUnloaded ? flush() : scheduleFlush()\n  }\n\n  return {\n    dispatch,\n  }\n}\n", "/**\n * Register event listener on document that fires when:\n * * tab change or tab close (in mobile or desktop)\n * * click back / forward button\n * * click any link or perform any other navigation action\n * * soft refresh / hard refresh\n *\n * adapted from https://stackoverflow.com/questions/3239834/window-onbeforeunload-not-working-on-the-ipad/52864508#52864508,\n */\nexport const onPageChange = (cb: (unloaded: boolean) => void) => {\n  let unloaded = false // prevents double firing if both are supported\n\n  window.addEventListener('pagehide', () => {\n    if (unloaded) return\n    unloaded = true\n    cb(unloaded)\n  })\n\n  // using document instead of window because of bug affecting browsers before safari 14 (detail in footnotes https://caniuse.com/?search=visibilitychange)\n  document.addEventListener('visibilitychange', () => {\n    if (document.visibilityState == 'hidden') {\n      if (unloaded) return\n      unloaded = true\n    } else {\n      unloaded = false\n    }\n    cb(unloaded)\n  })\n}\n", "export class RateLimitError extends Error {\n  retryTimeout: number\n\n  constructor(message: string, retryTimeout: number) {\n    super(message)\n    this.retryTimeout = retryTimeout\n    this.name = 'RateLimitError'\n  }\n}\n", "export const createHeaders = (\n  headerSettings: AdditionalHeaders | undefined\n): Record<string, string> => {\n  return {\n    'Content-Type': 'text/plain',\n    ...(typeof headerSettings === 'function'\n      ? headerSettings()\n      : headerSettings),\n  }\n}\n\n/**\n * Additional headers to be sent with the request.\n * Default is `Content-Type: text/plain`. This can be overridden.\n * If a function is provided, it will be called before each request.\n */\nexport type AdditionalHeaders =\n  | Record<string, string>\n  | (() => Record<string, string>)\n\nexport type RequestPriority = 'high' | 'low' | 'auto'\nexport type RequestCredentials = 'include' | 'same-origin' | 'omit'\n\n/**\n * These are the options that can be passed to the fetch dispatcher.\n * They more/less map to the Fetch RequestInit type.\n */\ninterface DispatchFetchConfig {\n  /**\n   * Request credentials configuration\n   *\n   * @see https://developer.mozilla.org/en-US/docs/Web/API/Request/credentials\n   */\n  credentials?: RequestCredentials\n  /**\n   * This is useful for ensuring that an event is sent even if the user navigates away from the page.\n   * However, it may increase the likelihood of events being lost, as there is a 64kb limit for *all* fetch requests (not just ones to segment) with keepalive (which is why it's disabled by default). So, if you're sending a lot of data, this will likely cause events to be dropped.\n\n   * @default false\n   */\n  keepalive?: boolean\n  /**\n   * Additional headers to be sent with the request.\n   * Default is `Content-Type: text/plain`. This can be overridden.\n   * If a function is provided, it will be called before each request.\n   * @example { 'Content-Type': 'application/json' } or () => { 'Content-Type': 'application/json' }\n   */\n  headers?: AdditionalHeaders\n  /**\n   * 'Request Priority' of the request\n   * @see https://developer.mozilla.org/en-US/docs/Web/API/RequestInit#priority\n   */\n  priority?: RequestPriority\n}\n\nexport interface BatchingDispatchConfig extends DispatchFetchConfig {\n  /**\n   * If strategy = 'batching', the maximum number of events to send in a single request. If the batch reaches this size, a request will automatically be sent.\n   *\n   * @default 10\n   */\n  size?: number\n  /**\n   * If strategy = 'batching', the maximum time, in milliseconds, to wait before sending a request.\n   * This won't alaways be relevant, as the request will be sent when the size is reached.\n   * However, if the size is never reached, the request will be sent after this time.\n   * When it comes to retries, if there is a rate limit timeout header, that will be respected over the value here.\n   *\n   * @default 5000\n   */\n  timeout?: number\n  /**\n   * If strategy = 'batching', the maximum number of retries to attempt before giving up.\n   * @default 10\n   */\n  maxRetries?: number\n}\n\nexport interface StandardDispatcherConfig extends DispatchFetchConfig {}\n\nexport type DeliveryStrategy =\n  | {\n      strategy?: 'standard'\n      config: StandardDispatcherConfig\n    }\n  | {\n      strategy: 'batching'\n      config?: BatchingDispatchConfig\n    }\n", "import { fetch } from '../../lib/fetch'\nimport { RateLimitError } from './ratelimit-error'\nimport { createHeaders, StandardDispatcherConfig } from './shared-dispatcher'\nexport type Dispatcher = (url: string, body: object) => Promise<unknown>\n\nexport default function (config?: StandardDispatcherConfig): {\n  dispatch: Dispatcher\n} {\n  function dispatch(url: string, body: object): Promise<unknown> {\n    return fetch(url, {\n      credentials: config?.credentials,\n      keepalive: config?.keepalive,\n      headers: createHeaders(config?.headers),\n      method: 'post',\n      body: JSON.stringify(body),\n      // @ts-ignore - not in the ts lib yet\n      priority: config?.priority,\n    }).then((res) => {\n      if (res.status >= 500) {\n        throw new Error(`Bad response from server: ${res.status}`)\n      }\n      if (res.status === 429) {\n        const retryTimeoutStringSecs = res.headers?.get('x-ratelimit-reset')\n        const retryTimeoutMS = retryTimeoutStringSecs\n          ? parseInt(retryTimeoutStringSecs) * 1000\n          : 5000\n        throw new RateLimitError(\n          `Rate limit exceeded: ${res.status}`,\n          retryTimeoutMS\n        )\n      }\n    })\n  }\n\n  return {\n    dispatch,\n  }\n}\n", "import { Analytics } from '../../core/analytics'\nimport { CDNSettings } from '../../browser'\nimport { SegmentFacade } from '../../lib/to-facade'\nimport { SegmentioSettings } from './index'\nimport { Context } from '../../core/context'\n\nexport function normalize(\n  analytics: Analytics,\n  json: ReturnType<SegmentFacade['json']>,\n  settings?: SegmentioSettings,\n  integrations?: CDNSettings['integrations'],\n  ctx?: Context\n): object {\n  const user = analytics.user()\n\n  delete json.options\n\n  json.writeKey = settings?.apiKey\n\n  json.userId = json.userId || user.id()\n  json.anonymousId = json.anonymousId || user.anonymousId()\n\n  json.sentAt = new Date()\n\n  const failed = analytics.queue.failedInitializations || []\n  if (failed.length > 0) {\n    json._metadata = { failedInitializations: failed }\n  }\n\n  if (ctx != null) {\n    if (ctx.attempts > 1) {\n      json._metadata = {\n        ...json._metadata,\n        retryCount: ctx.attempts,\n      }\n    }\n    ctx.attempts++\n  }\n\n  const bundled: string[] = []\n  const unbundled: string[] = []\n\n  for (const key in integrations) {\n    const integration = integrations[key]\n    if (key === 'Segment.io') {\n      bundled.push(key)\n    }\n    if (integration.bundlingStatus === 'bundled') {\n      bundled.push(key)\n    }\n    if (integration.bundlingStatus === 'unbundled') {\n      unbundled.push(key)\n    }\n  }\n\n  // This will make sure that the disabled cloud mode destinations will be\n  // included in the unbundled list.\n  for (const settingsUnbundled of settings?.unbundledIntegrations || []) {\n    if (!unbundled.includes(settingsUnbundled)) {\n      unbundled.push(settingsUnbundled)\n    }\n  }\n\n  const configIds = settings?.maybeBundledConfigIds ?? {}\n  const bundledConfigIds: string[] = []\n\n  bundled.sort().forEach((name) => {\n    ;(configIds[name] ?? []).forEach((id) => {\n      bundledConfigIds.push(id)\n    })\n  })\n\n  if (settings?.addBundledMetadata !== false) {\n    json._metadata = {\n      ...json._metadata,\n      bundled: bundled.sort(),\n      unbundled: unbundled.sort(),\n      bundledIds: bundledConfigIds,\n    }\n  }\n\n  return json\n}\n", "import { isOffline } from '../../core/connection'\nimport { Context } from '../../core/context'\nimport { Plugin } from '../../core/plugin'\nimport { attempt } from '@segment/analytics-core'\nimport { pWhile } from '../../lib/p-while'\nimport { PriorityQueue } from '../../lib/priority-queue'\n\nasync function flushQueue(\n  xt: Plugin,\n  queue: PriorityQueue<Context>\n): Promise<PriorityQueue<Context>> {\n  const failedQueue: Context[] = []\n  if (isOffline()) {\n    return queue\n  }\n\n  await pWhile(\n    () => queue.length > 0 && !isOffline(),\n    async () => {\n      const ctx = queue.pop()\n      if (!ctx) {\n        return\n      }\n\n      const result = await attempt(ctx, xt)\n      const success = result instanceof Context\n      if (!success) {\n        failedQueue.push(ctx)\n      }\n    }\n  )\n  // re-add failed tasks\n  failedQueue.map((failed) => queue.pushWithBackoff(failed))\n  return queue\n}\n\nexport function scheduleFlush(\n  flushing: boolean,\n  buffer: PriorityQueue<Context>,\n  xt: Plugin,\n  scheduleFlush: Function\n): void {\n  if (flushing) {\n    return\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-misused-promises\n  setTimeout(async () => {\n    let isFlushing = true\n    // eslint-disable-next-line @typescript-eslint/no-use-before-define\n    const newBuffer = await flushQueue(xt, buffer)\n    isFlushing = false\n\n    if (buffer.todo > 0) {\n      scheduleFlush(isFlushing, newBuffer, xt, scheduleFlush)\n    }\n  }, Math.random() * 5000)\n}\n", "/**\n * Returns `process.env` if it is available in the environment.\n * Always returns an object make it similarly easy to use as `process.env`.\n */\nexport function getProcessEnv(): { [key: string]: string | undefined } {\n  if (typeof process === 'undefined' || !process.env) {\n    return {}\n  }\n\n  return process.env\n}\n", "import { getProcessEnv } from '../lib/get-process-env'\nimport { getCDN, setGlobalCDNUrl } from '../lib/parse-cdn'\nimport { Analytics, NullAnalytics } from '../core/analytics'\nimport { Context } from '../core/context'\nimport { Plugin } from '../core/plugin'\nimport { mergedOptions } from '../lib/merged-options'\nimport { createDeferred } from '@segment/analytics-generic-utils'\nimport { envEnrichment } from '../plugins/env-enrichment'\nimport { PluginFactory, remoteLoader } from '../plugins/remote-loader'\nimport { segmentio, SegmentioSettings } from '../plugins/segmentio'\nimport {\n  AnalyticsBuffered,\n  PreInitMethodCallBuffer,\n  flushAnalyticsCallsInNewTask,\n  flushAddSourceMiddleware,\n  flushSetAnonymousID,\n  flushOn,\n  PreInitMethodCall,\n  flushRegister,\n} from '../core/buffer'\nimport { ClassicIntegrationSource } from '../plugins/ajs-destination/types'\nimport { attachInspector } from '../core/inspector'\nimport { Stats } from '../core/stats'\nimport { setGlobalAnalyticsKey } from '../lib/global-analytics-helper'\nimport { CDNSettings, AnalyticsBrowserSettings, InitOptions } from './settings'\nimport { fetch } from '../lib/fetch'\n\nexport type { CDNSettings, AnalyticsBrowserSettings }\n\nexport function loadCDNSettings(\n  writeKey: string,\n  baseUrl: string\n): Promise<CDNSettings> {\n  return fetch(`${baseUrl}/v1/projects/${writeKey}/settings`)\n    .then((res) => {\n      if (!res.ok) {\n        return res.text().then((errorResponseMessage) => {\n          throw new Error(errorResponseMessage)\n        })\n      }\n      return res.json()\n    })\n    .catch((err) => {\n      console.error(err.message)\n      throw err\n    })\n}\n\nfunction hasLegacyDestinations(settings: CDNSettings): boolean {\n  return (\n    getProcessEnv().NODE_ENV !== 'test' &&\n    // just one integration means segmentio\n    Object.keys(settings.integrations).length > 1\n  )\n}\n\nfunction hasTsubMiddleware(settings: CDNSettings): boolean {\n  return (\n    getProcessEnv().NODE_ENV !== 'test' &&\n    (settings.middlewareSettings?.routingRules?.length ?? 0) > 0\n  )\n}\n\n/**\n * With AJS classic, we allow users to call setAnonymousId before the library initialization.\n * This is important because some of the destinations will use the anonymousId during the initialization,\n * and if we set anonId afterwards, that wouldn\u2019t impact the destination.\n *\n * Also Ensures events can be registered before library initialization.\n * This is important so users can register to 'initialize' and any events that may fire early during setup.\n */\nfunction flushPreBuffer(\n  analytics: Analytics,\n  buffer: PreInitMethodCallBuffer\n): void {\n  flushSetAnonymousID(analytics, buffer)\n  flushOn(analytics, buffer)\n}\n\n/**\n * Finish flushing buffer and cleanup.\n */\nasync function flushFinalBuffer(\n  analytics: Analytics,\n  queryString: string,\n  buffer: PreInitMethodCallBuffer\n): Promise<void> {\n  await flushQueryString(analytics, queryString)\n  flushAnalyticsCallsInNewTask(analytics, buffer)\n}\n\nconst getQueryString = (): string => {\n  const hash = window.location.hash ?? ''\n  const search = window.location.search ?? ''\n  const term = search.length ? search : hash.replace(/(?=#).*(?=\\?)/, '')\n  return term\n}\n\nconst flushQueryString = async (\n  analytics: Analytics,\n  queryString: string\n): Promise<void> => {\n  if (queryString.includes('ajs_')) {\n    await analytics.queryString(queryString).catch(console.error)\n  }\n}\n\nasync function registerPlugins(\n  writeKey: string,\n  cdnSettings: CDNSettings,\n  analytics: Analytics,\n  options: InitOptions,\n  pluginLikes: (Plugin | PluginFactory)[] = [],\n  legacyIntegrationSources: ClassicIntegrationSource[],\n  preInitBuffer: PreInitMethodCallBuffer\n): Promise<Context> {\n  flushPreBuffer(analytics, preInitBuffer)\n  const pluginsFromSettings = pluginLikes?.filter(\n    (pluginLike) => typeof pluginLike === 'object'\n  ) as Plugin[]\n\n  const pluginSources = pluginLikes?.filter(\n    (pluginLike) =>\n      typeof pluginLike === 'function' &&\n      typeof pluginLike.pluginName === 'string'\n  ) as PluginFactory[]\n\n  const tsubMiddleware = hasTsubMiddleware(cdnSettings)\n    ? await import(\n        /* webpackChunkName: \"tsub-middleware\" */ '../plugins/routing-middleware'\n      ).then((mod) => {\n        return mod.tsubMiddleware(cdnSettings.middlewareSettings!.routingRules)\n      })\n    : undefined\n\n  const legacyDestinations =\n    hasLegacyDestinations(cdnSettings) || legacyIntegrationSources.length > 0\n      ? await import(\n          /* webpackChunkName: \"ajs-destination\" */ '../plugins/ajs-destination'\n        ).then((mod) => {\n          return mod.ajsDestinations(\n            writeKey,\n            cdnSettings,\n            analytics.integrations,\n            options,\n            tsubMiddleware,\n            legacyIntegrationSources\n          )\n        })\n      : []\n\n  if (cdnSettings.legacyVideoPluginsEnabled) {\n    await import(\n      /* webpackChunkName: \"legacyVideos\" */ '../plugins/legacy-video-plugins'\n    ).then((mod) => {\n      return mod.loadLegacyVideoPlugins(analytics)\n    })\n  }\n\n  const schemaFilter = options.plan?.track\n    ? await import(\n        /* webpackChunkName: \"schemaFilter\" */ '../plugins/schema-filter'\n      ).then((mod) => {\n        return mod.schemaFilter(options.plan?.track, cdnSettings)\n      })\n    : undefined\n\n  const mergedSettings = mergedOptions(cdnSettings, options)\n  const remotePlugins = await remoteLoader(\n    cdnSettings,\n    analytics.integrations,\n    mergedSettings,\n    options,\n    tsubMiddleware,\n    pluginSources\n  ).catch(() => [])\n\n  const basePlugins = [envEnrichment, ...legacyDestinations, ...remotePlugins]\n\n  if (schemaFilter) {\n    basePlugins.push(schemaFilter)\n  }\n\n  const shouldIgnoreSegmentio =\n    (options.integrations?.All === false &&\n      !options.integrations['Segment.io']) ||\n    (options.integrations && options.integrations['Segment.io'] === false)\n\n  if (!shouldIgnoreSegmentio) {\n    basePlugins.push(\n      await segmentio(\n        analytics,\n        mergedSettings['Segment.io'],\n        cdnSettings.integrations\n      )\n    )\n  }\n\n  // order is important here, (for example, if there are multiple enrichment plugins, the last registered plugin will have access to the last context.)\n  const ctx = await analytics.register(\n    // register 'core' plugins and those via destinations\n    ...basePlugins,\n    // register user-defined plugins passed into AnalyticsBrowser.load({ plugins: [plugin1, plugin2] }) -- relevant to npm-only\n    ...pluginsFromSettings\n  )\n  // register user-defined plugins registered via analytics.register()\n  await flushRegister(analytics, preInitBuffer)\n\n  if (\n    Object.entries(cdnSettings.enabledMiddleware ?? {}).some(\n      ([, enabled]) => enabled\n    )\n  ) {\n    await import(\n      /* webpackChunkName: \"remoteMiddleware\" */ '../plugins/remote-middleware'\n    ).then(async ({ remoteMiddlewares }) => {\n      const middleware = await remoteMiddlewares(\n        ctx,\n        cdnSettings,\n        options.obfuscate\n      )\n      const promises = middleware.map((mdw) =>\n        analytics.addSourceMiddleware(mdw)\n      )\n      return Promise.all(promises)\n    })\n  }\n\n  // register any user-defined plugins added via analytics.addSourceMiddleware()\n  await flushAddSourceMiddleware(analytics, preInitBuffer)\n\n  return ctx\n}\n\nasync function loadAnalytics(\n  settings: AnalyticsBrowserSettings,\n  options: InitOptions = {},\n  preInitBuffer: PreInitMethodCallBuffer\n): Promise<[Analytics, Context]> {\n  // return no-op analytics instance if disabled\n  if (options.disable === true) {\n    return [new NullAnalytics(), Context.system()]\n  }\n\n  if (options.globalAnalyticsKey)\n    setGlobalAnalyticsKey(options.globalAnalyticsKey)\n  // this is an ugly side-effect, but it's for the benefits of the plugins that get their cdn via getCDN()\n  if (settings.cdnURL) setGlobalCDNUrl(settings.cdnURL)\n\n  if (options.initialPageview) {\n    // capture the page context early, so it's always up-to-date\n    preInitBuffer.add(new PreInitMethodCall('page', []))\n  }\n\n  // reading the query string as early as possible in case the URL changes\n  const queryString = getQueryString()\n\n  const cdnURL = settings.cdnURL ?? getCDN()\n  let cdnSettings =\n    settings.cdnSettings ?? (await loadCDNSettings(settings.writeKey, cdnURL))\n\n  if (options.updateCDNSettings) {\n    cdnSettings = options.updateCDNSettings(cdnSettings)\n  }\n\n  // if options.disable is a function, we allow user to disable analytics based on CDN Settings\n  if (typeof options.disable === 'function') {\n    const disabled = await options.disable(cdnSettings)\n    if (disabled) {\n      return [new NullAnalytics(), Context.system()]\n    }\n  }\n\n  const retryQueue: boolean =\n    cdnSettings.integrations['Segment.io']?.retryQueue ?? true\n\n  options = {\n    retryQueue,\n    ...options,\n  }\n\n  const analytics = new Analytics({ ...settings, cdnSettings, cdnURL }, options)\n\n  attachInspector(analytics)\n\n  const plugins = settings.plugins ?? []\n\n  const classicIntegrations = settings.classicIntegrations ?? []\n\n  const segmentLoadOptions = options.integrations?.['Segment.io'] as\n    | SegmentioSettings\n    | undefined\n\n  Stats.initRemoteMetrics({\n    ...cdnSettings.metrics,\n    host: segmentLoadOptions?.apiHost ?? cdnSettings.metrics?.host,\n    protocol: segmentLoadOptions?.protocol,\n  })\n\n  const ctx = await registerPlugins(\n    settings.writeKey,\n    cdnSettings,\n    analytics,\n    options,\n    plugins,\n    classicIntegrations,\n    preInitBuffer\n  )\n\n  analytics.initialized = true\n  analytics.emit('initialize', settings, options)\n  await flushFinalBuffer(analytics, queryString, preInitBuffer)\n\n  return [analytics, ctx]\n}\n\n/**\n * The public browser interface for Segment Analytics\n *\n * @example\n * ```ts\n *  export const analytics = new AnalyticsBrowser()\n *  analytics.load({ writeKey: 'foo' })\n * ```\n * @link https://github.com/segmentio/analytics-next/#readme\n */\nexport class AnalyticsBrowser extends AnalyticsBuffered {\n  private _resolveLoadStart: (\n    settings: AnalyticsBrowserSettings,\n    options: InitOptions\n  ) => void\n\n  constructor() {\n    const { promise: loadStart, resolve: resolveLoadStart } =\n      createDeferred<Parameters<AnalyticsBrowser['load']>>()\n\n    super((buffer) =>\n      loadStart.then(([settings, options]) =>\n        loadAnalytics(settings, options, buffer)\n      )\n    )\n\n    this._resolveLoadStart = (settings, options) =>\n      resolveLoadStart([settings, options])\n  }\n\n  /**\n   * Fully initialize an analytics instance, including:\n   *\n   * * Fetching settings from the segment CDN (by default).\n   * * Fetching all remote destinations configured by the user (if applicable).\n   * * Flushing buffered analytics events.\n   * * Loading all middleware.\n   *\n   * Note:\uFE0F  This method should only be called *once* in your application.\n   *\n   * @example\n   * ```ts\n   * export const analytics = new AnalyticsBrowser()\n   * analytics.load({ writeKey: 'foo' })\n   * ```\n   */\n  load(\n    settings: AnalyticsBrowserSettings,\n    options: InitOptions = {}\n  ): AnalyticsBrowser {\n    this._resolveLoadStart(settings, options)\n    return this\n  }\n\n  /**\n   * Instantiates an object exposing Analytics methods.\n   *\n   * @example\n   * ```ts\n   * const ajs = AnalyticsBrowser.load({ writeKey: '<YOUR_WRITE_KEY>' })\n   *\n   * ajs.track(\"foo\")\n   * ...\n   * ```\n   */\n  static load(\n    settings: AnalyticsBrowserSettings,\n    options: InitOptions = {}\n  ): AnalyticsBrowser {\n    return new AnalyticsBrowser().load(settings, options)\n  }\n\n  static standalone(\n    writeKey: string,\n    options?: InitOptions\n  ): Promise<Analytics> {\n    return AnalyticsBrowser.load({ writeKey }, options).then((res) => res[0])\n  }\n}\n", "import jar from 'js-cookie'\nimport type { Context } from '../../core/context'\nimport type { Plugin } from '../../core/plugin'\nimport { version } from '../../generated/version'\nimport { SegmentEvent } from '../../core/events'\nimport { Campaign, PluginType } from '@segment/analytics-core'\nimport { getVersionType } from '../../lib/version-type'\nimport { tld } from '../../core/user/tld'\nimport { gracefulDecodeURIComponent } from '../../core/query-string/gracefulDecodeURIComponent'\nimport { CookieStorage, UniversalStorage } from '../../core/storage'\nimport { Analytics } from '../../core/analytics'\nimport { clientHints } from '../../lib/client-hints'\nimport { UADataValues } from '../../lib/client-hints/interfaces'\n\nlet cookieOptions: jar.CookieAttributes | undefined\nfunction getCookieOptions(): jar.CookieAttributes {\n  if (cookieOptions) {\n    return cookieOptions\n  }\n\n  const domain = tld(window.location.href)\n  cookieOptions = {\n    expires: 31536000000, // 1 year\n    secure: false,\n    path: '/',\n  }\n  if (domain) {\n    cookieOptions.domain = domain\n  }\n\n  return cookieOptions\n}\n\ntype Ad = { id: string; type: string }\n\nfunction ads(query: string): Ad | undefined {\n  const queryIds: Record<string, string> = {\n    btid: 'dataxu',\n    urid: 'millennial-media',\n  }\n\n  if (query.startsWith('?')) {\n    query = query.substring(1)\n  }\n  query = query.replace(/\\?/g, '&')\n  const parts = query.split('&')\n\n  for (const part of parts) {\n    const [k, v] = part.split('=')\n    if (queryIds[k]) {\n      return {\n        id: v,\n        type: queryIds[k],\n      }\n    }\n  }\n}\n\nexport function utm(query: string): Campaign {\n  if (query.startsWith('?')) {\n    query = query.substring(1)\n  }\n  query = query.replace(/\\?/g, '&')\n\n  return query.split('&').reduce((acc, str) => {\n    const [k, v = ''] = str.split('=')\n    if (k.includes('utm_') && k.length > 4) {\n      let utmParam = k.slice(4) as keyof Campaign\n      if (utmParam === 'campaign') {\n        utmParam = 'name'\n      }\n      acc[utmParam] = gracefulDecodeURIComponent(v)\n    }\n    return acc\n  }, {} as Campaign)\n}\n\nexport function ampId(): string | undefined {\n  const ampId = jar.get('_ga')\n  if (ampId && ampId.startsWith('amp')) {\n    return ampId\n  }\n}\n\nfunction referrerId(\n  query: string,\n  ctx: SegmentEvent['context'],\n  disablePersistance: boolean\n): void {\n  const storage = new UniversalStorage<{\n    's:context.referrer': Ad\n  }>(disablePersistance ? [] : [new CookieStorage(getCookieOptions())])\n\n  const stored = storage.get('s:context.referrer')\n\n  const ad = ads(query) ?? stored\n\n  if (!ad) {\n    return\n  }\n\n  if (ctx) {\n    ctx.referrer = { ...ctx.referrer, ...ad }\n  }\n\n  storage.set('s:context.referrer', ad)\n}\n\n/**\n *\n * @param obj e.g. { foo: 'b', bar: 'd', baz: ['123', '456']}\n * @returns e.g. 'foo=b&bar=d&baz=123&baz=456'\n */\nconst objectToQueryString = (\n  obj: Record<string, string | string[]>\n): string => {\n  try {\n    const searchParams = new URLSearchParams()\n    Object.entries(obj).forEach(([k, v]) => {\n      if (Array.isArray(v)) {\n        v.forEach((value) => searchParams.append(k, value))\n      } else {\n        searchParams.append(k, v)\n      }\n    })\n    return searchParams.toString()\n  } catch {\n    return ''\n  }\n}\n\nclass EnvironmentEnrichmentPlugin implements Plugin {\n  private instance!: Analytics\n  private userAgentData: UADataValues | undefined\n\n  name = 'Page Enrichment'\n  type: PluginType = 'before'\n  version = '0.1.0'\n  isLoaded = () => true\n  load = async (_ctx: Context, instance: Analytics) => {\n    this.instance = instance\n    try {\n      this.userAgentData = await clientHints(\n        this.instance.options.highEntropyValuesClientHints\n      )\n    } catch (_) {\n      // if client hints API doesn't return anything leave undefined\n    }\n    return Promise.resolve()\n  }\n\n  private enrich = (ctx: Context): Context => {\n    // Note: Types are off - context should never be undefined here, since it is set as part of event creation.\n    const evtCtx = ctx.event.context!\n\n    const search = evtCtx.page!.search || ''\n\n    const query =\n      typeof search === 'object' ? objectToQueryString(search) : search\n\n    evtCtx.userAgent = navigator.userAgent\n    evtCtx.userAgentData = this.userAgentData\n\n    // @ts-ignore\n    const locale = navigator.userLanguage || navigator.language\n\n    if (typeof evtCtx.locale === 'undefined' && typeof locale !== 'undefined') {\n      evtCtx.locale = locale\n    }\n\n    evtCtx.library ??= {\n      name: 'analytics.js',\n      version: `${getVersionType() === 'web' ? 'next' : 'npm:next'}-${version}`,\n    }\n\n    if (query && !evtCtx.campaign) {\n      evtCtx.campaign = utm(query)\n    }\n\n    const amp = ampId()\n    if (amp) {\n      evtCtx.amp = { id: amp }\n    }\n\n    referrerId(\n      query,\n      evtCtx,\n      this.instance.options.disableClientPersistence ?? false\n    )\n\n    try {\n      evtCtx.timezone = Intl.DateTimeFormat().resolvedOptions().timeZone\n    } catch (_) {\n      // If browser doesn't have support leave timezone undefined\n    }\n\n    return ctx\n  }\n\n  track = this.enrich\n  identify = this.enrich\n  page = this.enrich\n  group = this.enrich\n  alias = this.enrich\n  screen = this.enrich\n}\n\nexport const envEnrichment = new EnvironmentEnrichmentPlugin()\n", "import { HighEntropyHint, NavigatorUAData, UADataValues } from './interfaces'\n\nexport async function clientHints(\n  hints?: HighEntropyHint[]\n): Promise<UADataValues | undefined> {\n  const userAgentData = (navigator as any).userAgentData as\n    | NavigatorUAData\n    | undefined\n\n  if (!userAgentData) return undefined\n\n  if (!hints) return userAgentData.toJSON()\n  return userAgentData\n    .getHighEntropyValues(hints)\n    .catch(() => userAgentData.toJSON())\n}\n", "import { CDNSettings } from '../../browser'\nimport { JSONObject, JSONValue } from '../../core/events'\nimport { Plugin, InternalPluginWithAddMiddleware } from '../../core/plugin'\nimport { loadScript } from '../../lib/load-script'\nimport { getCDN } from '../../lib/parse-cdn'\nimport {\n  applyDestinationMiddleware,\n  DestinationMiddlewareFunction,\n} from '../middleware'\nimport { Context, ContextCancelation } from '../../core/context'\nimport { recordIntegrationMetric } from '../../core/stats/metric-helpers'\nimport { Analytics, InitOptions } from '../../core/analytics'\nimport { createDeferred } from '@segment/analytics-generic-utils'\nimport { IntegrationsInitOptions } from '../../browser/settings'\n\nexport interface RemotePlugin {\n  /** The name of the remote plugin */\n  name: string\n  /** The creation name of the remote plugin */\n  creationName: string\n  /** The url of the javascript file to load */\n  url: string\n  /** The UMD/global name the plugin uses. Plugins are expected to exist here with the `PluginFactory` method signature */\n  libraryName: string\n  /** The settings related to this plugin. */\n  settings: JSONObject\n}\n\nexport class ActionDestination implements InternalPluginWithAddMiddleware {\n  name: string // destination name\n  version = '1.0.0'\n  /**\n   * The lifecycle name of the wrapped plugin.\n   * This does not need to be 'destination', and can be 'enrichment', etc.\n   */\n  type: Plugin['type']\n\n  alternativeNames: string[] = []\n\n  private loadPromise = createDeferred<unknown>()\n\n  middleware: DestinationMiddlewareFunction[] = []\n\n  action: Plugin\n\n  constructor(name: string, action: Plugin) {\n    this.action = action\n    this.name = name\n    this.type = action.type\n    this.alternativeNames.push(action.name)\n  }\n\n  addMiddleware(...fn: DestinationMiddlewareFunction[]): void {\n    /** Make sure we only apply destination filters to actions of the \"destination\" type to avoid causing issues for hybrid destinations */\n    if (this.type === 'destination') {\n      this.middleware.push(...fn)\n    }\n  }\n\n  private async transform(ctx: Context): Promise<Context> {\n    const modifiedEvent = await applyDestinationMiddleware(\n      this.name,\n      ctx.event,\n      this.middleware\n    )\n\n    if (modifiedEvent === null) {\n      ctx.cancel(\n        new ContextCancelation({\n          retry: false,\n          reason: 'dropped by destination middleware',\n        })\n      )\n    }\n\n    return new Context(modifiedEvent!)\n  }\n\n  private _createMethod(\n    methodName: 'track' | 'page' | 'identify' | 'alias' | 'group' | 'screen'\n  ) {\n    return async (ctx: Context): Promise<Context> => {\n      if (!this.action[methodName]) return ctx\n\n      let transformedContext: Context = ctx\n      // Transformations only allowed for destination plugins. Other plugin types support mutating events.\n      if (this.type === 'destination') {\n        transformedContext = await this.transform(ctx)\n      }\n\n      try {\n        if (!(await this.ready())) {\n          throw new Error(\n            'Something prevented the destination from getting ready'\n          )\n        }\n\n        recordIntegrationMetric(ctx, {\n          integrationName: this.action.name,\n          methodName,\n          type: 'action',\n        })\n\n        await this.action[methodName]!(transformedContext)\n      } catch (error) {\n        recordIntegrationMetric(ctx, {\n          integrationName: this.action.name,\n          methodName,\n          type: 'action',\n          didError: true,\n        })\n        throw error\n      }\n\n      return ctx\n    }\n  }\n\n  alias = this._createMethod('alias')\n  group = this._createMethod('group')\n  identify = this._createMethod('identify')\n  page = this._createMethod('page')\n  screen = this._createMethod('screen')\n  track = this._createMethod('track')\n\n  /* --- PASSTHROUGH METHODS --- */\n  isLoaded(): boolean {\n    return this.action.isLoaded()\n  }\n\n  async ready(): Promise<boolean> {\n    try {\n      await this.loadPromise.promise\n      return true\n    } catch {\n      return false\n    }\n  }\n\n  async load(ctx: Context, analytics: Analytics): Promise<unknown> {\n    if (this.loadPromise.isSettled()) {\n      return this.loadPromise.promise\n    }\n\n    try {\n      recordIntegrationMetric(ctx, {\n        integrationName: this.action.name,\n        methodName: 'load',\n        type: 'action',\n      })\n\n      const loadP = this.action.load(ctx, analytics)\n\n      this.loadPromise.resolve(await loadP)\n      return loadP\n    } catch (error) {\n      recordIntegrationMetric(ctx, {\n        integrationName: this.action.name,\n        methodName: 'load',\n        type: 'action',\n        didError: true,\n      })\n\n      this.loadPromise.reject(error)\n      throw error\n    }\n  }\n\n  unload(ctx: Context, analytics: Analytics): Promise<unknown> | unknown {\n    return this.action.unload?.(ctx, analytics)\n  }\n}\n\nexport type PluginFactory = {\n  (settings: JSONValue): Plugin | Plugin[] | Promise<Plugin | Plugin[]>\n  pluginName: string\n}\n\nfunction validate(pluginLike: unknown): pluginLike is Plugin[] {\n  if (!Array.isArray(pluginLike)) {\n    throw new Error('Not a valid list of plugins')\n  }\n\n  const required = ['load', 'isLoaded', 'name', 'version', 'type']\n  pluginLike.forEach((plugin) => {\n    required.forEach((method) => {\n      if (plugin[method] === undefined) {\n        throw new Error(\n          `Plugin: ${\n            plugin.name ?? 'unknown'\n          } missing required function ${method}`\n        )\n      }\n    })\n  })\n\n  return true\n}\n\nfunction isPluginDisabled(\n  userIntegrations: IntegrationsInitOptions,\n  remotePlugin: RemotePlugin\n) {\n  const creationNameEnabled = userIntegrations[remotePlugin.creationName]\n  const currentNameEnabled = userIntegrations[remotePlugin.name]\n\n  // Check that the plugin isn't explicitly enabled when All: false\n  if (\n    userIntegrations.All === false &&\n    !creationNameEnabled &&\n    !currentNameEnabled\n  ) {\n    return true\n  }\n\n  // Check that the plugin isn't explicitly disabled\n  if (creationNameEnabled === false || currentNameEnabled === false) {\n    return true\n  }\n\n  return false\n}\n\nasync function loadPluginFactory(\n  remotePlugin: RemotePlugin,\n  obfuscate?: boolean\n): Promise<void | PluginFactory> {\n  try {\n    const defaultCdn = new RegExp('https://cdn.segment.(com|build)')\n    const cdn = getCDN()\n\n    if (obfuscate) {\n      const urlSplit = remotePlugin.url.split('/')\n      const name = urlSplit[urlSplit.length - 2]\n      const obfuscatedURL = remotePlugin.url.replace(\n        name,\n        btoa(name).replace(/=/g, '')\n      )\n      try {\n        await loadScript(obfuscatedURL.replace(defaultCdn, cdn))\n      } catch (error) {\n        // Due to syncing concerns it is possible that the obfuscated action destination (or requested version) might not exist.\n        // We should use the unobfuscated version as a fallback.\n        await loadScript(remotePlugin.url.replace(defaultCdn, cdn))\n      }\n    } else {\n      await loadScript(remotePlugin.url.replace(defaultCdn, cdn))\n    }\n\n    // @ts-expect-error\n    if (typeof window[remotePlugin.libraryName] === 'function') {\n      // @ts-expect-error\n      return window[remotePlugin.libraryName] as PluginFactory\n    }\n  } catch (err) {\n    console.error('Failed to create PluginFactory', remotePlugin)\n    throw err\n  }\n}\n\nexport async function remoteLoader(\n  settings: CDNSettings,\n  integrations: IntegrationsInitOptions,\n  mergedIntegrations: Record<string, JSONObject>,\n  options?: InitOptions,\n  routingMiddleware?: DestinationMiddlewareFunction,\n  pluginSources?: PluginFactory[]\n): Promise<Plugin[]> {\n  const allPlugins: Plugin[] = []\n\n  const routingRules = settings.middlewareSettings?.routingRules ?? []\n\n  const pluginPromises = (settings.remotePlugins ?? []).map(\n    async (remotePlugin) => {\n      if (isPluginDisabled(integrations, remotePlugin)) return\n\n      try {\n        const pluginFactory =\n          pluginSources?.find(\n            ({ pluginName }) => pluginName === remotePlugin.name\n          ) || (await loadPluginFactory(remotePlugin, options?.obfuscate))\n\n        if (pluginFactory) {\n          const intg = mergedIntegrations[remotePlugin.name]\n          const plugin = await pluginFactory({\n            ...remotePlugin.settings,\n            ...intg,\n          })\n          const plugins = Array.isArray(plugin) ? plugin : [plugin]\n\n          validate(plugins)\n\n          const routing = routingRules.filter(\n            (rule) => rule.destinationName === remotePlugin.creationName\n          )\n\n          plugins.forEach((plugin) => {\n            const wrapper = new ActionDestination(\n              remotePlugin.creationName,\n              plugin\n            )\n\n            if (routing.length && routingMiddleware) {\n              wrapper.addMiddleware(routingMiddleware)\n            }\n\n            allPlugins.push(wrapper)\n          })\n        }\n      } catch (error) {\n        console.warn('Failed to load Remote Plugin', error)\n      }\n    }\n  )\n\n  await Promise.all(pluginPromises)\n  return allPlugins.filter(Boolean)\n}\n", "import { getGlobal } from '../../lib/get-global'\nimport type { Analytics } from '../analytics'\n\nconst env = getGlobal()\n\n// The code below assumes the inspector extension will use Object.assign\n// to add the inspect interface on to this object reference (unless the\n// extension code ran first and has already set up the variable)\nconst inspectorHost: {\n  attach: (analytics: Analytics) => void\n} = ((env as any)['__SEGMENT_INSPECTOR__'] ??= {})\n\nexport const attachInspector = (analytics: Analytics) =>\n  inspectorHost.attach?.(analytics as any)\n", "export { Analytics } from './core/analytics'\nexport { AnalyticsBrowser } from './browser'\nexport type {\n  AnalyticsBrowserSettings,\n  CDNSettings,\n  RemoteIntegrationSettings,\n  AnalyticsSettings,\n  InitOptions,\n} from './browser/settings'\nexport * from './node'\n\nexport * from './core/context'\nexport * from './core/events'\nexport * from './core/plugin'\nexport * from './core/user'\n\nexport type { AnalyticsSnippet } from './browser/standalone-interface'\nexport type { MiddlewareFunction } from './plugins/middleware'\nexport { getGlobalAnalytics } from './lib/global-analytics-helper'\nexport { UniversalStorage, Store, StorageObject } from './core/storage'\nexport { segmentio } from './plugins/segmentio'\nexport {\n  resolveAliasArguments,\n  resolveArguments,\n  resolvePageArguments,\n  resolveUserArguments,\n} from './core/arguments-resolver'\n", "import { Controller } from '@hotwired/stimulus';\nimport { AnalyticsBrowser } from '@segment/analytics-next';\n\nconst PROPERTY_PREFIX = 'analyticsEventProperty';\n\nexport default class extends Controller {\n  static values = {\n    writeKey: String,\n    sessionId: String,\n    collectingAllowed: Boolean\n  };\n\n  static targets = ['link'];\n\n  initialize () {\n    // Set up a Promise that can be chained on for analytics events\n    this.analyticsPromise = new Promise((resolve) => {\n      // We resolve the Promise after Analytics has been initialized\n      this.resolveAnalytics = resolve;\n    });\n\n    if (this.collectingAllowedValue) {\n      this.#loadAndInitialize();\n    }\n  }\n\n  connect () {\n    this.#trackPage();\n  }\n\n  cookiesUpdate ({ detail: { content } }) {\n    this.collectingAllowedValue = content;\n\n    if (this.collectingAllowedValue) {\n      this.#loadAndInitialize();\n    }\n  }\n\n  linkTargetConnected (element) {\n    this.analyticsPromise.then((analytics) => {\n      const properties = {\n        url: element.href\n      };\n\n      // Find all the data-analytics-event-property data values, use the name as the key and value as value.\n      for (const key in element.dataset) {\n        if (key.startsWith(PROPERTY_PREFIX)) {\n          let property = key.replace(PROPERTY_PREFIX, '');\n          // Convert the first character to lower case soItLooksLikeThis\n          property = property.charAt(0).toLowerCase() + property.slice(1);\n          properties[property] = element.dataset[key];\n        }\n      }\n      analytics.trackLink(element, element.dataset.analyticsEventName, properties);\n    });\n  }\n\n  #loadAndInitialize () {\n    // Only initialize once\n    if (this.resolveAnalytics == null) {\n      return;\n    }\n\n    const resolve = this.resolveAnalytics;\n    this.resolveAnalytics = null;\n\n    AnalyticsBrowser.standalone(this.writeKeyValue).then((analytics) => {\n      // Bump up the timeout a bit so we can be more certain links get tracked\n      analytics.timeout(500);\n      analytics.user().anonymousId(this.sessionIdValue);\n\n      // Resolve the analyticsPromise\n      resolve(analytics);\n    });\n  }\n\n  #trackPage () {\n    this.analyticsPromise.then((analytics) => {\n      analytics.page();\n    });\n  }\n}\n", "import { Controller } from '@hotwired/stimulus';\n\nconst selectedClass = 'is-selected';\n\nexport default class extends Controller {\n  static targets = ['bank', 'noneMatch', 'input', 'submit', 'confirmButton'];\n\n  search (e) {\n    const value = e.target.value;\n    const escaped = value.replace(/[\\\\^$.*+?()[\\]{}|]/g, '\\\\$&');\n    const pattern = RegExp(escaped, 'i');\n\n    this.noneMatchTarget.classList.remove('hidden');\n\n    this.bankTargets.forEach((bank) => {\n      const providerName = bank.dataset.providerName;\n\n      if (pattern.test(providerName)) {\n        bank.classList.remove('hidden');\n        this.noneMatchTarget.classList.add('hidden');\n      } else {\n        bank.classList.add('hidden');\n      }\n    });\n  }\n\n  select (e) {\n    e.preventDefault();\n\n    this.bankTargets.forEach(bank => bank.classList.remove(selectedClass));\n\n    const item = e.currentTarget;\n    item.classList.add(selectedClass);\n    this.inputTarget.value = item.dataset.providerId;\n\n    this.confirmButtonTarget.disabled = false;\n  }\n\n  submit (e) {\n    e.preventDefault();\n\n    if (this.inputTarget.value) {\n      const form = this.inputTarget.closest('form');\n      form.submit();\n    }\n  }\n}\n", "import { Controller } from '@hotwired/stimulus';\n\nexport default class extends Controller {\n  appTargetConnected (element) {\n    // If there's a hash, append it to the URL\n    let { pathname, hostname, search, hash } = window.location;\n    if (search.length > 0) {\n      search += '&';\n    } else {\n      search = '?';\n    }\n    search += hash.slice(1);\n\n    element.href = `chddr://${hostname}${pathname}${search}`;\n  }\n\n  refreshTargetConnected (element) {\n    // Automatically runs when the \"refresh\" target gets connected. This is used to redirect\n    // to a callback url (most likely to the payment page),\n    // which we put in a simple callback_refresh partial.\n    //\n    // If there's a hash, append it to the URL and redirect\n    let { search, hash } = window.location;\n    if (search.length > 0) {\n      search += '&';\n    } else {\n      search = '?';\n    }\n    search += hash.slice(1);\n\n    element.action = search;\n    // Often the images and fonts don't get the chance to load\n    // even though our fonts host uses cloudflare. By adding a small timeout\n    // we give it chance to load.\n    setTimeout(() => {\n      element.submit();\n    }, 150);\n  }\n}\n", "// Action Cable provides the framework to deal with WebSockets in Rails.\n// You can generate new channels where WebSocket features live using the `bin/rails generate channel` command.\n\nimport { createConsumer } from '@rails/actioncable';\n\nexport default createConsumer();\n", "import { Controller } from '@hotwired/stimulus';\nimport { Turbo } from '@hotwired/turbo-rails';\n\nimport consumer from './../../channels/consumer';\n\nexport default class extends Controller {\n  static values = {\n    paymentId: String,\n\n    showUrl: String,\n    statusUrl: String,\n    followInstructionsUrl: String,\n\n    isProcessing: Boolean,\n    refreshInterval: { type: Number, default: 1000 }\n  };\n\n  connect () {\n    if (this.isProcessingValue) {\n      // Poll via AJAX in case ActionCable fails to connect\n      this.startRefreshing();\n    }\n    this.startListeningForPayment();\n  }\n\n  disconnect () {\n    this.stopListeningForPayment();\n    if (this.isProcessingValue) {\n      this.stopRefreshing();\n    }\n  }\n\n  startListeningForPayment () {\n    const parent = this;\n    this.paymentChannel = consumer.subscriptions.create({\n      channel: 'PaymentChannel',\n      id: this.paymentIdValue\n    }, {\n      connected () {\n        if (parent.isProcessingValue) {\n          // Call load in case we missed an update\n          parent.reloadIfFinished();\n          // No need to keep refreshing as websockets will take over listening for changes\n          parent.stopRefreshing();\n        }\n\n        console.log('[PaymentChannel] connected');\n      },\n\n      // TODO(es): handle reconnects\n      disconnected () {\n        // Start refreshing for changes\n        if (parent.isProcessingValue) {\n          parent.startRefreshing();\n        }\n      },\n\n      received (msg) {\n        switch (msg.event) {\n          case 'payment_scanned':\n            console.log(`[Pay::PaymentController] payment has been scanned, redirecting to ${parent.followInstructionsUrlValue}`);\n            return Turbo.visit(parent.followInstructionsUrlValue);\n          case 'payment_processing':\n            console.log(`[Pay::PaymentController] payment processing, redirecting to ${parent.showUrlValue}`);\n            return Turbo.visit(parent.showUrlValue);\n          case 'payment_complete':\n            console.log(`[Pay::PaymentController] payment complete, redirecting to ${parent.showUrlValue}`);\n            return Turbo.visit(parent.showUrlValue);\n          default:\n            console.error('[Pay::PaymentController] unexpected msg');\n            console.dir(msg);\n        }\n      }\n    });\n  }\n\n  stopListeningForPayment () {\n    consumer.subscriptions.remove(this.paymentChannel);\n  }\n\n  reloadIfFinished () {\n    fetch(this.statusUrlValue)\n      .then(response => response.text())\n      .then((text) => {\n        if (text === 'FINISHED') {\n          Turbo.visit(location.pathname);\n        }\n      });\n  }\n\n  startRefreshing () {\n    this.refreshTimer = setInterval(() => {\n      this.reloadIfFinished();\n    }, this.refreshIntervalValue);\n  }\n\n  stopRefreshing () {\n    if (this.refreshTimer) {\n      clearInterval(this.refreshTimer);\n    }\n  }\n}\n", "import { Controller } from '@hotwired/stimulus';\nimport { Turbo } from '@hotwired/turbo-rails';\n\nimport consumer from './../../channels/consumer';\n\nexport default class extends Controller {\n  static values = { qrCodeId: String };\n\n  connect () {\n    this.startListeningForUpdates();\n  }\n\n  disconnect () {\n    this.stopListeningForUpdates();\n  }\n\n  startListeningForUpdates () {\n    this.paymentRequestChannel = consumer.subscriptions.create({\n      channel: 'PaymentRequestQRChannel',\n      qr_code_id: this.qrCodeIdValue\n    }, {\n      connected () {\n        console.log('[PaymentRequestQRChannel] connected');\n      },\n\n      // TODO(es): handle reconnects\n      disconnected () {},\n\n      received (msg) {\n        switch (msg.event) {\n          case 'payment_request_scanned':\n            console.log(`[Pay::PaymentRequestController] payment request has been scanned, redirecting to ${msg.url}`);\n            return Turbo.visit(msg.url);\n          case 'payment_request_initiated_payment':\n            console.log(`[Pay::PaymentRequestController] payment initiated, redirecting to ${msg.url}`);\n            return Turbo.visit(msg.url);\n          default:\n            console.error('[Pay::PaymentRequestController] unexpected msg');\n            console.dir(msg);\n        }\n      }\n    });\n  }\n\n  stopListeningForUpdates () {\n    consumer.subscriptions.remove(this.paymentRequestChannel);\n  }\n}\n", "import { Controller } from '@hotwired/stimulus';\nimport { appsignal } from './application.js';\n\nconst FORMATTER_OPTIONS = {\n  hour12: false,\n  timeZoneName: 'shortOffset',\n  weekday: 'long',\n  year: 'numeric',\n  day: 'numeric',\n  month: 'long',\n  hour: 'numeric',\n  minute: 'numeric'\n};\n\nexport default class extends Controller {\n  static targets = ['source'];\n  static values = {\n    startsAt: String,\n    endsAt: String,\n    happenedAt: String\n  };\n\n  connect () {\n    try {\n      // We're forcing UK style datetime formatting.\n      const formatter = new Intl.DateTimeFormat('en-GB', FORMATTER_OPTIONS);\n      const from = this.startsAtValue ? formatter.format(new Date(this.startsAtValue)) : 'Unknown';\n      const to = this.endsAtValue ? formatter.format(new Date(this.endsAtValue)) : 'Unknown';\n      const at = this.happenedAtValue ? formatter.format(new Date(this.happenedAtValue)) : null;\n      this.sourceTarget.innerText = at == null ? `${from} - ${to}` : `${at}`;\n    } catch (error) {\n      appsignal.sendError(error, (span) => {\n        span.setTags({ formatter_options: FORMATTER_OPTIONS, starts_at: this.startsAtValue, ends_at: this.endsAtValue, happenedAt: this.happenedAtValue });\n      });\n    }\n  }\n}\n", "import { Controller } from '@hotwired/stimulus';\n\nconst bodyActiveClass = 'is-open';\n\nexport default class extends Controller {\n  static targets = ['tray', 'header'];\n  static values = {\n    // CSS selector of element(s) which opens this popup\n    openedBy: String\n  };\n\n  connect () {\n    document.body.addEventListener('click', this.onBodyClick);\n    window.addEventListener('resize', this.onWindowResize);\n    this.headerTarget.addEventListener('touchstart', this.onTouchStart);\n    this.headerTarget.addEventListener('touchend', this.onTouchEnd);\n  }\n\n  disconnect () {\n    document.body.removeEventListener('click', this.onBodyClick);\n    window.removeEventListener('resize', this.onWindowResize);\n    this.headerTarget.removeEventListener('touchstart', this.onTouchStart);\n    this.headerTarget.removeEventListener('touchend', this.onTouchEnd);\n  }\n\n  onBodyClick = (e) => {\n    // Hide when clicking \"outside\" the popup\n    if (!this.trayTarget.contains(e.target)) {\n      this.hide();\n    }\n\n    if (e.target.closest(this.openedByValue)) {\n      this.open(e);\n    }\n  };\n\n  onWindowResize = () => {\n    const windowWidth = document.documentElement.clientWidth;\n    if (windowWidth > 767) {\n      this.hide();\n    }\n  };\n\n  open (e) {\n    e.preventDefault();\n\n    this.trayTarget.classList.remove('translate-y-full');\n    this.trayTarget.classList.remove('opacity-0');\n    document.body.classList.add(bodyActiveClass);\n  }\n\n  hide () {\n    this.trayTarget.classList.add('translate-y-full');\n    this.trayTarget.classList.add('opacity-0');\n    document.body.classList.remove(bodyActiveClass);\n  }\n\n  // Handle dragging the popup header to close\n  touchstartY = 0;\n  touchendY = 0;\n\n  onTouchStart = (e) => {\n    this.touchstartY = e.changedTouches[0].screenY;\n  };\n\n  onTouchEnd = (e) => {\n    this.touchendY = e.changedTouches[0].screenY;\n    if (this.touchendY > this.touchstartY) {\n      this.hide();\n    }\n  };\n}\n", "import { Controller } from '@hotwired/stimulus';\nimport QRCodeStyling from 'qr-code-styling';\n\nexport default class extends Controller {\n  // https://github.com/kozakdenys/qr-code-styling\n  // for settings\n  static values = {\n    url: String,\n    logo: String,\n    type: { type: String, default: 'svg' },\n    width: { type: Number, default: 300 },\n    height: { type: Number, default: 300 },\n    margin: { type: Number, default: 0 },\n    imageMargin: { type: Number, default: 4 },\n    dotsOptions: { type: String, default: 'dots' },\n    cornersSquareOptions: { type: String, default: 'extra-rounded' },\n    cornersDotOptions: { type: String, default: 'dot' }\n  };\n\n  connect () {\n    this.generateQRCode();\n  }\n\n  disconnect () {\n    this.element.removeChild(this.element.querySelector('svg'));\n  }\n\n  generateQRCode () {\n    this.qrCode = new QRCodeStyling({\n      width: this.widthValue,\n      height: this.heightValue,\n      type: this.typeValue,\n      data: this.urlValue,\n      margin: this.marginValue,\n      qrOptions: {\n        mode: 'Byte',\n        errorCorrectionLevel: 'M'\n      },\n      image: this.logoValue,\n      dotsOptions: {\n        type: this.dotsOptionsValue\n      },\n      cornersSquareOptions: {\n        type: this.cornersSquareOptionsValue\n      },\n      backgroundOptions: {\n        color: '#ffffff'\n      },\n      cornersDotOptions: {\n        type: this.cornersDotOptionsValue\n      },\n      imageOptions: {\n        margin: this.imageMarginValue\n      }\n    });\n\n    this.qrCode.append(this.element);\n  }\n}\n", "import { Controller } from '@hotwired/stimulus';\n\nexport default class extends Controller {\n  initialize () {\n    this.resizeHandler = () => {\n      this.resize();\n    };\n  }\n\n  connect () {\n    this.resize();\n    window.addEventListener('resize', this.resizeHandler);\n  }\n\n  disconnect () {\n    window.removeEventListener('resize', this.resizeHandler);\n  }\n\n  resize () {\n    const vh = window.innerHeight * 0.01;\n    this.element.style.setProperty('--vh', `${vh}px`);\n  }\n}\n", "import { Controller } from '@hotwired/stimulus';\n\nexport default class extends Controller {\n  async getApp (e) {\n    try {\n      await navigator.clipboard.writeText(window.location.href);\n    } finally {\n      window.location.href = e.target.getAttribute('data-appstore-url');\n    }\n  }\n}\n", "import { Controller } from '@hotwired/stimulus';\n\nexport default class extends Controller {\n  static targets = ['toggleable', 'driver'];\n  static values = {\n    open: { type: Boolean, default: false },\n    selectedToggle: { type: String, default: '' }\n  };\n\n  connect () {\n    this.toggleClass = this.data.get('class') || 'hidden';\n    if (this.hasDriverTarget) {\n      this.toggle(this.driverTarget);\n    }\n  }\n\n  toggle (eventOrNode) {\n    const targetNode = eventOrNode instanceof Event ? eventOrNode.target : eventOrNode;\n\n    switch (targetNode.type) {\n      case 'checkbox':\n        this.openValue = targetNode.checked;\n        break;\n      case 'select-one':\n        this.selectedToggleValue = targetNode.value;\n        break;\n      default:\n        if (eventOrNode.preventDefault) {\n          eventOrNode.preventDefault();\n        }\n        this.openValue = !this.openValue;\n    }\n  }\n\n  hide (event) {\n    event.preventDefault();\n\n    this.openValue = false;\n  }\n\n  show (event) {\n    event.preventDefault();\n\n    this.openValue = true;\n  }\n\n  openValueChanged () {\n    if (!this.toggleClass) return;\n\n    this.toggleableTargets.forEach(target => {\n      target.classList.toggle(this.toggleClass, !this.openValue);\n    });\n  }\n\n  selectedToggleValueChanged () {\n    this.toggleableTargets.forEach(target => {\n      target.classList.toggle(this.toggleClass, target.dataset.selectedToggleValue !== this.selectedToggleValue);\n    });\n  }\n}\n", "import { Controller } from '@hotwired/stimulus';\n\n// This controller will set the background color to a specific color when\n// the scroll criteria meet. This so you can have different background colors on for ex the body.\n// Else you would have the same overscroll color on top and bottom.\nexport default class extends Controller {\n  recolor () {\n    if (window.innerWidth >= 640 && window.pageYOffset <= 0) {\n      this.element.style = 'background-color: #ffbf40;'; // make it cheddar yellow 300\n    } else {\n      this.element.style = null;\n    }\n  }\n\n  connect () {\n    this.recolor();\n  }\n}\n", "import { Controller } from '@hotwired/stimulus';\n\n// This will trigger when the target element comes into view and will add the active classes value to the class attribute.\n// Veery nice to use with tailwind animations\n// ex:\n// This will animate up a bit when in view.\n// <h1 class=\"top-8 ease-out duration-1000\" data-controller=\"in-view\" data-in-view-active-value=\"-translate-y-8\">\n\nexport default class extends Controller {\n  static values = { active: String };\n\n  connect () {\n    const callback = function (entries) {\n      entries.forEach((entry) => {\n        const classes = entry.target.dataset.inViewActiveValue.split(' ');\n        if (entry.isIntersecting) {\n          classes.forEach((css) => {\n            entry.target.classList.add(css);\n          });\n        } else {\n          classes.forEach((css) => {\n            entry.target.classList.remove(css);\n          });\n        }\n      });\n    };\n\n    const observer = new IntersectionObserver(callback);\n    const target = this.element;\n    observer.observe(target);\n  }\n}\n", "import { Controller } from '@hotwired/stimulus';\nimport { appsignal } from './application.js';\nimport JsBarcode from 'jsbarcode';\n\nexport default class extends Controller {\n  // https://lindell.me/JsBarcode/\n  // for settings\n  connect () {\n    try {\n      JsBarcode('.barcode').init();\n    } catch (error) {\n      const barcodeFormat = document.querySelector('.barcode').getAttribute('jsbarcode-format');\n      appsignal.sendError(error, (span) => {\n        span.setTags({ barcodeFormat });\n      });\n    }\n  }\n}\n", "import { Controller } from '@hotwired/stimulus';\n\nexport default class extends Controller {\n  static targets = ['copy', 'ok', 'text'];\n  static values = {\n    copied: { type: Boolean, default: false },\n    text: String\n  };\n\n  copy (evt) {\n    navigator.clipboard.writeText(this.textValue.trim());\n    this.copiedValue = true;\n  }\n\n  copiedValueChanged () {\n    if (this.hasOkTarget && this.hasCopyTarget) {\n      this.okTarget.classList.toggle('hidden', !this.copiedValue);\n      this.copyTarget.classList.toggle('hidden', this.copiedValue);\n    }\n  }\n}\n", "// This file is auto-generated by ./bin/rails stimulus:manifest:update\n// Run that command whenever you add a new controller or create them with\n// ./bin/rails generate stimulus controllerName\n\nimport { application } from './application';\nimport { Modal } from 'tailwindcss-stimulus-components';\n\napplication.register('modal', Modal);\n\nimport Admin__PaymentSearchesController from './admin/payment_searches_controller.js';\napplication.register('admin--payment-searches', Admin__PaymentSearchesController);\n\nimport AnalyticsController from './analytics_controller.js';\napplication.register('analytics', AnalyticsController);\n\nimport BanksListController from './banks_list_controller.js';\napplication.register('banks-list', BanksListController);\n\nimport Pay__OpenBankingCallbackController from './pay/open_banking_callback_controller.js';\napplication.register('pay--open-banking-callback', Pay__OpenBankingCallbackController);\n\nimport Pay__PaymentController from './pay/payment_controller.js';\napplication.register('pay--payment', Pay__PaymentController);\n\nimport Pay__PaymentRequestController from './pay/payment_request_controller.js';\napplication.register('pay--payment-request', Pay__PaymentRequestController);\n\nimport LocaltimeFormatController from './localtime_format_controller.js';\napplication.register('localtime-format', LocaltimeFormatController);\n\nimport PopupController from './popup_controller.js';\napplication.register('popup', PopupController);\n\nimport QrCodeController from './qr_code_controller.js';\napplication.register('qr-code', QrCodeController);\n\nimport ResizeController from './resize_controller';\napplication.register('resize', ResizeController);\n\nimport PromotionController from './promotion_controller';\napplication.register('promotion', PromotionController);\n\nimport ToggleController from './toggle_controller.js';\napplication.register('toggle', ToggleController);\n\nimport OverscrollColorController from './overscroll_color_controler.js';\napplication.register('overscroll-color', OverscrollColorController);\n\nimport InViewController from './in_view_controller.js';\napplication.register('in-view', InViewController);\n\nimport BarCodeController from './barcode_controller.js';\napplication.register('barcode', BarCodeController);\n\nimport ClipboardController from './clipboard_controller.js';\napplication.register('clipboard', ClipboardController);\n"],
  "mappings": "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AAC,OAAO,GAAG;AAAA,QAChB,KAAK,CAAC,OAAO,GAAG;AAAA,QAChB,KAAK,CAAC,OAAO,GAAG;AAAA,QAChB,KAAK,CAAC,OAAO,GAAG;AAAA,QAChB,KAAM,CAAC,OAAO,GAAG;AAAA,QACjB,KAAK,CAAC,OAAO,GAAG;AAAA,QAChB,KAAK,CAAC,OAAO,GAAG;AAAA,QAChB,KAAK,CAAC,OAAO,GAAG;AAAA,QAChB,KAAK,CAAC,OAAO,GAAG;AAAA,QAChB,KAAK,CAAC,OAAO,GAAG;AAAA,QAChB,KAAK,CAAC,OAAO,GAAG;AAAA,QAChB,KAAK,CAAC,OAAO,GAAG;AAAA,QAChB,KAAK,CAAC,OAAO,GAAG;AAAA,QAChB,KAAK,CAAC,OAAO,GAAG;AAAA,QAChB,KAAK,CAAC,OAAO,GAAG;AAAA,QAChB,KAAK,CAAC,OAAO,GAAG;AAAA,QAChB,KAAK,CAAC,OAAO,GAAG;AAAA,QAChB,MAAM,CAAC,OAAO,GAAG;AAAA,QACjB,KAAK,CAAC,OAAO,GAAG;AAAA,QAChB,KAAK,CAAC,OAAO,GAAG;AAAA,QAChB,KAAK,CAAC,OAAO,GAAG;AAAA,QAChB,KAAK,CAAC,OAAO,GAAG;AAAA,QAChB,KAAK,CAAC,OAAO,GAAG;AAAA,QAChB,KAAK,CAAC,OAAO,GAAG;AAAA,QAChB,KAAK,CAAC,OAAO,GAAG;AAAA,QAChB,KAAK,CAAC,OAAO,GAAG;AAAA,QAChB,KAAK,CAAC,OAAO,GAAG;AAAA,QAChB,KAAK,CAAC,OAAO,GAAG;AAAA,QAChB,KAAK,CAAC,OAAO,GAAG;AAAA,QAChB,KAAK,CAAC,OAAO,GAAG;AAAA,QAChB,KAAK,CAAC,OAAO,GAAG;AAAA,QAChB,KAAK,CAAC,OAAO,GAAG;AAAA,QAChB,KAAK,CAAC,OAAO,GAAG;AAAA,QAChB,KAAK,CAAC,OAAO,GAAG;AAAA,QAChB,KAAK,CAAC,OAAO,GAAG;AAAA,QAChB,KAAK,CAAC,OAAO,GAAG;AAAA,QAChB,KAAK,CAAC,OAAO,GAAG;AAAA,QAChB,KAAK,CAAC,OAAO,GAAG;AAAA,QAChB,KAAK,CAAC,OAAO,GAAG;AAAA,QAC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",
  "names": ["backoff", "consumer", "error", "consumer", "consumer", "subscription", "d", "b", "p", "i", "f", "g", "n", "v", "m", "error", "l", "__assign", "i", "l", "x", "ValidationError", "InternalEventFactorySettings", "_a", "_b", "CoreEventFactory", "init_create_deferred", "Emitter", "_a", "init_emitter", "init_create_deferred", "init_emitter", "_a", "_b", "attempt", "PriorityQueue", "seen", "b", "attempt", "f", "_a", "i", "i", "init_dist", "CoreLogger", "_b", "_a", "CoreStats", "m", "NullStats", "init_dist", "init_logger", "ContextCancelation", "_a", "_b", "CoreContext", "logger", "error", "_a", "_a", "start", "ctx", "CoreEventQueue", "p", "_a", "start", "error", "_c", "_b", "after", "dispatch", "_a", "init_esm", "init_connection", "url", "options", "Promise", "resolve", "reject", "request", "XMLHttpRequest", "keys", "all", "headers", "response", "ok", "status", "statusText", "responseURL", "text", "responseText", "json", "then", "JSON", "parse", "blob", "Blob", "clone", "entries", "get", "n", "toLowerCase", "has", "i", "open", "method", "onload", "getAllResponseHeaders", "replace", "m", "key", "value", "push", "onerror", "withCredentials", "credentials", "setRequestHeader", "send", "body", "fetch", "global", "_a", "v", "RemoteMetrics", "_b", "error", "fetch", "init_esm", "Stats", "Context", "init_esm", "init_stats", "init_priority_queue", "init_esm", "p", "Context", "_a", "attempt", "lock", "now", "init_priority_queue", "init_context", "PersistedPriorityQueue", "del", "normalize", "isFunction", "b", "i", "require_lib", "isNumber", "require_lib", "Facade", "f", "transform", "Alias", "Group", "g", "Identify", "i", "now", "Track", "n", "Page", "p", "Screen", "__assign", "_a", "_b", "init_callback", "init_esm", "_a", "_b", "forms", "init_callback", "evt", "_b", "_a", "init_context", "_a", "_a", "v", "_b", "init_esm", "_a", "_a", "options", "_b", "_b", "v", "_a", "_a", "_b", "n", "t", "r", "e", "i", "o", "f", "p", "l", "u", "s", "c", "v", "a", "d", "h", "x", "b", "_a", "i", "_b", "_a", "_b", "_a", "version", "_a", "flushQueue", "_a", "Context", "_b", "version", "import_facade", "init_connection", "init_context", "init_esm", "init_priority_queue", "LegacyDestination", "error", "n", "i", "e", "t", "a", "r", "o", "l", "_a", "i", "_a", "p", "_b", "_a", "_b", "root", "factory", "exports", "module", "define", "amd", "self", "t", "e", "r", "n", "qrcode", "typeNumber", "errorCorrectionLevel", "_typeNumber", "_errorCorrectionLevel", "QRErrorCorrectionLevel", "_modules", "_moduleCount", "_dataCache", "_dataList", "_this", "makeImpl", "test", "maskPattern", "moduleCount", "modules", "Array", "row", "col", "setupPositionProbePattern", "setupPositionAdjustPattern", "setupTimingPattern", "setupTypeInfo", "setupTypeNumber", "createData", "mapData", "c", "pos", "QRUtil", "getPatternPosition", "i", "length", "j", "bits", "getBCHTypeNumber", "mod", "Math", "floor", "data", "getBCHTypeInfo", "inc", "bitIndex", "byteIndex", "maskFunc", "getMaskFunction", "dark", "dataList", "rsBlocks", "QRRSBlock", "getRSBlocks", "buffer", "qrBitBuffer", "put", "getMode", "getLength", "getLengthInBits", "write", "totalDataCount", "dataCount", "putBit", "offset", "maxDcCount", "maxEcCount", "dcdata", "ecdata", "dcCount", "ecCount", "totalCount", "max", "getBuffer", "rsPoly", "getErrorCorrectPolynomial", "modPoly", "qrPolynomial", "modIndex", "getAt", "totalCodeCount", "index", "addData", "mode", "newData", "qrNumber", "qrAlphaNum", "qr8BitByte", "qrKanji", "push", "isDark", "getModuleCount", "make", "minLostPoint", "pattern", "lostPoint", "getLostPoint", "getBestMaskPattern", "createTableTag", "cellSize", "margin", "qrHtml", "createSvgTag", "alt", "title", "opts", "arguments", "text", "id", "mr", "rect", "size", "qrSvg", "scalable", "escapeXml", "join", "trim", "createDataURL", "min", "x", "y", "createImgTag", "img", "s", "escaped", "charAt", "createASCII", "r1", "r2", "p", "blocks", "blocksLastLineNoMargin", "ascii", "substring", "white", "black", "line", "renderTo2dContext", "context", "fillStyle", "fillRect", "stringToBytes", "stringToBytesFuncs", "bytes", "charCodeAt", "createStringToBytes", "unicodeData", "numChars", "unicodeMap", "bin", "base64DecodeInputStream", "read", "b", "count", "b0", "b1", "v", "String", "fromCharCode", "unknownChar", "PATTERN_POSITION_TABLE", "G15", "G18", "getBCHDigit", "L", "M", "Q", "H", "digit", "d", "errorCorrectLength", "a", "multiply", "QRMath", "gexp", "type", "sameCount", "darkCount", "abs", "EXP_TABLE", "LOG_TABLE", "num", "shift", "_num", "glog", "ratio", "RS_BLOCK_TABLE", "qrRSBlock", "rsBlock", "list", "_buffer", "_length", "bufIndex", "bit", "_data", "strToNum", "chatToNum", "getCode", "_bytes", "code", "byteArrayOutputStream", "writeByte", "off", "len", "str", "_str", "_pos", "_buflen", "match", "decode", "width", "height", "getPixel", "gif", "_width", "_height", "pixel", "out", "writeString", "writeShort", "raster", "getLZWRaster", "writeBytes", "lzwMinCodeSize", "clearCode", "endCode", "bitLength", "table", "lzwTable", "add", "_out", "_bitLength", "_bitBuffer", "byteOut", "bitOut", "dataIndex", "contains", "indexOf", "flush", "toByteArray", "_map", "_size", "key", "setPixel", "base64", "_base64", "writeEncoded", "encode", "padlen", "toString", "base64EncodeOutputStream", "utf8", "charcode", "o", "isObject", "obj", "isArray", "mergeDeep", "target", "sources", "source", "Object", "keys", "forEach", "targetValue", "sourceValue", "assign", "downloadURI", "uri", "name", "link", "document", "createElement", "download", "href", "body", "appendChild", "click", "removeChild", "calculateImageSize", "originalHeight", "originalWidth", "maxHiddenDots", "maxHiddenAxisDots", "dotSize", "hideDots", "imageSize", "hideYDots", "hideXDots", "k", "sqrt", "ceil", "round", "h", "l", "f", "g", "this", "_context", "_type", "draw", "getNeighbor", "drawFunction", "dotTypes", "_drawDot", "_drawClassy", "_drawClassyRounded", "_drawRounded", "_drawExtraRounded", "_drawSquare", "call", "_rotateFigure", "rotation", "cx", "cy", "translate", "rotate", "closePath", "_basicDot", "args", "arc", "PI", "_basicSquare", "_basicSideRounded", "lineTo", "_basicCornerRounded", "_basicCornerExtraRounded", "_basicCornersRounded", "_basicCornersExtraRounded", "leftNeighbor", "rightNeighbor", "topNeighbor", "bottomNeighbor", "neighborsCount", "w", "m", "cornerSquareTypes", "_basicExtraRounded", "cornerDotTypes", "C", "squareMask", "dotMask", "options", "_canvas", "_options", "getContext", "getCanvas", "clear", "canvasContext", "clearRect", "drawQR", "qr", "minSize", "drawImageSize", "_qr", "image", "loadImage", "_image", "imageOptions", "qrOptions", "coverLevel", "errorCorrectionPercents", "drawBackground", "drawDots", "hideBackgroundDots", "u", "drawCorners", "drawImage", "backgroundOptions", "gradient", "gradientOptions", "_createGradient", "additionalRotation", "colorStops", "color", "addColorStop", "filter", "xBeginning", "yBeginning", "dot", "dotsOptions", "beginPath", "xOffset", "yOffset", "strokeStyle", "fill", "cornersSquareSize", "cornersDotSize", "_", "column", "cornersSquareOptions", "cornersSquare", "q", "E", "D", "I", "cornersDotOptions", "cornersDot", "T", "Promise", "resolve", "reject", "Image", "crossOrigin", "onload", "src", "dx", "dy", "dw", "dh", "gradientTypes", "createRadialGradient", "positiveRotation", "x0", "y0", "x1", "y1", "tan", "createLinearGradient", "svg", "_svg", "_element", "setAttribute", "createElementNS", "_defs", "getElement", "oldElement", "cloneNode", "parentNode", "replaceChild", "element", "_createColor", "_dotsClipPath", "cornersSquareClipPath", "cornersDotClipPath", "_cornersSquareClipPath", "_cornersDotClipPath", "S", "N", "stop", "qrTypes", "drawTypes", "sanitizeGradient", "newGradient", "Number", "map", "colorStop", "sanitizeOptions", "newOptions", "Boolean", "update", "_clearContainer", "container", "innerHTML", "_getQRStylingElement", "extension", "toLowerCase", "promise", "_svgDrawingPromise", "canvas", "_canvasDrawingPromise", "QRCodeStyling", "_container", "append", "getRawData", "serializer", "XMLSerializer", "serializeToString", "Blob", "toBlob", "downloadOptions", "console", "warn", "encodeURIComponent", "toDataURL", "__webpack_module_cache__", "__webpack_require__", "moduleId", "__webpack_modules__", "getter", "__esModule", "definition", "defineProperty", "enumerable", "get", "prop", "prototype", "hasOwnProperty", "Barcode", "i", "self", "CODE39", "characterValue", "i", "self", "CODE128", "matchSetALength", "matchSetBLength", "matchSetC", "self", "CODE128AUTO", "i", "self", "CODE128A", "i", "self", "CODE128B", "i", "self", "CODE128C", "require_CODE128", "require_constants", "encode", "i", "self", "EAN", "i", "self", "checksum", "n", "EAN13", "i", "self", "checksum", "n", "EAN8", "i", "self", "checksum", "n", "EAN5", "i", "self", "EAN2", "i", "self", "UPC", "i", "self", "UPCE", "c", "require_constants", "i", "self", "ITF", "i", "self", "checksum", "n", "ITF14", "require_ITF", "i", "self", "MSI", "b", "n", "i", "n", "self", "MSI10", "self", "MSI11", "self", "MSI1010", "self", "MSI1110", "require_MSI", "i", "self", "pharmacode", "i", "self", "codabar", "require_constants", "i", "self", "CODE93", "c", "i", "self", "CODE93FullASCII", "require_CODE93", "i", "self", "GenericBarcode", "i", "i", "defaults", "i", "i", "CanvasRenderer", "b", "x", "i", "SVGRenderer", "x", "b", "i", "ObjectRenderer", "self", "InvalidInputException", "InvalidElementException", "NoElementException", "i", "i", "ErrorHandler", "api", "API", "JsBarcode", "api", "name", "i", "Renderer", "_a", "_b", "i", "link", "submitter", "config", "form", "location", "error", "toCacheKey", "confirmMethod", "cookie", "x", "defaults", "ctx", "morphChildren", "findBestMatch", "morphNode", "createMorphContext", "normalizeElement", "normalizeParent", "session", "visit", "recentRequests", "Turbo", "findFrameElement_fn", "document", "c", "createConsumer", "m", "x", "form", "submitter", "application", "error", "matches", "fetch", "matches", "match", "oldValue", "error", "_a", "constructor", "extend", "b", "application", "logger", "element", "c", "n", "v", "now", "secondsSince", "ConnectionMonitor", "backoff", "message_types", "protocols", "supportedProtocols", "indexOf", "Connection", "consumer", "error", "extend", "Subscription", "SubscriptionGuarantor", "Subscriptions", "subscription", "Consumer", "createWebSocketURL", "createConsumer", "getConfig", "error", "_a", "_b", "Environment", "XDomainTransport", "_a", "XHRTransport", "FetchTransport", "_a", "NodeTransport", "error", "PushApi", "_a", "Serializable", "Span", "error", "_a", "_b", "_a", "Queue", "_a", "Dispatcher", "api", "_a", "_b", "Appsignal", "_b", "Dispatcher", "error", "_a", "appsignal", "application", "error", "span", "config", "error", "submitter", "_a", "_b", "init_esm", "_a", "_b", "init_connection", "init_context", "init_esm", "init_dist", "isPlainObject", "c", "_a", "init_esm", "EventFactory", "_a", "init_esm", "init_connection", "EventQueue", "init_dist", "_a", "i", "converter", "levels", "i", "_a", "CookieStorage", "_a", "LocalStorage", "_a", "MemoryStorage", "_a", "UniversalStorage", "_a", "cookieOptions", "User", "cookieOptions", "_a", "_b", "Group", "init_priority_queue", "isThenable", "c", "_a", "_b", "m", "PreInitMethodCall", "PreInitMethodCallBuffer", "_a", "isThenable", "_a", "AnalyticsBuffered", "init_connection", "init_priority_queue", "RateLimitError", "init_context", "batch", "config", "_a", "_b", "fetch", "attempt", "error", "Context", "scheduleFlush", "dispatch", "config", "dispatch", "fetch", "_a", "_b", "_a", "init_connection", "init_context", "init_esm", "_a", "Context", "scheduleFlush", "_b", "_a", "segmentio", "error", "global", "AnalyticsInstanceSettings", "_a", "_b", "Analytics", "cookieOptions", "_a", "_b", "Context", "p", "dispatch", "sourceMiddlewarePlugin", "plugin", "queryString", "i", "NullAnalytics", "init_context", "_a", "v", "_b", "ampId", "EnvironmentEnrichmentPlugin", "init_context", "ActionDestination", "_a", "Context", "_b", "_a", "_b", "plugin", "_a", "_b", "init_stats", "fetch", "_b", "_a", "queryString", "tsubMiddleware", "schemaFilter", "remoteMiddlewares", "Context", "AnalyticsBrowser", "init_context", "form", "createConsumer", "error", "QRCodeStyling", "JsBarcode", "error"]
}
